AD360データロガーのその後
先週末から3連休、そして火曜日も、AD360データロガーの開発を続けていました。
4枚重ねてみると、思った以上にかっこいい外観になりました。これで20chの素晴らしい性能のデータロガーになるはず・・
しかし、基板1枚では結構理想的な特性が出ていたのですが、2枚、3枚・・と重ねるとどんどん特性が悪化していって、4枚重ねた時には見るも無残な感じの特性になってしまいました。
正弦波を入れたときのスペクトラムを見てみると、25kHzあたりにこんもりとした山が・・
それにオフセットやゲインもなんだか安定しない。20chで2.5Wくらいの消費電力になるように設計したのに、5~6Wも食っている・・・
途方に暮れていました。
そして迎えた3連休。徹底的にデバッグしました。まずは消費電力が予想以上に大きいところから調べました。
その原因は、ADC手前に置いたコンデンサに流れる過渡電流でした。普通、このコンデンサには電流はほとんど流れません。しかし、本来なら1.1mAくらいの低消費電力であるはずの完全差動OPアンプ「THS4521」が8mAも消費しているのです。
これは異常事態です。
オシロで波形を見てみると、なんと、24~25MHzで発振しているように見えるではないですか!!
その発振を止めようと、コンデンサをベタベタくっつけたりいろいろやったのですが、まるで効果がありません。こうなったら周波数特性の低いOPアンプに変えるか・・
そんな後ろ向きなことを考えていたとき、ふと思いました。完全差動OPアンプはVocmという入力端子がある。これが原因かもしれない・・
そう思ってVocmの電圧を見てみると
発振していたのはコモン電圧でした。なんと218mVも揺れています。コモン電圧が上下しているのでADC用の差動OPアンプの出力も合わせて上下し、それが5Ωの抵抗とコンデンサを介してGNDに流れ込むわけですから、かなりの無駄な消費電力となっていたのです。
面白いのは、差動アンプの出力はコモンモードで揺れるため、ADCの変換結果にはなかなか出てこないのです。ADCの変換結果にして200μVあるかないかです。コモンモード除去比が60dBくらいあったというわけです。まったく気が付きませんでした。
コモン電圧の発振を抑えたところ、消費電力は激減し、20ch時に2.5Wという目標が達成できました。
次の問題は、基板をスタックしてチャネル数を増やしていくと特性が劣化する問題です。基本的に、チャネル数が増えると消費電力が増えることが原因でした。
消費電流が増える→電源電圧が0.5V近く低下する→Vrefの値が下がる
という考えられないような事態が起きていたのです。
原因は、アナログ電源用に使用したMURATA-PS社のスイッチング電源モジュールNKA0503SCでした。NKA0503SCは5V入力から±3.3Vを作ってくれるモジュールですが、出力がまるで安定化されていません。データシートによれば、
と、出力電流によって出力電圧が綺麗に変化します。つまり、安定化されていないのです。きっと、発振器の先にトランスを付けただけの構造なのでしょう。このため、チャネル数を増やして消費電力が増えるとアナログ電源の電源電圧が低下するのです。
しかも、NKA0503SCの出力電圧は、電源入力5Vの電圧にも大きく依存します。
定格電流(160mA)の30%くらいのときに定格電圧になるのですが、それも個体差があるようです。
その上、このモジュール、ちょっと負荷をかければ発振するし・・だめだこりゃ。
3.3Vの電源電圧が変動しても、Vrefが安定していれば問題はないはず。
ところが、ここにも罠があったのです。Vrefの基準電圧自体はTI社のREF5025というリファレンスで作っているので極めて正確です。しかし、それをボルテージフォロアするADA4841というOPアンプが曲者でした。
ADA4841は、レール・ツー・レールを謳っていますが、レール・ツー・レールなのは出力のみです。入力はレール・ツー・レールではありません。
下の図はADA4841のデータシートのものですが、ゲイン1、つまりボルテージフォロアでは電源電圧-0.8Vくらいまでしか追従できていないことがわかります。
どうやらVCC-0.8Vくらいが限界なので、3.3V電源時に出力2.5Vを出すことは、まさにギリギリだったのです。(OPアンプの出力として2.5Vを出しているのか、電源の天井にひっかかって2.5Vになっているのかわからないくらい)
そのため、消費電力が増える→電源電圧が低下する→Vrefが下がる、というありえないことが起きてしまっていたのです。
電源モジュールを秋月で買ってきたMCW03-05D05に交換し、Vref用のアナログ電源を±5Vにすることで問題を解決できました。この対策が功を奏して、ボード全体の電源電圧を3.5Vから5.5Vくらいまで振っても、ADCの変換結果には1LSBの差も出なくなりました。
MCW03-05D05は出力がちゃんと安定化されているようです。安いのに良い。
残る謎として、2.5Vの基準電源を30kΩと20kΩで分圧して1.0Vを作り、ADA4841のボルテージフォロアに入れているのに1.033Vくらいになってしまうということでした。なんとオフセットが33mVも出ている。規定値の約1000倍なので、何か問題があるはず。
そこで、部品を1個1個外して測定していきました。
抵抗分圧の前はちゃんと2.500Vになっていて、20kΩと30kΩの抵抗も0.1%品を使っていて、測っても20.00kΩ、30.00kΩを差しているので、ここは問題はないはず。
ではなぜ1.000Vにならないのか?
このノードにつながっているのはOPアンプしかありません。実は、ADA4841は、差動入力インピーダンスが25kΩしかなかったのです。
つまり、VIN+からVIN-にはほとんど筒抜けです。単純なボルテージフォロアを作った場合、出力電圧に対して外部から電流が回りこんでくる場合、VIN-からVIN+に回り込んで、VIN+の電圧を押し上げます。
計算はしていませんが、おそらくそういう事情で設定電圧からずれてきてしまっているのでしょう。
結構ハマリましたが、回路の不安定さも解決できました。これから一晩中オフセットの変動をログして寝ることにします。
| 固定リンク
コメント
THS4521 は発振しやすいですね。最近、同じ状況にはまりました、低レベルで高域ですからほんと厄介です。 出力に 12~33ohm を直列に入れて対策いたしました。 (Artix-7基板、使わせていただいております!)
投稿: thz800 | 2014.12.02 12:01
コメントありがとうございます。
今回発振していたのはTHS4521ではなく、別のOPアンプだったのですが、リファレンス電圧のようにコンデンサをつなぎたくなる信号をOPアンプで作るのは工夫がいりますね。
投稿: なひたふ | 2014.12.05 00:19