18bit 精密AD変換ボード>18bit A/D開発日記>開発日記12月

開発日記12月

ディジタルアイソレータを削除したらA/D変換性能が改善した

2013.12.30

不可解な現象に遭遇しました。

アナログ部とディジタル部を分離するためのディジタルアイソレータ(SI8641)を削除したら、A/D変換の結果たるヒストグラムが改善したのです。

ディジタルアイソレータを取り外した後の基板。ちょっと汚いですが、自宅で作業しているため洗浄ができないのでご容赦ください。

Adc_bypass_buf
 

まずADCの入力をショートしてみた結果。半値幅=3(約93μVに相当)なので、これは従来と同じです。なお、半値幅=3というのは、このA/Dの素の性能なので問題ありません。よくできています。

Adc_short_byp

ADC入力ショート時のADC結果

 

次にOPアンプからの入力をつないだ結果。半値幅=4(約124μV)のときが出てきました。

Adc_op_byp

OPアンプ出力からのADC結果

ディジタルアイソレータを使っていたときには半値幅=6(約186μV)くらいにまで揺らぎが上昇してしまったので、大幅な改善が見られました。

OPアンプは、THS4521とTHS4130の両方を試してみましたが、大差はありませんでした。つまり、OPアンプのノイズよりもADC自体のノイズのほうが大きいというわけです。

sun

次にDACからの入力を入れてみた結果です。

こんな正弦波が入ってきています。

Adc_short_wave_2

DACが動作していることを確認

 

このDACの出力を止めて(固定値を出させて)ADCでとってみたときのヒストグラムは、こうなりました。

Adc_short_dac

 

DAC(固定)→OPアンプ→同軸ケーブル→OPアンプ→ADCの変換結果

 

半値幅は5なので、150μVくらいのゆらぎということになります。

sun

ADCとFPGAとの間をディジタルアイソレータ(SI8641)でつなぐのではなく、抵抗を介して直結したほうがノイズが少ないというのは一見すると不可解な現象です。この原因を追究していきたいと思います。

SI8641は内部に発振器とコイルのような電磁結合の構造を持っていて、入力信号のH/Lで変調されたパルスを伝えることでディジタル信号を伝達しています。この発振が悪いのかもしれません。

とりあえず、「半値幅」といういい加減な指標ではこれ以上の評価は難しいので、Excelのマクロを改良して標準偏差をとれるようにしてみたいと思います。

 

ディジタルアイソレータ(SI8641)

AD変換でいろいろ遊んでいます

2013.12.19

AD7986を使っていろいろ試しています。

基本的に完全差動アンプの後にCRフィルタを通って、AD変換器に入るごくふつうの構成なのです。

Adc_conf_1

こうしてADCからキャプチャしてみた結果を、FPGAの空いている端子に出して、MITOUJTAGのバウンダリスキャンを使ってみてみます。

ロジアナモードにして、デコードしたビットを波形として表示させると・・

Adc_conf_2_2

こんな感じで下4bitが激しく動いているわけです。18bitのADCなのに14bitくらいしかないのか、と思われるかもしれません。

そこで使うのがヒストグラムです。

Adc_conf_3

これを見ると半値幅が6LSBなので、まぁ、前回の「ADCのIN+とIN-入力をショートした」場合の半値幅3LSBに比べると増えていますが、OPアンプとか通しているのでこんなものでしょう。

Adc_conf_4
 

 

次に、完全差動アンプの入力にさらにOPA211という超低ノイズのOPアンプをつないで、そこにBournsのポテンショメータをつないで、指でぐりぐり回してみました。

先日のExcelで計測するマクロを使っています。

 

Adc_test_1

このように、ポテンショメータの巻線に由来すると思われる階段状の波形が見えました。

0V付近の電圧を入力したところ、OPアンプのオフセットにより完全にゼロにはならないのですが、このように半値幅6くらいのヒストグラムが得られました。

Adc_test_2

たまに大きな負の値が出ています。

次に、ポテンショメータをまわして、マイナスの電圧を入力してみます。

すると、

Adc_test_3

こんどは上側に髭が出ました。

 

つまり、+の入力をした場合には下側に髭がでて、-の入力をした場合は上側に髭が出ます。これは何を意味しているかというと、おそらく、ADCがサンプリング動作を行うときに生じる過渡電流が悪さをしているのだと思われます。

データシートに記載されている半値幅は3LSBで、「裸のADC」の状態ではこの値は達成できました。しかしアンプを通すと半値幅が6LSBに増えてしまいます。6LSBならいいんじゃないかと思えるのですが、1LSBが約30μVなので大きいような気もします。

これからもコンデンサを取り換えてみたりいろいろ頑張ってみますが、AD変換器の入力が常に揺らいでいるのは仕方がないのかもしれません。

現在はAD7986を500kHzでサンプリングしていますが、当然ながら一次CRフィルタの特性は緩やかなので500kHz以上の帯域のノイズを消せません。

また、500kHzでサンプリングしているからといって500kHzで考えればよいのではないという気がしてきました。AD7986がAcquisitionフェーズに要する時間は100nsだそうなので10MHzで考えなければならないのではないかという感じもします。

それに、Acquisitionフェーズの間にAD7986の最初のコンデンサに電荷がチャージされますから、この期間にはディジタルの線は動かさないほうが賢明です。

次回は、さらなる精度向上のためにADコンバータへのタイミングを調整してみることにします。

sun おまけ

DACで作ったSIN波をADCに入れてみたところ

Adc_test_4

 

ADCボードからのデータの取り込み

2013.12.15

 

開発中のADCボードにArtix-7 FPGA評価ボードを乗せて、USB経由でデータを取り込めるようにしました。

まずは、ADCの生の実力を見ることにします。

Adcboard_7

使用しているADCはアナデバのAD7986。このAD7986のIN+とIN-を抵抗で直結して、AD変換値を読み出してみます。

こういう計測ではExcelを使うと便利です。ExcelのVBAマクロからtkdnfx3.dllを呼び出せるようにして、測定データを表に取り込めるようにしました。USB Readというボタンを押すと取り込んでくれて、そのままグラフに出してくれます。

18bitのADCなので0~262143まで出してきます。中心が131072になるようにFPGA内で0x20000を足しています。

さて、取り込んだデータは、

Adc_excel_1

Excelだからヒストグラムを作るのも簡単。(別途「分析ツール」をインストールし、アドオンの管理で分析ツールを有効にする必要あり。)

分析メニューをつっついて、ヒストグラムを選択します。

Excel_hist_1

 

そして、ヒストグラムをとりたい範囲を指定します。ここでグラフ作成オプションを入れておきます。

Excel_hist_2

すると・・・

Adc_excel_2

このように、ほとんどの取得されたデータが131071と131072に集中していることがわかります。ただし、データは完全には停止してくれず絶えず揺らいでいます。

ですが、AD7986のデータシートにあるヒストグラムを見る限り、これとほぼ同じくらいの精度(ばらつきの少なさ)が達成できていると思われます。

Ad7986_hist

次に、ADCのIN+とIN-をショートするのをやめて、前段のプリアンプからの信号を与えてみたところ、結構バラけるようになってしまいました。

Adc_excel_3

ADCの生の性能は良かったので、アンプが悪いわけです。このようにヒストグラムが出せると特性が一発でわかります。どこからノイズが入ってくるのか、究明したいと思います。

sun

ちなみに、ボード上のDACで作ったのこぎり波をADCプリアンプの入力に入れてみたところ、このような波形が表示されました。

Adc_excel_4
 

Excelで計測できるっていうのは結構便利だと思います。いずれこの計測ワークシートを公開したいと思います。

 

ADCボードを実装した

2013.12.12

先日設計したADCボードを実装しました。

Adcboard_1

SAMコネクタが7個あります。差動入力が2chと、クロック/トリガ入力1ch、アナログ出力2chで計7個です。

Artix-7ボードか、Spartan-6ボードを乗せることができます。

Adcboard_2

タカチのHEN型ケースにぴったり収まりました。

Adcboard_3

このボードはLT3439という超低ノイズなスイッチング電源を使っています。

Adcboard_4

普通のスイッチング電源は、コイルに流れている電流をOFFにして急激な電流変化を起こすことで昇圧したり負の電圧を作ったりしています。それに対してLT3439はコイルに緩やかに変化する電流を流して励起することで2次側に巻き数比に応じた電圧を発生させるという仕組みです。

そのためのトランスが、上に写真に写っている黒い四角いもの(村田製作所の78253)です。

まず、電源の動作テストから行いました。LT3439の発振を司る時定数のコンデンサの端子をオシロで見てみると・・

Adcboard_5

45kHzくらいで発振しています。CとRの値を間違えたかな?ちょっと計算と違います。

コイルの一次側を見てみると・・・

Adcboard_6

うーん。何かを間違えたかもしません。

でも、ダイオードを通した後の電圧は、オシロではリップルが見えないほど平滑化されて綺麗になっていました。

 

誘電体吸収(DA)

2013.12.11

高精度なAD/DAボードを作りたいと思って購入した書籍「A-D/D-A変換ICの実用技術: 高性能を引き出す回路の作り方と実装方法」に、コンデンサの厄介な性質として誘電体吸収というものが紹介されていました。

 

理想的なコンデンサとは違い、現実のコンデンサには真の容量のまわりに漏れ電流となるRPや、等価直列抵抗ESRやインダクタンス成分ESLなどが加わっています。

これだけなら良いのですが、厄介なのは下の図で書いた誘電体吸収という成分で、真のコンデンサの隣に寄生した容量と抵抗がつながっているやつです。

Da_1

これらの寄生成分は個々に独立して存在しているのではなく、相互に絡み合っていて(つまり上の図はあくまでもモデル)、もっとぐちゃっとした感じになるそうです。

いずれにせよ、この寄生容量によって、コンデンサは過去の電圧を思い出そうとするメモリのような性質を持ってしまいます。つまり、端子をショートしてからオープンし、放っておくと前の電荷が回復してしまうということです。

Da_3

電解コンデンサで端子をショートさせた後に、電圧が復活しているような経験はなかったでしょうか?それが誘電体吸収です。

誘電体吸収があると、たとえば、A/D変換のサンプル・ホールド回路でこの性質が問題になります。サンプル・ホールド回路で前の電圧を思い出されたらたまったものではありません。

Da_2

実際にこの実験をやる回路を作ってみました。

Da_4

MOS-FETをバチバチやって、充電したり、放電したりします。MOS-FETのコントロールは手元にあったArtix7を使いました。

Da_5

上のコネクタの部分に測定対象のコンデンサを差し込みます。

さて、放電時間をどうするか難しいところなのですが、誘電体吸収を測定するための決まった方法はないそうです。放電時間が長ければ当然ながら誘電体吸収は小さく出るでしょう。この誘電体吸収の時定数はミリ秒のオーダーになることもあるそうで、コンデンサによってバラバラです。

とりあえず、1uFのコンデンサに対して10u秒の放電で試してみました。

千石で買ってきた1uFのコンデンサたちです。左からタンタル・積層フィルム・積層セラミックです。

Da_6

タンタルコンデンサに充電して、10u秒後にオープンしたときの波形をご覧ください。

Da_7

ショートしたときに完全にゼロにはなり切っていないのですが、オープンにした後、電圧が回復していくのが見えます。当然、ショートしている時間がもっと長ければ回復する電圧は低くなります。

図には出しませんが、フィルムコンデンサの場合はもっと少なくなりますし、意外なことに積層セラミックコンデンサのは小さかったです。

 

次は0.01uFのものです。このあたりの容量なると、マイカやスチロールコンデンサが使えるようになります。

Da_8

容量が小さいので、ショート時間は1u秒にしました。ディップドマイカの場合は結構、電圧が復活しています。

Da_9

ブログの図には出しませんが、予想通り、積層フィルムやスチロールコンデンサでは、かなり小さくなっていました。

※月刊特電の次号に掲載予定

sun

結論を言うと、DAの時定数がみんな特性がバラバラなので、正しい測定方法がわからないし、適切な放電時間もわからないので正しい測定方法などないのですが、千石に売っているこれらのコンデンサはかなり良い感じでした。

Da_10_2

意外とおすすめです。

 

ADCボードが出来上がってきた

2013.12.06

ADCボードが出来上がってきました。

Adc_board

早速、アルバイト君に実装してもらっています。

このボードは、ボードとして提供するのではなく、箱に入れた「製品」としたいと思っています。

FPGAにはあらかじめデザインを書き込んでおいて、Windowsの計測ソフトも用意して、電気の専門家でなくてもすぐに使っていただけるような製品を目指します。

 

タカチのケースにぴったりと収まるように作りました。

Adc_case


ケースにぴったりすぎて、本当にこれでいいのか心配ですが・・

まずは実験機ですので18bit 2Msps程度の低速なものを目指しています。

あくまでも本命は来年作るであろう数百MHzのADC装置と、多チャネルのADC装置です。

 

A/D変換ボードの出図

2013.12.02

ようやくA/D D/A変換ボードを出図しました。

Np1067pcb_1

試作器なので、P板.comの急ぐコースです。

ボードとして販売するのではなく、計測システムにしたいので、タカチのHEN型(アルミ製)放熱ケースに入れられるように設計しました。

この基板を設計するにあたって、先日の「A-D/D-A変換ICの実用技術」に書かれている知識をふんだんに使いました。(使ったつもり)

  • レールツーレールOPアンプなど存在しない → 0V~フルスケールまで出すために、より広い電源電圧で最初のアンプ駆動した。
  • ADCがサンプリングするときの過渡電流・・・十分に考慮した。
  • コンデンサの誘電体吸収(DA)・・・小さいコンデンサを選定
  • アナログ部とディジタル部の分離・・・完全にアイソレートした
  • ADCのディジタル側の信号の帰還・・・十分に考慮してパターンを引いた。
  • 帰還抵抗のマッチング・・・マッチングの取れた高価な抵抗を使った
  • 抵抗の温度計数・・大きな分圧比は作っていないので大丈夫

ほかにも諸々の注意点が書かれていました。

さて、「A-D/D-A変換ICの実用技術」に書かれていたことで、最もショッキングだったことは、ADCにあるDVDDやDGNDは、ディジタル電源につないではいけない、ということでした。

DVDDやDGNDという端子は、あくまでもADCの中のディジタル的な動作をしている部分の電源端子という意味であって、ここにディジタル回路からのGNDをそのまま使うと、ノイズの混入の原因となるそうです。

正しいつなぎ方は、DVDDはAVDDからEMIフィルタをつかってつなぎ、DGNDとAGNDは直結する、ということでした。また、ADCのディジタル出力には必ず抵抗を入れてからバッファICに通せ、ということが書かれていました。

なぜならば、ADCのディジタル出力から電流を多く取り出すと、過渡現象がノイズとなってアナログに混入するから、ということです。バッファICを介して取り出そうとしても、バッファICの入力には10pFくらいの容量があるので、この10pFの入力容量を充電するために瞬間的に10mAくらいの電流が流れてしまうので、それもノイズの原因になる。だから、500Ωくらいの抵抗を挟んでからバッファに通して、それからディジタル回路に渡せということが書かれていました。目からうろこでした。

サンプリングクロックはの水晶発振器の電源はアナログ電源から取らなければならないほか、トランスを使って結合しろとか役立つノウハウ満載でした。

 

あと面白いのは、0.035mmのパターンの抵抗は、0.14mΩ/squareで計算できるそうです。

銅の抵抗はρ長さ/(幅・厚さ)なのですが、この式はつまり(長さ/幅)に比例します。面白いのは、具体的に式に数字を入れて計算する必要はなく、パターンを正方形が何個積み重なってできているかを考えるだけで抵抗値が求まるということです。

つまり、



■■■■■■■■

というパターンがあったら正方形は10個なので、1.4mΩなのです。太いパターンならば抵抗値は低くなるし、細いパターンなら抵抗値は高くなります。要するに正方形の個数だそうなのです。つまり、GNDのパターンを正方形にしておけば、一辺から対向する辺への抵抗値は0.14mΩになります。

基板の仕上がりは金曜日になります。土日で実装できればいいなと思います。

 


© 2015 TokushuDenshiKairo Inc. All rights reserved