AD9834を使った実験用DDS-VFOの製作

最終更新時間:2013年05月09日 21時12分47秒

[公開:any]

[電子工作/PIC]
[電子工作/アマチュア無線]
[AD9834,PIC18F14K50,PIC,PIC18F,DDS,APB-3]

origin 2013-05-09


 受信機や送信機を作るために周波数混合や周波数変換の回路をブレッドボードでテストするときにDDS-ICのVFOを使うと局発やIFの周波数を自由に設定できて便利です。NE612やTA7358などのDBM機能を有したICへの入力ならDDS-ICの出力信号レベルで問題なく動作しました。


 ブレッドボードに組んだAD9834を使用したVFOの10MHz出力時のスペクトラムをAPB-3で測定しました。同調回路を持たないのでスプリアスが多く見られますが、ブレッドボード上に受信機を組み立てて、実際に受信してみても、意外なことにスプリアスの影響はあまり感じられませんでした。ブレッドボード上の受信機の性能では影響が感じられないということですね。いずれにしろ、発振周波数に近接するもの以外は、混合や変換後の同調回路やフィルタなどで十分に除外可能と思われます。


 混合回路などいろいろと試したいのですが、そのたびにブレッドボード上にDDS-VFOを組んでいては大変です。また、クリスタルフィルターを変更したりするたびに、ソースプログラムを変更してIFを書き換えるのも面倒です。よって、実験用DDS-VFOとして製作しておくことにしました。DDSは、アナログデバイセスのAD9834を使用しますが、今回は完成品として市販されているストロベリーリナックス社の小型DDSモジュールキットを購入しました。AD9834単品が1個1000円以下で購入可能ですが、キットは、1台2500円程度とやや値が張ります。しかし、67.108864MHzのクロックモジュールが搭載されていることやコンパクトな専用基板に組み立て済みであることを考えるとこれだけの価値はありそうです。

ストロベリー・リナックス小型DDSモジュールキット

 ブレッドボード上のDDSは、AVRのATmegaシリーズでコントロールしていましたが、今回は、AD9834の制御と液晶表示のみと機能が単純なのでピン数の少ないマイコンを利用します。AVRのATTinyシリーズがよさそうですが、手持ちがなかったので、PICを使用することにしました。


 PICは、20ピンのPIC18F40K50を使用しました。はじめはPIC18F1320で作り始めたのですが、入出力ポートの設定自由度が低いのでピン数が不足となり、途中で変更しました。DDSの出力は、50Ω負荷で-15dBm程度と小さなレベルです。トランジスタやFETで広帯域増幅回路をテストしましたが、スプリアス強度が増してVFOとしては使いにくくなると判断しました。もし、レベルが低いのであれば、実験回路側で同調回路をもった増幅回路を設けることにします。(エミッタフォロアやソースフォロアなどでインピーダンス変換回路を入れたほうがよいかもしれません。)

PIC18F_AD9834_DDS-VFO回路図

 部品数も少ないため、秋月電子の小さい基板で作成しました。ケースも秋月電子のポリカーボネートケース中サイズです。液晶は白文字の小型液晶を使いましたが、バックライトの漏れがひどく見た目は良くありません。かといって、この液晶はバックライト無しでは、文字が読めません。


 液晶では、VFOとして受信・送信周波数の表示と、中間周波数分シフトしたDDSが出力する周波数の2つを同時に表示するようにしています。こうしておけば受信機などの実験中にIFとDDSの発振周波数から目的周波数を計算しなくてもすみます。
 IF設定モードでIFを8MHzに設定した場合、目的周波数に7MHz付近を設定するとVFOからは、15MHzの信号が出力されます。


 IFには、負の値も設定可能です。使用する中間周波数にあわせて自由に設定可能です。


 DDSの出力範囲として1Hzから33MHzまでとしていますので、それ以外の設定ではエラーとなります。


 手動で目的周波数や中間周波数をEEPROMに書き込むことで、電源を入れなおしても設定周波数が保持できるようにしました。


 完成したDDS-VFOのスペクトラムをAPB-3で測定結果です。広帯域ではスプリアスが目立ちますが、狭帯域で見る限り、VFOとしての信号純度は問題ないと判断しました。

DDS-VFOスプリアス広帯域DDS-VFOスプリアス狭帯域

 TA7358Pを使用してDC受信機を組み立ててSGからのAM変調信号を受信してみましたが、30MHzまでクリアに受信できます。また、DC受信機で、実際にアンテナを接続して3.5MHz帯や7MHz帯のアマチュア無線を受信してみましたが、問題はありませんでした。ただ、電源の質にシビアです。スイッチング電源のACアダプターを電源に使うとキャリアにノイズが混じることがありました。(3端子レギュレータを使用した電源では、特に問題ありません。)
 なお、このDDSモジュールの出力はAD9834からの直接出力なのでDCが載っています。必要に応じてコンデンサでDCカットする必要があります。


 参考までに(あまり参考になりませんが・・)作成したプログラムです。パソコンが変わったため、PICの開発環境を改めて構築しました。MPLAB Version8.90にCコンパイラはフリーのC18をインストールしました。C18は、6ヶ月間だけ製品版と同じ最適化が利用できるものもありましたが、今回は最適化の機能削除版であるLITE版をインストールしました。最近ではAVRの開発環境が高機能となったため、MPLABがシンプルに感じます。Pickit2による書き込みの連動もできて使いやすい環境です。
 ロータリーエンコーダーの読み取りは、ピン変化割り込みとしました。もし、チャタリングが多いようなら、ピン変化割り込みをやめて、タイマー割り込みとして、読み取りにディレイを持たせるなどの工夫が必要です。
 スイッチは、周波数ステップのアップダウンに1個ずつ割り当てています。ステップアップスイッチを長押しするとIFセットアップモードと通常のVFOモードへの切り替えになります。ステップダウンスイッチを長押しするとEEPROMへの書き込みとなります。また、IFセットアップモードでステップダウンスイッチを長押しすると設定初期化となり、VFO周波数が10.000.000MHz、IFが0MHzにリセットされます。発振出力の停止スイッチはありませんが、IFセットアップモードでDDSをスリープさせるので、発振出力のON/OFFが可能です。

  • メインルーチン main.c(115)

 

このテンプレートをデザインした者がへたれなので IE6 には非対応です。IE7FirefoxSafariOperaChrome など、モダンなブラウザを利用して下さい。


▲ページ Top へ...