

CQ出版トライアルシリーズ「デジタル周波数シンセサイザ基板」と付属基板
SMAコネクタは後で取り付けた
オプションでベース基板(LCDとプッシュボタン)、ログアンプ、
プログラマブルアッテネーターが用意されているが、
この基板だけで任意周波数発振器として十分使える
久しぶりに「デジタル周波数シンセサイザ基板」をおもちゃ箱から引っ張り出してきました。この基板はCQ出版社の書籍 トランジスタ技術増刊トライアルシリーズのひとつで「すぐ使えるデジタル周波数シンセサイザ基板 DDS搭載」です。トライアルシリーズは基板やCD付きで何種類か販売されています。なかなか興味深いものが多いようです。
この「デジタル周波数シンセサイザ基板」にはアナログデバイセズ社のDDS AD9843を搭載しています。20MHzまで1Hz刻みで発振できるシンセサイザーです。20MHzというと高周波の実験ではちょっと物足りないと思いますが、オーディオアンプの周波数特性や、アマチュアの無線機でVFO(可変周波数発振器)として使えると思います。オプションのベース基板、ログアンプやアッテネーターを装備すればネットワークアナライザもどきにもなるようです。
今回は書籍に付属のCDに含まれているエクセルのサンプルを動かしてみました。ただし、このサンプルは、ベース基板やログアンプ等のオプションを装備していることが前提の簡易ネットワークアナライザになっています。当局はオプションを購入してませんので、そのままでは動きません。
そこでエクセルのVBAで書かれたプログラムを改造し、オプションの要らない単なる周波数発生器、スイーパーにして見ました。といっても、簡単です。
「デジタル周波数シンセサイザ基板」のDDSを制御しているPICマイコン 18F14K50に書き込まれているファームウェアはCOMポートからテキスト文字列のコマンドを送れば動作するようになっています。1MHzを発振させたい場合は、文字列"1000000S"を送ります。TeraTermでCOMポート#を設定すればすぐ行えます。
1KHzアップしたい場合は"1000U"。ダウンさせたい場合は"1000D"と打ち込みます。ただ、これではスイープできませんので、エクセルのVBAでプログラミングして使うわけです。そのためにはVBAからCOMポートを制御する必要がありますが、書籍の付属CDに「EasyComm」というソフトが入っています。昔「EasyGPIB」というのがありました。当局も真空管の試験システムでエクセルから「EasyGPIB」でGPIBを操作し、測定器を制御しています。「EasyComm」はそれのCOMポート版のようなものです。
「EasyComm」の使い方は簡単で、エクセルにインポートしておけば、ec.COMn = # でCOMポート#を指定し、ec.ascii = "1000000S"というように文字列を送るだけです。最後にec.COMn = 0でCOMポートを開放します。VBAはループ処理はお手のものですので、スイーパーにする場合は、周波数を変えながらループさせればよいわけです。

「デジタル周波数シンセサイザ基板」で455KHzを発振させてみた
基板にUSBコネクタをつなぎPCと接続しておきます。このときCOMポート#が決まるので、デバイスマネージャー等で調べておきます。付属のCDにエクセルのサンプルが入っているので起動します。alt +F11でVBAの開発画面を出します。そのままではネットワークアナライザのソフトになっているので少々複雑です。しかし、よく見るとec.ascii = で周波数の設定して、ログアンプの出力を読んでいるだけと言っていいようなものです。「EasyComm」はすでにインポートされています。余計な部分を消して単なる周波数発生器、スイーパーに改造します。

周波数スイーパーのエクセル画面
Dim i
Dim count
Dim freq
Dim stop_freq
Dim period
Dim updown As String
Sub Freq_Out()
ec.COMn = Range("B1").Value
ec.Ascii = Range("B3").Text + "S"
MsgBox RecieveString
ec.COMn = 0
End Sub
Sub Freq_Sweep()
ec.COMn = Range("B1").Value
ec.Ascii = Range("B9").Text + "S"
count = Range("B11").Value
period = Range("B12").Value
Do
ec.Ascii = Range("B10").Text + "U"
count = count - 1
Range("B13").Value = count
ec.WAITmS = period
Loop While count <> 0
MsgBox RecieveString
ec.COMn = 0
End Sub
Sub Freq_Sweep_W()
ec.COMn = Range("B1").Value
freq = Range("B16").Value
stop_freq = Range("B17").Value
step_freq = Abs(Range("B18").Value)
period = Range("B19").Value
If stop_freq > freq Then
count = (stop_freq - freq) / step_freq
updown = "U"
Else
count = (freq - stop_freq) / step_freq
updown = "D"
End If
ec.Ascii = Range("B16").Text + "S"
Do
ec.Ascii = Range("B18").Text + updown
ec.WAITmS = period
count = count - 1
Range("B20").Value = count
Loop While count <> 0
MsgBox RecieveString
ec.COMn = 0
End Sub
EasyCommを使用した簡単な周波数発生器、スイーパーのVBAプログラム
マクロ名
freq_out:指定周波数の発振
freq_sweep:指定周波数から指定刻みで指定ステップスイープ
freq_sweep_W:指定周波数から指定周波数までを指定刻みでスイープ
スイープをカウンターで確認
開始周波数 1000000MHz(1MHz)
ステップ 100000Hz(100KHz)
カウント 100回
間隔 100ms
最終周波数は11000000Hzになります
(JF1VRR)