■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の使用方法はこちらの記事へ

■MOS FETリレー G3VM-21GR 特性測定

SPSTモーメンタリースイッチでエフェクトのバイパスをする場合、リレーとマイコンを使うのが簡単だと思います。しかしながらメカニカルリレーは入手性や電力消費の点でイマイチかなと考え、MOS FETリレーを試すことにしました。

MOS FETリレーはソリッドステートリレーの一種で、各メーカーで同様の商品がありますが名称が違います(フォトリレー、Photo MOSリレー等)。参考ページ→オムロン リレー 技術解説
通常のものはオン抵抗RONや端子間容量COFFが大きいため、バイパスに使用する場合はバッファーが必要となってしまいます。そこで今回は低オン抵抗・低端子間容量タイプのG3VM-21GR(RON=5Ω、COFF=1pF)というMOS FETリレーを選びました。エフェクターでよく使われる青い3PDTフットスイッチと比較検討します。
14_222_1G3VMp.jpg
G3VM-21GRは表面実装部品なので丸ピンソケットにはんだづけしました。フットスイッチは同じ大きさの黒いものも測定しましたが、青のフットスイッチと大差なかったので結果からは省いています。

ハイインピーダンス条件下での使用を考慮し、以下の接続としました。
  [擬似ギター出力]→[リレーG3VM-21GR]または[フットスイッチ]→[バッファー(入力インピーダンス1MΩ)]→[PCマイク入力]

スイッチオン時に音質が変化しないのはもちろん重要ですが、スイッチオフ時も下図のようにハイパスフィルターを形成して高域が漏れることが考えられるので、そのあたりについても確認します。
14_222_2G3VMs.png
※配線が近いだけでも容量が増加してしまうので注意が必要です。

▽結果
14_222_3G3VMd.png

<スイッチオン時の特性変化>
周波数特性はほとんど重なっていますが、よく見るとリレーでは高域が下がっています。まぁごくわずかなので大丈夫でしょう。歪率についてはほぼ変化はありません。

<スイッチオフ時の音漏れ>
リレーではオンオフの差が-21dB(10kHz)となっており、ブースターやハイゲインエフェクターでは問題が出てくるかもしれません。エフェクターに組み込んだ後、どの程度影響があるか測定する予定です。フットスイッチでもわずかに漏れがあることがわかりましたが、実際のトゥルーバイパス配線ではオフ時にエフェクト回路の入力をアースに落とすので、問題になることはないと思います。

---以下2018年6月14日追記---
14_222_4G3VMb.png
まず上図上側のバイパス方法を試しましたが、音漏れがあり発振しやすい上、切替時に少しポップノイズが出ました。その後下側の回路に変え音漏れや発振はなくなりましたが、ポップノイズは消えませんでした。スイッチングの順番をいろいろ変えてみましたがダメなようです。バッファーを入れて考え直すことにします。

■ArduinoとATtiny13Aを使う

14_221_1att.jpg
自作エフェクターをやっていてマイコンにも興味があるという方は多いだろうと思います。今回ArduinoとAVRマイコンATtiny13Aを使ってみたので、簡単にまとめておきます。※Arduino Nano互換機、Arduino UNO互換機で動作確認しました。



<Arduinoを使う>
Arduino本体については、Amazon等でArduino UNOやArduino Nanoの互換機が安価で手に入るのでそちらを購入しても問題ないと思います。※ただし、ドライバのインストールが必要な場合があります。参考ページ→Arduino NANO 互換品(CH340チップ使用)のデバイスドライバー CH341SER.ZIPダウンロードページ

Arduino IDE(開発環境)をダウンロード、インストール
  公式サイト解説→Getting Started with Arduino and Genuino products

・ボード上のLEDを点滅させる(Lチカ)
  1) PCとArduinoをUSBケーブルで接続、Arduino IDEを実行
  2) ファイル→スケッチ例→01.Basics→Blink
  3) ツール→ボード→(使っているArduinoの種類を選択)
  4) ツール→シリアルポート→(Arduinoを接続しているポートを選択)
  5) スケッチ→マイコンボードに書き込む
  公式サイト解説→Getting Started with Arduino and Genuino UNO

書き込みに成功すれば、すぐにLED点滅が始まります。※古いArduino Nanoを使う場合はツール→プロセッサ→ATmega328P (Old Bootloader)とする必要があるようです。



<ATtiny13Aを使う>
マイコンにプログラムを書き込むには、通常書き込み機器(ライター)が必要です。今回はArduinoをAVRライターにします。以下のようにArduinoにスケッチを書き込みます。
  1) PCとArduinoをUSBケーブルで接続、Arduino IDEを実行
  2) ファイル→スケッチ例→11.ArduinoISP→ArduinoISP
  3) ツール→ボード→(使っているArduinoの種類を選択)
  4) ツール→シリアルポート→(Arduinoを接続しているポートを選択)
  5) ツール→書込装置→AVRISP mkII
  6) スケッチ→マイコンボードに書き込む

そしてATtiny13Aを使う準備をします。下記ページで詳細に解説されています。
Arduino IDE で ATtiny 他の開発Arduino IDEにATtiny10/13の開発環境を組み込む

ATtiny13AにLED点滅のスケッチを書き込みます。

▽接続図
14_221_2att.png
▽スケッチ
void setup() {
pinMode(3, OUTPUT);
}

void loop() {
digitalWrite(3, HIGH);
delay(500);
digitalWrite(3, LOW);
delay(500);
}

1) 接続図の通り接続し、PCとArduinoをUSBケーブルで接続、Arduino IDEを実行
2) 上記スケッチを入力
3) ツール→ボード→ATtiny13(bitDuino13)
4) ツール→Clock→1.2MHz(Internal)
5) ツール→シリアルポート→(Arduinoを接続しているポートを選択)
6) ツール→書込装置→Arduino as ISP
7) スケッチ→書込装置を使って書き込む ※1回目失敗する場合2回行う

クロック周波数を変えるとdelay関数等の時間も変わります。クロック周波数が低い方が消費電流が低いので、特に必要がない限りは1.2MHzでよいと思います。

■タグ : マイコン

■更新情報・雑記

SSLを有効に設定したため、ブログURLが変更となり自動的に転送されます。

 http://drugscore.blog99.fc2.com/  →  https://drugscore.blog.fc2.com/

閲覧できない箇所があれば報告いただけると助かります。

■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%となりますが、ブースターとして使うことはないので大丈夫でしょう。内部プログラムについてはまだ全然できていません。今までにない規模のプログラミングとなるので、相当時間がかかると思われます。

管理人

ブログ内検索

メールフォーム

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

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

アクセスカウンター