PICを使った周波数カウンター

※「PIC18Fを使った周波数カウンターの製作」で、外部プリスケーラを使って500MHzまでカウントできるものを新たに製作しました。(2009-05-25)

 これまでスーパーヘテロダイン方式のラジオを3台作りました。このスーパーヘテロダイン方式のラジオは受信する中波帯の範囲内において、受信周波数と局部発振周波数が中間周波数分の455KHzだけずれるように「トラッキング調整」というものが必要となります。

 とりあえずは、測定器等を使用せず、耳で聞きながら適当に調整したのですが、周波数カウンタでもあれば、最低限、局発や中間周波の測定ができるので効率が良いと思います。
周波数カウンタは、市販品を1台もっているのですが、古いタイプで外形が大きいため使い勝手はよくありません。また、普段は邪魔になるので納戸に収納してあります。

 ちょくちょく拝見している「電子工作etc」さんにラジオの局部発振部に接続するための機能を持った周波数カウンタが紹介されていますので、これを参考にコンパクトなものを1台作ることにします。

ブレッドボードでテスト

 PICはPIC16F88を使用してブレッドボードでテストします。「電子工作etc」さんは、Timer1のみでゲートタイムとカウントを行うオリジナルなソフトウェアを開発されていますが、こちらは、オーソドックスにTimer1とCompareモジュールで0.1秒とその10倍の1.0秒のゲートタイムを作りだして、Timer0で周波数をカウントする方式として、同じようにmikroCで作成しました。(ソフトウェアは、「電子工作etc」さんが紹介されているものとほぼ同じ内容なので紹介は省略させていただきます。)

 入力アンプは、最初に「MAX038広帯域オシレータキット」の時に使ったCMOSインバータの74HCU04をテストしました。この入力アンプでもラジオの局発は十分カウントできたのですが、オシレータを接続して、入力レベルを低くすると、カウントミスが目立ちます。別途、2SK241を使用した入力アンプもテストしてみると、より低い入力レベルまで対応できることが確認できたので、こちらを使用することにしました。

 PICのソフトウェアにはタイミング調整する部分があります。ゲート時間を決めるTimer1をスタートしてから実際にTimer1のカウンタが動作するまで遅延があるので、周波数をカウントするTimer0のスタート時間を調整する必要があります。
 mikroCをデバッグモードにして遅延時間を測定してみようとしたのですが、よくわかりませんでした。しかたがないので手持ちの周波数カウンタと比較しながらある程度の精度がでるように調整しました。・・・が、完全には一致せず、特に周波数が高いときは最大で150Hz程度の誤差が出ます。測定するソースによって誤差の変動があるため、ソフト的な誤差ではなくハード的な誤差であると判断して妥協しました。(もっとも比較した周波数カウンタは、かなり前に校正有効期限が切れたものなので、精度の保障はありません。)

 左は、10MHzの水晶発振器を測定。右は、オシレータ出力を測定中。

DC-DCコンバーター

 せっかく小型化するので、電源も電池を利用することにします。消費電流を実測してみると最大でも50mA程度なので、DC-DCコンバーターのHT7750が使えそうです。

※「DC-DCコンバーター4(HT7750Aを再テスト)」でHT7750も再テストしています。

 ブレッドボードにHT7750を使った電源部を接続してテストしてみました。アナログ回路の入力アンプがあるので電源ノイズの影響を心配しましたが、周波数カウントに異常はありませんでした。念のため、オシロスコープで電源の波形や、アンプの入出力波形を確認したのですが、問題ないようです。

 実験用電源を接続して入力電圧を可変してテストしたところ、1.5V程度の入力があれば、出力電圧4.7V程度が得られ周波数カウンタとして十分に機能することが確認できました。もう少し低い入力電圧でも動作するので電池1本でもいけそうですが、当然、稼働時間は短くなります。ある程度の稼働時間と動作安定のため、電源は電池2本を使用することにします。

回路図

 最終的な回路図をBsch3Vで作成しました。入力スイッチは、ゲート時間切替(0.1秒 or 1.0秒)、プリスケーラ切替(1/1 or 1/8)、ラジオモード切替(局発測定時に455KHz差し引いて表示)の3個としました。

PIC周波数カウンター回路図
PIC周波数カウンター回路図

※LCDユニットの電源とグランドが入れ替わっています。本来は、VDDが2番ピン、Vssが1番ピンです。

 表示部のLCDは、8文字2行のコンパクトタイプを使用します。ゲート時間とプリスケーラ値を1行目に表示して、2行目に周波数を表示します。測定周波数が20MHz程度までなのでHz単位で8桁表示できれば十分と考えます。

 いつものようにPCBEを使って基板実装図を作成しました。サイズの小さな基板に無理やり押し込んだので厳しい状況ですがなんとか配置できました。電源部と入力アンプは出来るだけ遠ざけましたが、狭い範囲なので大して効果がないかもしれません。

PIC周波数カウンター基板パターン
PIC周波数カウンター基板パターン

製作

 ユニバーサル基板に部品を実装しました。ブレッドボードではスイッチにプッシュスイッチを使用したのですが、ケースに収めることを考えて基板用トグルスイッチに変更しました。ケースに取り付ける余裕がある場合には、プッシュスイッチを採用したほうが、ソフトウェアでゲート時間やプリスケーラ値を多段化しやすいので便利だと思います。

PIC周波数カウンター基板表
PIC周波数カウンター基板表
PIC周波数カウンター基板裏
PIC周波数カウンター基板裏

 バラックで接続してオシレータの発振周波数を測定してみました。良好に周波数をカウントします。ただ、信号入力がない状態(入力ポートのBNCコネクタをオープンにした状態)で入力アンプのゲインをあげると電源からの弱いパルス性ノイズをカウントするようです。実害はないのですが、ちょっと気になります。パスコン等をいろいろ試しましたが、効果がないので、入力アンプのゲインを調整範囲の半分程度までとしました。

PIC周波数カウンター動作確認

 DC-DCコンバータの入力は1.5V以下でも周波数カウンタは動作します。ニッケル水素電池を使用した場合は、過放電となる場合もあります。、テストしたところ、2本直列の電池電圧が2Vを下回ると急激な電圧ドロップが発生し、DC-DCコンバータの動作が停止します。少なくとも使用予定の古いニッケル水素電池では問題はなさそうです。

 「ラジオの製作その5(4石スーパー)」で作成したラジオの局発周波数を測定してみました。局発が多少ずれています。・・ということは中間周波数もずれているようです。別の6石スーパーや2ICスーパーも測定してみましたが、どのラジオも微妙にずれています。^^;

※製作した周波数カウンタの精度が心配になって、市販の周波数カウンタでも測定してみましたが、やっぱり同じようにずれていました。

 周波数カウンタが完成したらもう一度、ラジオのトラッキング調整をやり直そうと思います。

PIC周波数カウンター動作確認

 ケースは、秋月電子のポリカーボネートケース(中サイズ)を使用しました。基板を小型化したので余裕をもって収容することが出来ました。

PIC周波数カウンター
PIC周波数カウンター
PIC周波数カウンター
PIC周波数カウンター

 コンパクトに出来たと思います。BNCコネクタの付いた短い測定ケーブルを用意しておいて手軽に利用できます。

 完成してから思いつきましたが、PICのAD変換ポートで電池電圧をモニターして電圧低下をLCDに表示するようにすればよかったかもしれません。
ゲートの表示に高輝度青色LEDを使用しましたが、電流制限抵抗を2.2KΩにしたにもかかわらず、直視できないほどまぶしいです。高輝度タイプは、こういったステータス表示に使用するには向かないようです。

6件のピンバック

コメントは現在停止中です。