シールドを作ったとき、Nucleoが3.3V駆動なのに気付いていなくて、シールドは5V電源で動作するように作った。Arduino互換のピンソケットはちゃんと5Vのピンが出ているのでシールドはそのまま5V駆動できる。問題となるのはAD8403の信号線のレベルで、Data Sheetを見るとVDD=5Vのとき
Input Logic Hight(VIH) | Min 2.4Vとなっているので、3.3Vで駆動のNucleoから送っても問題ないようだ。助かった(^q^;
Nucleo_DigitalPotControl_AnalogRead
main.cpp
/* Digital Pot Control AD8403 2つのPOTの出力電圧を読み取って Digi-Potのチャンネル1, 2, 4の抵抗値を可変 Pinの接続 A0 POT1 cutoff A1 POT2 resonance 10 CS 11 MOSI 13 SCK Digi-Pot A1 - connect this to voltage W1 - this is the pot's wiper, which changes when you set it B1 - connect this to ground. */ #include "mbed.h" Serial pc(SERIAL_TX, SERIAL_RX); SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK); DigitalOut CS(D10); AnalogIn cutoffIn(A0); AnalogIn resonanceIn(A1); void digitalPotWrite(int address, int value) { CS = 0; spi.write(address); spi.write(value); wait_us(1); CS = 1; } int main() { pc.printf("\r\n*** Digital Pot Control\r\n"); while(1) { uint16_t cutoff = cutoffIn.read_u16() >> 8; uint16_t resonance = resonanceIn.read_u16() >> 8; pc.printf("%u\t%u\r\n", cutoff, resonance); digitalPotWrite(0, 255 - resonance); digitalPotWrite(1, 255 - cutoff); digitalPotWrite(3, 255 - cutoff); } }
A0、A1につないだPOTでフィルターのcutoffとresonanceをコントロールする。
入出力のようす
ch1:入力 ch2:出力
Resonanceをあげない状態だと、普通のLPFとしても動作する。Resonance(Q)と増幅率が連動しているのでResonanceを下げると出力レベルは下がる。
出力は-300mVぐらいが下限の様だ。
メモ:
NJM13700を使ったVCAの入力振幅は±100mV以下にしないと歪むので、うまくレベル調整できるようにしたい。←まずはなるべく歪まないように設計。
5Vを分圧して±2.5V程度でフィルターに使うOPAMPを駆動すると入出力レベルの調整が厳しい。LTC1144という負電圧を作り出すICがあるのでこれを使う手もありそう。(アナログ系の素子を±5Vの両電源で駆動できる)
cutoff/resonanceの設定によってはファンクションジェネレータが異常発振してしまう。Filterの発振が逆流(?)しているのか?
0 件のコメント:
コメントを投稿