CPLDで遊ぼう!(20)
78F9222のコーナー(11)
オーディオクラフト工房(31)
更新日:2006年10月22日

デジタル選局AMチューナーを作ろう
今回はひとつのいわゆる集大成みたいな製作を行います。久しぶりに出来上がったものを見て感動しております。もちろん色んな方々の知識を頂いての結果です。
さて今回はデジタルで周波数を選局するAMチューナーを作ります。基本的なアイデアは既に世の中にあるものと同じですが自分なりに工夫(?)しました。では製作に取り掛かりましょう。
デジタル選局AMチューナーを作ろうの基本仕様
AMチューナーの選局を4桁の数字で周波数を設定して行うものです。基本としてははPLLの回路を用いるのでしょうが私にはPLL回路は出来ないので「もどき」で実現しました。
1)AMチューナーはスーパーヘテロダイン方式とする。
2)4桁の周波数を直接設定入力して選局を行う。設定した周波数は自動追尾する。
3)おまけとして+9kHzごとに周波数を変更する機能も有する。

4)チューニング状況をLEDで表示する。
デジタル選局AMチューナーを作ろうの全体構成図
まずは全体の構成を示します。
(デジタル選局AMチューナーの構成図)
大きく3つのブロックに分かれています。
@AMチューナーブロック
電子チューナーになっています。バリキャップ(可変容量ダイオード)に電圧を掛けることでチューニングを行います。電源は12V系にしています。
ACPLDブロック
AMチューナーの局発周波数計測、設定された周波数との比較、設定された数値による電圧の出力を行います。電源は3.3V系です。
Bマイコンブロック
テンキーで入力された周波数の数値をCPLDに送り込みます。CPLDから出力される周波数比較の信号を処理してAMチューナーのチューニング電圧を決める信号をCPLDへ送ります。電源は5V系です。
デジタル選局AMチューナーを作ろうのAMチューナーの購入
AMチューナー部はスーパーヘテロダイン方式としています。自分で設計することも出来ますが部品収集や回路パターン設計を考慮してラジオキットを購入して改造することとしました。こうすれば誰でも確実にAMチューナー部を作ることが出来ます。
(6石スーパーラジオ組み立てキット)
インターネットにて科学教材社からCHERRYのMODEL CK606を購入しました。基板と主要部品のみ使用します。基板には既にボリュームとバリコンが取り付けてありますので事前に取り外しておきます。音声アンプの部品は使用しませんので別の機会にでも使用するように保管しておきましょう。
デジタル選局AMチューナーを作ろうのAMチューナーの改造
バリコンの選局ではなく電子チューナー選局にしますので選局部分を改造します。
(バーアンテナ部の改造)
バーアンテナ部は1SV149と470pFを使用してチューニングします。(キットの全体回路図は掲載出来ませんのでご了承願います。)
(局発部の改造)
局発部は2個の1SV149を使ってチューニングします。後ほど触れますがこの回路仕様で約5V付近から10V付近の間の電圧でAMの周波数をカバーすることが出来ます。
また局発の信号を一部頂いてCPLDで計測することとします
1SV149の特性は「オーディオクラフト工房」のAMチューナーのページを参照お願いいたします。
デジタル選局AMチューナーを作ろうの選局電圧制御
上記の回路で約5Vから10Vの間で選局が可能になります。ではこの電圧をどのように発生させるかがポイントになります。CPLDは3.3Vで駆動しているためこのICからは最大3.3Vの電圧までしか出力することが出来ません。従って何らかの増幅回路が必要になります。幸い3.3Vを3倍にすると約10VとなりますのでCPLDからの出力電圧を3倍にしてAMチューナーの選局電圧とします。OPアンプを用いて構成します。
(OPアンプの非反転増幅回路)
入力電圧Vinに対して約3倍にすれば良いので、R1=100kΩとすると次のような回路となります。
(電圧3倍増幅回路)
Vinの10kΩと0.1uFは入力電圧の急峻な触れに対してノイズを取る目的で入れました。(効果のほどは気休め程度でした。)
OPアンプには一般的なuPC358Cを使用しました。このOPアンプで約10Vを振らせるためには電源にはDV12Vが必要です。(ラジオのキットの電源がDC9VにもかかわらずDC12Vで駆動しているのはこのためです。)
これでCPLDからの出力電圧でAMチューナーを選局出来ることになります。
デジタル選局AMチューナーを作ろうのAMチューナー部の基板
(電子選局AMチューナー基板+電圧アンプ+DC12V電源)
AMチューナー基板の完成の姿です。真ん中下がOPアンプによる電圧アンプです。右上がDC12Vの電源回路です。レギュレータICを用いた簡単なものです。左下の方に一部回路が付加されていますが最終的には無くなった回路ですので無視して下さい。キットの基板を使用しましたので確実に動作させることが出来ました。
今回AMチューナー部も金属ケースに入れますのでバーアンテナはケースの外に出す必要があります。幸いにもキットにはバーアンテナのホルダーも付いていますので工夫してケースに取り付け易いように改造しておきましょう。
(バーアンテナの改造)
デジタル選局AMチューナーを作ろうの周波数相関表
内容が一部前後するかもしれませんが選局電圧と周波数についてのデータを記しておきます。各人の回路環境によっては多少異なる可能性がありますが大きくは違わないと思います。ここでのポイントはチューナー電圧を制御するための電圧の最低が約1.6Vからとなっているところです。最大が3.3Vですので1.6Vから3.3Vまでの電圧を出力制御します。
(周波数電圧相関表)
(周波数電圧グラフ)
デジタル選局AMチューナーを作ろうのAMチューナー部の大完成
まずはAMチューナー部の大完成の姿を見て頂きましょう。
(ケース加工です)
(こんな感じです)
音声出力以外に局発周波数出力、選局電圧入力の端子が必要です。結構コンパクトにまとめられたと思っています。
デジタル選局AMチューナーを作ろうのCPLD内部構成図
ここからはCPLDについて説明します。まずは内部回路を見て下さい。
(CPLD内部構成図)
詳細は最後のほうに記載しておりますデータを取り込んでから見て頂ければ良く判ると思いますが、周波数カウンタブロックと数値比較ブロック、電圧発生ブロックに分かれています。
まずダイレクトに4桁で設定された数値(BCD)がシリアルでCPLDへ入力されます。一方でAMチューナーの局発周波数を定期的(20msecごと)に測定しています。この二つの数値(4桁分のBCDデータ)を16ビットのコンパレータで比較して等しいか、どちらが大きいかを随時出力しています。またAMチューナーの選局電圧がCPLDへシリアル入力されますのでこのデータに応じたパラレルデータを出力する部分も含んでいます。
これらのブロックを従来のICで組むのもマイコンに置き換えて組むのも私には不可能でありCPLDの素晴らしさと奥深さを充分に感じ取った次第でございます。
デジタル選局AMチューナーを作ろうの数値コンパレート結果の出力
数値のコンパレート結果は3本出力になっています。マイコンの端子に余裕があるのであればそれぞれの出力をマイコンで読み込めば良いのですがマイコンの入力端子が限られているのでアナログ電圧に変換してからマイコンに接続することにします。テンキーと同様に少ないポート数で多数値を判断するには最適な方法と思っています。
(コンパレート出力)
3本の出力はそれぞれの入力が等しい時に「1」となるポートとどちらかが大きい方のポートが「1」となる3種類の状態が発生します。上記のように割り付けて電圧値をマイコンで判断することによって数値が等しいのかどちらの方が大きいかを読み取ります。
デジタル選局AMチューナーを作ろうのコンパレート結果の出力回路
出力データに応じて電圧が変化する簡単なD/Aコンバータ回路としました。
(3bit D/Aコンバータ回路
この出力電圧をマイコンのA/Dコンバータで判断します。マイコンのA/Dコンバータは10bit、電源はDC5Vですので、それぞれの状態の判定基準は1.23Vと0.618Vになります。
デジタル選局AMチューナーを作ろうの選局電圧の出力回路
AMチューナーの選局電圧の考察からCPLDは1.6Vから3.3Vの電圧出力が必要なことが判っています。一方でAMチューナーの周波数帯は520kHzから1580kHzをカバーする必要があります。周波数ダイレクトに設定しますので1kHzの精度での制御が求められます。
これらの内容により約1.6Vの電圧範囲を1000ステップで制御する必要があることが導かれます。また私の住んでいる地方には幸い低い周波数の放送局が無いことから次のように決めました。
@CPLDからの電圧出力は3.3Vの1/2より上の電圧とする。(1.65Vから3.3V)
A1000ステップの分解能には10bitが必要
以上より1.65Vから3.3Vの範囲を10bitのD/Aコンバータで制御することとしました。
回路的には0Vから3.3Vの範囲を11bitで制御します。この時最上位のビットは常時「1」にして使用します。この11bitの精度がどこまで出ているかは正直判りません。出ていないという方が正解かもしれません。とりあえず1kHzごとで制御する必要から回路的なそうしています。ちなみに周波数によってはかなり揺れるところもありますが、実用上は問題無いと考えます。抵抗の精度を上げれば良いとは思います。従って回路は次のようになります。
(11bit D/Aコンバータ回路)
D10はCPLDの電源3.3Vラインに接続します。
デジタル選局AMチューナーを作ろうの10bitシフトレジスタモジュール
今回も新しいモジュールのみ記します。
(10bitシフトレジスタモジュールの入出力)
選局用の電圧を出力するためのシフトレジスタです
(10bitシフトレジスタのVHDLソース)
デジタル選局AMチューナーを作ろうの10bitラッチモジュール
(10bitラッチモジュールの入出力)
(10bitラッチモジュールのVHDLソース)
デジタル選局AMチューナーを作ろうの16bitコンパレータモジュール
(16bitコンパレータの入出力)
周波数カウンタで計測した値とダイレクトに設定した値との比較を行います。
等しい時は「OUTEQ=1」になります。A側の入力が大きい時は「OUTLA=1」、B側の入力が大きい時は「OUTLB=1」となります。回路上の配線が見やすくなるように入力の配置を変えています。特別な意味は全くありません。
(16bitコンパレータモジュールのVHDLソース)
デジタル選局AMチューナーを作ろうのCPLDピン接続のまとめ
ピン接続についてまとめます。
(デジタル選局AMチューナーのピン接続)
デジタル選局AMチューナーを作ろうの局部発振計測入力部のバッファ回路
AMチューナーの局部発振周波数を正確に計測するために入力バッファ(アンプ)回路を設けます。SWチューナーの周波数表示にも使用した入力バッファです。
(入力バッファ回路)
デジタル選局AMチューナーを作ろうのチューニングLEDの回路
チューニングの状態を見れるように「OUTEQ」「OUTLA」「OUTLB」の出力にLEDを接続しています。周波数が安定しないところではLEDが目まぐるしく点滅しますがまあ良しとしましょう。「OUTEQ」のみ緑色のLEDにすると状態が良く判ると思います。
(チューニング表示用LED回路)
デジタル選局AMチューナーを作ろうのマイコン側回路図
マイコン側の回路図です。CPLDとのシリアル接続は従来と同じポートを使用しています。
(デジタル選局AMチューナーのマイコン側回路図)
マイコンの処理としてはテンキーから入力される4桁の数字表示、決定キーを押した時のデータの出力、CPLDから来る数値比較信号に対して選局電圧を上げるか下げるかのデータ出力などを受け持ちます。
テンキーから入力した周波数はAMチューナーの中間周波数を加算したデータをCPLDに送っています。CPLD側で中間周波数分を減算することも出来ますが内蔵ロジックを余計に使ってしまうのでマイコンにやらせています。今回のAMチューナーの場合の中間周波数は455kHzです。
数字入力用のテンキーは前回と同じものを使用します。このテンキーパッドは1台作っておくとコネクタで抜き差し出来るので大変便利です。
(テンキー入力回路)
CPLDとマイコンの間には電位差がありますので前回と同様にバッファ用にICを付けて接続します。
(レベル変換回路)
デジタル選局AMチューナーを作ろうのポート割付と設定
(ポート割付と設定)
CPLDには設定周波数のデータ、選局電圧のデータをシリアルで送ります。シリアルのデータ、クロック、リセットは共用してラッチを分けて別々のデータとしています。
デジタル選局AMチューナーを作ろうの大完成の姿
ではCPLDとマイコンを組み込んだ部分について完成する姿を順に見て下さい。
(まずはケースの加工から)
(超高密度配線がいきなり完成します)
(バランスの取れた配置ですね)
(上から見るとこうなります)
(CPLD側とマイコン側のアップです)
(テンキーで周波数を入力して試運転中です)
(以前に作った周波数カウンタが大変重宝しました)
(ローカル局を受信しています)
(背面はこんな感じになっています)
正直なところチューナー部とCPLD・マイコン部は離して設置したほうがノイズの影響を受けなくて受信がクリアになります。
デジタル選局AMチューナーを作ろうの全VHDLソースコード
私と同じ製作をされる方、または勉強される方のために全ソースコードなどプログラム一式を公開いたします。フォルダごと圧縮しましたのでそのままもってって下さい。
全ソースコードはこちらです。
デジタル選局AMチューナーを作ろうのマイコンソースファイル
ソースファイル一式はこちらからダウンロードして下さい。フォルダごと圧縮しています。全ファイルが入っています。ライタで書き込みする実行ファイルも含まれています。
デジタル選局AMチューナーを作ろうの大活躍の様子
(こんな状態になっています)
左の下の方で今回製作のAMチューナーが主張しております。放送局がダイレクト選局出来るので大変便利です。但しマイコン側に不揮発性の記憶部分が無いので電源を入れるごとに周波数を設定しなければならない辛さが少しあります。しかしながら設定した周波数はずれていかないので放送を聞いていても非常に安心出来ます。
いかがでしたでしょうか。今回の製作は非常にすばらしかったと勝手に思ってます。
これからもますます楽しくなる「CPLDで遊ぼう!」をよろしくお願いいたします。
これからも「NEC78K0/K0Sマイコン開発室」はどんどん楽しくなります。
これからも「オーディオクラフト工房」もどんどん進化して行きます。