旧筐体コンパネの覚え書き その2 Arduinoで入力を取れるようにする回路
2024/10/20 追記:
ピン配置についてはその1の記事に全部移動したので、こっちでは配線をうまいことアレコレする方法を模索したときの話を残すことにする。
対象とするハーネス
従来筐体では、ゲームの入力に使用するハーネスは4種類ある。
①1P側ボタン用、②2P側ボタン用、③エフェクトパネル用、④スクラッチ用。その1では、①-④のピン配置について覚え書きを残した。
今回の記事では、①-③のハーネスからボタン入力を取って、同時にLEDを12Vで点灯するための回路を検討する。
1P/2P鍵盤用ハーネス
マイクロスイッチのN.O.端子が、14個の鍵盤で別れている
マイクロスイッチのCOM端子が、14個の鍵盤で共通になっている
LED+端子が、14個の素子で別々になっている
LED-端子が、14個の素子で共通になっている(※LEDは抵抗内蔵)
LED-端子が共通ということは、LED-端子はGNDに固定する必要がありそう。
多分こんな感じにすると、光ると同時に入力が取れると思う。N-ch FETを使用。Arduinoは5V Pull upとする。マイクロスイッチが接点不良を起こすとLEDもガタガタに光りそう。マイクロスイッチの耐電流、ナンボなんやろな。
※2024/11/23 図中で、commonの点線枠を追加。R8とR10を追加。
参考にさせていただいた情報。
https://x.com/taka_hvc1/status/1805749779907199164
いつもありがとうございます。
エフェクターパネル用コネクタ
マイクロスイッチのN.O.端子が、4個のスイッチで別々になっている(鍵盤側と一緒)
マイクロスイッチのCOM端子が、4個のスイッチで共通になっている(同上)
LED+端子が、4個の素子で共通になっている
LED-端子が、4個の素子で別々になっている(※LEDは抵抗内蔵)
LED+端子が共通ということは、LED+端子を12Vに固定する必要がありそう。
Arduinoはハイインピーダンス指定で、スイッチ開状態ではFETが駆動しないようにする。
N-ch FETを使用。
※2024/11/23 図中でcommon部分を追加、R9追加、R5/R9に抵抗値追記。
部品の準備とか
12V電源
5Vから昇圧するコンポーネント買ってきて付けるのが早そう。
でもLEDがフルで点灯すると12V*30mA*18 =6.48Wで、変換効率100%としてもUSBの5V電源だと1.3Aくらい食うことになるから、フル点灯時は厳しいかも。Wii用の電源アダプタ(100円とかで売ってるやつ)から電源持ってくるのがいいかな。
FETとか
素直にFETを18個付けるのは流石に骨が折れる。
こういうの使うと実装がラクそう。勉強します。
できればエフェクターパネル用の抵抗も減らしたい。
今回の用途なら、ただのトランジスタアレイでもいいか。調べるとモーター駆動用とかの大電流トランジスタが引っかかるけど。
回路検証(2024/11/17追記)
実際にFET使って回路作って検証した記録を残しておく。作業の時系列としてはエフェクター側を先に検証しているけれど、記事の順番にあわせて記載。
1P側ボタン、2P側ボタン用パネル
上述の回路に対して、ゲートへの電流制限抵抗1kと、ゲート-GND間抵抗10kを追加。2024/11/23 回路図修正済み
FETはSSM3K7002BFU(N-ch)を使用。
エフェクターパネル
上述の回路に対して1点変更。N.O.およびArduino入力端の後ろに電流制限抵抗を追加。これがないと、ボタン押下時にArduinoのメインLEDが弱く光ってしまった。1k。あと回路図には書いてないけど、ゲート-GND間は10k程度の抵抗を追加。2024/11/23 回路図修正済み
FETはSSM3K7002BFU(N-ch)を使用。
https://x.com/kandaiiidx_open/status/1858131401922736602
LEDの発光制御について(2024/11/23追記)
本家のLEDは、発光制御がなされるようになっている。押さなくても光る。
鍵盤側のLEDは、デモ画面で1から14まで 14から1まで順番に点滅
エフェクターパネルは、Effect on/off状態に応じてEffectボタンが点灯/消灯
エフェクターパネル側の回路については、上記回路をそのまま使用可能。Arduinoのポートを出力に切り替えれば、LEDの点滅を制御できる。
N-ch FETを使用した、教科書的なローサイドスイッチの回路といえる。
対して、鍵盤側の回路については、上記回路そのままでは、LEDの点滅を制御することはできない。下記のように考えたが…
P-ch FETの動作原理がまだ完全に頭に入ってないけど、マイクロスイッチがONになったときにVgsが-12Vくらいになって、ソース-ドレイン間が導通、LEDが光る…で合ってるのかな。
一応、教科書的なハイサイドスイッチではある。
Arduinoは入力(ハイインピーダンス)にしておけばスイッチオープン時にHi、スイッチクローズ時にLoになる…はず。わからん…。やってみて故障しなければ(そして所望の動作をしてくれれば)バンザイ。
Arduinoの入力端子とFETのゲートが両方ともハイインピーダンスだと結局端子電圧が不定になっちゃってよろしくないな。
100kΩくらいでGNDに落としておけばFETのゲート電圧的にはいいかもしれないが、Arduinoの入力端子に10Vとか掛かるから都合悪いかも。
Arduinoのピンを入力(ハイインピーダンス)から出力(ローインピーダンス)に切り替えると、Arduinoの出力状態(Hi/Lo)問わず、LEDが点灯するはず。
Arduinoのピンに対しては、Hi出力で(12-5)V/10kΩ = 0.7mA、Lo出力で(12-0)V/10kΩ = 1.2mA流入する。Loの時の電流突入は問題ないだろうが、Hi出力時に電流を取り込んでも大丈夫なんだろうか。
あとがき
トランジスタ回路については素人なので、設計がよろしくない箇所があったらコメントに指摘いただけると作者が勉強します。何卒。
2024/11/17追記:
ボタンを押せば光る。ボタンを押したら入力がマイコンに反映される。言葉にすればそれだけのことだけど、なかなか単純にはいかないモンですねぇ…。
まぁでもこれで基板化の目処が立ったので、年末年始目処でコンパネ用の基板が用意できれば良いかなぁとおもってます(ぼんやり)。予定は未定。
2024/11/23追記:
こういったご意見も頂きました。なるほど。