■タグ「回路図」

■Owm Pedal ハードウェア編

03s_237_1owmp.jpg
STM32F405という32ビットマイコンを搭載した自作デジタルエフェクター「Owm Pedal」です。名前は同じマイコンを搭載した既存のペダル「OWL Pedal」をもじってつけました。

オーディオコーデックはCS4220のセカンドソース品V4220Mです。サンプリングレートが48kHzまでですが差動入出力で価格が安く(秋月電子で240円)、エフェクターに最適だと考えました。

▽回路図
03s_237_2owms.png
<V4220M周辺>
データシートに入出力の回路が記載してあるのですが、抵抗値はよく使う値へと変更しました。バイアス電圧用に8.25kΩの抵抗があるところは、10kΩと100kΩ2個を並列にして8.33kΩとしています。

V4220Mのデータシートでは音量等をコントロールできそうに書いてありますが、実際はできないようです。マスターモードで動作させる場合は8番(DOUT)ピンに47kΩのプルダウン抵抗を入れます。また、CS4220のデータシートには電源オン時に27番(RSTN)ピンを10msの間LOWにしておくように書いてあるため、10uFのコンデンサを入れました。4・5・8・9番ピンからマイコンへ接続しますが、通信線の長さが短いためダンピング抵抗は不要かと思います。

<電源>
電源はレギュレータで以下のように分けました。
・マイコン用→デジタル3.3V(100mA)
・V4220M用→デジタル5V(20mA) デジタル3.3V(5mA) アナログ5V(60mA)
・OPA1678×3用→アナログ5V(20mA)
アナログ5V電源は通常分離する必要はありませんが、万一問題があったとき基板発注し直すのが嫌なので分けています。

▽DSP基板(Owm Borad)レイアウトについて(KiCadデータはGitHubへ)
真ん中あたりに電源、上側がデジタル、下側がアナログという配置となっています。GNDは裏面を一面プレーンにしました。入力のカップリングコンデンサはPMLCAPを使っており、やや大きくて高価ですが歪率は下がるでしょう。残念ながらBIASに接続すべきところをGNDにつなぐというありがちな間違いをしてしまいましたので、内部写真では妙なジャンパー線が写っています(KiCadデータは修正済)。

ピン間隔が狭いICはパッドを1mm程度長くすると半田付けしやすいです。マイコンのピンはほとんど使えるように引き出しました。一応I2C用にプルアップ抵抗の取り付けもできます。マイコン上側のLEDはデバッグ用のつもりです。水晶振動子周りのパターン設計は下記ページを参考にしました。
水晶振動子 ガイド - RSオンライン

▽ポット類基板レイアウト
03s_237_3owml.png
ポット類基板と筐体はRasPd4のものを使いまわしました。回路図は描いていません。無理やりジャンパーを飛ばしてチャタリング対策の抵抗やコンデンサを入れました。下写真のように基板を合体させます。
03s_237_4owmpp.jpg

とりあえず何もエフェクトをかけないスルー音が出るようにプログラミングし、周波数特性と歪率を測定しました。歪率は、クリップしない最大入力約0.7Vrmsでの結果です。
03s_237_5owmf.png
100Hzの歪率が思ったより悪いですが問題ないでしょう。ノイズも測定限界以下だったので、歪み系エフェクトでもおそらく大丈夫だと思います。

■2ループスイッチャー+絶縁型パワーサプライ

02_224_1lpswp.jpg
直列可2ループボックス+パワーサプライのスイッチが経年劣化のためか接触不良となっていました。もう一度配線をやり直す気にはなれなかったので、AVRマイコンを使ったスイッチャーとして生まれ変わらせました。当初はアナログスイッチICを使おうと思っていましたが、バッファーが必要で複雑になりすぎるようです。普通にメカニカルリレーを使うことにして、ついでにパワーサプライ部分はなんとなく絶縁型へと変更しました。

▽回路図
02_224_2lpsws.png
マイコンはATtiny13Aだとプログラムメモリが足りないので、ATtiny85です。ATtiny13Aの使用方法と同様に、Arduino IDEをATtiny85にも対応させます。参考ページ→Arduino IDE で ATtiny 他の開発

5Vレギュレーターは念のため78M05としていますが、9V入力であれば78L05でも大丈夫でしょう。リレー941H-2C-5Dのコイル駆動電流は30mAで、マイコンから直接流し続けるのは無理があるため、トランジスタを使用します。

▽レイアウト(KiCadデータはこちらへ)
02_224_3lpswl.png
パワーサプライ部分は別基板となっています。絶縁型DC-DCコンバータが大きいので内部がかなり窮屈になってしまいました。

▽Arduinoスケッチ
表示/非表示切替(133行)
スイッチに関する部分はMOSリレーバイパスと同じで、長押しの判定はsw_countを増やすだけです。メインループが1msごとなので長押しは1秒となるはずですが、処理に時間がかかるので実測では1.8秒ぐらいでした。

▽操作方法
 ・マニュアルモード(中央LED消灯)
   左スイッチ: ループBのオンオフ切替、長押しで特殊モードへ
   右スイッチ: ループAのオンオフ切替
 ・特殊モード(中央LED点灯)
   左スイッチ: ループA→ループBの順で直列接続
    ※直列切替後は右スイッチでAのみ、左スイッチでBのみオンの状態に戻る
   右スイッチ: ループAのみオンとループBのみオンを切り替え、長押しでマニュアルモードへ

■MOSリレーバイパス

02_223_1mrbP.jpg
ソリッドステートリレーを利用したエフェクトのバイパス方法をバッファーなしで検討していました(別記事参照)が、音漏れやポップノイズの問題が解決できなかったため結局バッファードバイパスにすることにしました。BOSS筐体BD-2に採用しています。あまり利点がないバイパス方式となってしまいましたので、再度作ることはなさそうです。素直にラッチングリレーを使った方がよいでしょう。

▽回路図
02_223_2mrbs.png
秋月電子で安売りしている光MOSFET PS7200K-1Aを使用しましたが、フォトリレーTLP222Aでも問題ないと思います。エフェクト側の入力部分の回路によってはバイパス音に影響が出るので、本来は入力の分岐前にもバッファーを入れた方がよさそうです。バイアス電圧Vbはエフェクト回路から引っ張ってきています。

▽レイアウト
02_223_3mrbp.png

▽Arduinoスケッチ(ATtiny13A用)
#define SW_PIN 3
#define BYPASS_PIN 0
#define FX_ON_PIN 1
#define LED_PIN 4

int sw_value = 0;
long sw_count = 0; // intだとオーバーフローするかも
boolean fx_state = false;

void setup() {
pinMode(SW_PIN, INPUT_PULLUP); // 内部プルアップ抵抗有効
pinMode(BYPASS_PIN, OUTPUT);
pinMode(FX_ON_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
digitalWrite(BYPASS_PIN, HIGH); // 初期値はバイパス
digitalWrite(FX_ON_PIN, LOW);
digitalWrite(LED_PIN, HIGH); // 電源オン時LEDが2回点灯
delay(300);
digitalWrite(LED_PIN, LOW);
delay(300);
digitalWrite(LED_PIN, HIGH);
delay(300);
digitalWrite(LED_PIN, LOW);
}

void loop() {
sw_value = digitalRead(SW_PIN);
if (sw_value == LOW) {
sw_count += 1;
} else {
sw_count = 0;
}

if (sw_count == 10) { // 10msスイッチ押すとエフェクト切替(チャタリング対策)
fx_state = !fx_state;
if (fx_state) {
digitalWrite(FX_ON_PIN, HIGH); // HIGHにするピンの順番が逆だとポップノイズあり
delay(2); // これがないとポップノイズあり
digitalWrite(BYPASS_PIN, LOW);
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(BYPASS_PIN, HIGH);
delay(2);
digitalWrite(FX_ON_PIN, LOW);
digitalWrite(LED_PIN, LOW);
}
}
delay(1);
}
チャタリング対策の参考ページ→Arduinoの基礎 – スイッチのオン・オフを読み取る
ATtiny13Aの使用方法はこちらの記事へ

■RasPd3 ハードウェア編

03_220_1raspd3p.jpg
今まで製作したRaspberry Pi搭載エフェクター(RasPd1RasPd2RasPd4)は単一エフェクトのみしか使えませんでしたが、今回のRasPd3は複数のエフェクトを同時に使えてパッチ切替もできる、いわゆるマルチエフェクターを想定したものです。当初はオーディオインターフェースにCS4272を使うつもりでした(別記事参照)が、うまくいかずWM8731を使っています。しかしながらCS4272を使ったオーディオカードTeensy Super Audio Board(SAB)は全データが公開されているので、大いに参考にしました。

▽回路図
03_220_2raspd3s.png
ΔΣ型ADコンバータでは入力のフィルタは簡易なものでよいらしいので、RasPd4より簡略化しました。ギター入力はモノラルですが、WM8731のLR入力を逆位相にして内部プログラム(下図)で足し合わせるという差動入力っぽいことをしています。
03_220_3raspdpd.png

ノイズ対策として、絶縁型DC-DCコンバータやデジタルアイソレータ(Si8662BB、Si8602AB)を用いてRaspberry PiとGNDを分離しました。スイッチについてはチャタリング対策の抵抗とコンデンサを入れています。ロータリーエンコーダは高速回転させるかもしれないので、コンデンサの容量が少なめです。

2.2インチLCDディスプレイモジュールはAmazonで購入しました。SAINSMARTの商品ページのManualに回路図が入っています。回路図中に3.3Vと記載がありますが、実際は3.0Vのレギュレータが使われていました。LEDピンへ抵抗を挿入すると明るさが減り、消費電力を抑えられます。Raspberry Piでの使用方法についてはadafruitのILI9341 TFT display用ページの内容で問題ありませんでした。

▽レイアウト(KiCadのデータはこちらへ)
03_220_4raspd3l 03_220_5raspd3swl.png
WM8731のアナログGNDとデジタルGNDは分離せず、裏面のベタGNDができるだけ一面プレーンになるようにしています。スイッチ類の基板はユニバーサル基板で作成しており、細い線がジャンパーです。ディスプレイモジュールのSDカードソケットは配線の邪魔なので取り外しました。ケースはタカチTD10-15-4Bです。

ノイズについては、劇的ではないですが少しは減少したようです。入力が0.5Vrmsぐらいで歪率1%となりますが、ブースターとして使うことはないので大丈夫でしょう。内部プログラムについてはまだ全然できていません。今までにない規模のプログラミングとなるので、相当時間がかかると思われます。

■monomonster Relay Bypass Module 解析

SPSTモーメンタリースイッチを使ってトゥルーバイパス+LED切替が実現できるmonomonster Relay Bypass Module (RMB)というものがGarrettaudioで販売されています。一体どういったものなのか興味があり、購入後回路を調べてみました。

▽基板写真
14_217_1rbmp1.png 14_217_2rbmp2.png

▽回路図
14_217_3rbms.png
ATTiny13AというマイコンとHFD31/5-L1というラッチリレーが使われています。やたらとフィルムコンデンサが大きいので、積層セラミックコンデンサに変えてもよさそうです。出力側にある2N7000はスイッチングノイズ軽減の役割があると思われます。エフェクト回路の入力をGNDに落とすため、リレーの2番端子はGNDに繋ぐのが普通かと思いますが、基板裏のベタパターンが離れているために実際はどこにも繋がっていません(表のベタ塗りを忘れたのかも)。

スイッチングの様子を録音しました。
14_217_4rbmsw.png
スイッチング時10ms程度出力がミュートされるプログラムとなっているようです。しかしながらMOSFETは構造上ダイオードが入っている(寄生ダイオード)ため、音量が大きいと波形がクリップされます。2N7000を外した場合は、スイッチング時大きくノイズが入ります。たぶん通常の3PDTスイッチと同じ程度のノイズだろうと思います。試しに2N7000を2SK303に差し替えた場合(足を曲げる必要あり)も録音しましたが、この場合はIdssの影響か音量が下がり波形も歪んでしまいました。

結局このモジュールはそのままでは使いにくいという結果となりました。回路採取にミスがないとも言い切れませんが……とにかく購入される方は注意が必要だと思います。

■タグ : 回路図

ブログ内検索

メールフォーム

当ブログに関するお問い合わせはこちらからお願いします。 ※FAQ(よくある質問)もお読みください。

お名前
メールアドレス
件名
本文

アクセスカウンター