プログラマブルスイッチャーの自作
1. はじめに
AVRマイコンとリレーを使ったプログラマブルスイッチャーの自作記事です。自作エフェクターのいい所と言えば、安く作れる所だったりしますが、スイッチャだけはそうもいきません。金はかかる、時間はかかる、ケースの設計が大変。。。いいことないです。ただ決定的にいい点が一つあって、独自の機能を入れられる事です。市販品にはないパターンでループを切り替えたり、リズムに同期して切り替えられるようにしたりなど工夫次第で可能性は無限大です。
今回のプログラマブルスイッチャの製作費はたぶん1万ちょいくらいだと思います。プログラマブルスイッチャとしては安いって思うかもしれませんが、ここ数年めちゃめちゃ安いスイッチャがたくさん出てきました。1万円台も当たり前にあります。スイッチャに限らずですが、安いエフェクターが大量に出てきてエフェクター自作勢にとっては複雑な気持ちですね。
なおマイコンのプログラミングに関しては今回触れていません。やろうとしていた機能は実現しましたが、記述があまりきれいじゃない気がするので公開したくない。。。
2. 仕様 / 機能
インターフェースとしてはこの表に示す感じ。使用しながら機能を変えられるように、プログラム書き換え用のUSBポートも用意しています。
エフェクトループ | 4ループ |
チューナーアウト | 1出力 |
フットスイッチ | 4個 |
2色(赤/青)LED | 4個 |
赤色LED※ | 4個 |
USBポート | 1ポート |
2桁7セグメントLED | 1個 |
※エフェクトループの状態に連動 |
ループとスイッチは4つずつ。 チューナーアウトは使用すると、メインの出力はミュートされる。2色LEDはフットスイッチと1対1で割り当てて、2色なので様々な機能を持たせられる。赤色LEDはエフェクトループのリレーと連動して点灯させます。
次に機能面。まずは通常のプログラマブルスイッチャと同じ、スイッチ一つ一つにエフェクトループのオンオフのパターンを割り当てる方式で作ります。編集中は2色LEDを青色に点灯します。バンクや使用中のパッチの情報は7セグLEDに表示します。また編集したパッチの情報はAtmega328の内臓EEPROMに保存します。一番最後に動作を説明した動画があります。
スイッチ1,2同時 | 一つ上のバンクへ | |
スイッチ2,3同時 | チューナーアウト ON / BYPASS | |
スイッチ3,4同時 | 一つ下のバンクへ | |
スイッチ長押し |
パッチ編集 |
3. 回路
回路ブロック図としてはこんな感じ。
FT232RLを使ってUSB⇔UART変換をしてatmega328をUSB経由で書き込みますこれは紛れもなくarduino nanoと同じ回路です。
・リレー駆動回路 / 赤色LED
最小限の部品でリレー駆動回路を構成しています。電気回路に詳しい人が見たら怒られるような回路かもしれません。定数も適当です。でも一応動いてます。
atmega328の出力をHighにすると、トランジスタにベース電流が流れてONになり、コレクタ-エミッタ電流が流れる事で、リレーが駆動されます。リレーの詳しい動作原理はググって下さい。リレーはコイルのため、トランジスタがOFFになった時(コレクタ-エミッタ間電流が流れなくなった時)、逆起電力が発生します。それによって流れる電流を吸収するために並列でダイオードを入れます。
またこの回路では、一つのピンでリレーとLEDを同時に制御する事で使用するピンを節約しています。
・フットスイッチ
プログラマブルスイッチャには押している間だけ接点が切り替わるモーメンタリタイプを使用します。これによって長押しや同時押しが可能で、多くの機能を付ける事ができるようになります。安価なモーメンタリフットスイッチは、自作エフェクターといえばこの店、秋葉原の桜屋電気さん、もしくはギャレットオーディオさんで500円程度で売っています。普通に10kでプルアップして使用します。
・7セグメントLED
Atmega328のディジタルピンはアナログピンをディジタルとして使用しても全部で20ピン。スイッチ、リレーの制御もするので、7セグLEDを直接制御しようと思うとピンが足りません。そこで、IOピンを拡張する「IOエキスパンダ」を使用します。ピン数、入手性などからMCP23017を採用しました。秋月で売ってます。ちょっと見づらいですが、回路としてはこんな感じ。
Atmega328のSCL(A5)とSDA(A4)をMCP23017に接続します。7セグLEDのアノードを5Vに接続し、点灯させたいセグメントのカソードをMCP23017でLowにします。
・2色LED
フットスイッチ一つに対して一つの2色LEDを割り当てます。今回は赤と青が点灯できるLED(青色LEDって綺麗ですよね)。2色って言ってますけど赤と青両方光らせれば紫としても使えます。電流制限抵抗は赤青ともに1kΩにしましたが、赤、青、紫3色ともそこまで大きな輝度の差は感じませんでした。
・電源 / USB-UART
すべての回路は5Vで動作可能(リレーのみ手元に9V品しかなかったので9V駆動)なのですが、エフェクターボードに5Vの電源なんて置かないので、他のエフェクターと同じ9V入力としています。定番の三端子レギュレータ7805を使って5Vを作ります。この電源回路と、USB-UART変換回路はほぼArduino nanoの回路図を丸パクリしました。arduinoはオープンソースなので、調べれば完全な回路図がネットに上がっていますので調べてみて下さい。
4. 最後に
完成品はこんな感じ。基板上に簡易Arduino回路を構成しているので、いつでもプログラムを書き換えられます。そのため、4スイッチ、4ループ、チューナーアウト、4つの2色LED、7セグLEDの制御をこれからも好きに変更する事が出来ます。ただし実はこの構成だとピンが一つ足りません。今回使用したのはTQFPパッケージのAtmega328p-auで、ArduinoやDIPタイプのAtmega328p-puには無い「Analog in6,7(arduinoはAnalog in5まで)」があり、これにスイッチを割り当てました。
今回紹介したのはオーソドックスなプログラマブルスイッチャーですが、タップテンポを使ってリズムに同期してパッチを変更させたり、パッチ一つ一つに名前を付けて7セグLEDに表示したり(市販にもあるか?)、可能性は無限大です。今後色々プログラムを書き換えて変態的な機能を追加していきたい。