DDS応用低周波発振ユニット

Direct Digital Synthesizer(DDS)を発振部に使い
ロータリースイッチでの周波数可変をPICで制御。



1.概要

ダイレクトディジタルシンセサイザー(DDS)を利用して周波数発振ユニット
を作ってみました。DDSには市販キットを使い、これの制御をPICで行っ
ています。
周波数設定は押しボタンとロータリースイッチでダイヤル式で出来ます。
発振周波数は10Hzから200KHzを1Hzステップで出来ます。
周波数安定度はクリスタル精度ですので、一般の低周波発振器と比べ
はるかに安定なものになっています。
信号の出力も意外ときれいな正弦波で600Ωの出力アンプ付きです。


2.発振部仕様

低周波発振ユニットとしての仕様は下記としています。
(1)全体仕様
 ・電源
    ±DC8から10V 
    (内部は、DC±5Vを使用)
    電流容量  約 100mA
 ・出力周波数範囲
    10Hz 〜 200KHz
 
(2)発振部仕様(DDS)
 ・信号種別       正弦波のみ
 ・周波数範囲      1Hz〜200KHz
    (出力フィルタの周波数特性による制限で、DDSとしては、
     1Hz〜17MHzまでの発振が可能) 
 ・周波数可変単位    1Hz
 ・周波数安定度     クリスタル発振精度(約10ppm)

(3)制御部仕様(PIC16F84)
 ・ロータリースイッチ(メカニカル方式)によるアップダウン
  単位はHi/Lowスイッチにより、1Hz単位と1KHz単位に切替可能
 ・Up/Downスイッチによる連続可変
  ロータリースイッチよりも高速な可変が可能で、可変単位は1Hzか
  1KHzです。
 ・Hi/Lowスイッチ
  可変する周波数単位を1Hzと1KHzに切り替えるスイッチです。

(4)出力アンプ部仕様
 ・出力電圧 
   600Ω負荷に対し 5Vp-p の正弦波
 ・出力電圧可変範囲
   スイッチ切替  0dB、-20dB、-40dBの減衰切替可能
   ボリューム   0〜最大まで可変可能
 ・周波数特性    5Hz〜1MHz


3.DDSインターフェース仕様

DDSとしては有名な、秋月電子通商の「DDSキット」を基板ごと使い、
シリアルインターフェース用の組み立てとして、周波数設定用の
ディップスイッチは実装しないでおきます。

このDDSのシリアルインターフェースをPICで制御しますが、DDSへの
シリアルインターフェースは下図のようなタイミングとします。
つまり、まず出力するデータを下位ビットから順にRB6へ出力し、そして
1ビットのデータ毎にRB5のクロックを1回LowにしてHighに戻します。
アドレスは全て「1」 コマンドは下表に従い出力します。
データは3バイトのデータと、最上位2ビットの「0」を出力します。
全部のデータを出力し終わったら、最後にRB7のストローブ信号を
1回だけLowとすれば、DDSへの出力が完了し、実際の出力が出ます。
またコマンド1はプログラムの初期化時に1回だけ出力すればOKです。
あとはすべてコマンドCだけです。下図は左から右に流れるという形で
見て下さい。



また、インターフェースのコマンドは下表のような機能となっています。
この中で使っているのは、出力ON(1)とチャンネル1への周波数設定
と出力(C)の2つだけです。

コマンド

機 能 内 容

出力をOFFとする(データはダミーデータ)

出力をONとする(データはダミーデータ)

未使用

汎用出力(4ビット)へ出力(下位4ビットのみ有効となる)

4,5,6,7

チャンネルメモリ(CH1〜CH4)にデータ書き込み記憶

8,9,A,B

チャンネルメモリ(CH1〜CH4)のデータを出力

C,D,E,F

チャンネルメモリ(CH1〜CH4)にデータ書込みかつ出力

DDSの組み立てで変更した要素は出力フィルターで、今回は低周波
用ということですから定数を 1MHzまでとして下記のように変更して
います。このフィルターの効果のため、出力として同じ振幅になるのは
10Hz〜200KHzとなっています。
もっと周波数範囲を広げたい時には、このフィルターの定数を変更すれば
広げることが出来ます。

    220μF  100μH  100μH  100μH
    220pF   470pF  470pF  220pF

またジャンパーJ1は接続しません。


4.回路構成

DDSとPICを接続した低周波発振ユニットの全体回路は下図のよう
になります。この回路で、下側がPICとDDS部分、上側は出力アンプ
部分となります。
PICには手元にある PIC16F84を使いましたがどれでも出来ます。
クロックも10MHzでなくても適当な値で大丈夫です。
DDSに5Vの電源を供給しますが、電流が100mA近く流れますので
3端子レギュレータには1Aタイプの7805を使用し、放熱フィンを
付けます。

出力アンプは教科書通りの差動トランジスタによる出力部にしてい
ます。しかし、これに使うトランジスタには周波数特性の良いPNPと
NPNのペアトランジスタを使って下さい。f特としては200MHz程度は
欲しい所です。
同様に、ここで使うオペアンプも周波数特性の良いものを使う必要
があります。1MHzでゲイン約10倍ですから、バンド幅として10MHz
は最低必要です。今回はLM833を使いました。
出力のアッテネータはそれほど正確な減衰比は必要としないので
簡易回路で組みました。

【注意】下記回路図でDDSとPICの接続で、STBとSCKが逆になって
    います。正しくは、RB7−SCK  RB5−STB です。



下記はCADの回路図と基板パターン図のデータです。ダウンロード
してHiWIREでご覧下さい。

  ★ DDS応用低周波発振ユニット回路図
  ★ DDS応用低周波発振ユニットパターン図


5.プログラム

PICのプログラムとしては易しいプログラムです。
まず初期化したあとは、ずっとキーの入力の有無を監視し続けます。
そしてキーの入力をひとつでも感知したら、チャッタリングを回避する
ため一定時間後(1msecまたは5msec)に再度読み込んで、同じか
どうかを確認しています。
この待ち時間が2種類あるのは、ロータリースイッチの動作が高速な
ためで、5msec待っていると入力抜けがあることが分かったためです。

そして確認後、ロータリースイッチか up/downスイッチかを区別して
それぞれの処理に分岐しています。
それぞれの処理では、3バイト24ビットの周波数データをカウントアップ
またはダウンするのですが、その前にHi/Lowスイッチの状態を読み込ん
でそれにより、±1Hzにするか±1KHzにするかを判定してから、それぞ
れの処理をしています。3バイトのデータのアップ、ダウンカウントに
なります。

アップ・ダウンが終わったら、それのデータをDDSに送り込みますが、
送るフォーマットがDDS専用ですから、それに合わせた順序で送ります。
最後にstrobe信号を送信すれば、DDSの出力が出てきます。
これで1巡の処理を完了し、元の状態に戻ります。
ここで注意が必要なのは、データは正論理ですが、クロックとストローブ
は負論理であることです。つまりこのRB5とRB7は常時「1」にしておき
出力するときに「0」とするということです。

Up/Downスイッチの処理では、連続して押されている間、カウントアップ
ダウンをする訳ですが、そのまま連続処理すると早すぎますから、何回
かに1回カウントを実行する様にします。この間隔はパラメータになって
いますから適当な好みの値にして下さい。

プログラムソースは下記ですので、ダウンロードしてMPLABでお使い
下さい。

   ★ 
DDS応用低周波発振ユニット プログラムソース



6.外観構成

低周波発振ユニットの概観は下記写真のようになっています。
まずベースと成る基板には、PICと出力アンプが実装されており、その上
にDDSキットの基板がコネクタ接続で実装できるようにしました。
このコネクタには、基板用のピンコネクタを使用しましたが、位置決めは
DDS基板の寸法を実測して決めています。
電源の3端子レギュレータは出力アンプ用の±5V用は独立にしました。
従って5V以外のもう少し高い電圧にして、出力電圧を上げることも可能
です。
DDS供給用の5Vの3端子レギュレータは、電流が結構流れて熱くなるの
で、放熱フィンを付けています。

全体の構成です。DDSの基板が2階建てで
載っています。
左側コネクタがスイッチ用で、右側が出力用
です。


3端子レギュレータには放熱フィンを取り付けて
います。

DDSの基板の裏側です。下側の基板との
接続にはピンコネクタを使いました。

下側の基板でDDS基板をはずしたところです。
左側がPIC関連で右側が出力アンプ関連の
回路です。

下の写真は組み立ての詳細です。



  目次ページに戻る