ADCの値ジャンプが解決できた
ようやくADCの値ジャンプが解決でき、18bitのADCの性能を堪能できるようになってきました。
まず、0Vを横切る正弦波
常に0Vを下回る正弦波
何が原因だったかというと、ADCに入力される差動信号のコモン電圧でした。
ほとんどの高性能ADCは差動信号で入力を与えることになっていて、この2つの差動信号の平均値をコモン電圧というのですが、AD7986のデータシートでは何Vが良いと明確に定められていなかったので、軽い気持ちでREFINに使っている1.2Vを入れていました。
VIN+が1.2V+xで、VIN-が1.2V-xで振れることになっていたわけですが、なぜかVIN+ - VIN-が-0.01Vくらいのところでは、うまく動かなかったのです。
別にVIN+やVIN-が0Vを下回ったりしたわけではないのですが不思議です。
このコモン電圧を2.5Vにしたらうまくいったというわけです。
もはや最初の回路が原型をとどめないほどに修正されてしまいました。
実はこれ、両面基板なのです。18bitのADCでもパターンに十分気を使って設計したら両面基板でできてしまいました。
ポテンショメータなどをつないで固定電圧を与えたときのキャプチャした波形。
2つあるチャンネルのうちCH0(青)のほうがバラツキが少ないのが謎です。
標準偏差を取ってみると、CH0(青)が49uV(≒1.5LSB)、CH1(赤)が100uVでした。
CH0のほうでヒストグラムを取ってみると、
LSB4個分にほとんどが収まっていることがわかります。これはAD7986のデータシートと比較しても、遜色ないレベルです。
考えてみれば、VCM=1.2Vだと、V-=0、V+=2.4VとV+=0、V-=2.4Vが入力できる電圧の最大値になるわけですから、フルスケールまで使えないですよね?
VCMの値は本来は任意のはずなのですが、ADCによっては予期しない動作をするのかもしれません。このAD7986では、一番良いのはVCM=1/2VREFなのでしょう。
なぜ1.2Vで作ってしまったかというと、以前Texas Instrumentsの石で設計した24bit ADC(オーディオ用の安いADCではなく計測用の高価なもの)がそういう設定にしていたからだと思います。思い込みやうまくいった経験というのは怖いものです。
| 固定リンク
コメント