膨大な数のアナログセンサーをリアルタイムで読み取る


17

ギターのような首を持つMIDIのようなコントローラーを構築しようとしています。その首には、圧力センサーの巨大なマトリックスがあります。コントローラーは3つのストリングをエミュレートします。

これが機能する方法は次のとおりです。電源(3.3Vまたは5V、おそらく今のところは問題ありません)に接続されている3枚の長尺の両面銅テープ(首まで幅0.5 cm)があります。これらのストリップには、圧力に基づいて抵抗率を変化させるベロスタットの層があります。ベロスタットの上部には、何かに接続された銅テープの列またはセルの別の層があり、ベロスタット層を介して電圧の読み取り値を吐き出します。首の長さは約40 cmなので、少なくとも80列あります。

首に沿ったチャートの列として銅テープの下部の3つのストリップを想像すると、センサーは測定方法に応じてセルまたは行のいずれかになります(列を多重化することもできると思ったので、ただし、これを簡単にする特別な条件がいくつかあります。これはギターのようなコントローラーなので、すべての相互作用を測定する必要はありません。コントローラーの本体に最も近いタッチのみが重要です。また、8ビットの解像度でも十分に正確である必要があります。とにかく、255の圧力レベルはおそらく必要以上です。

難しい部分:

測定は、ハンマーオンなどを検出するのに十分なリアルタイムyである必要があります(サンプルレートをどれだけ高くする必要があるかわかりません-良好な測定と再生可能性のために数kHzで推定)およびコントローラーのデジタル出力はMIDI(3つの独立したチャンネル-文字列ごとに1つ)またはRaspberry Piで処理できるデジタル信号。

今、私の知識は本当に限られているので、仕事に適したツールを考えることができませんでした。しかし、私が知っていることは、それは可能です。非常によく似た手法を使用する同様の異なるコントローラーがあります(私が気づくまで、実際にリバースエンジニアリングしました。特許があり、その方法に関する情報は思ったほど難解ではありません)、それはROLIと呼ばれますシーボード。

TL; DR:

  • 約240個のセンサー

  • 同じ回線で動作する80のグループに分離できます

  • これはリアルタイムのアプリケーションです。タッチされるたびにすべてのセンサーから圧力を取得する必要があります(いくつかの条件が適用されます。上記を参照)

事前に感謝します、私はそれが読むことがたくさんあることを知っています。私はどんな提案にも感謝しており、あなたが私が作り出すために着手した恐ろしい混乱を達成するのを手伝うことができれば非常にうれしいです!

私がこれまで考えてきたこと:

行と列を多重化し、MCP3008以上のADCで各セルを読み取り、位置信号の最小の相互作用のみを最終信号にプッシュする(デイジーチェーンまたはツリーのような)ATmegas通信のオーバーヘッド。また、初期のモデルにはリボンポテンショメータが含まれていましたが、デザインが悪い(何度か試行しましたが、十分にクールではなかった)ため、私はそれを破棄しました。

編集/更新:

これまでのところ良い提案をありがとう!彼らのおかげで、問題をより明確に表現できるようになりました。

80行×3列の圧力センサーのマトリックスがあります。人間がセンサーマトリックスと対話しているとき、近接している複数のセンサーがタッチを検出しますが、これは列に沿っている場合のみです。カラムは機械的に分離されています。センサーの抵抗は100Ω〜1kΩです。これらのセンサーはすべて、8ビットの深さで読み取り、処理する必要があり、結果は少なくとも1 kHzのレートで送信する必要があります。したがって、1回の読み取り/処理にかかる時間は1ミリ秒未満である必要があります。列ごとの最終出力は、float32では4バイト、uint8では1バイトである必要があります。float32は、列に沿った最初のインタラクションの平均位置を示します。相互作用は、特定のしきい値を超える圧力を持つセンサーの連続クラスターとして定義されます。これが処理がミックスに入る場所です:読み取り値がしきい値を超えるまで、列は下方向に走査されます。これは、インタラクションの開始としてカウントされます。すべてのセンサーの圧力と位置は、最初のセンサーまで記憶され、最大(おそらく)最大4つの連続センサーでしきい値を下回ります。記録された相互作用のすべてのセンサーから、2つのセンサーのみが処理されます-最高圧力(最低抵抗)を読み取るセンサーと、そのすぐ上または下にある最高センサー。浮動小数点位置は、圧力で重み付けされた2つのセンサー位置を平均することで計算されます。相互作用の全体的な圧力は、0と255の間にクランプされた両方の圧力を加算するだけです(unit8の両方の圧力をuint16に追加し、丸めることなく2で除算し、不要なビットを破棄します-これは高速です)。これはすべての列で発生する必要があります。15バイトのサイズの結果は、SPIを介して、シンセサイザーとして機能する小さなコンピューター(Raspberry Pi B3)に送信されます。私は、送信方法については設定されていません。SPIが仕事にふさわしいツールではない場合、Raspberry Piで処理できる通信の方法を採用しても構いません。これは音楽とインタラクティブなアプリケーションであるため、レイテンシは非常に重要です。

私の正確な質問は次のとおりです。これは、銀行を壊すことなく単一のマイクロコントローラーで解決できますか?趣味のプロジェクトのために数百ドル相当のICを買う余裕はありません。どのハードウェアをお勧めしますか?警戒する必要がある非自明な警告はありますか?

これまでの回答から得たアプローチは、各列に個別に電力を供給し、SPIを介してArduinoに接続された5つの16チャンネルADC(ADS7961)で行を読み出すことでした。これは、最も簡単で安価なアプローチではないか、1 kHzを超えるレートに達するのに十分な速さではないのではないかと心配しています。

免責事項:私は通常、理論化学者であり、電気工学に関しては恐ろしいアマチュアです。私が知っていることはすべて自習であり、専門的なバックグラウンドがありません(これが私がより知識のある人々から助けを求めている理由です)。しかし、私はソフトウェアに関する私のやり方を知っています。ソフトウェアに関することなら何でも、十分な時間をかけて考えます。また、私はドイツ人ですので、時折文法の欠陥を許してください。


単なるアイデア.... muxがインターリーブされている場合、速度が向上する可能性があります.... mux0はフレット0,8,16,24などをスキャンします... mux1-1,9,17,25 ...最大mux7(またはそれ以上)...最初の8フレットが8つの
マックス

2
「リアルタイム」という用語は、正確に正しいとは限りません。これは、データが入力されるのと同じ速度(1つのサンプルが入力され、1つのサンプルが出力される)でシステムを離れることを意味します。しかし、レイテンシー-処理にかかる時間については何も言いません。音楽を使用する場合、全体のレイテンシ(最終的なサウンドを合成/再生する時間を含む)が10〜15ミリ秒未満、できれば5未満である必要があります
。– Schizomorph

押された状態と押されていない状態の抵抗の違いは何ですか?
Trevor_G

10から1000オーム(大体)
d.oelert

要件は、提案された実装と混同されます。すでにこれらの質問に答えているかもしれません。パフォーマーはスライドを実行できますか?楽器は隣接するフレット間の位置の範囲を検出できる必要がありますか?フレットレス楽器をサポートできるようにする必要がありますか、それともフレットをソリューションの一部にすることができますか?
ウェインコンラッド

回答:


7

価格帯によっては、Raspberry PiとADCの間にFPGAを使用することを検討することをお勧めします。 DE0-Nano Boardなど)。これは、FPGA開発ボードの入門として適切にサポートされています。このソリューションには、複数/多くのADCを同時にクロックするコードを記述し、Raspberry Piに提示可能な方法でデータをフォーマットできるという利点があります。

MCP3008を検討しているとおっしゃいました。このチップはSPIであるため、異なるCSピンを使用して、同じバス上でいくつかのデバイスを接続できます。3つのチップをバスに接続し、6つのピン(データライン3本とCSライン3本)あたり24個のADCチャネルを提供するとします。これは、60ピンの240チャンネルを意味し、FPGAの機能の範囲内です。

MCP3008クロックラインを最大周波数2MHzで実行すると、(15クロック/チャンネル)*(8チャンネル/チップ)*(3チップ/バス)*(1/2000000秒/クロック)= 0.18msかかります5.56kHzのサンプルレートに対応する240個のセンサーをすべて読み取ります。


信じられないほどクールなアプローチのようですね!間違いなく調べます。しかし、FPGAの経験はないので、これを扱うには多すぎるかもしれません...一方、FPGAに入るための言い訳を常に探していました...
d.oelert

複数のSPIラインでARMチップを使用できます。これにより、FPGAコストを回避し、サンプルレートを3倍にできます(SPIコントローラーが3つある場合)。内部処理(MCU内の読み取り値をPiが取得できる場所に移動する)とMCU-> Pi通信による遅延を管理する必要があることに注意してください。
ローナンパイ

ところで、PIにはSPIコントローラーもあります。
ローナンパイ

FPGAの背後にある考え方は、たとえば10個の個別のSPIコントローラーを作成し(提供した例の番号を使用)、それらを完全に並列に簡単に操作できるということです。はい、PiにはSPIコントローラーがありますが、FPGAで作成できるほど高速または並列ではありません。
ビリーKalfus

バッファなしの入力を備えたFPGAまたはCPLDを見つけることができれば、80:1のアナログMUXを作成することもできます。長いショットですが、うまくいくかもしれません
カレブレイスター

10

明白な答えは多重化です。これは、電気経路を動的に作成することを意味します。したがって、マトリックス全体を一度に1つずつ、または必要なだけのADC(Analog to Digital Converter)入力を繰り返し処理するだけです。

ADCが3つある場合は、一度に1行ずつ読み取り、入力をmuxとvoillaに変更し、2行目を読み取り、続行します。このセットアップの問題は、80の行があり、80:1(1つの入力に80の入力)のマルチプレクサがないことです。しかし、16 * 5 = 80の入力を得るために組み合わせることができる16:1のマルチプレクサがあります。

次のようになります。

row  0-15 [16:1 mux]____________ 5 inputs in [8:1 mux]-ADC
row 16-31 [16:1 mux]_| | | |
row 32-47 [16:1 mux]___| | |
row 48-63 [16:1 mux]_____| |
row 64-79 [16:1 mux]_______|

16:1マルチプレクサへの4つの入力信号は、一緒に接続できます。

最終的に、このパターンの制御信号を持つバイトがあります:

Grouped up:
0, 3 bits for the 8:1 mux, 4 bits for the 16:1 mux

Bit for bit:
0,8:1 MSB, 8:1 LSB+1, 8:1 LSB, 16:1 MSB, 16:1 LSB+3, 16:1 LSB+2, 16:1 LSB+1, 16:1 LSB

これは、5×16:1マルチプレクサと1つの8:1マルチプレクサ= 6 ICが必要であることを意味します。

一度に1行ずつ読み取りたい場合があるため、これに3を掛けます。

これは、18個のIC、7個の制御信号があることを意味します。アナログ入力の数を増やす場合は、ICの数を減らすことができます。アナログ入力が3つだけの18です。

代わりに240/16 = 15個のICを使用した場合、15×16:1マルチプレクサから15個のアナログ出力が得られます。次に、16:1マルチプレクサまたは16:8マルチプレクサでカスケードできます。16:1のマルチプレクサで「最適化」すると、最終的には16個のICになります。しかし、これはあなたのソフトウェアソリューションが上記のようにエレガントではないことを意味します...それは十字形とモジュラスと他のものでしょうが、ちょっと、2つのICを節約します。

10.8ms=1.25kHz

それは可能ですが、良いデザインではありません

これを別の方法で解決しましょう...より多くのスペースとお金の効率的な方法。

* 20分後*うーん...私が思いついたすべての解決策セットアップ難しか、高度なキャリブレーションが必要です...

まあ、あなたのデザインは目の前のタスクに適していると思います。

幸運を祈ります。


これらの他のソリューションは何だろうか。共有しますか?– pandalion98

OPは位置と圧力を測定したいと考えています。これは2つのパラメーターです。これは、その情報を読み取り、解読できるように、その情報を電圧信号内にパックする必要があることを意味します。または、オーム、インダクタンス、キャパシタンスなど、他のユニットにパックする必要があります。

ここに私の考えのいくつかがあります、私は1つのコラムだけについて考えます。アイデアに3を掛けると、3カラムギターの完全なソリューションが得られます。

最初のアイデア:

ギターの底部からギターの首まで2本の平行なワイヤ(低抵抗)を使用します。ギターの底にあるワイヤーの1つにアースを接続します。LR測定システムを作成し、下部にある他のワイヤからのインダクタンスと抵抗を測定します。

両方のワイヤに指で触れると、2本のワイヤを接続し、ここにいくらかのインダクタンスがあります。ギターを遠くに触れるほど、回路が長くなり、測定するインダクタンスが大きくなります。強く押すほど、2本のワイヤの間に表面積が多くなり、抵抗が小さくなります。

2本の「ワイヤ」である必要はなく、2本の導電性テープなどでもかまいません。

私がこれを以前に共有しなかった理由:これを信頼できるものにするためには、皮膚ごとに抵抗の量が異なるため、個々のセンサーを較正する必要があります。プレイするたびに汗をかきますので、抵抗をさらに減らすため、これを補う必要があります。汗は人によって大きく異なるため、これも人ごとに調整する必要があります。

したがって、インダクタンス=>指の位置。抵抗=>どれだけ強く押していたか。

測定する値の偏差はナノΩとナノHになります。つまり、CMRRとSNRに関する適切な知識が必要です。そうでなければ、これが屋内で行われると仮定すると、表示されるのは電源電圧だけです。または、wifiやランプ、その他のノイズ源からのその他の周波数。したがって、おそらく適切なデジタルフィルターが必要になります。そして...おそらくすでにOPの能力と許容可能な精神的努力の範囲外です。したがって、このアイデアは捨てられます。

第二のアイデア:

アースに接続されているギターの平らな導電面を作成します。

1本のワイヤ、導電性テープ、または単なるフラットコンダクタを使用します。その上に非導電性塗料を置くか、その上に通常の非導電性テープを貼ります。

ギターの底から首までギター全体にストラップで固定します。ギターの底のワイヤーを数百MHzの範囲の高周波に接続します。今、あなたは顕著な反射を取得し始めます。技術的には...片方だけがシールドされている悪い伝送線路を手に入れたからです。

そのため、短い方形波パルスを送信し、指が絶縁線の上にあるために反射して戻ってくるまでにかかる時間を測定します。そして、ギターの底で反射スパイクの振幅を測定します。移動時間=>指の位置。反射の振幅=>押した強さ。

これは設定するのが最も簡単なことではありません...あなたが何をしているのかわからない場合。繰り返しになりますが、これはOPが取り組むには多大な労力を要する可能性があります。したがって、このアイデアは捨てられます。


次のようになります。

ここに画像の説明を入力してください

特性インピーダンスを150Ω、つまり非常に悪い伝送ラインと仮定しました。現実にはもっと悪いかもしれませんが、これをやったことがないのはわかりません。

誰かが台無しにしたい場合のリンクを以下に示します。

最も難しい部分の1つは、エンドポイントを何らかの抵抗に一致させることです。そのためには、オシロスコープまたは他の高価な機器が必要になる場合があります。

他の困難な部分は、TOF(飛行時間)を実際に測定することです。そこにはいくつかのICがありますが、それらは安価ではありません。.電圧を読み取ります。

ここでの考え方は、指がワイヤに近づくと、指が回路の一部になり、コンデンサとして機能するということです。指を近づけるほど、静電容量が大きくなります。これが、指先の抵抗が下がる理由です。

https://en.wikipedia.org/wiki/Transmission_lineを少し下にスクロールすると、容量性パラメーターが分母の一部であることがわかります。

ワイヤ上のポイントが不一致になると、反射が発生し、信号の発信元である「出力」でこれを読み取ることができます。どこにも反射がない場合、信号はどちらかのエンドポイントで終端されます。

強く押し下げると、指の面積が広くなります=>面積による静電容量の増加。また、ワイヤと指の間にある非導電性材料は、静電容量をさらに大きくするために少しでも圧迫されます。

第三のアイデア:

スティックテルミンをギターと測定周波数と振幅の内側。私はテルミンが何を出力するのか正確には知りませんが、確かに何かが使用できます。

この時点で、私はアイデアを使い果たしており、20分を費やしたと言います。現実には10を費やしたかもしれません。今、私は確実にこれを書くためにさらに10分を費やしたので、すべてが合計されます。


1
15個のICを80個のセンサーの3セットに接続する際のデバッグは重要だと思います。また、センサーアレイから数百本のワイヤがぶら下がっているため、このことは使用するのに十分なほど堅牢ではありません。
BeB00

これは実際にはかなり実現可能だと思います。適切に行われれば、そうでなければ必要な配線の量を減らすことができます。
pjc50

これらの他のソリューションは何だろうか。共有しますか?
PNDA

1
@ pandalion98うーん...たぶん2番目のアイデアはそれほど悪いアイデアではなかったかもしれません。しかたがない。
ハリースベンソン

6

3つのアイデア:

1.供給側で多重化を行います

事実上、ここで説明した回路は、一端が電源電圧に共通化された多数の可変抵抗です。これまでに、抵抗値とその他の応答をすべて読み上げたいと思いますが、これまではアナログ側で信号を多重化するアプローチがほとんど提案されてきました。

しかし、供給「レール」をn個のセクションに分割することにより、供給側でこの多重化の一部またはすべてを行うこともできます。それぞれが異なる電源レールを持つn個のセンサーパッドのセットを一緒に接続します。一度に1つの電源レールのみに通電し、1つのADC入力を使用してパッドの各セットを読み取ります。(これは通常、コンピューターのキーボードを読み取る回路の動作方法であり、スイッチの配線方法はしばしば「クロスポイントスイッチ」と呼ばれます。)最終的には、すべての「レール」に接続された単一のADCを使用して、順番に各パッドに電源を接続することにより、すべての多重化。

唯一の問題は、他のすべてのパッドを電源レールから絶縁する必要があり、各パッドにデジタル出力を使用した場合のように、グラウンドに接続しないことです。ダイオード、バイポーラトランジスタ、またはFETを介して各パッドを配線するなど、これを解決できる方法がいくつかあります。マイクロコントローラを使用して、比較的高いインピーダンスを持つ必要がある場合に、高出力または入力になるように設定します。

この手法でセンサーを測定する精度は、単一の固定電圧源と高品質のアナログマルチプレクサーを使用する場合に比べて完全ではない場合がありますが、特に圧力センサーにはある程度の許容範囲があるため、それで十分であると思われますそれらの抵抗-とにかく参照力を使用して各センサーのこれを較正する必要があるかもしれません。

2.多数のADC入力を備えた一部のマイクロコントローラーを使用する

たとえば、PICAXE 40X2にはアナログ入力として使用できる27本のピンがあるため、9本でニーズに対応できます。シンプルなBASIC言語でプログラムされており、i2cスレーブとして機能します-したがって、さらに1つのマイクロコントローラーで9チップを読み取ることができます-または、各チップからの出力をシリアルデータとして送信し、ホストコンピューターに読み込むことができますシリアル-USBコンバーター経​​由。どれだけ速くなるかは正確には約束できませんが、PICAXEを最大速度(16 MHzの外部共振器を使用して64 MHz)でクロックすると正常に動作するはずです。もちろん、Cでのマイクロコントローラプログラミングに満足している場合は、PICAXEのベースとなっているPIC18F45K22でも同じことができます。

3.市販のアナログ入力ユニットを使用する

最後に、時間を節約するためにお金を費やすことを気にせず、携帯性が優先度の高いものではない場合-たとえば、機器を太いケーブルで機器ラックにつなげても構わない場合-すべてのセンサーを一度に測定するためのチャンネルカウントアナログ入力デバイス。たとえば、Measurement Computing USB-2633は、1千米ドル強で64個のアナログ入力を読み取ります。


4

ブルートフォース信号調整(おそらくパッシブ)に続いて、それぞれが16以上のMUXされたADC入力を持つ小さなADCまたはMCU / ADCを検討する価値があるかもしれません。それはわずか40チップです。動作する可能性のあるチップの一例は、ADS7961QDBTRQ1で、自動インクリメントチャネルモードと16入力を備えています。

4kHzのサンプルレートおよびサンプルあたり240バイトでさえ、全体のデータレートは約1MB / sであり、それほど怖くないわけではありません。おそらく、スレーブと通信する10MHzまたは20MHz SPIバスを備えたマスターCPU。帯域幅がない場合は、2つのSPIバスを使用します。上記の部分は20MHzで動作するため、単一のSPIで動作します。

または、単一のTIチップ(DDC2256AZZF)を使用することもできます。DDC2256AZZFは、64チャネルの同時サンプリングと256入力を備えています。白いプラグボードブレッドボードを使用します。


3

リアルタイムのヒューマンインターフェイスアプリケーションの場合、マルチkhzの全体的なサンプルレートは高いようです。おそらく50Hzで十分です(https://en.wikipedia.org/wiki/Input_lag#Typical_overall_response_times)。つまり、すべてのセンサーを<20msでサンプリングする必要があるため、センサーあたり80usです。これはそれほど難しくなく、基本的にすべての通常の8ビットマイクロコントローラーで管理できます(つまり、Atmega88は<30usで実行できます)。

すべてのインタラクションを測定し、不要なインタラクションを破棄することもできます。すべてのインタラクションを測定することは技術的に難しくありません。問題は多重化に起因します。私はあなたの投稿で少し混乱していますが、それはセンサーが一度に80に電力を供給していると言っているからですか?あなたが言うように、通常行うべきことは、列と行を多重化することです。そうしないと、デバイスから80本以上のワイヤが出てくることに対処する必要がありますが、これはあまり良い考えではありません。それをマトリックスに分割する方法を見つける必要があるので、30のワイヤを取得します(これはまだたくさんあります)。その後、それらを多重化することなどができますが、私があなただったら、複数のマイクロコントローラーを持ち、マスターに接続させるだけです。スレーブMCUの代わりに専用ADCを使用できますが、個人的にはMCUに固執します。

通信が問題になる可能性があることを正しく特定しましたが、少なくともMCU間ではこれは大した問題ではありません。8MHzのAtmegaは2MHzでSPIを実行できるため、すべてのセンサーデータの送信には1ms未満かかります。質問は、マスターMCUがこのデータを取得した後、このデータをどのように処理するかです。


2
単一の入力に反応する場合、一般的なGUI用語では通常50 Hzが「十分」と見なされますが、サウンドカードに関する私自身の経験からすると、200ミリ秒のレイテンシで音楽を再生するのは楽しい経験ではありません(音声妨害を考えてください)。リズムの感覚は確実に死んでしまうので、可変の0-200ミリ秒のレイテンシーは、楽器を事実上演奏不可能にするだろうと思います。約1 kHzのポーリング周波数は、開始点の最小値であると考えられます。
ダンプマスク

1
@Dampmaskin 50 Hz = 20ms、200msではありません。おそらく20ミリ秒の方が合理的です
スティーブンウォーターマン

1
私の悪い。20ミリ秒は、20ミリ秒が許容範囲内である場合に使用できる可能性がありますが、待機時間は短い方が常に優れています。とにかく、シグナルチェーンの後半では、常により多くのレイテンシが発生します。
ダンプマスク

@Dampmaskinは、説明したアプローチで見られる問題そのものです。私はラズベリーパイシンセを接続しようとしているので、チェーンの後半のコンポーネントのために可能な限り多くのレイテンシーを「保存」する必要があり、理想的にはトータルレイテンシー15-20ms以下にしたいと思います。コントローラーが既に20ミリ秒かかる場合は、ヘッドルームが残っていません。
d.oelert

@StevenLowes 20msはほとんどのミュージシャンにとって長すぎます。それは、いくつかの音についてはハース距離の外にさえあります。個人的には10ms以上のレイテンシーを実際に処理することはできません。6msのレイテンシーを守ることができないピアニストを知っています。
トッドウィルコックス

3

最も簡単な方法は、10個の8ビットオープンコレクタシリアルからパラレルレジスタをフレックスに分散させ、パッドの各列に個別に電力を供給する長いフレックス回路上にすべてを構築することです。

これらを使用して、すべての行の各列を同時に駆動し、ADCへの共通リターンラインを多重化できます。戻り線には適切なプルアップが必要なので、ボタン抵抗で抵抗分割器の電圧を取得します。

回路図

この回路のシミュレーションCircuitLabを使用して作成された回路

その後、制御するマイクロはレジスタチェーンに1つのゼロビットを送信するため、1つの列のみが時間として電力供給されます。残りの接続はフローティングになります。


1

これを行うための明らかな方法(各弦に1回触れるだけでよいので)は、フレットを分圧器に接続し、各弦の電圧を測定することです。

タッチ位置がわかります。

タッチ圧を得るために、グランドから各フレットにコンデンサを置き、各弦のAC抵抗を測定します。

このアプローチの欠点は、弦がより高いタッチに反応することです


2
誤解されても申し訳ありませんが、実際のギターのネックがなく、弦もありません。それは、圧力センサーマトリックスが上部にある木製のボードであり、実際のフレッテッドボードで使用するプレイスタイルをエミュレートします。しかし、入力をありがとう、私は将来のプロジェクトのためにそれを覚えているかもしれません!
d.oelert

I上記のフレットと弦で、あなたがあなたの質問に言及銅ストリップを意味する
Jasen

ああ、私はあなたが今何を意味しているのかわかります、申し訳ありませんがそれは濃かったです。ノートがレガートで演奏されると、このアプローチは壊れる可能性があります。同じストリングに複数のタッチが必ず必要になるためです。ただし、最も重要なのは
d

また、私はあなたのアプローチが本当に好きですが、これは私の元の質問には答えません。これは通常、リアルタイムで処理する必要がある多数のアナログセンサーをどのように扱うかです。
d.oelert

カメラには多数のアナログセンサーがあります
...-Jasen

0

ギターの長さで100オームから100Kの範囲にある1インチあたりの抵抗がかなり均一なワイヤを入手できる場合、表面抵抗のある中程度の導電性の材料でネックを簡単に作ることができます。それは圧力で低下し、首と各弦の両端の間の抵抗を測定します。抵抗の合計から弦の抵抗を引いた値は、接点の抵抗の2倍を示します。測定された各抵抗から接点抵抗を差し引いた後、残りの抵抗の比率は首の接点を示します。

このアプローチでは、3つすべての文字列の同時押しを検出できますが、文字列が複数の場所で押された場合は機能しないことに注意してください。ギターでは、このようなデザインはバレコードの使用を禁止しますが、これはかなり厳しい制限ですが、他の楽器は複数の場所で弦に触れる必要がない場合があります。


1インチあたりの抵抗が合理的に均一で、ギターの長さで100オームから100Kの範囲にあるワイヤを入手できる場合」-そのタイプのワイヤを見つけることができるかどうか疑問です。
ハリースベンソン

同意しません; 私のオフィスには1717オーム/ mの抵抗線があるので、見つけるのは難しくありません。Ø50µmのワイヤであるため、扱いやすいとは言いませんが、入手するのは難しくありません。
MrGerber

@MrGerber:ニクロム線の抵抗は、暖かい温度よりも低い温度ではるかに低いことを忘れていたので、おそらく10オームに近いもので動作するように回路を変更する方が良いでしょうが、基本的な概念は機能します。あるいは、ネックを弱い導電性の材料にし、ストリングに接続させることでも機能します。
-supercat

これはNiCrではなくFeCrAlであり、抵抗値は温度に対してあまり変化しません。私が持っているタイプは、100 Cから1300 Cに約8%変化しています。参考:カンタルD(そして、いや、私は電子タバコを製造していません。)
MrGerber

@MrGerber:さて、それは悪くありません。以前のコメントに応じて、いくつかの表を調べて、温度とともに抵抗が一桁増加するのを見ました。
-supercat

0

私はこの投稿を見て、シングルチップで可能になるかもしれないと考えていました。安価なブルーピルボードなど、何らかの種類のマイクロコントローラーボードを使用することを急いでいます。10個のADCチャネルを無料で使用できるARM M3があります。3つのストリングの3つのクラスターに列を配置する場合は、それらを9つの空きADCチャンネルに接続します。他の21個のピンを使用して、合計63個の「フレット」のようにピンの列を切り替えます。 接続マトリックス、抵抗はベロスタットセル、gpioは3.3vで駆動するか入力モードにあり、ADCピンはベロスタットセルの電圧降下を測定します マイクロコントローラーには2つの1 Msps 12ビットADCがあり、2Mspsをサポートするために位相遅延で使用できます。USB接続を使用して、USB MIDIコントローラーのように動作させることができると思います。より多くの入力に大きなマイクロコントローラーを使用することもできますが、30フレットを超える「フレット」間隔をどのように管理するかわかりませんか、それともタッチスクリーンのようになりますか?

これらのベロスタットシートがどのように機能するのか正確にはわかりませんが、大きなシートの底に小さな終端点のように配置し、指の位置と圧力を複数の点の電圧に相関させることはできませんか?そうすれば、おそらくより少ない感知で逃げることができ、ベンドやビブラートなどをサポートできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.