ソフトウェア DDS 方式AFツートーン・ジェネレータキット (Model Num. TG-15090010)
- 完全無調整
- 高い周波数安定性
- 低消費電流、9V乾電池使用
特長:
ソフトウェア合成なので2周波のレベル合わせが不要。完全無調整を実現。 |
高い周波数安定度。PIC内蔵のシリコンレゾネータによりアナログ発振回路よりも高安定。 |
低消費電流 15mA。 9V乾電池使用で電源経由の送信出力回り込みを回避します。 |
ツートーン出力は 1kHz + 1.575kHz (Two-tone A)と 1kHz + 1.6kHz (Two-tone B) の切替が可能。 |
キットの概要
TGeS LAB では PIC マイコンを使用し、ソフトウェアで DDS (Direct Digital Synthesizer) を構成して発振波形を生成する、オーディオ帯域の
ツートーンジェネレータキットを開発しました。
オーディオ帯域のツートーンジェネレータは、SSB 送信機のマイク端子に入力して送信波形を観測することにより、送信機のマイク入力から 終段増幅までのオーバーオールでの歪特性を評価するときに使用します。
仕様:
出力波形モード | :1kHz + 1.575kHz (Two-tone A)、1kHz + 1.6kHz (Two-tone B)、シングルトーン 1kHz |
出力レベル | :各モードとも 20mVpp (600Ω 負荷時) |
出力インピーダンス | :50Ω |
DDS サンプリング周波数 | :200kHz |
サイン波 ROM | :8bit (1周期) |
出力 DAC | :8bit R-2Rラダー |
電源電圧・電流 | :DC 6V ~ 10V 15mA typ. |
技術解説
ハードウェア
ツートーンジェネレータとは、周波数の違う2つのサイン波を電圧合成して出力するものです。
SSB 送信機のマイク入力に単一の周波数(シングルトーン)を入力してもその送信波形には、変調のエンベロープは観測されず、CW 波と同じ一定の 振幅の送信波となります。
シングルトーンを入力したときの
50MHz SSB 波
ところがツートーンをマイク入力に入力するとその送信波形に変調のエンベロープが現れ、変調のかかり具合を観測することができるようになります。
ツートーンを入力したときの
50MHz SSB 波
オーディオ帯域のツートーンジェネレーターを構成する場合、通常はウィーンブリッジ発振回路やツインT型発振回路などのアナログの発振回路を 2つ用意して2周波を電圧合成しますが、アナログの発振回路は周波数安定度が悪いうえ、2周波のレベルをキッチリ合わこむ必要があり、使用する前に2周波それぞれのレベルの再確認が必要です。
本キットでは、ソフトウェア DDS で2周波を生成して電圧合成していますので、2周波のレベルがズレることは無く、完全無調整で使用することができます。
1kHz / 1.6kHz ツートーン波形
1kHz シングルトーン波形
ソフトウェア DDS は、28pin 16kワード ROM の PIC マイコン PIC16F1938 を使用して構成しています。
PIC16F1938
PIC マイコンは、内蔵のシリコンレゾネータを使用して内部クロック 32MHz で動作します。
プログラムで2周波を同時に生成していますので、DDS のサンプリング周波数はあまり高周波にはできず、サンプリング周波数 200kHz となっていますが、本キットでは、1.6kHz 程度を生成すれば良いだけなので十分な周波数です。
ソフトウェアで生成した8bitの DDS 出力は、PIC のPORTC に接続された10キロオームの抵抗群 (R00 ~ R24) からなる D/A コンバータ (DAC) でアナログ波形に変換されます。
この DAC は、R-2Rラダー型と呼ばれるもので抵抗だけで簡単に構成することが出来ますが、アナログへの変換精度は抵抗の精度に依存し、抵抗の精度が悪いと波形歪が増えてしまいます。
従って抵抗値の管理が重要になってきますが、各抵抗のバラツキを ±1% 以内に管理すれば概ね良好な結果を得ることが出来ます。
本キットでは許容差 ±1% の酸化金属皮膜抵抗を使用して波形歪への影響を出来るだけ小さくなるように設計しています。
なお、R-2Rラダー型の出力は、ボルテージフォロアなどのハイインピーダンスバッファで受ける必要はなく、本キットのように半固定ボリュームを 直接接続しても波形に影響を与えることはありません。
それから、PICマイコンには DAC を内蔵している品種のものもあります。
例えば PIC16F1709 (20pin 8kワード) は、8bit の抵抗ストリング型 DAC を内蔵しており、しかも内蔵のオペアンプで出力できるようになっているので、開発当初はこのPIC16F1709
を採用する方向で検討していたのですが、
① DAC へデジタル値を入力するレジスタ (DACマルチプレクサ DAC1CON1)が PIC の Bank2 に配置されておりバンク切替が必要なため、
その分プログラムのステップ数が増えてしまい DDS のサンプリング周波数が下がる
② PIC 内蔵のオペアンプの電流駆動能力が低く、50kΩ 以下の負荷では DAC 出力に歪が発生する
以上、①、② の理由により DAC内蔵 PIC16F1709 は採用せず、外部にR-2Rラダー型の DAC を設ける方向で開発を行いました。
DAC でアナログに変換された DDS 発振出力には、DDS 特有の階段状のノイズが含まれるため、オペアンプ NJM4558 2段により増幅とフィルタリングを行い波形整形してます。
プログラムがサイン波を生成するためにサイン波のデータを ROM (サイン波 ROM) に格納していますが、格納されている波形データは 8bit
なので出力周波数が DDS のサンプリング周波数より充分に低い場合、サイン波1周期が 256 の階段状に分割された波形で出力されます。
フィルタリング前の1kHz 時の DAC 出力波形を示します。
1kHz DAC 出力 (フィルタリング前)
一見きれいなサイン波に見えますが、オシロの電圧軸と時間軸を引き延ばして見ると波形が階段状になっていることが判ります。
1kHz DAC 出力拡大 (フィルタリング前)
そこで本キットではオペアンプによりカットオフ周波数を 3.39kHz に設定した2段のローパスフィルターを構成し、この階段状のノイズを低減しています。
また、低域側のノイズについても減衰させため、カットオフ周波数 723Hz のハイパスフィルターも併せて構成してあります。
なお、この回路はオペアンプを使用していますが、いわゆるアクティブフィルターの部類では無く、RCによるパッシブなフィルターです。
オペアンプ2段の LPFとHPF
ツートーンの出力モードは 1kHz + 1.575kHz (Two-tone A モード) と 1kHz + 1.6kHz (Two-tone B モード) の切替をタクトスイッチ SW01 で、シングルトーン (1kHz) とツートーンの切替 をタクトスイッチ SW00 で行います。
Two-tone A モードは、一般的に良く使用されている周波数の組合わせモードです。電源スイッチ ON 時はこのモードで出力します。
Two-tone B モードは、アナログオシロで送信波形のエンベロープを観測する場合、オシロのトリガーが掛かり易くなります。
本キットの出力のスぺクラムを示します。
下図は、1kHz + 1.6kHz のツートーン出力時のものです。
トーン周波数に対して-60dBc 以下のデジタル系に起因するノイズが見られますが、比較的きれいなスペクトル出力となっています。
(8.7kHz 付近のスペクトルは測定に使用している SDR スペアナ (USB-SA44G) の内部スプリアスによるものです。)
1kHz / 1.6kHz ツートーン 出力
(出力max, 20dB ATT 挿入 50 Ω 終端)
下図は、1kHz + 1.575kHz のツートーン出力時のものです。
4.8kHz 付近にスプリアスが観測されますが、トーン周波数に対して -55dBc 程度なので OK としています。
(8.7kHz 付近のスペクトルは測定に使用している SDR スペアナ (USB-SA44G) の内部スプリアスによるものです。)
1kHz / 1.575kHz ツートーン出力
(出力max, 20dB ATT 挿入 50 Ω 終端)
この 4.8kHz 付近のスプリアスは、オペアンプではなく、R/2R ラダー出力部で既に観測できます。
一見、1.575kHz の3倍の高調波のようにも見えますが、 下図のように DDS 合成のプログラムを変更して5ヘルツだけ低い 1.570kHz とするとスプリアスの位置が大きく移動して 3.5kHz 付近になりました。また、もとは無かった 2.2kHz 付近にもスプリアスが立つようになりました。
以上のことから、このスプリアスは PIC 内部での DDS 波形合成過程で発生していると推定されるのですが、詳しい原因は不明です。
試しに 1kHz / 1.570kHz としたときの出力
(出力max, 20dB ATT 挿入 50 Ω 終端)
次は、シングルトーンのときのスペクトルです。
シングルトーン 1kHz の出力
(出力max, 20dB ATT 挿入 50 Ω 終端)
ツートーンのときに比べ、シングルトーンのレベルは2周波を合成しているため 6dB 高くなります。(6dB = 電圧レベルで2倍)
2倍、3倍、5倍の高調波が少し立っていますが、トーン周波数に比べ -60dBc 以下です。
(8.7kHz 付近のスペクトルは測定に使用している SDR スペアナ (USB-SA44G) の内部スプリアスによるものです。)
次に本キットの出力を TGeS LAB で試作中の 50MHz SSB 送信機に入力したときの波形を示します。
ツートーンは、1kHz + 1.6kHz です。 ツートーンの周波数の差 (600Hz) がエンベロープの山の間隔となっています。
きれいなサイン波のエンベロープになっており、ゼロクロスもXの形できれいに出ています。
ツートーンを入力したときの
50MHz SSB 波
ちなみに同じ波形を古いデジタルオシロで観測した場合を下図に示します。
このようにデジタルオシロではベタッとしたエンベロープとなってしまい、アナログオシロほどきれいな形に波形を表示出来ません。
(最近のデジタルオシロは廉価なものでも頻度情報表示機能 (Phosphor) が搭載されているので、アナログオシロのような表示が可能です)
ツートーンを入力したときの
50MHz SSB 波
なお、参考までにツートーンの 1.6kHz のレベルを 1kHz より 10% 程度小さくした場合のエンベロープを示します。
ツートーンのレベルが合っていない場合、このようにゼロクロスがXの形できれいに出ず、太くなってしまいます。
2周波のレベルが合っていないと
ゼロクロス部が太くなる
次に本キットを使用して送信機の評価をしてみます。
下図は、 50.1MHz の SSB 試作機の送信のスペクトルです。
先ずはシングルトーン 1kHz の時を示します。
シングルトーン入力時のSSB送信機出力(50.1MHz)
シングルトーンのスペクトルは 50.1001MHz に立っています。 レベルは、-20.3 dBm です。
50.1000MHz にはキャリア漏れがあります。
また、シングルトーンの2次、3次の高調波が 50.1001MHz の上下に出ています。 この試作送信機は、まだまだ改善の必要がありそうです。
次にツートーン 1kHz / 1.6kHz を入力したときのスペクトルです。
シングルトーンのときよりもツートーンのレベルがそれぞれ -6dB になります。(-26.2 dBm)
これは、シングルトーンのときよりもツートーンそれぞれの成分の送信波形の電圧が(電力ではなく) 半分になるからです。(電圧の 1/2 は -6dB )
ツートーン入力時のSSB送信機出力(50.1MHz)
スペクトル上、キャリア漏れ以外はシングルトーンを基準にして -40dB 以下ですので概ね良好ですが、ツートーン周波数から計算される相互変調歪(IMD) 以外にも不要なスペクトルが立っています。
相互変調歪(IMD)についてはここをクリック
次に過変調にしたときのエンベロープを示します。
ツートーン 1kHz/1.6kHz で過変調にした時
の 50.1MHz SSB波
エンベロープの頭が潰れてサイン波状ではなくなっています。
このようになるのは、送信機のどこかで(通常は終段増幅部)増幅が飽和してしまってこれ以上、出力が増やせないようになっているからです。
このようにツートーンジェネレータとオシロを使用してエンベロープを観測すれば、スペアナが無くても概ね送信機の歪状態を把握することができます。
上図のエンベロープが潰れて過変調になっている波形の送信スペクトルを下図に示します。
なにやら無数の不要な輻射が観測され、スプラッタをまき散らしている状態になっています。
さすがにこのようなスペクトルを見ると過変調は厳に慎むべきであると実感してしまいます。
ツートーン入力 過変調時のSSB送信機出力(50.1MHz)
本キットをメーカー製のリグなどに接続する場合の例を示します。
下の写真は、FT-817 (2000年に購入した初代 FT-817)に本キットを接続している様子です。
FT-817 のマイクユニットのバックカバーを取り外し、ダイナミックマイクロフォンの白/茶の出力線を外して替わりに本キットの出力をシールド線とワニ口クリップで接続しています。
PTTスイッチを押して送信状態にます。PTTスイッチの替わりに別のロック式のスイッチを接続しても良いでしょう。
FT-817 のマイクユニットに本キットを接続する場合
なお、お使いのリグでの接続方法は、それぞれのリグの回路図を参照してマイク入力ラインがどこかを調べてください。
本キットは、コンデンサマイク用の DC 電圧が重畳されているマイク入力ラインであっても、そのまま直接接続して問題ありません。
変調度の調整は、リグ側のマイクゲインまたは本キットの半固定ボリューム VR00 で行えますが、S/N の良い状態で観測するために本キットの出力はMAX状態で使用し、変調度の調整は出来るだけリグ側のマイクゲインで行うようにします。
下図は、FT-817 に本キットを接続した場合の 7MHz 帯 SSB 送信出力です。
FT-817 7MHz 帯 SSB 送信波形
(ツートーン 1kHz/1.6kHz 入力)
FT-817 のマイクユニットには音声の質を切替えるための「TONE」というスイッチがあり、TONE-2 にすると低域が減衰して高音が強調された状態となります。
この状態で本キットからツートーンを入力した場合の SSB波のエンベロープを下記に示します。
マイクTONE-2 のときのFT-817 SSB 送信波形 (7MHz 帯)
先ほどの SSB波エンベロープに比べ、クロス部分が太くなっており、ちょうど2周波のレベルが合っていないときの波形と同様です。
これは、マイクユニットの TONE スイッチを高域強調に切替えたため、ツートーンジェネレータの下側の周波数である 1kHz が、上側の周波数である 1.6kHz より減衰するために起こっている現象です。
このようにリグの AF 回路に帯域制限が設けられている場合も SSB波のエンベロープが変わってきます。
本キットの使用上の注意ですが、一般的に送信機のマイクから終段増幅までのゲインはかなり高いので(マイクの微小な電圧が数十ワットまで増幅される)
回り込みによりきれいなエンベロープが観測できないときがあります。
出来るだけ送信部から離して配置し、電源からの回り込みを回避するために電池(9Vの角型乾電池)での使用をお勧めします。
また、本キットを金属ケースに入れて使用すると回り込みの影響をさらに低減することができます。
ソフトウェア
ソフトウェア DDS の概要を説明します。
ソフトウェアは主にサイン波 ROM とアキュームレータ Acc (累積加算器)に相当する 24bit の変数 Acc からなります。
サイン波 ROM は、サイン波1周期分の振幅を 8bit で A/D 変換した値を格納した配列データです。
配列は全部で1バイト (256個) あります。
比較的大きなデータ量であり、また読出し専用でもあるので、const 修飾子を付けて PIC のプログラム領域の後ろの方、 0xBB00 ~ 0xBBFF に配置しています。
Acc には、一定の周期 (サンプリング周波数) で加算値 AddVal を加算していきます。
Acc は 24bit ですが、上位の 8bit の値だけを取り出してこれをアドレスとしてファイルセレクトレジスタ FSR にセットすると間接アドレッシングファイル レジスタ INDF に今セットしたアドレスのサイン波 ROM の値を取り出すことができ、 これを PORTC へ出力しています。
(このように FSR にアドレスをセットして INDF 経由で値を取り出すことを間接アドレッシングといいます)
Acc が 24bit なので サンプリング周波数を SF とすると SF 1周期当たり 2^24 / SF づつ Acc に加算してゆけば、1秒で
Acc がフルビットとなります。
このとき、Acc の上位 8bit の値で間接アドレッシングを行い、INDF レジスタ経由でサイン波 ROM を順次読み出せば、1ヘルツのサイン波の振幅データが得られることになります。
また、SF 1周期当たり 10 * 2^24 / SF づつ Acc に加算してゆけば、10ヘルツの振幅データが得られます。
従ってアキュームレータ Acc への加算値 AddVal の計算式は、周波数を Freq とすると
AddVal = Freq * 2^24 / SF
Acc への AddVal の加算とサイン波 ROM の読出しまでを最小の命令ステップ数となるようにアセンブラで記述し、このルーチンをループとして回すと求める周波数のサイン波が得られます。
なお、本キットはツートーンを発生させる必要があるので、Acc と AddVal の変数をそれぞれ2つ (Acc1, Acc2, Addval1, AddVal2) 用意し、Acc へ AddVal を加算するステップをルーチン内に2つ組み込んであります。
そしてツートーンの合成は、得られた2つのサイン波データを加算してから2で割ることによりツートーンの波形データとしています。
本キットでは、このループの命令ステップ数を 40step で構成しています。
PICマイコンのクロックが32メガヘルツなので、1命令ステップ当たり0.125uSecですから 0.125uSec * 40step = 5uSec 即ち 200kHz のサンプリング周波数 でループが回ります。
ループの途中に RA0 ポートへの High / Low 出力命令を入れていますので、RA0 ポートからサンプリング周波数の矩形波が出力され、この出力で 1kHz のインジケータ LED を点灯させています。(PIC #2pin DDS CLOCK)
200kHz DDSサンプリングクロック
(PIC #2pin DDS CLOCK)