基本的に、前回普通のPOTで設定した回路(参考:「SVF(State Variable Filter)の音出し」)をAD8403/100kΩに置き換えている。
ブレッドボード図
AD8403は「2.7V~5.5Vの単電源動作」で入出力はGND~VDDの範囲に収まっている必要がある。そのためOPAMPを使ったSVFの回路(ブレッドボード図の右上)は、5Vの単電源から仮想GNDを作って±2.5Vの両電源として使っている。ブレッドボード図の左上がTLE2426を使った仮想GNDを作り出す回路。
AD8403はSPI制御なので、ArduinoでSPI送信するスケッチを書いて送っている。カットオフ周波数とQを決める抵抗値は、POT2個でArduinoのAnalogInに入力して設定した。
Arduinoのスケッチ
<AD8403_Pot_Control.ino>
/* Digital Pot Control AD8403 2つのPOTの出力電圧を読み取って Digi-Potのチャンネル1, 3, 4の抵抗値を可変 Pinの接続 A0 POT1 A1 POT2 10 CS 11 MOSI 13 SCK */ // inslude the SPI library: #include <SPI.h> // set pin 10 as the slave select for the digital pot: const int slaveSelectPin = 10; byte cnt; byte v0, v1; void setup() { // set the slaveSelectPin as an output: pinMode (slaveSelectPin, OUTPUT); // initialize SPI: SPI.begin(); delay(1); Serial.begin(9600); } void loop() { v0 = analogRead(0) / 4; v1 = analogRead(1) / 4; Serial.print(v0); Serial.print("\t"); Serial.print(v1); Serial.print("\n"); digitalPotWrite(0, v0); digitalPotWrite(2, v1); digitalPotWrite(3, v1); delay(1); } void digitalPotWrite(int address, int value) { // take the SS pin low to select the chip: digitalWrite(slaveSelectPin, LOW); // send in the address and value via SPI: SPI.transfer(address); SPI.transfer(value); // take the SS pin high to de-select the chip: digitalWrite(slaveSelectPin, HIGH); }
LPFの入出力波形の測定
入力は自作のPCM5102Aを使ったファンクションジェネレータで50Hzのノコギリ波を出力して使った。
OPAMPは±2Vから使えるNJM4580と低電圧フルスイングのNJM2732で見てみた。
Q設定値とfc設定値はAD8403に送っている数値で、fcの設定値は値が小さいほどカットオフ周波数が高くなる。
NJM4580
電源電圧: 5.07V +2.53V/-2.47V
Q最小
Q設定値:8 fc設定値:0 (Q設定値が8未満だと出力されない)
Q設定値:8 fc設定値:127
Q設定値:8 fc設定値:255
Q中間
Q設定値:127 fc設定値:6 (fc設定値が6未満だと発振)
Q設定値:127 fc設定値:127
Q設定値:127 fc設定値:255
Q最大
Q設定値:255 fc設定値:6 (fc設定値が4未満だと発振)
Q設定値:255 fc設定値:127
Q設定値:255 fc設定値:255
Qが大きくなると、波形の下側がNJM4580の出力振幅の下限に引っかかっているようだ。
NJM2732
電源電圧: 5.07V +2.53V/-2.51V
Q最小
Q設定値:6 fc設定値:1 (Q設定値が6未満だと出力されない、fc設定値が1未満だと発振)
Q設定値:6 fc設定値:127
Q設定値:6 fc設定値:255
Q中間
Q設定値:127 fc設定値:6 (fc設定値が6未満だと発振)
Q設定値:127 fc設定値:127
Q設定値:127 fc設定値:255
Q最大
Q設定値:255 fc設定値:8 (fc設定値が8未満だと発振)
Q設定値:255 fc設定値:127
Q設定値:255 fc設定値:255
波形のつぶれが軽減されていて、発振前やQを上げた場合の波形もNJM4580とは少々異なる。
Qの設定値に履かせるゲタ(適当)
AD8400のDATASHEETによると、
RWB(D) = (D / 256) * RAB + RW
となっているので、Q設定値が6の場合、
RWB(6) = (6 /256) * 100kΩ + 50Ω ≒ 2.4kΩ
となる。2.2kΩぐらい直列にいれておけばいいかな?fc設定値の方はゲタなしで。発振した場合はそれはそれでという方向で。
メモ:
NJM2734というNJM2732の4回路入りのバージョンもあって、OPAMPを3回路使うこの構成の場合配線が楽になるかどうか。4回路入りのOPAMPだと差し替えの選択肢が狭まるので悩むところ。
0 件のコメント:
コメントを投稿