近作のAMトランシーバにはVXOを使用してきましたが、年々部品の入手がしにくくなり、価格も上がっています。 そこで、以前制作したFEMTO改のVXOに置き換えられるDDSデジタルVFOを作ってみました。 FEMTO改の送信局発と受信第1IFが共に10.7MHzですのでVFOの出力周波数は40MHz付近になっています。 今回使用したDDSはAD9834CRUZ(クロック75MHz版)、制御はATMEL社のAVR(ATmege88P)で、DDSから20MHz付近を出力し、2逓倍して40MHz付近を出力する構成です。 当然クロックの高いDDSを使えば必要な周波数を直接取出せますが、ICやマスタークロック用発振回路の値段が跳ね上がりますので、こんな構成にしました。 DDS制御はATMEL社のAVRチップATmega88PにMCSエレ社BASCOM-AVR (BASICコンパイラ デモ版)で書いたものを載せています。 BASCOM-AVRはBASICで書けますし、周辺制御のコマンドが充実していて大変生産性が良く、ありがたいことにコンパイル容量4kBの制限がありますが無償です。 1 DDS−VFOの機能 今回DDS-VFOを製作するにあたり、以下の機能などを目標としました。 ・FEMTOと同軸1本で接続して使用する ・出力は50MHz台-10.7MHz(=39MHz台)で1Vpp以上 ・秋月クリック付RE使用 1クリックあたり5kHz/100kHz切替 ・表示は16文字x2行キャラクタLCD使用 バックライト無 ・FEMTOのPTTと連携した帯域外送信禁止制御(バンド外受信は可) *調整後、スプリアスと運用状況から50.000〜50.995MHzを送信可能に設定しました ・RIT機能 ・送受切替時のポップノイズ防止のためミュート信号を出力する ・単三電池と外部DCで使用 ・携帯性を考え、できるだけ小型の筐体とする 2 DDS-VFOのハードウエア DDS-ICのAD9834は表面実装用パッケージということもあって、変換基板を使わずに熱転写法でプリント基板を作りました。 作り易い片面基板にしましたが、本来は両面基板にしたいところです。 VFOはホームセンターで見つけた樹脂製パーツケースに収めました。 本体寸法 約W165xD95xH35(つまみ突起部を除く) 完成後の重量340g(電池を含む) 消費電流は12V外部電源で約50mAでした。 大半は64MHzのOSCユニットが食っています。 (回路図はクリックで拡大↓)
◇ DDS-VFOは、64MHzマスタークロックのDDSをAVRで制御して20MHz付近を発生させ、ポストアンプ→LPF→逓倍・SW→出力アンプの経路で出力します。 DDSの出力周波数としては、理論的にはマスタークロックの1/2までは可能ですが、1/3程度迄が実用限界の様です。 DDSからのスプリアスがあり、AVR(8MHzクロック)からのノイズがあるので、実験して現在の構成に落ち着きました。 スプリアスの合間を縫って使う感じで、自由に周波数を設定できるという訳にはいきません。 DDS用クロックOSCは64.000MHz 安価な安定度±100ppm品ですがAMでは実用上問題なく使えます。 ポストアンプは小さいDDS出力を増幅し、AVRのノイズが後段に影響するのを小さくする目的があります。 LPFは入手し易い値で構成できる、カットオフ24MHz、Zo=320Ωの5次0.1dBチビシェフ形です。 当初は定K形2段の設計でしたが、損失と肩特性が不満でしたので変更しました。 逓倍・SW回路は、2逓倍と送信禁止時のスイッチを兼ね、AVRの制御で出力がオン・オフされます。 出力アンプからは1Vpp程度は出力できますが、今回のFEMTO用途ではそんなに要らないので、調整で0.4Vppに抑えました。 出力部にあるフォトカプラでは、同軸ケーブルに重畳された直流でPTTの状態を監視しています。 (トランシーバ側のI/FはFEMTO改の回路図参照) ◇ FEMTO改とVFOを接続した当初ですが、ロッドアンテナをFEMTO改に直接接続して受信するとAVRからのノイズが強く入りました。 基板のパターン引き回しなどに気を使ったつもりですが、片面基板と樹脂ケースでは予想通りというか、出るべくして出たように思えます。 対策として外部のケーブルに分割コアを取付けたところ大幅に下がり、さらに出力回路のグランド分離とLCD裏へのシールド、パスコン追加などで聞こえないところまで下げることが出来ました。 VFO内部写真の電池の上側で銀色に光っている部分がラミネートフィルムで挟んだシールド用アルミ箔で、回路の−側につながっています。 3 DDS-VFOのソフトウエア プログラム制作にはBASCOM-AVRコンパイラデモ版ver.2.0.7.1を使用しました。 BASCOM-AVRにはエンコーダ読込やDDS・LCDキャラクタモジュールへの出力コマンドが用意されているうえ、BASICで記述できるので大変楽にプログラムを作ることができました。 今回のプログラムはコンパイル容量に4kBの制限に収まりましたが、古いバージョンのコンパイラを使用した場合や、内臓フラッシュROMが8kB以上のデバイスを使うとサイズが大きくなりますので注意が必要です。 今回のプログラムです。 スマートでは無いと思いますが動作はしています。 ソースファイルは→ここをクリックして保存してください。 * このプログラムの使用は自己責任でお願いします。 * 利益を目的とした頒布や商用利用はできません。
プログラムの動作概要は以下のとおりです。 プログラムではループのなかでロータリエンコーダの状態を読んで周波数データを加減してDDSに書き込み、ループ1000回毎にPTT、ステップ切替ボタン、RIT-VRの状態をチェックしています。 クリック付きエンコーダを使用するため、ENCODERコマンド(4倍速読込)ではなく、DEBOUNCEコマンドでエンコーダのポートを読み、変化を判断しています。 DDSには変化があったときのみ転送しています。 同じ内容の設定データであっても、転送した際に一瞬RF出力が不連続になるためです。 送信中はエンコーダは読みません。 また送信中にエンコーダを触っても、受信に戻ったときに周波数が飛ばない様に対策しています。 PTT信号を受けたとき、周波数が50.000〜50.995MHzでなければエラー信号を発生します。 ステップ切替は通常5kHz/クリック、高速で100kHz/クリックです。 RITはボリウムからの電圧をADCで受けますが、入力電圧がステップの境界にあってもデータがバタつかない様に不感帯を設けています。 100Hzステップで約±3kHzをカバーします。 LCDは当初ループ内で書いていましたが、書き込みに時間が掛かりロータリエンコーダを取落とすので、タイマ割り込みで65.5ms毎に書くように変更しました。 これでエンコーダを回したときの違和感は、ほぼなくなりました。 DDS周波数は(周波数データ−IF周波数計算)÷逓倍値で計算していて、プログラム内で送受別の設定も可能です。 今回はIF=10.7MHz、送受とも2逓倍で設定しています。 DDS設定値計算に使用した値はマスタークロックの誤差分を修正した値です。 *DDS設定値=224÷64MHz(今回のマスタークロック周波数) 送受制御ピンの切替は音声ミュート信号を出してから行っています。 このプログラムはTxサブとRxサブ内にあり、Waitms命令でミュートと送受各信号間の遅延量[ミリ秒]を決めています。 Waitms値はミュート動作や送受信切替に要する時間に合わせて調整が必要となります。 詳細はプログラムを参照ください。 4 AVRライタの製作 AVRにプログラムを書き込む方法は抵抗だけの簡単な方法からUSBに接続する方法など、いくつか発表されていますが、今回はパラレルIFでPCと接続するバッファ付シリアル(SPI)ライタを製作しました。 たまたまWIN2000のプリンタポートのあるノートPCが余っていて、接続に必要なプリンタケーブルの手持ちがあったことと、BASCOM-AVRはWIN2000でも動くのでこの方式になりました。 市販品のSTK200ライタと互換のためBASCOM-AVRからそのまま書込み操作ができます。 同じ方式の市販ライタが\1k、USB接続ライタが\3kかそれ以下で買えますから、わざわざ作る必要は無いかも・・ AVRはターゲット基板に載せたままSPIコネクタ経由で書込みが出来るので、この点でもZ8時代のROM焼きに比べたら格段に高効率ですね。 書き込みインタフェースの回路図です。 【注意】 初期の回路に外部電源入力と5Vレギュレータが追加されています。 書き込み対象のAVRチップが既に何らかの機器に組みこまれていて、電源が供給できる状態の場合はI/Fに外部電源を絶対に接続しないでください。 I/Fは機器からの5Vで動作します。 機器側の電源がオフでI/Fから電源が供給されると、I/F内レギュレータの過負荷や供給先に故障を起こす可能性があります。 組み込み前のAVR基板など、他と接続されてない状態でI/Fコネクタから電源を供給して、プログラム書き込みを行う際に外部電源を使用します。 (回路図はクリックで拡大↓)
5 FEMTO改との結合結果 FEMTO改の受信系への影響はハードウエアの項で書いたとおりですが、送信スプリアスに関してはVXOの綺麗な信号に比べるとスプリアスが多く存在します。 下の写真は50.0MHz〜51MHzでスプリアスが低くなるよう調整した結果ですが、出力を維持しながらスプリアスの低いところに追い込むという細かい調整が必でした。 あまり気持ちの良い画ではありませんが、法令規制値より十分低く、全く問題ないレベルには収まりました スプリアスの状態とAMの運用状況から、送信可能範囲を50.000MHz〜50.995MHzにプログラムで制限してあります。
写真(1)〜(3)は近隣スプリアス 横軸1目盛2MHz (4)は高調波で1目盛20MHz 縦軸は最上が30dBm(1W)で1目盛10dB 約100mW出力です スプリアスは1W以下の送信機の規制値50uW(-13dBm)を十分満足しています。 最後に DDSーICはシリアル制御ですし、エンコーダの読み込みやLCD表示となると、今までスルーを決め込んでいた何らかのマイクロコントローラを使わざるを得ませんでした。 Cやアセンブラだと手が出せないと思いながらWebを探してたところ"BASCOM-AVR"ならBASIC言語でATMEL社のAVRチップ用プログラムが書けることが判り、使ってみたのが今回のVFOです。 AVRといえば以前はAutomatic Voltage Regulatorだったんですが・・・ BASCOM-AVRにはDDS・LCD制御やエンコーダ読込みに必要な機能が既に実装されているので、計算や判断などを加えただけで、懸案だったプログラムが一応動作する状態には組めてしまいました。 かじった程度のBASICの経験があれば実用的なプログラムが作れる時代なんですね。 AVR自体も高速・高機能・低消費電力かつ安価、プログラム次第で欲しい機能のICに化けてくれるので、クロック漏れや制御ノイズに気をつければ今後も色々使えそうです。 実際、今回の製作は今後にとって大きな収穫になりました。 今後も機会があればAVRを使っていきたいと考えています。 ご覧頂いた各位にとって記事が何かの参考になれば幸いです。 |