ひとつ前へ http://www.madlabo.com/mad/ mad@mail.wind.ne.jp

GID-ADC トラブル対策
(C)数理設計研究所



GID-ADC キットが動かない!

 動かない原因はありとあらゆるケースが想像できますが,99.9%解決可能です。解決を困難にしている原因は究明手段が合理的な手順に拠っていない点にあります。最大のポイントは,確実に動いている部分と確実に動いていない部分をうまく切り分けることです。

 パソコン,OS,ケーブル,ソフト,GID-ADC本体,センサー,どれが動いていてどれが動いていないのか?

GID-ADC本体の検査 :
 半導体や電子部品は,部品不良の可能性はまずありません。取り付け,極性,はんだ付け不良、この3点だけ気をつければほとんどが動き始めます。グランド線のジャンパーをお忘れなく!
 部品の取り付けミスは、部品配置図とにらめっこしてなんとしても見つけ出してください。絶対に間違いが無いと確信できるのならば、はんだ個所を半田ごてで再加熱してください。特にDB25と基板の接続個所ははんだが少なすぎる不良が多いようです。
 GID−ADC規模の回路ならば,回路図と突き合わせながら検査しなくてもここまでの作業で動くようになるはずです。 それでも動かなければデバッグを開始します。ハードウェアのデバッグは、作業に先立ってRS232インターフェース、MAX186内部仕様を含む全回路を解読し理解するところからはじめます。
 電源レギュレーターの入出力電圧の確認,MAX186のシリアル信号のオシロスコープでの観察,その他の信号線の手動による制御と制御結果の確認・・・・。作業の手順は自ずと決まってきますが,初心者にはかなり難しい作業だと思います。しかし,チャレンジしてみる価値は絶対にあると確信しますし、これこそがGID−ADCの目的のひとつでもあるのです。

パソコンとOSの検査

 PC/ATはプリンタポートにDB25を採用しているケースが多く、ここにGID-ADCを接続しても動きません。PCはCOMポートにDB9のコネクタを採用していマシンが多いのです、これには変換コネクタが必要です。プリンタポートに接続してパソコンやGID-ADCを壊したという報告はありませんが、注意してください。

 シリアルポートが利用可能な設定になっているかどうかを確認してください。
 確実な確認方法としては

☆使用したいCOMポートに外部モデムを接続して動作さる方法
☆クロスケーブルを使ってほかのパソコンと接続してみる方法

があります。どちらもハイパーターミナルなど一般的な通信ソフトで確認できます。

 ノートパソコンや一部のデスクトップではCOMポートが内蔵モデムや赤外線ポートに割り当てられていて、外部コネクタが使える状態になっていないことがあります。どうしてもCOMポート=2の設定で動かなかったので調査してみたらパソコンのCOMポート番号が1と3に設定されていたという報告もありましたし、同じCOM1や2でも標準の状態でないことも有ります。

 マザーボードのBIOS設定でCOMポートがディゼーブルになっていることもあります。 これらのマシン固有の問題にはこちらでは対処不可能なので,ユーザーが自力で解決するしかありません。が,ほとんどの場合パソコンのマニュアルをよく読めば解決できます。 最近のパソコン,特にショップ製のAT互換機ではコネクタにポート番号を書いていないものをよく見かけます。接続するたびにどのポートだったか悩むよりも,ポート番号をケースにマジックで書いてしまいましょう。

標準の割り当て状態
ポート アドレス
PC/AT COM1 3F8
COM2 2F8

ソフトの検査

 GID-ADC付属のサンプルプログラムの中からお好みのものを使ってください。どれも信頼性は高く,動作可能なマシンならば確実に動きます。

 DOS版ソフトとwindows版ソフトを交互に使う場合にはかならず一度マシンを再起動してください。
 COMポート番号を間違えると動かないので注意!
 シリアルマウスを接続しているポートを指定するとマウスが使用不可能になります。

 パソコンで実験をするときは,「動作がおかしくなったら再起動!」、パソコンはまず壊れないので、どんどん実験しましょう。

センサーの検査

 GID-ADCが動作することを確認してからセンサの動作試験をしましょう。

GID-ADCの動作確認1:
 まず、1.5V乾電池をアナログ入力とグランド間に接続して確認する方法です。乾電池を使って実験している範囲内では,GID−ADCを壊すことはまず考えられません。安全確実に動作試験を行うことができます。

GID-ADCの動作確認2:
 別の方法として、GID−ADCの±5V出力端子から抵抗で分圧してアナログ入力に与える方法もあります。これも安全確実です。応用技として,Tx(TTL)端子の電圧を分圧してアナログ入力に接続する方法もあります。この方法では,TX端子の動作確認も同時に行えるので便利です。

 これらの方法で測定を確実に行えることを確認してから、センサや外部回路を接続して試験してください。

 ただし!!センサーの出力がGID−ADCの入力耐圧を越えないことをテスターなどで確認してから接続すること!±12V程度の電圧でもMAX186を壊すには十分なのです。参考→5:外部にアンプ、OPアンプを接続するとき

AD変換に小さな誤差が出る原因

 乾電池の電圧など,安定なはずの電圧を測定しているのに数mV〜数10mVのノイズを観察することがあります。
GID-ADCに使われているMAX186というアナログ・デジタル・コンバータは毎秒133k回の変換性能があります。その間に8ビットの制御信号と12ビットの出力が出てくるので、アナログデータの取得は1/20時間よりさらに短い時間でするのです。133kの20倍以上の高周波特性を持つ入力なので最低でも3MHzのアナログ入力帯域と想像されます。(MAX186のデータシート(P8)には入力トラッキング回路は4.5MHzの小信号帯域巾を持つと記載があります)
 3MHzと言えば中波ですから強力な放送電波の領域です。この空中を飛び交う放送電波は10cmも電線が露出(1本でもループでも)していれば10mVぐらいの電圧を生み出します。入力端子、センサの接続部は短くきれいに、さらに入力には保護を兼ねてCRを入れて必要十分な帯域を通す努力が必要です。

対策:

ときどきAD変換に大きな誤差が出る 2001/09/05

 Windows98などで動かしていると、たいていはちゃんと測定するのだが、100に1つぐらい大きな誤差測定の記録が残ることがあります。これはGID-ADCの測定中にWindowsの内部割込みがおき、GID-ADCの内部電源が不安定になっている事が原因になっていることが多い。
 組み立て説明書では内部電源に並列に30μFぐらいのコンデンサをつけるように指示していますが、根本的対策はGID-ADCへ外部から6V以上の電圧を与えれば解消します。

±5V端子の出力電圧がおかしい

 電源レギュレーターICの入力側に接続されている電解コンデンサ/タンタルコンデンサの極性を間違えるとGID−ADCのアナログ側に出力されている±5V電圧端子に3〜4Vの電圧しか出力されないことがあります。
 パソコンのCOMポートの出力能力が小さすぎるときもあります。当然測定結果もおかしくなります。要確認。

GID-ADCを壊してしまった!>

 ついさっきまで動いていたGID−ADCが,突然動かなくなってしまった! 実験中にはよくある話です。
 GID−ADCの故障,破損を疑う前に,まずパソコンとソフトの再起動,センサーの再検討などを行ってください。実は壊れてなかった,なんていうこともよくある話です。

 どうやっても動かない場合は,まずGID−ADCの電源レギュレーターICの入力電圧と出力電圧,MAX186のアナログ入力端子の電圧を検査します。レギュレーターの入出力が同じ電圧になっていたり,MAX186のアナログ入力端子が±5Vのどちらかに振り切っていたら,GID−ADCは確実に壊れています。このとき,ダイオードが一緒に壊れていることもあるので確認してみてください。

 GID−ADCを壊してしまったとき,何をしたら壊れたのか,なぜ壊れたかを徹底的に調査することをお勧めします。
参考→5:外部にアンプ、OPアンプを接続するとき

 故障している部品をはっきり特定できれば,当方で部品破損の代替用としてストックしている部品もあるので連絡を頂ければ部品原価*1。5倍の価格で提供可能です。希望の方は必要部品と数量,できれば故障原因と実験の状況をはっきり明記してメールまたはFAXで連絡をください。

GID-ADC パソコン割り込みのトラブル

上のトレースはMAX186のDIN端子
下のトレースは電源レギュレータIC(78L05)の入力端子,約10V
 WIN95のDOS窓でGID-ADCアプリケーションを動作させているとPC内部でシステム割り込みが発生し,クロックが不安定な状態でペンティアム150MHzのマシンだと13〜15m秒停止する。
 CLIで割り込みを禁止してもよいが、システムクロックが遅れる問題が発生する。デジタルオシロのようなソフトであればCLIで時間分解能を保ち、後で時計を回復すれば回避できます。

デジタルオシロのソフトウェアはC++クラスライブラリ(GIDADC。CPP,H)にある
void SetCliMode(int i = 1)
これはバースト取り込みモードのときにだけCLIで割り込みを拒否しているのです。一般的に15m秒の時間誤差が許せる場合には、これは不可避です。
 この電源電圧の低下はMAX186の動作不良となって現れ、デジタル出力を零にし、大きな変換誤差となります。
 レギュレータの入力側に1μFがついているだけなので、最低でも10μF、できれば33μF以上の電界コンデンサを付加すれば電源の不安定さによるノイズは無くなります。
 外部にセンサをつける時にアナログ側コネクタの±8Vと書いてあるピンに外付けコンデンサを付加すればよいだろう。33〜100μF、16V以上のものを2つグランドに対して取り付けます。 

GID-ADC アナログ入力回路の問題

 MAX186の入力等価回路は16pFに直列に10kΩがON/OFFするような形になっています。
 いったん変換が終了すると16pFに蓄積されていた電荷が無くなっているので、入力に電圧があると10kΩを介して再充電 が発生し、電流が流れることになります。


1:センサから低速OPアンプで増幅した出力を見る場合

 低消費電力型のセンサモジュールでは低速OPアンプを使っています。たとえば1000mVの出力電圧が出ていれば16pF+10kΩに見える負荷を与えても問題無いと考えられるかもしれません。

 しかし、10m秒ごとにデータを読み出せば、1回目は正常であっても,2回目の変換までにはOPアンプの負帰還で放電され た電荷を回復しようとして100Hz応答程度のバウンスがあります。たとえばOPアンプのこの周波数帯域の出力抵抗が50Ω だとしても、5mVぐらいの(50Ωと10kΩの比)読み取り誤差が出てきます。

 OPアンプはNFにより見かけの周波数特性は改善されていますが動的な安定性はそれほど良いものではありません。OPアンプを変えるのが難しいときには,以下の対策を施します。

☆ アナログ入力と並列に16pFの1000倍ぐらいの容量を並列にしてバッファの役割をさせる。1000倍ならば16n F=0.016μFです。だいたい0.01〜0.1μFでいいでしょう。

☆ ただしセンサモジュールなどできあいのOPアンプ出力へ直接にコンデンサを並列にすると,OPアンプの負荷が容量性になり発振しやすくなります。モジュールから1〜10kΩの直列抵抗を介して上記のコンデンサを充電して電圧を測定します。

 これで変換誤差が0.1%ぐらいにおさまります。

抵抗と容量の値は周波数特性とトレードになります。
☆ 10kΩ、 0.1μFでは−3dBの点は159H、毎秒1回測定ぐらいなら問題になりません。
☆ 1kΩ、0.01μFにすれば15.9kHzになるのでGID-ADCの実用最高変換速度で使ってもOKです。

2:センサから出る直接出力を見る場合

 ダイオードの両端電圧などを測定する場合には特に容量を並列にする必要はありません。しかし一般的に言って直列抵抗とコンデンサ をつけておくことはノイズ対策や異常電圧の保護のために有効と思われます。

3:一般的な精度

 これら対策でどれぐらいの変換精度がえられるか? 組み立て試験した数十台の実験では±1mVの変換誤差で納まります。±1mVにおさまらなければどこかがおかしいと思っていいでしょう。
 空中には電波が飛び交っています。その電波による起電力は1mあたり100mVぐらいのものなので、10cmの空中配線をするだけで10mVぐらいのノイズが乗ります。ADC全体としては毎秒1回とか非常に低速の変換でもADCは瞬間的な電圧を小さなコンデンサに記憶してからその電圧を変換するので非常に高周波特性が良いものなのです。
 ダイオード温度計のようにセンサーに供給される電圧や抵抗値が変換結果に影響するようなセンサは電源レギュレータICの出力電圧の精度が影響します。
 センサ出力にノイズが多いなどの理由で変換誤差が残るようでも、平均を取る対策を施す前になるべくノイズを減らすべく努力してから平均する手法を取るようにするべきです。

4:電源投入時の待ち時間

 RS232Cの電源を使っているので信号線の設定をしてから即時に変換を開始してもたいていは問題ありませんが、内部電圧が安定するまで1秒ほど待ってから変換を開始したほうがいいでしょう。この時間は電源部に付加したコンデンサ容量の大きさによって変わります。

5:外部にアンプ、OPアンプを接続するとき

 熱伝対や微小電圧を増幅するアンプを接続するとき、アンプの定常状態の出力が±5Vに収まっているだけでは安心できません。
 電源を入れた瞬間、熱伝対がはずれたときなど、いかなる状態でも±5Vまたは0〜5Vの範囲に収まっていなければADC−ICを壊してしまいます。
 対策はアンプ側から大きな電圧が加わらないようにするか、大きな電圧が出てもGID−ADCのアナログ入力からGID−ADCの電源に電流が回りこまないようにします。

対策1:
 アンプの電源をGID-ADCユニットの±5Vから取ることです。そうすればいかなるときにも過電圧にはなりません。RS232Cだけからの電流でたりないときにはGID-ADCの±8〜12と書いてある外部電源入出力のピンに外部電源を用意します。そうすれば内部で±5Vの30mAぐらいなら取り出せるでしょう。


対策2:
 アンプの出力からGID−ADCのアナログ入力に直接配線しないで、1〜10kΩの直列抵抗をいれて、GID−ADCのアナログ入力ピンの処で100p〜0.1μFのコンデンサでシャント(アースに落とす)します。ノイズ抑制とアンプの発振防止の効果もあります。

2001/2/20
一般的な波形を観察するための値
データ/毎秒 直列抵抗 並列容量 F@-3dB
<100 100kΩ 0.1μF 159Hz
100〜1000 100kΩ 0.01μF 1591Hz
〜10k 10kΩ 0.01μF 15.9kHz
精密な観測値(±1LSB)が欲しいとき
データ/毎秒 サンプル間隔 直列抵抗 並列容量 F@-3dB
1 1000m sec <100kΩ <1.51μF 15.9Hz
10 100m sec <100kΩ <0.15μF 159Hz
100 10m sec <100kΩ <0.015μF 1591Hz
漠然と波形を見るときの周波数応答から計算した値で、抵抗値も容量値もこの表以上であればかなりの安全性がある 急に電圧が(0→1V)に立ちあがったとして測定時間間隔内に±1LSBに追いつくための値 E(t) = (1-e^(-t/(CR)))  0.999=E(t) では CR=0.1455 となる 
抵抗値も容量値もこの表以下であれば±1LSBの精度が満足される
と言う訳で、目的により限界や最適地が異なるので、安全の上からは直列抵抗、並列容量は大きめにしましょう。

6:入力に過電圧を与えると 2000/6/20

 GID-ADCのアナログ入力はIC内臓保護以外の対策をしてありません。アナログ回路の試験をしている最中に±15Vの電源に触れたりすると確実に壊れます。

←アナログ入力に+20Vを接続しMAX186のパッケージが爆発した。

 テスターやデジタルオシロなどとして使用する場合には,入力に10〜100kΩの直列抵抗を入れるなどの対策を取りましょう。どれぐらいの直列抵抗,またはダイオード保護を回路にすればよいか研究のしどころと言えます。
 −12Vを与えて破壊した経験では,入力が負電源の−5Vと短絡し,おまけに負電源側の電源レギュレータも壊れてしまいました。これはほんの短時間におきます。+電源側でも同じ事が起きます。

7:入力に過電圧が予期されるときの安全策(ブリーダ抵抗) 2001/2/26

 測定周期が早くないときは入力に安全抵抗を入れても、MAX186などの消費電流がほとんどゼロに近いので、入力からの流れこみ電流で内部電圧が5Vを超える可能性があります。GID-ADCをRS232Cからの電力だけで動かしているときでも、±の外部電源をつないで動作させても、この限界があります。
 ±の外部電源をつないでいるときは、内部±5Vに4.7kΩをグランドとの間につないで約1mAの電流を消費させると、入力からの流れこみ電流を総和して1mAまで許容するようになります。1chだけが問題になり100kΩを保護抵抗にしている場合では100Vの過電圧まで耐えることができる計算になります。
 こういう、余計に消費させる抵抗のことをブリーダ抵抗と言いますが、ひとつの案としてお知らせします。(不明点は問い合わせてください)

8:接点の状態を読みこみたい 2001/3/8

 一般的にはSWや接点をGND側に配置します。なぜならばケーブルなどで引き回すことが多いのでノイズ面で有利になるからです。
 図の5VはGID−ADCの15番ピンから出ているものを使えばOK。

●SWがOFF=オープン:
 アナログ入力設定がバイポーラ(±)になっていればOFFのときに+2047(フルスケール)になりますしユニポーラなら4095になります。
●SWがON=ショート:
 0V近傍になります。

 抵抗は220kΩぐらいがお勧め、アナログ入力に入っている0.1μFはチャタリングとケーブルからのノイズ抑制です。


GID-ADC を複数個マルチポートで使い,長いインターバルでデータ取得をすると誤差が大きくなる。

 DOS/VではC++のライブラリでクラスをいくつもジェネレートすることによりGID−ADCを同時に4つまで使うことができます。
 GID−ADCを1つだけ使っているときには問題が起きないのですが,複数使って10分に一度のデータ収集をすると,GIDの消費電力が少ない(?はっきりとは解明されていない)ためにマルチポートカードがスリープしてしまうことがあります。スリープしてしまうといっても壊れたりするのではなく,電源供給と内部ドライバが休んでしまうらしいのです。温度が30度のときに50度などの誤差を発生しました。
 変換は毎秒行い,データの保存を10分毎に行うとエラーは起きないのです。
 特にオートパワーダウンと書いていないマルチIOカードでもこの症状が起きることがあります。
 この時には,10分に一度のデータしか必要なくても毎秒一度ぐらいの変換を繰り返しておくと動いたりします。完全な原因は解明されていませんが,当方で太陽電池と池の温度を計測するための予備実験中に発見しました。

最近作のメインボードと高速CPUを使っている場合の動作不良 1997/8/20

 最近試験用のマシンをAMDのK6−200MHz,メインボードをASUSのTX97−X/166/W044にグレードアップしたところ,GID−ADCが動作しませんでした。原因を究明したところメインボードのI/Oアクセスが非常に早すぎてたった2mぐらいのケーブルでも制御波形が崩れてしまうのです。
 GIDのBIOSにある SetClkWait() のパラメータを1から10ぐらいに増やして遅くすると問題が解決しました。
 現在VCLを作成中なのでそれが終わり次第すべてのアプリケーションを再コンパイルして提供し直します。現状で問題なく動いている場合には,バグではないのでそのまま使ってください。
 なおボーランドのC++ビルダー用のVCLはGID−ADCのBIOSとアナログメータ,スムーススクロールができるオシログラフ画面のコンポーネントをセットにして提供します。

DOS版かWin版か片方で動くのにもういっぽうは零ばっかり  1997/9/23

 PC98,DOS/Vの一部ではWin版のソフトを動かした後にDOS窓でDOS版を動かしても零ばかりのデータが帰ってくることがあります。逆にDOS窓で動作させた後のWin版でも同じ事がおきます。
 推定ですが,I/Oを使うときにOSがI/Oを使っていることを検知し,それでたとえばDOS版が最初に使っていればDOS窓にI/Oを許可し,Win版には「存在するふり」をしているものと考えられます。
 この現象はシステムに関わることなのでDOS版,Win版の両方を使うときにはいったんWinシステムをシャットダウンしてから再起動するしか手法が無いようなのです。ともあれ両方を同時に使うことは実験中によくあることなので気をつけてください。


end