1.はじめに

自作関係の情報が無いかとネットで探していたところ、JE3JLB石原さんのページ(https://jlb.jp/index.html)を見つけました。様々な実験をされているようで、この中のAD9959を使ったDDSの実験に注目しました。石原さんはNo.6とNo.7で紹介したFRMSのような、200MHzまでの周波数応答解析ツールを作っています。
 

AD9959はアナログデバイセズ社のDDSのICです。基準周波数が500MHzまで使えますので、出力としても150MHz程度までなら充分でしょう。200MHzでも出力できますが、私的には使い道がありません。もちろんICのデータシートもダウンロードして使いましたが、石原さんのページが大変に参考になりました。ありがとうございました。
 

このICを使ったユニットが、アマゾンや中国系の通販で入手できます。今まで作れなかったものが作れそうです。そこで写真1のようにブレッドボードで実験を行い、開発のスタートをしました。最初はどうしても何をやっても動かず苦労しました。そのために作製したのがNo.205の手動パルス送信機です。
 

写真1 このようにブレッドボードで実験

今後はこのユニットを使って、測定器類への応用を広げてみたいと思っています。第一歩として、写真2のような150MHzまでのSGを作ってみました。久しぶりのSGになります。このようなSGがあると、受信機やアンプの調整と測定に便利です。
 

写真2 作製した150MHzまでのSG

2.AD9959ユニットについて

AD9959のユニットは、中国製が2種類ほど売られているようです。私が入手したのは写真3のユニットです。他のDDSと比べると相当に高額ですが、基準が500MHzという性能ですので仕方ないのでしょう。もっと早く作る予定だったのですが、中国でコロナ禍が始まった頃アマゾンに注文しました。中国内で全てが止まった影響なのか、発送直前に「売れない」とメールが届き返金措置となりました。半年以上復活を待っていたのですが、2020年の秋頃になってようやく購入できました。しかし、コロナ前よりも相当な値上がりで、私が購入したのは9588円だったと思います。中国系の通販で購入すれば7000円程度のようです。以前は使った事もあるのですが、最近は少々腰が引けています。
 

基準はユニット内の25MHzと外部発振器をジャンパーピンで切り分ける事ができ、外部の場合はSMAコネクタで入力します。出力もSMAコネクタで4chありますが、SGですので4chも必要ありません。実際に試して見ると消費電流が多くなりますので、未使用chは出力しないように設定するのが良さそうです。

写真3 入手したAD9959のDDSユニット

AD9959へのデータは、写真3の右上にあるコネクタから入力します。これに合うケーブルが付属していますので、これを使用しました。反対側、つまりCPU側のコネクタには2列のピンヘッダを用いました。本来は逆接を防止するために、ボックスヘッダを用いるべきです。手持ちに無いため、入手を待たずに先に進んでしまいました。
 

実験した結果、振幅コントロールレジスタ(ACR)のスケールファクトリーの値を0~3FFまで変える事によって、50dBの可変ができる事が解りました。ただ、あまり減衰量を欲張ると誤差が大きくなりますので、40dB程度に抑える事にしました。更に下げたい場合には外部にアッテネータを付加する事で対応が可能です。恐らくD/A変換に流す電流でレベルを変えているのだと思います。ソフトでレベル調整ができるのは有難いです。過去にAD9851を使ったSGでは95dBものレベル可変に苦労しましたが、40dBをここでカバーできる事になります。60dBあたりを超えてくると、アッテネータは簡単には足し算ができなくなります。特に周波数が高くなると顕著です。
 

SGとしてはダイナミックレンジを広く取りたいのですが、ここではアッテネータを内蔵するのは止めました。使い道によって外部アッテネータを付けたり、アンプを付けるように考えました。但し、出力にはインピーダンスを安定させる目的で、3dBの固定アッテネータを入れています。
 

4.回路

回路は図1のようにしました。AD9959の最大電圧はで4Vですが、ユニット内に3.3Vのレギュレータがあります。従って、DDSユニット用に使うのは5Vになります。しかしデータは3.3Vで入力するため、CPU関係の電圧も3.3Vで統一しました。結局5Vと3.3Vの電源を用意する事になります。これはちょっと何とかできないでしょうか・・。

図1 全回路図

CPUユニットにはAVRのATmega328Pを3.3Vで使用しています。LCDは3.3V用を使用しています。周波数を大きくかつ細かく可変する必要がありますので、クリック無しのメカニカル式ロータリーエンコーダを3個使用しています。ステップを可変しても良いのですが、この変更操作が少々面倒です。メカニカル式を3個使う事で、安くて操作性は抜群です。1MHz、10kHz、100Hzの3つの周波数で可変をするようにしました。1Hzステップでも可変できますが、SGとしては意味が無く止めました。更にレベルを変更するため、クリック付きのロータリーエンコーダを1個使用しています。

5.作製

CPUユニットはユニバーサル基板で作製しました。秋月電子の一般的なC基板を使用しています。図2の実装図を作ってからハンダ付けを始めました。図3がハンダ面で、図4がジャンパーになります。基本的には簡単な回路ですが、このような手間を惜しむと後で手痛い事が待っています。何回も痛い目に遭ったため、こまめに書くようになりました。更に図5が電源ユニットの実装図で、図6がハンダ面になります。いずれも部品面から透視する図になります。写真4が各基板を作った様子です。写真5は生基板上で全てを仮組して、思ったように動作する事を確認している様子です。

図2 CPUユニットの実装図

図3 CPUユニットのハンダ面

図4 CPUユニットのジャンパー

図5 電源ユニットの実装図

図6 電源ユニットのハンダ面

写真4 各基板を作ったところ

写真5 生基板上に仮組して動作確認をしているところ

ケースにはタカチ電機工業のCU-3Nを用いて、写真6のように穴あけを行いました。各ユニットはケースにネジ止めせずに、写真7のように「貼り付けボス」で固定しました。基板等は電気的にケースと接触させずに、アース側を流れる高周波のルートが同軸ケーブルだけになるようにしました。ケースに接触しているのが、出力のBNCコネクタだけの一点アースです。出力に入れた3dBのアッテネータも、写真8のようにアースから浮かせました。もちろん電源線に流れてしまう事もありますので、これだけで充分という事ではありません。ケースの下側にネジを出したくなかった事もあります。

写真6 ケースに穴あけをした様子

写真7 基板等は貼り付けボスで固定

写真8 3dBアッテネータも貼付けボスでアースから浮かせています

しかし、大きく矛盾するようですが、LCDだけは前面のパネルに2mmのネジを使って固定しました。いつも悩ましいLCDの固定ですが、最後になって更に悩む事になりました。
 

アッテネータと出力のBNCコネクタ間は、写真9のようなケーブルを作りました。これは写真9の中央にあるジャンクのコネクタに1.5D2Vを使ったものです。このような工作は、手持ちの部品で何とかなるように考えました。

写真9 出力には、このようなケーブルを作製しました

なお出力はCH2より取り出しました。これは基板内部の25MHzの発振器の影響が一番少ないところを選んだためです。気休め程度の差ですが、発振器と回路が近接するCH0,3は避けた方が無難と考えました。但しCH3,4はソフト変更で使えるように、ケースの裏側にSMAコネクタを出しています。一応50Ωで終端していますが、ソフトで出力は出さないように設定しています。この終端も気休めでしょう。
 

上手くできたと思って、上蓋を閉めようとすると閉まりません。写真10のLCDの取り付けネジが、上蓋の補強金具に接触するのです。最後の最後になって、写真11のように上蓋を削るという「超」不始末をする結果になりました。完全にトホホな失敗です。過去にも何回かやっているのですが、久しぶりに使ったケースで忘れていました。動作には全く関係ないのですが、このようなケースの修正は大失敗のひとつです。

写真10 大失敗は最後に気が付きます このLCDを固定するネジが邪魔でした

写真11 仕方なく削った上蓋

完成した内部の様子は写真12のようになりました。裏面からは写真13のようになりました。

写真12 完成した内部の様子

写真13 裏側より見たところ

6.ソフト

ソフトはBASCOM AVRで作りました。毎度下手なソフトですが懲りずに作っています。基本的には、LCDに周波数とレベルを表示し、そのとおりの設定をDDSに送出するだけです。無線機とは少し違う考えですが、ZERO MODEにした場合1MHzを回した時はそれ以下の桁をオールゼロにします。10kHzを回した時はそれ以下の桁をオールゼロにします。100Hzを回した時には普通にカウントします。これはSGとして使用する時には便利と思います。スイッチで切り替えずに、常時このようにしても良さそうに思います。
 

使用する全周波数のレベル測定は無理ですが、ACRのスケールファクトリーを3FF固定にして測定しました。最大出力に固定し、レベルを測る事になります。その結果が図7のようになりました。1MHzと比べると150MHzでは2.8dB出力が下がりました。エクセルでグラフを作りながら補正式を作りました。-13dBmを基準として計算していますが、この値にはあまり意味はありません。図7では100kHzから測っていますが、計算には1MHzから上を使っています。その結果を基に、ACRのスケールファクトリーを補正しました。

図7 出力レベルを測定した結果で、補正式を計算しています。

ロータリーエンコーダでレベルを変えた場合、変わった分をレジスタの基準設定から調整するソフトにしました。その結果、レベルや周波数を上げた時に設定レベルが出せないケースが出てきます。スケールファクトリーは0~3FFですので10進数では0~1023です。計算上1023をオーバーした場合になります。この時にはLCDにUNCALを表示するようにしました。メーカの作る機器であれば、そのようなレベルは最初か使わないと思います。しかし、アマチュア無線の自作ですので、目一杯の幅で使えるようにしています。但し、失敗したのはUNCAL表示が出ている事に気が付かずに「レベルが低い」などと考え込むケースがありました。UNCALとなった時には、ピーとでも軽く音を出して気が付くようにすべきでした。
 

外部にアンプを接続するモードもありますが、同様に補正式を計算したのが図8になります。このアンプは、以前CQ誌に発表したSGに使ったものを暫定的に使用しています。

図8 出力にアンプを付加し、出力レベルを測定した結果で補正式を計算しています。

ほとんど実験段階ですので、周波数をLCDに表示して出力を制御する基本的なソフトです。素人が作った下手なソフトですが、一応「ここ」に置いておきますので参考にして下さい。なお、PCの環境はWINDOWS XPで、BASCOM AVRの製品版 VER.1.11.9.8を使ってコンパイルしています。書き込みはAVR ISPmk2ですが、基板のISP端子との接続には自作の変換ケーブルを使っています。これ以外の環境についての確認はしていません。

7.使用感

基準の周波数が高いため、50MHzでのレベル低下も少ないようです。低下した分もソフトで補正しますので、全く問題はありません。レベルとしてはAD9851を使った時に比べて、桁違いに精度が良くできたと思います。
 

どうしても気になる点ですが、AD9959ユニットの入力は5Vですが内部で3.3Vにしています。そのためCPUもLCDも3.3Vで動かしています。しかし入力の電源がシャック共通の12Vですので、ほとんどが無駄な熱になっています。8.7VもレギュレータICで熱になっていますので、消費電流は多くないのですが、放熱が必要になります。これは全体として何とかしたい問題です。もちろん、入力に6~8Vが使用できるのであればその方が省エネですし、無駄な熱も出しません。