オーディオクラフト工房(12)

更新日:2005年5月7日


SWチューナー用周波数表示を作ろう

本人的には完全に納得が出来ていませんが、なんとかSW(短波)チューナー用の周波数表示ユニットが完成しましたので発表させて頂きます。
PICでの周波数カウンタなどの製作記事は沢山ありますが、今回はそれらの製作と少し違った方向で行いました。完璧なやり方ではないとは思いますが自作チューナー用としては実用可能なレベルと考えております。
基本構成は「デジタルクロック」をベースにしています。メインの発振子は20MHzにしたかったのでたまたま手持ちの水晶発振モジュールを使いました。皆さんの製作におかれましては各自でアレンジしてみて下さい。
SWチューナー用周波数表示を作ろうの基本構成
(周波数表示の基本構成)
PICではSWチューナーの局部発振周波数を1/16分周したものをカウント測定します。周波数的には250kHzから875kHzの測定をすれば良いことになります。表示の最小単位がkHzですので周波数表示には充分と考えます。
SWチューナー用周波数表示を作ろうの回路図
(周波数表示の回路図)
7セグメントのLEDは6桁分ありますが、3桁表示のユニットを2個使用したのでそのように配線しています。しかし表示は5桁分しか行いませんので皆さんが製作される場合は一番上の桁のLED表示は必要ありません。
私は20MHzの発振モジュールを使いましたが、本当は通常のセラミック発振子を接続して発振させてRA6のポートをRA3に移動するのがベストと考えますがいかがでしょうか。
SWチューナー用周波数表示を作ろうの分周回路
周波数表示に関してSWチューナー側に1/16分周の回路を組み込みます。最初は周波数表示の方に組み込んでいたのですが、影響が激しく誤表示が発生したので分離しました。原因は良く分かっていません。
(1/16分周回路)
74HCU04で入力アンプを構成しています。74HC4040で分周を行います。今更ならが74HC4040が12MHzまで追従するかは確認出来ていませんが実力的にはなんとか分周出来ております。
(分周回路を追加したSWチューナーの内部)
ICの2段積みでかなり危険なことをしております。収納には苦労しました。
SWチューナー用周波数表示を作ろうの周波数測定
周波数の測定は次のようになっています。SWチューナーより1/16分周した周波数をPICで測定します。周波数の読み込みはRA4ポートから行い、タイマー0のカウンタで250msec間のみカウントを行います。最終的にはカウントしたデータを128倍したものが基本のデータとなります。
(周波数分周の構成)
(周波数の測定タイミング)
「デジタルクロック」の製作で使用しましたタイマー1の割り込みを使って一定時間のタイミングを生成します。今回は250msecとしました。このタイミングで周波数の計測と開始−終了でカウントを行います。表示の更新は0.5秒間隔となります。選局するためにゆっくりチューニングを行う分には充分実用的と考えております。タイマー1の割り込みは32.768kHzの水晶発振子で行いますのでプログラムを組む時にはメインクロックのマシンサイクルを気にせずに出来ます。時計用の水晶発振子ですので20ppmの精度がありますので、計測には充分かと思います。
周波数測定のタイマー0について簡単に説明をします。
(タイマー0の設定)
RA4ポートからタイマー0のカウンタに周波数を入力するする時の設定です。
(タイマー0の内部ブロックダイアグラム)
RA4ポートからの周波数は内部で1/2分周されたあとTMR0レジスタでカウントを行います。カウンタは8bitしかありませんので、オーバーフローすれば割り込みが発生します。この割り込みを更なるカウンタでカウントすれば8bit以上の計測が可能となります。割り込みルーチンではタイマー1とタイマー0の割り込みを識別して処理をしています。(詳細はソースリストを各自確認お願いいたします。)
(タイマー0の初期設定)
タイマー1の割り込み設定の基本は「デジタルクロック」と同じです。但し割り込み間隔を250msecにしていますのでTMR1H=E0H,TMR1L=00Hを設定します。
(タイマー1の初期設定)
SWチューナー用周波数表示を作ろうの基本仕様
1)SWチューナー専用の周波数表示ユニットとします。
2)周波数表示は5桁のkHz表示とする。表示間隔は0.5秒とする。
  カウント精度はそれなりです。
3)上の桁はゼロサプレス表示します。

本当に簡単な専用周波数表示になりました。
SWチューナー用周波数表示を作ろうのポート割付
(周波数表示のポート割付)
SWチューナー用周波数表示を作ろうのソフト留意点について
外部入力の発振に対応するためにCONFIGの設定が必要です。
(CONFIGの設定)
(外部クロックについて)
外部クロックの設定にするとOSC2のポートがRA6のポートとして使用が可能となります。
SWチューナー用周波数表示を作ろうの周波数表示
計測カウントした周波数は128倍しないと正常な表示用データとはなりません。
(周波数表示の流れ)
計測データをバイナリの32bitのデータ(data_s0 - data_s3)に入れます。このデータを128倍します。次に上側ヘテロダインの周波数分だけ引き算をします。さらに32bitのバイナリデータを10桁の10進に変換します。表示はkHz分しか必要ありませんので5桁分を抜き出して表示データとします。
前回のSWチューナーの回路図では455kHzのセラミックフィルタを使用していると記載していましたがよく確認してみると450kHzのタイプでした。従って128倍した32bitのバイナリデータから450を引き算しています。皆さんが使用されるセラミックフィルタに合わせて各自調整お願いいたします。
SWチューナー用周波数表示を作ろうの回路製作
では順にケース加工及び回路の製作についてダイジェスト写真で示します。
(ケース加工中)
(次に入出力部品を取り付けよう)
前面に入力端子とスイッチが余分についていますが最終的には無くしました。
(今回の中身はシンプルです)
(正面と裏面です)
正面左側より電源SW、電源インジケータ、周波数表示です。裏面左側より電源ジャック、周波数入力端子になります。
SWチューナー用周波数表示を作ろうの大完成
大完成の姿を見て頂きましょう。
(完成形外観姿)
(上からもじっくりどうぞ)
(PIC回路部) (電源回路部)
SWチューナー用周波数表示を作ろうの表示状態
(最小周波数と最大周波数です)
(ラジオNIKKEIを受信中です)
周波数表示が可能となったことで完全な待ち受け受信が可能となります。周波数の設定にはかなりの熟練操作が必要ですが予め周波数が判っていれば大変楽しい短波受信ライフ(?)を送ることが出来ます。学生時代(BCLが流行っていた時代)に戻ったような気分になって周波数を調整しております。また自作の受信機ということで格別な気分に浸ることが出来ます。
SWチューナー用周波数表示を作ろうの全ソースコードとHEXコード
毎度おなじみのソースリストとHEXコードです。
一緒に圧縮してありますのでダウンロードしてからじっくり眺めて下さい。
ソースリストとHEXコードはこちらです。
今回の製作はいかがでしたか。なんだかオーディオという領域からラジオ製作の方向へシフトしているような気もしますが、まあ好しとしておきましょう。今後もオーディオクラフト工房の充実に向けていろんな製作をしていきたいと考えます。
ここまでのオーディオクラフト工房のシステム全容
ここまでの工房の全容をご紹介しておきます。
(オーディオクラフト工房作品集)
どんどん拡張されていくオーディオクラフト工房です。さて次は何を作ろうかな。
これからもオーディオクラフト工房はどんどん楽しくなっていきます。
ネタはまだまだあります。今後ともよろしくお願いいたします。

オーディオクラフト工房へ戻る