02版 2017.03.25
01版 2016.07.18
自作の受信機には減速機構付きLC-VFOを愛用しています。日頃から、送信機自作の際には自作受信機のVFO出力を利用したいと考えていました。そこで考えたのが、受信機ローカル周波数に自動追従するDDS-VFOです。以降、『周波数追従DDS-VFO』、略して『FDDS-VFO』と呼びます。
DDSの任意周波数設定の高速性を利用した、「DDSを入力周波数に追従させる」という単純な発想が発端でしたが、実験による問題抽出・対策の結果、DDSの「高安定」というもう一つの利点をも活かした送信機専用DDS-VFOを実現できました。
ここでは、実験から評価までの過程を示しています。
評価機
概要
実験により、周波数追従性に問題は無いものの、接続した受信機のダイヤル停止状態においてFDDS-VFO出力の品質劣化が観測され、送信機へ供するには問題があることが分かりました。
受信機ローカル周波数の変動、カウント誤差および周波数の桁上り境界点のバタツキが、周波数偏移成分となって出力されることが原因です。
対策として、「交信中」は追従を停止し、DDSを固定周波数により独立動作させることで問題を解決しました。
「交信中」ファーム認識のため送/受信状態の把握が必須となり、送信機側から送受信切換信号を取り込むことにしました。この点が通常のVFOとは異なります。
最後に、本機と送信部を実装した評価機を製作し、評価の結果十分に実用性があることを確認しました。
構成
上記構成は基本構成です。送信機と一体化して製作する場合やトランシーバーに盛り込む場合には、機能の追加や再配分を行うことになり、構成も異なってきます。
実験 ・・・ DDSをアナログVFOに追従させてみる。
DDSをアナログ入力周波数へ追従させるとどのような問題が発生するのか、とにかく、実験回路で確認することにしました。
○試験系
追従動作でもっとも懸念されたのは、入力周波数の変化中に誤計数が発生して出力周波数がバタつかないかということです。(調査の結果、この点は問題ありませんでした。しかし、入力周波数を変化させていない状態では、後述する品質問題がありました。)
バタツキの観測はオシロやスペアナでは困難なため、原始的ではありますが、実験回路の表示器と測定用受信機を使用することにしました。表示器によりDDS出力周波数表示のバタツキ、受信機によりビート音の変化を確認します。
実験回路は以下の@、Aの繰り返し動作(連続追従)を行います。
@入力周波数を計数し、送信周波数へ変換する。
A送信周波数データをDDSへ設定すると共に表示器へ表示する。
<参考>
・表示分解能 : 約16.5Hz。
・周波数変換周期(DDS設定および表示の更新周期) : 約103.7ms。
・処理時間内訳 : 下図参照。
○調査
試験用VFOのダイヤル可変および停止、それぞれの状態で、表示周波数および受信音を確認しました。何れも連続追従動作の下で行っています。
【 周波数追従性(ダイヤル可変時) 】 問題無し
・試験用VFOダイヤル変化に対して以下を確認しました。
@周波数飛び、バタツキは、表示から観測できず、受信音からも感じられない。
A表示がスムーズに変化する。
B階段状に受信音が変化。
これは、入力のVFO周波数に追従してDDS設定周波数が更新されているためであり、正常。
【 出力品質(ダイヤル停止時) 】 問題有り
・以下の現象を観測しました。
<現象T>
ダイヤル停止状態で表示下2桁(10Hz、1Hz)がちらつく。又、表示変化と連動して受信音が変化する。
カウント精度約16.5Hz×n倍の表示変化。表示変化や音を聞いた感じでは、殆どn=1で時々2〜3。受信音については変化周波数が低いので、ピロピロではなくそれよりもかなり低い、音にならないようなヒロヒロ(?)という音。
<現象U>
入力周波数を変化させた時、16.5Hzのn倍境界付近で表示チラツキの頻度が高くなる。
・原因について考えてみます。(02版 「原因」について記述内容変更)
<現象Tの原因>
「カウンタ誤差」(*)が原因。これにより、DDS設定値が変動し、出力周波数が変動する。
(* : 入力周波数の短期変動、FDDS側のカウンタ回路の発振器ジッタおよび非同期回路によって発生する誤カウント。)
カウント周期を2~3桁程度大きくし、下位桁をマスクすることで改善する。しかし、カウント周期が長くなり追従性が極端に悪くなるため採用できない。ハード規模も増える。又、この対処により入力周波数の短期変動が浮き彫りとなり、出力変動の頻度は下がるが無くならないかもしれない。
<現象Uの原因>
入力周波数がDDS周波数設定値の更新境界点にある場合に発生する。この付近でカウンタ値がバタつく。この現象は入力周波数の短期変動が支配的と考えられる。(「カウント誤差」も含まれるが相対的に少ないと推測。)
<その他>
上記2現象の他、今回の実験では観測されていないが、接続先装置の発振安定度がより低い場合には長期変動(*)も変動要因となる。
(* : 入力先装置内部の自己発熱、周囲温度や電源電圧の変化に因る変動で、変動量は回路や構造に依存する。)
現象T、U共に、カウンタ計数値の変動に応じDDS周波数設定値が更新されることで約16.5Hz×nの周波数変動となります。DDSではなくアナログVFOならこの程度のゆらぎは気付きませんが、デジタル的に変化すると音の変化が分かり、非常に気になります。このままでは、CWでは使い物になりません。
その他の原因で挙げた長期変動は、出力のゆっくりした(デジタル)変動となって現れます。
○対策(02版 上から4〜29行目変更)
今回の実験により、「周波数追従性」については問題が無いことはわかりましたが、ダイヤル停止時の「出力品質」については劣化が予想以上に大きいことが分かりました。
元々、周波数安定度の非常に高いDDSを、安定度の低い信号(*)に追従させるという一見無謀な実験であり、何か問題が発生するだろうことは予想していました。
(* : 例えば高1中2真空管式受信機等の電源電圧安定化回路を持たないLC発振回路出力等)
今回の調査により、接続先装置とFDDS−VFO内部のそれぞれに出力変動要因があることが分かりました。対策をいろいろ検討しましたが、連続追従の下では、前者の変動がある限り完全に抑えることは不可能と考えられます。
視点を変えて、この品質劣化問題の対策を「送信機への適用」という観点から考えてみます。
そうすると、受信中は送信時の周波数決定のため連続追従の必要性があるものの、送信中は、周波数固定運用が前提であることから追従(周波数更新動作)を停止することで解決できることが分かりました。
「送信中は追従を停止し、停止直前の変換周波数データをDDSへ設定して独立動作させる」
但し、送信中のみ追従停止とした場合、通常一回の交信につき複数回の送/受信が行われるため、送信の都度送信周波数が変化するという問題が残ります。
この問題については、追従停止期間を一回の交信開始から終了までの期間「交信中」としてファーム認識させることで解決できます。
< 対策 >
・「交信中」は追従停止し、停止直前の変換周波数データをDDSへ設定して独立動作させる。
・「交信中」認識のため送受信状態情報を外部から取り込む。
この対策により、高安定というDDSの本来のメリットを活かすことができ、水晶発振回路並の高安定周波数を外部出力できます。
機能検討
○「交信中」のファーム認識
ここでは「交信中」とは、交信のための最初の送信(交信開始)から相手局との通信終了(交信終了)までを云います。通常、1回の交信で送信、受信は複数回繰り返されます。
「交信開始」および「交信終了」は、操作者による操作情報からファームが判断します。ただし、これに必要な専用スイッチは設けず、通常の送信操作の範疇から逸脱しない方法を考えました。
・交信開始
電源ON、又は、前回交信終了から最初の送受信切替信号ON(送信モード)を入力した時点。
・交信終了
「交信開始」認識後の受信状態にあって、ダイヤル操作による周波数変化がΔfを超えた時点。ここで、Δfは交信開始直前の入力周波数からの周波数変化分。
設定値Δfは接続する機器の周波数安定度の2倍以上、例えば500Hzや250Hz。ただし、ダイヤル操作に違和感を生じない範囲とします。
「交信終了」のファーム判断タイミングは、操作者のダイヤル操作に依存します。従い、実際の交信終了タイミングとは異なりますが、運用上支障はありません。
○「交信中」の表示
「交信開始」および「交信終了」のファーム認識状態を目視できるように表示を設けることにしました。表示効果確認のため以下の2つの方法を盛り込んでいます。
・周波数表示の桁数
受信中は表示周波数下2桁を非表示。「交信中」認識の間、全桁表示。
・LEDおよび周波数表示桁最上位による表示
「交信中」認識の間、LED点灯(緑色)または最上位桁「L」(ロック)表示。
ここまで、FDDS-VFO基本構成による回路の実験および必要機能について述べました。
評価機
実用性確認のため、FDDS-VFOと送信機を一体化した評価機を製作しました。
「Tx-gear010」はCYTECさんの汎用ミキサーです。制御回路とドライブ回路があり、一部を改造して送信機の代用としています。出力は約36mWでした。
上記回路図のFDDSの詳細を下図に示します。
ファームは「DDM-R2R」を流用しましたが、DDSの設定データ計算にFLOAT演算が必要となり、取り込んだ時点で0.6kByte程増加し、直ぐ容量不足となりました。その後、PIC16F628AからPIC16F648Aへ変更したところ、それでも機能追加で容量不足となり、結果、機能をかなり限定せざるを得ませんでした。
又、「DDM-R2R」では割り込み処理の中で主要部分を処理していましたが、機能追加で動作がおかしくなりました。調査すると、タイマ0は停止不可能であることが分かりました。割り込み処理中にタイマ0割り込みが入っていたようです。結局、構成の再構築を行い、割り込み処理はフラグ処理に徹することにしました。
ということで、機能限定版ということもあり、ROMデータのみ載せることにしました。
FDDS-VFO評価用ROMデータはここ(hex)です。
現在、Aruduinoでファーム作成を進めていますので、これについては機会があればソースリストを公開します。
評価
QR-73J + 評価機 FT-817
QR-73Jと評価機を接続し、評価機とFT-817へそれぞれ終端型電力計を接続して評価を行いました。問題点や改善すべき点とそれらの対処について以下に示します。
○送受信周波数合わせ
FT-817からCW送信。QR-73Jにより受信し、その周波数でFT-817へ応答すると周波数がズレて受信されました。QR-73Jによりモニタしてもズレていることが分かります。
これは、受信機の受信形態によりローカル周波数が異なり、その分の補正をFDDS-VFO側で行っていなかったことが原因です。
この説明の前に、受信機と評価機を含めた系全体を改めて見渡し、問題箇所を探ります。
周波数構成が分かる全体構成を下図に示します。
上の図は、受信機側の受信周波数fr、BFO周波数及びローカル周波数FlとFDDS-VFO出力(送信)周波数Ftの関係が分かるように関連部分のみ示しています。
図の下側の3つのケースは、受信周波数と送信周波数を一致させるために必要なFDDS-VFO側の補正量Hを示しています。( Fl式の詳細はここ(PNG)を参照して下さい。 )受信形態によってローカル周波数Flが変わることが分かります。
図では、例としてB=1.5kHzおよびP=0.6kHzとしています。送信周波数Ft(=Fl-H)は、ケースTではFLからH=f0-1.5kHzを差し引いた値、ケースUではf0を差し引くことで得られることを表しています。
ケースT : LSBモードによるLSB受信 Fl=Fr+f0-1.5k H=f0-1.5k
ケースU : CWモードによるCW受信 Fl=Fr+f0 H=f0
ケースV : LSBモードによるCW受信 Fl=Fr+f0-(1.5k-0.6k) H=f0-(1.5k-0.6k)
さて、今回は、上のケースVの評価において問題が発覚しました。
受信形態により異なる分の補正をFDDS-VFO側で行っていなかったことが原因です。受信機QR-73JはLSB専用であり、BFO周波数はLSB復調用に設定した周波数です。今回はこのLSBモードによりCWを受信していました。これにより、数100Hzのズレが生じていました。
又、Flを決定しているもう一つの要素として、受信機IFフィルタの中心周波数f0(IF周波数)も重要であることが分かりました。今回は市販フィルタを使用していたことにより気が付きませんでしたが、フィルタ自作の場合はf0の値が大きく変わります。
評価に入る前は、f0を理想的な455kHzとしてFDDS-VFO単体調整を行っていたためケースVの問題を検出できませんでした。
以上、系全体を見渡して初めて、接続する受信機の受信形態やIFフィルタのf0の違いによるFl変化分を補正することが必要であることが分かりました。
f0はファームによる補正とし、その他の補正はディップSW追加により可変調整できるようファーム変更することでこの問題に対する処置としました。
○キャリアリーク
FT-817へアンテナを接続すると、評価機のDDS出力が漏れてFT-817で受信されました。
送信機の周波数構成がDDS出力周波数と等しい構成であるため、DDS出力周波数と受信機の受信周波数が同一となり、DDS出力が受信妨害となっていました。DDSを常時ONにしていることが原因です。
対策として以下の2つを考えました。ここでは取り上げていませんが、実験により何れの対策も有効であることを確認しています。
< 対策1 >
受信中はDDS出力周波数を送信周波数から離して他に影響を及ぼさない周波数に設定する。
< 対策2 >
DDSの「Power Down」機能を利用する。
送信系への適用の点からフェールセーフが望ましいと考え、対策2とします。
○TX ON/OFF
「Power_Down」機能は、実験により、CW送信時のTX ON/OFFにも適用可能であることが分かりました。従い、この機能をCW用キャリアON/OFFとしても適用しています。
打鍵時のチャタリングの影響が評価中3度程ありました。今回は処理時間の関係でファームによるチャタリング防止は設けていません。代わりに入力部へo.1μFを実装したところ、その後は発生していません。但し、もう少し経過を観る必要があります。
○計数分解能
PICのクロック周波数は4.332MHzです。この時の計数分解能は約16.5Hzとなりますが、表示変化が16Hz前後となるため見づらいという欠点があります。そこで、クロックを5.2428MHzへ変更しました。これにより、変化は20Hzとなり見やすくなりました。但し、5.2428MHzは入手が難しく、機会があれば、入手性の良い3.2768MHz(12.5Hz変化)へ変更するかもしれません。
○入力断検出および対処
今回の入力周波数の計数は剰余のみを使用するDDR-R2Rのファームを流用しています。流用に際し、気になる点がありました。入力断の場合は剰余補正値がそのまま計数値(剰余)として現れるため、誤変換が生じ、誤表示されます。
受信機へ適用する場合には問題ありませんが、送信機へ適用する場合にはフェールセーフの観点から入力断検出および対処が必要と考えます。今回はPIC外部へ検出回路を設けることはせず、次のような簡易的な検出を行っています。
剰余計算において、正常入力の場合にはカウンタからのオーバフローがあることを利用し、剰余計算後オーバーフローフラグが立っていない場合には入力断と判断します。
入力断検出後、周波数表示をオール"0"表示し、送信不可とします。(電信バンドの固定周波数とし、その周波数により送信可とする方法もあります。)
○評価結果
上記問題の対策や改善を行った結果、快適に(疑似)交信できることを確認しました。
7セグ表示器やLCDを持たない昔の受信機と接続して使用する場合、ビンテージ雰囲気を損なわずに楽しむためには表示器による周波数表示は不要かもしれません。
○今後の課題
送信機と一体化する場合の課題を挙げると以下の通りとなります。
1)MPU部デバイス選定
今回はPIC16F648Aを使用しましたが、ポート不足と容量不足に悩み、結局、機能を制限せざるを得ませんでした。今後は、648Aよりポート数が多く、ROM領域の大きいデバイスが必要です。PIC16F877Aを検討しましたが移植に手間がかかりそうなので、プログラム開発が楽なArduinoで現在実験中です。
2)周波数可変用ロータリエンコーダ機能追加
3)キャリブレーション機能追加
4)DDSモジュール選定(低消費化)
入力周波数に追従する送信機専用DDS-VFOについて紹介しました。評価の結果実用性があることが分かりましたので、今後自作する送信機やトランシーバへ組み込んでいく予定です。