A/D コンバータを使うようにする

CIMG3465
工作の続きです。例の ATU コントローラです。
今日は、PIC 内蔵の A/D コンバータを使って、無線機 FT-817 からの band data (設定バンド情報)をインデックス化するところまでできました。1.8MHz 帯だと 0、3.5MHz 帯だと 1、というふうにして、435MHz 帯では 11、中波帯では 12 になります。(なぜか中波が一番 band data 電圧が高かったので、こうなっている。)
最初、A/D 変換値 8ビットを LED 4つ使って時分割で読み出せるようにしたのですが、なんだか挙動が変です。電圧に対して変換値がリニアに見えないのです。いろいろ調べてみたところ、A/D 変換のタイミングと LED 表示の時分割タイミングが意図せず依存しあっていて、値が正しく表示できないことが分かりました。A/D 変換後に同期して時分割表示するようにしたら、正しく読めるようになりました。(もしかすると、PIC あるいは HI-TECH C コンパイラの 8ビット型、16ビット型の変換処理が、アトミックになっていないのかも知れません。あまり細かく追いませんでしたが。)

注意点

これは備忘録です。

  • コネクタの断線などの理由で、PIC の電源が落ちているときに band data から電圧が PIC の A/D 入力ピンにかかっても良いように、A/D 入力ピンと V_DD の間に保護ダイオードを入れました。PIC の絶対定格は守れませんが、とりあえず V_DD + 0.6V くらいまでに制限できてます。
  • band data の出力電圧は、安定化されていることを確認しました。無線機の電源電圧を 10〜14V くらいに振ってみましたが、band data の電圧は 0.1% 程度の変動に収まっているようです。また、実測値ですが、band data の出力インピーダンスは 6〜7kΩくらいのようです。A/D 変換入力のインピーダンスが 10MΩくらいあるので、念のため、1MΩの抵抗を入力にパラレルに繋いでおきました。(つまり、1MΩで V_SS に落としておきました*1。)

そうそう。最初、PICkit2 のプログラムライターが、ターゲットの V_DD が不正だとか表示するようになって、一瞬焦りました。デバイス選択を一度マニュアルに切り替えてから、改めて自動検出に戻したら、V_DD が 5V に直りました。何だったんだろう?
さてさて。明日(以降)は、読み出したインデックス値で ATU を制御するプログラムと、あと、ATU へのスイッチング制御回路を試作しなくてはー。山場に差し掛かってきた感じです。とりあえず動くものを作って、それから整理することにしよう。

後記 (8月7日)

FT-817ND のアクセサリ(ACC)コネクタですが、13.8V の端子は常時電圧がかかっているんですね。電源スイッチを切ってあっても、外部電源が繋がっているかバッテリーが入っているかすれば、電圧がかかっています。
ちょっと困ったのは、自作した ATU (アンテナチューナー)のコントローラを接続しておくと、常時電流が流れていることです。実測はしていませんが、おそらく 1mA 以下程度で、バッテリーがすぐに放電してしまうほどではありませんが、それでも 1000時間くらいで空になってしまいます。過放電も心配です。

*1:あ、他の入力ピンも処理しておかないといけないなあ。