« マルチバンドアンテナ 運用実績 | メイン | 160m 垂直アンテナ 2024 »

2023年11月22日 (水)

ADCの動作が時々おかしい

PIC18F47K42を使いATUを作成しましたが、SWRを計算する為に内蔵ADCで、CM結合器から取り出した進行波電圧と反射波電圧を読みだしています。 しかし、この読出し値が時々大きく狂う現象が有りました。 その原因が判らず5か月以上ああでもない、こうでもないと、悩んでいたのですが、やっとその原因が判明しました。 判ってしまえば当たり前の事なのですが、PICを使ったソフト開発を10年以上続けてきた後だけに、過去のADCを使った製作も全て間違っていたという事が判り、がっくりです。

今回問題が発生したのは、CM結合器から漏れる高周波がマイコンに混入しないようにCM結合器とマイコンのAD入力端子との間にバッファアンプやCRによるLPFを設けたのですが、このCRによるLPFのコンデンサがAD入力端子とGNDの間に直接接続され、かつその容量が0.1uFで有った事でした。

下のブロック図はPIC18F47K42のADC入力回路の原理図ですが、AD変換する為に必要なサンプルホールドコンデンサが入力端子に直接接続されています。

Pic19fadc

このPICの中に内蔵されたコンデンサの容量は5PFで、設定により最大31PFの容量を追加できますので、最大36PFの容量のときでも、正確なAD変換が行われるよう、クロックで必要なタイミングを確保していました。 この状態で、このADCの入力端子とGND間に36PFよりはるかに大きい0.1uF(100,000PF)のコンデンサを追加した事により、ADCがPICの仕様通り動作しなかったものです。

これが判った時点で、上のブロック図のごとくRs=1.2KΩのみにしたところ、今まで頻繁に起こっていた誤変換がぴたりと無くなりました。

常に誤変換するなら、調べようも有ったのでしょうが、時々誤変換する事と、他にバグが有ったりして、なかなか発見出来なかったのが実情でした。 また、この入力端子に0.01uFを追加した過去の事例も有ったのですが、ADCの動作頻度がATUの1/10か1/100くらいしかなく、実害が無かったのではと推測されます。

今、思い出せば、昔作成したバリコン式のATUがなかなか収束しない事が時々発生していましたが、その原因もこれでは無かったのかと推測します。 (この昔のATUはすでにお役御免でジャンク箱行きとなっています)

この事に気づいて、ADC入力とGND間にコンデンサを接続しているSSBジェネレーターはなぜうまく変換しているのかと、改めてデータシートを見てみると、下のブロック図のごとく、サンプルホールドコンデンサと入力端の間に、バッファアンプがあり、サンプルホールドコンデンサの容量が外付け部品で影響しないようになっていました。

Dspicadc

今後ADCを使う時は、注意する事にします。

INDEXに戻る