製品情報>18bit 精密AD変換ボード>18bit A/D開発日記>開発日記1月

開発日記1月

18bitADC装置でほぼ満足のいく性能が出た

2014.01.23

18bit ADCボードがようやく完成に近づいてきました。

まず、昨日までの装置で、入力をGNDに接続した状態でキャプチャした波形はこんな感じでした。

Adc0123_1

青いのがCh1で、赤いのがCh2です。Ch1は、だいたい±2くらいの範囲(≒60μV)で揺れているのですが、Ch2はその揺れは約2倍あるので太く見えます。また周期的な成分も見えます。標準偏差を電圧に換算してみると、46.89uVと69.25uVでした。

rain ノイズの原因

波形の揺れの原因は、隣にあるDACの駆動用信号から混入してきているノイズでした。DACを止めたところ、ぴたりノイズが止まって線が細くなったのです。Ch2のほうがDACに近いため、ディジタルの信号線からノイズを受けたのでしょう。

Adc0123_8

DACを止めたときのキャプチャ波形はこんな感じです。

Adc0123_2

線の太さはほぼ同じになりました。ホワイトノイズは同じくらいになったようです。標準偏差を電圧に換算してみると、42.8uVと46.71uVでした。

ヒストグラムを取ってみても、かなり理想的です。

Adc0123_9


soccer 周波数解析してみよう

でも、まだCh2には周期的な成分が見えています。そこでFFTしてみます。

Adc0123_3

この図は、周波数の最大値が1MHzです。信号を入れていないのでだいたい-140dBくらいになっているのですが、40kHzくらいのところに-130dBくらいのピークが見えます。これが、Ch2で見えていた周期的な揺らぎの成分です。

この40kHzというノイズは、オンボードの超低ノイズスイッチング電源「LT3439」によるものです。およそ2LSBくらいの揺れを生じさせています。Ch1にはこの成分は見えないので、電源ラインを伝わってきているのではなく、トランスからの電磁誘導によって引き起こされているのだと考えられます。

つまり、ノイズは電源ラインから来ているのではなく、空間を飛んできていると推測されます。この対策は基板の改版時に検討してみることにします。

thunder ディジタルフィルタをONしたらすごい性能!

ちなみに、FPGAの内部に作ったディジタルフィルタをONにすると、こうなります。1LSBが30μVですから、すごい精度です。18bitADCの性能が出せたと考えています。

Adc0123_4

ok 窓関数の効果

さて、こんどはファンクションジェネレータから20kHzの正弦波を入れてみました。

Adc0123_6

裾野が広がっていて美しくありません。-80dB以下は見えなくなってしまっているので、18bit ADCの意味がありません。

そこで教科書通り窓関数をかけてみることにします。

まずはハミング窓。

 

Adc0123_5

-100dBまで下がりました。

Wikipediaによるとナットール窓とかブラックマンハリス窓というのが周波数分解能がよさそうなので、ナットール窓を使ってみました。

すると・・・

Adc0123_7

わお! すごくクリアに見えたではないですか。

なんだか高調波もいっぱい見えていますが、きっとファンクションジェネレータの性能でしょう。現在使っているファンクションジェネレータは、高調波ひずみが-55dBcという性能です。つまり、搬送波が-30dBなので、高調波は-85dBくらいあってもおかしくない、という性能です。だから、この高調波は、ADCボード上のプリアンプやADCの性能ではない可能性が高いと思われます。

低ひずみな発振器がほしい・・

 

というわけで、ADCボードはほぼ完成に近づきました。来月には発売できるように詰めの作業を頑張ります!

ADCの値ジャンプが解決できた

2014.01.04

ようやくADCの値ジャンプが解決でき、18bitのADCの性能を堪能できるようになってきました。

まず、0Vを横切る正弦波

Ad7986_noerror

常に0Vを下回る正弦波

Ad7986_noerror2

何が原因だったかというと、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にしたらうまくいったというわけです。

sun

もはや最初の回路が原型をとどめないほどに修正されてしまいました。

Ad7986_noerror3

実はこれ、両面基板なのです。18bitのADCでもパターンに十分気を使って設計したら両面基板でできてしまいました。

sun

ポテンショメータなどをつないで固定電圧を与えたときのキャプチャした波形。

Ad7986_noerror4

2つあるチャンネルのうちCH0(青)のほうがバラツキが少ないのが謎です。

標準偏差を取ってみると、CH0(青)が49uV(≒1.5LSB)、CH1(赤)が100uVでした。

CH0のほうでヒストグラムを取ってみると、

Ad7986_noerror5

LSB4個分にほとんどが収まっていることがわかります。これはAD7986のデータシートと比較しても、遜色ないレベルです。

 

sun

考えてみれば、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ではなく計測用の高価なもの)がそういう設定にしていたからだと思います。思い込みやうまくいった経験というのは怖いものです。

 

AD7986で値がジャンプしてしまう

2014.01.03

AD7986を使った18bit ADCの開発を鋭意進めています。

最高速度2Mbit/sでのサンプリングや、サンプリング値のばらつき(標準偏差)を65μV程度に収めるという課題はクリアできるようになってきました。

しかし、どうしても解決できていない問題が1つあります。

0Vよりちょっと下のあたりで値がジャンプするのです。正弦波を入れてみると一目瞭然です。

Ad7986_error_2

拡大してみるとだいたい1000くらいの値をジャンプしていますから、30mVくらいです。

Ad7986_error

 

正弦波をやめ、このあたりの固定電圧を入力してみてみると・・・

Ad7986_error_3

値が激しく行き来しているのですが、この中間の値というものが出てきません。つまり、-15mVの電圧がうまくサンプリングできないのではなく、マイナス方向にバイアスがかかってしまって、この間が飛んでしまっているのではないかと思われます。

いろいろ原因究明の努力はしてみました。

  • オシロでADCの入力を見ればこんな波形にはなっていないから、AD変換の際に何かを間違ってしまっているわけです。
  • プリアンプがレールツーレールなので、上と下が切り替わるところで変なことが起きているのでは・・・と思って、プリアンプを外してみたけど状況は同じでした。
  • また、0Vよりちょっと下(111111xxxxxxxxxxxx)のところで多数ビットが同時に切り替わることによる電源の問題かとも思ったのですが、そうでもなさそうです。
  • 2つのCHで同じように起きているので、たまたまAD7986が壊れていたということでもなさそう。

どうやらリファレンス電圧と関係していることがわかってきました。REFという端子の電圧を標準ではない電圧にしたりすると、この値ジャンプが消えて滑らかになります。

あと、考えられることといえば、AINのコモンモード電圧の範囲に制約があるとか、かもしれません。

引き続き調査してみます。

 


© 2017 TokushuDenshiKairo Inc. All rights reserved