音遊び日記

ハードウェアとソフトウェアの両面から”音”で遊んだ事を備忘録として書いています。

プログラマブルスイッチャーの自作

 

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. 回路

 回路ブロック図としてはこんな感じ。

f:id:hsy221:20190614192038p:plain

 FT232RLを使ってUSB⇔UART変換をしてatmega328をUSB経由で書き込みますこれは紛れもなくarduino nanoと同じ回路です。

 

・リレー駆動回路 / 赤色LED

 最小限の部品でリレー駆動回路を構成しています。電気回路に詳しい人が見たら怒られるような回路かもしれません。定数も適当です。でも一応動いてます。

f:id:hsy221:20191013163515p:plain

 atmega328の出力をHighにすると、トランジスタにベース電流が流れてONになり、コレクタ-エミッタ電流が流れる事で、リレーが駆動されます。リレーの詳しい動作原理はググって下さい。リレーはコイルのため、トランジスタがOFFになった時(コレクタ-エミッタ間電流が流れなくなった時)、逆起電力が発生します。それによって流れる電流を吸収するために並列でダイオードを入れます。
 またこの回路では、一つのピンでリレーとLEDを同時に制御する事で使用するピンを節約しています。

 

・フットスイッチ 

 プログラマブルスイッチャには押している間だけ接点が切り替わるモーメンタリタイプを使用します。これによって長押しや同時押しが可能で、多くの機能を付ける事ができるようになります。安価なモーメンタリフットスイッチは、自作エフェクターといえばこの店、秋葉原桜屋電気さん、もしくはギャレットオーディオさんで500円程度で売っています。普通に10kでプルアップして使用します。

 

・7セグメントLED

 Atmega328のディジタルピンはアナログピンをディジタルとして使用しても全部で20ピン。スイッチ、リレーの制御もするので、7セグLEDを直接制御しようと思うとピンが足りません。そこで、IOピンを拡張する「IOエキスパンダ」を使用します。ピン数、入手性などからMCP23017を採用しました。秋月で売ってます。ちょっと見づらいですが、回路としてはこんな感じ。

f:id:hsy221:20191013165258p:plain

 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で、ArduinoDIPタイプのAtmega328p-puには無い「Analog in6,7(arduinoはAnalog in5まで)」があり、これにスイッチを割り当てました。

 今回紹介したのはオーソドックスなプログラマブルスイッチャーですが、タップテンポを使ってリズムに同期してパッチを変更させたり、パッチ一つ一つに名前を付けて7セグLEDに表示したり(市販にもあるか?)、可能性は無限大です。今後色々プログラムを書き換えて変態的な機能を追加していきたい。

 


自作プログラマブルスイッチャー