JF1DIR業務日誌(はてなblog版)

アマチュア無線局JF1DIRのアクティビティをつづっています。

DDS VFO試作実験

前回では現在検討しているトランシーバーの試作実験の基板等をお見せしました。TXおよびRX部は完全自作でしたが、DDS VFOは貴田電子設計のキットでした。そこでDDS VFOについても自作することを検討しました。

DDSは上限180MHzクロックのAD9851とし、制御マイコンはDDSのライブラリが豊富なAVRとしArduinoでプロトタイプを作りかけていたのですが、ありきたり過ぎるのもつまらないと思いまた新たな試みとして世界標準の32bitマイクロプロセッサのARMを使ってみることを試みました。確か昔に買ったトラ技の付録でARMの基板があったなぁ・・・と腐海から基板とDIP品のLPC1114FN28を発見し、LPCXpressoなどの開発環境をインストールして早速Lチカまで動作させましたが、開発環境がちょっと大げさ且つ敷居が高くて、今後使い続けていく自信がなくなりました(汗)。
ARM環境の構築を行いながらArduinoのシールドが載せられるSTmicroのNucleo(STM32F411RE)も買って試してみました。このマイコンはmbed対応品とのことで噂のmbedを試してみたら、あらら簡単に動かせるではないですか。Arduinoよりも簡単で高機能・高性能、コンパイラもローカルに用意することなく初心者でも使いこなせそうです。mbed環境でDDSを制御することにしました。

まずはVFOの機能を実装実験するためのLCDやタクトスイッチなども組み込んだDDS実験ボードを作ってみました(規模が大きくなるにつれてブレッドボードでは限界を感じたのでやむを得ず)。先のNucleoではサイズが大きいので、組み付けやすい元祖mbed LPC1768で試しました。LCDはaitendoで買った8文字x2行のHD44780互換の小型LCD、シリアル通信はスイッチサイエンスのFT232RX、ロータリーエンコーダーは秋月で買った24パルス・ノンクリックタイプ、DDSのクロックはとりあえず33MHzを用意しました。他にタクトスイッチを幾つか用意しました。I/Oピン数は足りています。
AD9851は500mW以上電力を消費しUSBバスパワーでは不安なので、AD9851本体とオペアンプの駆動は外部電源に頼りました。シリアル通信はprintfデバッグのために使っていますがPCから周波数の設定も可能にしました。AD9851は6倍クロックモードではオーバークロック(33☓6=198MHz)になり発熱が気になりますが普通に動作しています。1倍のクロックモードではクロックの漏れが気になりました。実装法の問題かもしれません。
AD9851の出力をトランスで受けて電流帰還アンプのLMH6702MAXで10dB増幅して出力するようにしました。50Ωの負荷でも波形が乱れないのですが、LPFを入れてやらないとスプリアスが目立ちました。
mbedの大きな利点はネット上に公開されている各種ライブラリを利用でき、すぐにインポート可能であることです。DDSやHD44780互換LCDはもちろんロータリーエンコーダーのライブラリもすぐに見つかったので、自分のプログラムの中にインポートして必要な機能を実現しています。クラウド化されており全てWebブラウザでコーディングとビルドが可能です。
AD9851はシリアルモードで32bitの周波数データと8bitの制御データを転送すると発振させることができますが、mbedで検索するとAD9850の制御ライブラリがあるのでそれを利用しました。ロータリーエンコーダーの回転と連動して周波数をステップするようにプログラムしました。周波数のステップ幅の切替(1kHz, 0.1kHz, 0.01kHz)はタクトスイッチによる割り込み処理を利用しました。さらにキーダウン(送信)時に周波数がIF分動くように(XIT)設定し、これも割り込み処理で実装しました。割り込み処理においてスイッチのチャタリングをしっかり防止しないと誤動作してしまいました。これは今後の課題です。
ソフトウエアの方はほぼ完成。LPC1114FN28にするか他のmbedにしてもう少しコンパクトに再実装する予定です。まだ先は長いですね(汗)。