DDS Feed

2018年11月23日 (金)

AD9833 スプリアス

<カテゴリー:DDS

前回までの記事で、DDSの基板を変更したら、スプリアスの度合いが変化し、周波数によっては送信機の源発振として、使えるかも知れないという情報がありました。

そこで、この1.8MHzから50MHzまでをカバーするDDSの基板を中国製から秋月の変換基板に改造し、スプリアスが改善するのか確認する事にしました。

26mtxco

この改造を行うついでに25MHzのSPXOをTCXOに変更し、周波数確度と安定度の向上も行います。

TCXOは周波数カウンターにも使用した26MHzのもので、AD9833の仕様からするとオーバークロックになりますが、このくらいのオーバーなら問題なく使えます。 左はこのTCXOをDDSのクロック源とする為に3.3V LDOとポストアンプを組んだ回路です。 基板の裏側に銅箔を張り付け、疑似両面基板として加工してあります。

TCXOは26MHzですから、ソフトのKdは再設定し、かつ10MHzで校正を行い微調整しました。

校正の仕方はこちらを参照。

DDS_TCXO_100k-54M_VFO.cをダウンロード

DDSのICは中国製のオリジナル基板より剥ぎ取り、秋月の変換基板に載せ替え、下の写真のごとく配置配線しました。

Newpcbtxco

この回路の配線図 DDS_VFO_AD9833TCXO26MHz.pdfをダウンロード

そして、このVFOによるスプリアスは以下のようになりました。

2r1mtxco

3r1mtxco

4r1mtxco_2

5r1mtxco

6r1mtxco

7r1mtxco

前回の中国製基板よりは、かなり良くなりましたが、周波数が高くなるにつれ、送信機には不適合のスプリアスとなっています。 AD9834が7MHz当たりで問題なく使えるのは基板の差異もあるでしょうが、基準クロックの周波数が50MHzというのも大いに関係しているようです。

6r25mtxco

ちなみに6.25MHzのスプリアスは左のようになり、送信機としては難しい結果となりました。 基準周波数が25MHzの時は見えなかったスプリアスが26MHzにしたとたん見えるようになりました。

AD9833を送信機用源発振として使えるのは3.5MHzバンドぐらいが上限で、7MHzで使用したい場合、75MHzの基準発振器を使えるAD9834Cまでアップグレードしなければならないようです。

これまでの検討結果から、送信機のVFOとしてDDSを使用したい場合、DDSを基準信号としたPLL回路がベターという結論に至りました。

これは、50MHz AMトランシーバーを作る為に、DDS制御のPLL VFOを作成するというテーマで実現する事になりました。

2019年8月 追記

このDDS発振器をSDRのLO発振器として利用すべく使っていましたが、時々周波数があさっての方へ飛んでいきます。 電源をOFF/ONすると直ります。 この原因を調査したところ、DDSの後段に接続したPLL逓倍器がアンロックに陥り周波数がでたらめになる事が判りました。 アンロックは入力周波数を変更したとき発生します。 当初はこのような現象は無かったのですが、最近起こり始めたようです。

アンロックを防ぐには、OE端子をLにしておき、周波数を設定した後、OE端子をHにするとOKとなります。 従い、例え周波数を10Hz変えた時でも一度OEをLとし、周波数を変更してから、再度OEをHとすればアンロックは生じません。 この事は、周波数を変えると一瞬出力が途絶える事になります。 この一瞬の途絶えは、即、受信に問題が生じる訳ではありませんが、OE信号を使い出力段のリレーも切り替えていますので、これがパチパチと音をだします。 これを避ける為に、リレーON/OFFとOE端子の制御は独立させました。 また、この変更の最中にバグも見つかりましたので、ソフトも修正しました。

最新の配線図 DDS_VFO_AD9833TXCO26MHz_2.pdfをダウンロード

この記事中からダウンロードしたプログラムファイルはすでに修正済みです。

 

2022年8月

最近、標準信号発生器として使用頻度が多くなりました。 周波数の可変ステップが最大1KHzの為、回路検討時不便でしたので、最大10KHzスパンが可能なようにスィッチを追加する事にしました。 回路とソフトの改造のついでに、色あせたフロントパネルの化粧紙も入れ替えました。

Dds_10kspan_0

Dds_10kspan_1

周波数可変ツマミの下にスナップSWを追加しました。 右は、内部の裏板を外した状態ですが、分解した後、再組立て時、コネクターの接続を間違い、正しい組み合わせを得るまでに苦労しましたので、次回の作業の為の忘備録です。

配線図 DDS_VFO_AD9833TXCO26MHz_202208.pdfをダウンロード

マイコンプログラム DDS_TXCO_100k-54M_VFO_V110.cをダウンロード

 

2023年8月追記

送信機に使うVFOは、このAD98xxではなく、Si5351Aが一般的になってきました。製作例は以下を参照下さい。

SDR用LO(ローカルオシレーター) Si5351A

 

INDEXに戻る

2018年9月 6日 (木)

DDS VFO AD9833 名誉挽回

<カテゴリー:DDS

今までの記事で、中国製のDDSユニット基板は送信機には使えないという先入観もあり、かなりこき下ろしてきましたが、初心に帰りチェックしていくと、これが、早とちりであったかも知れません。 スプリアスの多い原因は、アナデバのDDSではなく、安物のSPXOではなく、中国製の基板でもなく、 私が作った基板の中に問題があるかも知れません。 では、本当の所はどうなんか?と実験を始めました。

Ddshakei

Oscout

Ddsout_2

-

Q1e

Q1c_2

左上がSPXOの25MHz出力です。 余計なスプリアスは全く見えません。 右上がDDSの7MHz付近の出力です。 +300KHzの周波数にかすかにスペクトルが見えますが、そのレベルはスペアナの暗ノイズで良く判りません。 という事は、DDSが発生源かも知れません。

左下はQ1のエミッターのスペクトルで、この部分に+/-300KHzのスプリアスが現れます。 Q1のベースは右上のスペクトルと同じですので、S/Nが良くなって見えるようになったか、Q1の内部で増強されたと思われます。 右下はQ1のコレクタのスペクトルです。 Q1のエミッターにスプリアスが生じているという事は、当然、そのままコレクタ側にも、同じようなスプリアスが生じます。 50MHz DDS VFOでのスプリアスはPLL逓倍ICによるもので、これとは異なりますが、逓倍回路を通さない状態でも生じていたスプリアスはこのQ1のコレクターに現れるスプリアスそのものです。

DDSのキャリアを中心に+/-300KHzのスプリアスが出る問題ですが、これは、簡単に言えば、キャリアを300KHzの信号でAM変調した状態です。  もしそうなら、電源ラインに300KHzのキャリアが漏れているのかもと、スペアナを駆使して調べましたが、それらしき信号は見つかりませんでした。

一方、WEBにアナデバが公開している技術資料が見つかりました。

ddsan927_jp.pdfをダウンロード

これは、DDSから発生するスプリアスについての技術資料です。 この中で、DDSの出力周波数を変化させた時、スプリアスのオフセット周波数(キャリアとの差の周波数)が変化する場合、そのスプリアスの発生源はDDSの中にあり、周波数を変化させても、スプリアスのオフセット周波数が変化しない時は外部からのAM変調と判断できる事が記述されていました。

386m

419m

左上はDDSから直接3.86MHzを出力したとき、右上は4.19MHzを出力した時のスペクトルです。 左の周波数ではスプリアスが無いように見えますが、実はスプリアスが7.9MHz付近に有ります。 右の周波数では、キャリア対して1MHzの差でスプリアスが見えます。  要するに、DDSの出力周波数により、スプリアスの周波数も変わるという事ですから、これは、DDSの内部で発生しているスプリアスである事になります。 

DDSは基本的にはスプリアス発生器であり、これを送信機の原発振とするには、基準周波数(SPXOの周波数)と出力周波数を適切に選ばないといけないという事のようです。

25MHzのSPXOで3.8MHz付近の出力なら、スプリアスが第2高調波付近の周波数となり、後段のLPFでこれを取り除く事が出来ます。 このような条件が成立する周波数を検討する事にします。

Uc4m

Uc5m

Uc6m

結果は散々たるものでした。左上が約4MHz出力時、上中が約5MHz、右上が約6MHz。 全てUNCAL(アンキャリブレーション)状態で、周波数やレベルの正確さは有りませんが、いずれもスプリアスだらけで、後段のフィルターで取り除く事はほとんど不可能な状態です。 周波数を8MHz以上にすると、本信号とスプリアスの識別が難しくなるようなスプリアスが生じます。10MHzの出力など、もっての他です。 アナデバのAD9833のデータシートに出てくるサンプル周波数におけるスプリアスは3.8MHz付近のデータはぴったし一致しますが、他の周波数では、スプリアスの周波数はともかく、レベルは20~30dB以上の開きがあります。 このレベルの開きは、アナデバの洗練された評価ボードとは違う中国製ですから、ある程度は差が生じる事はしかた有りませんが、少なくとも任意のHF周波数の送信機を作る為の要求には耐えられないというのが実態のようです。

ここで、諦めかけましたが、AD9834は結構良いスプリアス特性を有していますので、それとほとんど同じ構成で、データシート上に出てくるスプリアスデータも大して変わらない理由を確かめる為にも、もう少し実験を継続します。

Ad9833txco

左は、中国製のAD9833ユニットの基板を使わずに、秋月から購入した変換基板にAD9833を実装し、SPXOのみ中国製基板から切り出して構成したDDS回路です。 コントロールマイコンは8bitのPIC16F1983を使用しています。

この基板は、LPFなし、バッファ用に1石のAMPが接続され、そのまま出力しています。 また、SPXOの電源は、DDSの電源とは独立させ、ビート音の濁り対策済みのものです。

この条件で、50MHzの1/8に当たる6.25MHzのスプリアスと、7.1MHzのスプリアスを見たスペアナの画像は以下です。

6r25mbw1m

6r25mbw10m

6r25mbw50m

左上が6.25MHzのキャリアを1MHzスパンでみた状態、真ん中が同じく10MHzスパン、右上が50MHzスパンです。 余計なスプリアスは見えません。50MHzスパン時のスプリアスは全て高調波関係のスプリアスですので、LPFで簡単に除去できます。

7r1mbw1m

7r1mbw10m

左の写真は左側は7.1MHzの1MHzスパン、右側が同じく10MHzスパンのスプリアスを見たもので、1MHzスパンではノイズに隠れて見えません。 10MHzスパンの時、3.8MHz付近に-50dBくらいのスプリアスが見えますが、この程度なら、送信機内部のタンク回路で60dB以上に減衰させる事は可能ですので、送信機の原発振器として使う事ができます。

50MHz用 DDS VFOのスプリアスがNGだったのは、デジタル回路に使われるPLL逓倍ICがNGであった事。 DDSからのダイレクト出力に300KHzくらいのオフセットでスプリアスが発生していたのは、中国製の基板の性だった事が判りました。 ただし、アナデバが公表しているデータ通りのスプリアスレベルよりは、かなり高いレベルになりました。 詳細を調べていくと、周波数が10KHz違っただけで、今まで見えなかった-50dBくらいのスプリアスが急に現れます。 HF送信機の源発振器として安心して使う為には、Qの大きなインダクタとバリキャップを使い、きれいな発振を行うVCOを作成し、この周波数を基準発振器をDDSとしたPLL回路でロックするのが一番無難のようです。 VCOは発振可能な周波数範囲がDDSに比べて狭いですが、高調波以外、余計なスプリアスの無い信号を得る事が容易です。

この実験に使ったDDS VFOの回路図 DDS_VFO1983TXCO25MHz.pdfをダウンロード

50MHz AM送信機に必要なVFOはPLL方式を採用する事にしましたので、このVFOは使い道がなくなりました。 そこで、スプリアスは多いですが、分解能10Hzで100KHzから54MHzまでをカバーする発振器に改造し、検討段階での信号として利用する事にしました。

スプリアスはいい加減ですが、周波数だけは正確にする為、このDDSを校正します。 校正は10.000000MHzで標準電波を出している中国のBPMの電波を使います。

まず、TS930をAMモードにして、BPMを受信します。 今日はS9で入感していました。 これにDDSの周波数を重ね、ゼロビートをとります。 DDSは10Hzスパンで可変していますので、ビート周波数が一番低くなる周波数を調べると、10.000.120Hzのとき、約2Hzくらいのビートとなりました。 この2Hzの音は通常は耳に聞こえません。 ビート周波数が100Hz付近以下になるとスピーカーの性能と耳の限界により聞こえなくなりますが、ビート音にハム音や濁りがあり、この濁りの音が震えて聞こえます。その一周期が0.5秒くらいになったので、2Hzくらいという事が判ります。

ここで、DDSの周波数係数を補正します。

現在の周波数係数 kd は 1.073741824 ですので、これを1.000012倍した数値 1.073754709に変更します。 次に、この周波数係数で実際にDDSを動作させると、10.000.000Hzの表示の時に数ヘルツのビートが聞こえます。 今度は、周波数係数の小数点以下6桁目以降を微調整し、ビート周波数が1Hz以下になるようカット&トライします。 この付近の周波数になると、ビート音に同期してSメーターも振れますので、ゼロビートポイントがすぐに判ります。

このようにして決定した新しい周波数係数 kd は 1.073755709 となりました。 

こうして校正したDDSは周波数カウンターの校正でその存在価値を維持する事になりました。

安物の発振器SPXOの周波数確度は±50ppm程度の物が多いのですが、常温における年間ドリフトは5ppmなどという数値になり±50Hzくらいにおさまりますので、初期値のみきっちり合わせると結構正確な周波数を維持します。 ちなみに、この中国製SPXOの初期の周波数確度は-12ppmくらいですので、結構良い性能を持っていました。

使用しているPICは+5Vラインに誤って12Vが加わり、i/oポートが壊れた物でしたが、調べてみると、壊れたのは出力ポートのみで、入力ポートは生きていました。 この生きていたRA0,RA1ポートを入力ポートにする事で、このDDS回路も構成できました。

改造後の配線図 DDS_multi_VFO180929.pdfをダウンロード

改造後のソースコード DDS_100k-54M_VFO.cをダウンロード (このコードはファイナルではありません)

スプリアスの再検討を行い、基準発振器をTCXO26MHzに変更した AD9833 スプリアス へ続く。

INDEXに戻る

2018年5月27日 (日)

DDS VFO 逓倍回路付(1.8MHz - 50MHz)

<カテゴリー:DDS

PLLを使った逓倍用ICを入手し、そのスプリアス特性も良好でしたので、作成済みのDDS VFOの中に組み込む事にしました。 (その後、後述のごとく、スプリアスは送信機には使えないレベルである事が判りました。)

PLL逓倍IC ICS501は、最少出力周波数が13MHz以上という条件がありますので、今まで10MHzは5MHzから2逓倍としていたのがNGとなりました。 従い、10MHzもDDSから直接出力させる事にし、LPFを作り代えました。

10mhzlpf

手持ちの部品から、そこそこ使える定数を決めたのが上のLPFグラフとLC定数です。 PLL ICのクロック入力レベルが3.5VPP以上必要なため、アナログ回路のゲインの調整を行い、各定数を見直しました。

回路図 DDS_multi_VFO180709.pdfをダウンロード

Dds_pll_vfotop

Dds_pll_vfo

左上がDDS VFO基板にPLL回路を追加し、PLL回路をバイパスしてDDSからのダイレクトに出力する為にリレーで信号の流れを変えています。 右上はその基板の裏側ですが、しばらく時間が経つと、判らなくなるくらい混んできました。

Dds_pll_vfoin

なんとか、シールドBOXの中に全てが収まりました。

PLL ICの逓倍倍率を指定するのは、S0とS1の2本の端子を使用しますが、この端子の入力仕様は少し特殊になっています。通常のH(5V)とL(0V)の他にトライステートモードがあり、HでもLでも無いというポジションがあります。データシートでは、Mという表示がされています。 このモードをPICマイコンで作り出すには、PICマイコンの端子を入力モードにしてやれば実現できます。 このような仕様なので、通常2本のi/oの場合、4モードしか実現できませんが、このICは9モードを実現しています。 使用可能な逓倍倍率は、2倍、3倍、4倍、5倍、6倍、8倍と、ハムが送信機を作るときとても便利です。 今回のDDS VFOには、2倍、3倍、4倍、8倍だけを使いました。

ソースコードDDS_multi_VFO_ICS501.cをダウンロード

7mhzlpfout

50mhzpllout

左上が7MHzの出力波形。LPFのカット周波数を10MHzくらいまで上げましたので、線が太く表示されています。 右上は50MHzの出力波形です。 その他のハムバンドの周波数も出力可能ですが、これほど綺麗では有りません。 当初から7MHzと50MHzのAM、CW送信機を想定していますので、他の周波数が必要になった場合、都度検討する事にします。

たちまちは、50MHz AM送信機のVFOとして使用します。 このVFOを使った50MHz用AM送信機の製作はこちらを参照下さい。

50MHz用AM送信機に使った結果、キャリア+/-240KHz付近のスプリアスと、キャリア近傍のスプリアスが新旧スプリアス規制いずれも不適合となる事が判りました。 結局このDDSとPLL逓倍ICは送信機には使えないという事が判った次第です。

Vfoout

Dds7mhzout_2

左上はDDS 6.25MHz出力をPLL ICで8逓倍したときのVFO出力。 右上は7MHz付近をDDS単体で出力した時の出力です。いずれも、送信機に要求されるスプリアスは不適合で、これらのスプリアスは後段のフィルターで取り除く事は出来ません。

このDDSの出力に現れる+/-300KHzのスプリアスについて検討を始めました。

DDS VFO AD9833 名誉挽回  に続く。

INDEXに戻る

2018年3月10日 (土)

DDS VFOの製作 (AD9833)

<カテゴリー:DDS

アマゾンで安い中華製のAD9833ユニットを見つけ、HF送信機のVFOに使えないか事前検討をした結果、そこそこ使えるめどが立ちましたので、CW、AM送信機の外部VFOに仕上げる事にしました。

回路構成は、DDS VFOの実験の経緯から、16bit PICマイコンと、中華製基板をそのまま使って、パスコンの移動と、SPXOの電源を独立した回路を基本とし、10Hzスパンで1回転96パルスのロータリーエンコーダーと、1KHzスパンで1回転24パルスのサブエンコーダーによる周波数可変手段を持った1.8MHzから50MHzまでのハムバンドをカバーするVFOとします。

まずは、回路図です。

DDS VFO の回路図 DDS_multi_VFO180309.pdfをダウンロード

DDSはAD9833、 コントローラーはPIC24FV32KA302、LCDは新規に手配した16x2のパラレルドライブです。 25MHzのSPXOの電源を専用の3端子レギュレーターからドライブし、マイコンやDDSのデジタル回路電源から侵入するノイズを遮断しました。 また、DDSの3番ピンからAGNDへ落ちるパスコンC1は4番ピンへ最短で接続し直しています。 PICマイコンは、前回の実験で使用したものをそのまま使用しますが、前回の実験中に3端子レギュレーターが壊れた際、破壊されたRA0,RA1,RB0のI/Oは使用不能となっていますので、増加したLCDドライブ用端子を含め再配置しています。 

LCDは4bitパラレル駆動ですので、RB4~RB7へ割り付け、同一ポートの他の端子に影響が出ないようソフト面で配慮しました。

ロータリーエンコーダーは10Hzステップと1KHzステップを用意し、バンドによってはステップ数を変更しています。 バンドは1.8MHzから50MHzまでの10バンドですが、このセレクタとしてロータリーエンコーダーを使っていますので、IF周波数を考慮したオフセット周波数のバンドが増加しても、ソフト対応のみで、最大63バンドまで確保できるようになっています。

最高周波数を8MHzくらいと置きましたので、50MHzの場合、8逓倍必要です。 少しでも周波数の分解能を上げる為、周波数指定は0.1Hz単位とし、DDSのレジスターに書き込む場合の乗数kdは一桁落とし、1.073741824を使っています。 LCDへ周波数表示する場合、1/10してから表示します。

 Multivfo

上の写真はバラック状態の全回路です。

Multivfo1

Multivfo2

左上が基板の表側、右上がチップ部品装着面です。 私の基板は日圧のコネクターを多用しますが、ほとんどが、2mmピッチのPHタイプです。蛇の目基板の2.54ピッチと合わないので、ドリルで2mmピッチの穴を明け直して実装しています。 最近、秋月で2.54x2mmの基板が発売されるようになりましたので、今後、この基板を採用する機会が増えそうです。

DDSの出力の後にポストアンプと5次のLPFを実装してあります。 LPFは8MHzくらいをターンオーバーとするLPFですが、特性から算出した定数の場合、要求される値の部品を手持ちしていない事が普通です。 そこで、手持ち部品から特性を計算させ、そこそこの特性が得られるように定数を吟味するソフトを探したところ、以下のURLが見つかりました。

 
ここの計算シートを使い得られたLPFの特性は以下のようになりました。

8mhz_lpf

8mhzlpf

4.5MHz付近で5dB近く減衰が増えていますが、ちょうどDDSのDAC出力もこの付近の周波数から、周波数が高くなるほど、減衰していますので、出てくる出力は補正され、フラットに近くなっています。

このLPFを実際に構成した状態は、左の写真に示すように3個のチップコイルと2個のコンデンサです。実際の回路ではコンデンサが368PFという特殊値ですから、それぞれ3個のコンデンサを積み上げて作っています。 基板の占有面積は7.5mm x 5mmくらいで、ちゃんと使える特性を得ています。使ったコイルは太陽誘電製のLBM2016という型番のチップインダクタです。(RSでMOQ (Minimum  Order  Quantity) 25の条件で1個13円)

基本動作はOKとなっていますので、これから、ケースに収納する事にします。

ケースは生両面基板で箱を作りシールド構造とし、AM送信機が200Wフルパワーでも、異常が起きないようにします。

Ddsvfofrontpback

Ddsvfofrontptop

プリント基板の板を互いにハンダ付けして四角い箱を作るわけですが、メンテの為、箱の裏板はビスで止め取り外しができるようにします。

Img_4469

Ddsvfoback

左上はbox内の配線状況、上の方に裏板が見えます。この裏板でboxに蓋をした状態が右上です。VFO出力は左中央の小さな同軸コネクタから取り出します。右中央のコネクタは電源とTX側からのstand-by処理をするコネクタです。

Ddsvfoback2case

Ddsvfobackcase

シールドboxからケースの端子へコネクタで配線とケース後側の端子類です。DC Jackとスタンバイ用Jack及びRF出力用のBNC端子です。

Ddsvfofront

全体を100円ショップのプラスチックケースに収納した状態です。 見栄えを確保する為、インクジェットプリンターでレタリングをフォト印刷紙へ印刷し、フロントパネルの両面基板に貼り付けてあります。

この状態での信号出力波形とそのスペクトルは下の写真の通りです。 第2高調波レベルは-30dBくらいですが、これは特に問題は有りません。

信号純度に関係するスペクトルですが、今までのDDS実験記事で紹介したどれよりもきれいに見えます。 そして、実際のビート音も、CW送信機でも使用できるレベルです。

Ddsvfo7mhz

Ddsvfo7mhzspctr_2

最終配線図DDS_multi_VFO180406.pdfをダウンロード

ラスト周波数メモリー付のソースリスト DDS_multi_VFO_ACM1602K.cをダウンロード

CALスイッチがONの時、LCDで表示された周波数の信号が出力され、OFFの場合は出力なしとなります。 LCD表示は、送信の時も受信の時も常時周波数を表示していますが、送信及びCALオンの時だけDDSが指定周波数の信号を発生させ、受信時は周波数が0Hz(信号なし)となります。

DDS VFO 逓倍回路付(1.8MHz - 50MHz)  へ続く

キャリア周波数+/-500KHzのスプリアスを未確認でした。 これを確認した結果、AD9833を使ったDDS VFOとPLL逓倍ICを使ったVFOは送信機には使えない事が判りました。

INDEXに戻る

2018年2月 5日 (月)

DDS VFOの実験(AD9833) 3

<カテゴリー:DDS

中国製基板によるAD9833ユニットの動作は問題ないのですが、その発振信号の純度というものは、とても短波帯の送信機に使えるものでは有りませんでした。 この信号純度というのは、なにも高級なスペアナでそのレベルを判定するような計測数値でなく、SSB受信機で、この信号のビート音を聴感で聞いたとき、だれでも、きれいか汚いか即座に判別できるものです。

最近、この中国製AD9833のユニットが、送料込で650円まで値下がりしていますので、基板を改善して通信用送信機で実用になるDDSに仕上げる事ができないか実験する事にしました。  以下、信号純度確保の始末記です。

中国製の基板からICを取り外し、秋月のMSOP変換基板に載せ替えて見ました。

Ad9833_2

Ad9833_7100khz_new

左上がオリジナルの中国製基板による7100KHzの信号。 右上はICは同じもので、秋月の変換基板に移し替えた時の7100KHz信号です。 ピークレベルに違いはありますが、明らかに右側のスペクトルのスプリアスは小さくなっています。 この右側の音をTS930で聞いてみますと、S9以下の場合、ビート音に違和感はありません。 しかし、ビート周波数を200Hz以下にすると、ハム音の濁りは残り、+40dBくらいまでS/Nが向上しますとビート音の濁りが若干気になります。

そして、7200KHz以上で聞こえるAM放送局のキャリアによるビート音にはかないません。

Gndrayout_3

左の文章は、AD9833のデータシートに書かれた「グラウンドとレイアウト」という文章の一部です。 信号純度を保つ為のノウハウが記述されており、これを可能な限り忠実に再現すれば、アナデバが意図した性能が得られるはずです。 

この記述をベースにオリジナルの中国製基板を見てみます。

Ad9833_2

左下の写真はオリジナルの基板からAD9833を取り外した状態です。写真の写りがあまり良くないので、銅箔パターンを青色でなぞってあります。この基板の最大の問題点は、DGNDとAGNDをスルーホールで接続して、なおかつ、3番ピンのCAP端子からのパスコンのGNDをAGND側に落としてあるという事でしょう。 ここは、黄色のラインで示すように、4番ピンへ最短で接続すべきです。 また、 ピン番号6,7,8のデジタル信号ラインはICの底面を通過してはいませんが、ICの底面はAGNDで覆えという要求は全く無視されています。 もちろん、AGNDはこのユニットの先にアンプやフィルター回路が入る為、それらの回路を含めてDGNDと結合しなければなりませんので、少なくともこのDDSユニット内では接続していはいけません。 先のアナデバの最後の文章の意味は、IC装着面はGND面だけにして、ハンダ面すなわちIC装着面の裏側に信号ラインを配置しなさいと言う意味になります。

Msop10_pcb_2

左は秋月で販売しているMSOP 10Pの変換基板です。 ICの底面に信号ラインの配置が無く、底面は裏側のGND面にスルーホールでつながれています。 当然各ピンは独立していますので、AGNDをこのGND面に接続してやればアナデバが要求する条件はほぼクリアーできそうです。

問題があるとすれば、0.5mmピッチの端子を2.54mmピッチの端子へ拡大する為のストリップラインが長い事です。 実はこれが、時々信号が出なくなる原因のひとつになっていました。

アナデバの推奨回路に10μFと0.1μFのコンデンサをパラ付した例が書かれていますが、この10μFはタンタルコンデンサを想定しています。タンタルコンデンサはかなり高い周波数までインピーダンスを低くく抑える事ができますが、やはり限界があり、その限界は0.1μFのセラミックコンデンサでカバーさせている訳です。

近年、セラミックコンデンサの技術レベルは非常に向上し、100μFのセラミックコンデンサが実現できるようになりました。 MLCCと言われる積層セラミックコンデンサで、0.1とか0.47とか無意識に使っています。 当然、同じ容量値ならタンタルコンデンサよりMLCCの方が性能がよく、10uFの要求容量にMLCCを充当すれば、0.1uFのコンデンサは不要になります。 しかし、いい事づくめでは有りません。 MLCCはDCがバイアスされると容量が大きく減少する性質があり、5V DCにて公称容量が約半分になってしまいます。 それでも、高周波域のインピーダンスは同じ公称容量のタンタルコンデンサよりは優秀です。

Ad9833mod2akiduki

左の基板は秋月の変換基板(左側)にAD9833と3個のバイパスコンデンサ、アナログ出力ピンにハイカットの15PFを付けたものです。右側の基板は中国製AD9833基板の25MHz発振ユニット部分のみを切り取り発振回路を動作させその出力をAD9833に供給している状態です。

この状態で7100KHzを出力した場合のスペクトルが最初に掲載したスペアナ画像です。

ここまでの記述では、いかにもうまく行っているように見えますが、 実は、周波数を可変すると時々信号が出なくなったり、設定以外の周波数になったりしていました。 最初、この制御に使ったPIC16F886のソフトが悪いのではないか? ICを載せ替えた時、ICを壊してしまったのではないか?と色々検討しましたが、原因が判りません。 約2週間検討の結果、25MHzのOSC基板のGNDとAD9833のDGNDが遠すぎるという事と、 OSC出力にノイズ(ジッタ)が誘導し、ICの内部クロックが安定しないというのが原因でした。 この状態での信号純度は決して満足できるものではありませんが、 受信する方が我慢すれば送信でも使えるレベルになりました。

Ad9833mod3

中国製のオリジナル基板のままで、改善は出来ないものか、オリジナルの基板に戻し、3番ピンからAGNDに落ちる10uFのGNDを銅箔テープでDGNDへ移してみたのが左の基板です。

オリジナル基板より若干信号純度は改善しましたが、とても送信機に使える状態ではありませんでした。

このAD9833は外付け部品が少なく、DDSを簡単に構成できますが、送信機に使う場合、必ず、その信号にビートをかけて、低周波にした時の濁りを確かめてから使う事にします。

信号純度は基板のGND処理でも大きく変動しますが、一番の要素は基準発振器25MHzの純度になります。 それに気付いて、25MHzの基本波をTS-930で聞いてみました。 結果は、このDDSが発生する7MHzの信号の濁りと同じでした。 そこで、この25MHzの基準発振器を色々変えて見る事にしました。

Original

74hc74

Trbe

上の3枚のスペクトルは左から、中国製基板に付けられていた25MHz発振器、真ん中は秋月から購入した50MHz TCXOを74LS74で1/2分周した25MHz、一番右は25MHzのクリスタルと2SC1712YでピアースBE回路で作った発振器からの25MHzです。 スプリアスの程度は右が一番良くて左に行くほど順に悪くなっていますが、一番右は温度補償と継時変化の保障が一切されていないという重欠点がありますので、スプリアスが良いからトランジスタによる発振回路を採用するという選択肢はありません。

ところで、このDDSユニットに付属している25MHzの発振器はTCXOではなく、SPXOではないかと思われます。 TCXOあるいはSPXO発振器の信号純度はバイポーラ回路よりCMOSが悪いと言われていますが、結局それは電源のノイズにより変化すると言う事が遅まきながら理解できましたので、中国製の基板に付いていた発振器(これはCMOSです)の電源をマイコンやDDSから独立させてみる事にしました。

7mhz

左は、そのように回路を改造した時の7MHzのスペクトルです。

従来のスペクトルよりかなり良くなっており、実際にSSBモードでビート音を聞いた感じでは、放送局のキャリアには負けますが、汚いと言われないレベルまで改善しました。 これなら、CW送信機やSSB送信機でも、もちろんAM送信機でも使用可能と思われます。

これまでの配線図DDS_VFO180223.pdfをダウンロード

Spiio

時々、信号が出なくなる原因が、8bit SPI信号を2回送って16bitデータを構成する方法かも知れないと、PIC内臓のSPI機能は使用せず、i/oを直接たたいて、SPI信号を作っていますが、時々信号が出ない現象は改善されませんでした。

原因は前述のごとく、OSC回路のGND引き回しでしたので、SPIの問題ではありませんでしたが、せっかくこのソフトを作りましたので、この部分はこのままで残す事にします。

ここまでの状態のPICマイコンのソフトは以下の通りです。

DDS_VFO_unit.cをダウンロード

このソフトの中には、24接点のエンコーダーから96パルスの変化を得る定番のソフトと、24パルスで10KHzスパンで変化するソフトが入っています。 ただし、10KHzスパンの動作は時々誤動作します。 原因はチャタリングと摺動ノイズみたいです。 この部分は、最終的に、この回路をVFOに仕上げるときまでに改善する事とし、現状のままです。

DDS VFOの製作 (AD9833) へ続く。

INDEXに戻る

2018年1月 8日 (月)

DDS VFOの実験(AD9833) 2

<カテゴリー:DDS

1回転24パルスの機械式ロータリーエンコーダーによるVFO周波数可変機構の改善をテーマに実験を続けております。

前回までの実験で、時々周波数が1KHzや2KHzいきなり飛ぶという現象があり、その原因が不明でした。 数日置いて再考察した結果、エンコーダーのチャタリングではないか?とデジタルオシロを物置から引っ張りだして、波形を観測する事にしました。

Dds_slow103k

Dds_mid03k

左上はゆっくり操作中に発生しているチャタリングです。右上は中速操作時に発生したチャタリングです。 時々、数KHzで周波数が飛ぶのはこのチャタリングの性です。一度割込みが掛かったら3ミリ秒間は次の割込みを禁止していますが、左上の例では、この禁止期間が過ぎても、まだチャタリングが発生し続けていますので、この時、周波数飛びが起こるようです。 右上の例でもチャタリングの長さが3.5msecくらいで、この時も、周波数飛びを起こしています。

Dds_slow333k

そこで、現在、チャタリング対策として挿入しているコンデンサを0.01uFから0.033uFに変更しました。  左はその時のロータリーエンコーダーの波形です。 かなりのチャタリングを押さえた波形です。

この状態でテストを行うと、周波数が数KHz飛ぶ現象が大幅に減少しました。

TS930やFT991のメインダイヤルを回すと、ビート音がスムースに変化しますが、1回転24パルスでは段階的に変化し、とても「スムース」という表現が当たりません。 そこで、最少可変ステップを10Hzから20Hzに変更し、その上のステップも100Hzから200Hzに変更しました。 これで、周波数の変化速度は速くなりましたが、当然ながら1回転100パルスのFT991のフィーリングには及びません。

現在エンコーダーのA端子で割込みをかけ1ステップ変化させている状態ですが、さらに、B端子がHからLになった時も割込みをかけ、1回転で48回割込みが発生するようにPICのi/oを変更しました。 これで、エンコーダーが1回転すると周波数は960Hz変化し、FT-991の1回転1000Hzとほぼ等しくなります。

Dds_high333k左はかなり高速で一気に回した時のエンコーダー出力です。A相またはB相だけのパルス間隔は最少で約2.6msecくらいあり、AからBへの最少間隔は1.3msecしか有りません。 一度割込みが掛かると3msec割込みを禁止していますので、この例では、カウントしていない事になります。  

この状態でテストしていますが、現在のエンコーダーはクリック付の為、ワンクリックで40Hz変わってしまいます。 クリックとクリックの中間点で20Hz変わっていますので、1回転960Hzを20Hzステップでカバーしている事は確かです。 そのため、実験の途中でノンクリックタイプに変更しました。結構スムースになりました。

Dds_chata_333k

しかし、この状態でも時々チャタリングが発生し、周波数飛びが起こります。 左の画像はコンデンサを0.033uFにした時に起こった摺動ノイズ波形です。 摺動ノイズはチャタリングとは言いませんが、スイッチの摺動面の接触が悪い時に発生し、メカニカルタイプのエンコーダーでは宿命的なものです。 コンデンサ0.033を0.047とか0.1とかに変更するアイデアもありますが、ここら辺がメカニカルエンコーダーの限界かも知れません。

同調操作のフィーリングは、市販のトランシーバーにはとても及びませんが、エンコーダーのコストを考えると、そこそこ使えるダイヤル機構が出来上がってきました。 前回の記事で紹介した通り、これはKENWOODの特許でした。 いまでも有効かどうかは調べていません。 個人で使う場合、問題ないでしょうが、商品に組み込んで商売をすると抵触する可能性があります。

Dds_pcb_a

Dds_pcb_b

Dds_rfout

RF出力レベルが小さいので、ポストアンプの回路を変更し、コレクタ側に共振回路を設け、出力は2次コイルから取り出す方式としました。 出力端子に5Vppの信号が得られるようになりました。 下側が多少歪んでいるのは、振幅の最大付近でクリップしているもので、高調波は増えますが、信号の濁りとは関係ありません。 

このDDSの信号がKEMのトランシーバーに使われているAD9834より濁っていますので、両方のスペクトルを確認してみました。

左下がAD9833、右下がAD9834です。 新スプリアス規制は両方ともクリアーしていますが、左側(AD9833)がノイズぽく見えます。 多分、ICの問題では無く、基板のパターンの性と思われます。

AD9834の方は、それほど濁りは感じませんが、以前作ったPLLによるスペクトルに比べると、両方のDDSともノイズフロアがはっきりと汚いですね。 これが濁りが多い原因でしょう。

今回採用した中国製の基板を使わず、ユニバーサル基板上にデジタル/アナログGNDを分離したパターンを描けば改善されるかも知れません。

Ad9833

Ad9834

 

ここまでの配線図7MHzDDS180113.pdfをダウンロード

アナデバの推奨回路定数では、C1は104と106のパラ接続となっておりますので、現在の104に106をパラに追加してみましたが、キャリアの濁りは少しは改善したようなトーンになりましたが、アナデバがデータシートで表示しているノイズフロア-80dBくらいの音にはなりませんでした。

ロータリーエンコーダーのB端子からの割込みを受け付けるようにしたソフトは以下です。

INT2からの割込みルーチンが残っていますが、LPFの特性検討の為に残してあり、現在はこのコネクターには何も接続していませんので、INT2からの割込みはかかりません。

DDS_7MHz180108.cをダウンロード

割込みエッジを選択可能な外部割込端子を後2つ確保できるPICがあれば、1回転96割込みのエンコーダーが実現できます。 しかし、チャtリングの吸収の為、この短い周期では、アップダウンしないと思われます。 1回転96パルスの場合は、エンコーダーを2個用意して、FT991と同様な方法が操作性はよさそうです。 エンコーダーを1個にこだわるなら、48パルスで20HzステップのVFOが妥当なところかも知れません。 

その後、TS930をLSB受信モードにして、同調操作を何回もトライしました。 その結果は私の判定としてNGでした。 チャタリングと高速回転の切り替えタイミングがどうしてもうまくいかず、そこそこの操作フィーリングが得られるように設定すると、周波数飛び(チャタリング)が発生します。 3週間くらい、パラメーターをいじくりましたが、結局妥協点すら見つけられませんでした。

Kenwoodのトランシーバーでの採用実績が無い事、TS-850でも2つのエンコーダーでこの問題を解決している事などから、この特許はアイデア倒れのしろものでした。 今後、DDSを使った同調システムは2つのエンコーダーで対応する事にします。 

ビート音の濁りの改善に続く。

INDEXに戻る

2018年1月 1日 (月)

DDS VFOの実験(AD9833) 1

<カテゴリー:DDS

Dds_ic

QRHの無い、安定した高周波発振器用として、DDSのICが最近安く手に入るようになってきました。ICと基準周波数発振器を表面実装した基板状態の商品がアマゾンで売られています。 DDSは性能的になにもケチをつける事はないのですが、その周波数の可変に大きな不満がありました。 それは、同調操作という純アナログ的な周波数選択操作です。 DDS周波数は数値で制御されるため、その数値を増減しながら周波数を目的の値に設定する訳ですが、SSBモードでも実用可能な10Hzステップ可変でハムバンドの下限から上限まで移動するのは簡単ではありません。 これを少しでもスムースに行う為に、1回転で1000パルスを発生させ、10回転で100KHzをカバーさせるようなロータリーエンコーダーが使われていました。このようなロータリーエンコーダーは精密機械に属し、その価格は非常に高価で、かつ物理的に大型つまみでしか実現できませんでした。 せっかくDDSのICが安くなっても、この周波数可変の部分がネックとなり、アンテナアナライザやVFOの原発振器としては利用しにくく、今まで避けてきたところです。

最近の普及価格帯のSSBトランシーバーはこの辺の使いにくさを、周波数ステップの異なるふたつのロータリーエンコーダーでカバーさせ、10HZステップのエンコーダーが高価になるのを回避していますが、それでも10Hzステップのエンコーダーは、1回転100パルスを発生出来、私が簡単に手をだせる価格やサイズでは有りません。

RSで手に入る、安いけど品質は問題なしの、ALPS製1回転24パルスの機械式ロータリーエンコーダーにて、この使いにくさをどれくらい改善出来るかの実験記です。

まずは実験回路図です。7MHzDDS180101.pdfをダウンロード

DDSをコントロールするマイコンはPIC24FV32KA302です。周波数表示は99円のLCD。そして、2個のロータリーエンコーダーを実装できるようにしました。

目標とする発振周波数は7MHzから7.2MHzでこの200KHzの範囲を10Hzステップで可変させます。 SSB受信機で7MHzを受信しようとした場合、実際のVFO周波数は受信周波数±IF周波数になりますが、IF周波数が決まっていませんので、IF周波数はゼロとして実験します。 IF周波数がいくらになろうがカバーが必要な帯域200KHzは変わりません。 1回転24パルスのエンコーダーの場合、833回転でやっとカバーしますので、2度と触りたくないというVFOです。

Dds_pcb

Dds_lcd

左上はPICとDDSを実装した実験基板、右上はテストで2MHzを発振させている時のLCD表示で、最下位は10Hzです。

Idds_2mhz

Dds_7mhz

左上は2MHzの出力波形、右上は7MHzの出力波形です。いずれもDACの出力をそのまま表示していますので、綺麗ではありません。実際に使う時は7MHzのBPFを挿入しますが、今回の実験ではこのままです。

Dds_spi

左は、PICとDDSを結ぶSPIラインのFSYNCとSCLKの波形です。周波数設定は28bitを14bitに分割し、2回に分けて送信しますが、この実験機では、LSB,MSBを両方セットしたとき、周波数が変更されるモードで使用しています。

当初、SPI通信がうまくいかず、クロックの極性がアクテイブ LOWであるという事に気付くまで足かけ2年(12月31日から1月1日の昼まで)悩みました。

DDSとの通信クロックは約1MHzで行っています。ちょっと早い感じがしますが、RF混入で問題が有る場合、フィルターを強化する度合いによりクロックレートは下げる予定です。

AD9833が動作するまでの、XC16によるソフトを説明します。

SPIの初期設定です。 メインのイニシャル関数initMain()のなかで処理しています。

SPI1CON1 = 0b0000011101110010;//
SPI1CON2 = 0b0000000000000000;//
SPI1STATbits.SPIROV = 0;
SPI1STATbits.SPIEN = 1;//SPI1有効化

SPI1CON1にてマスターモード 16bit、プライマリ1/4、セカンダリ1/4、クロックactive_Lを設定します。

DDSへの書き込み関数です。

// DDS 書き込み
void DDSwrite(unsigned int data) {
    SPIFlg = 0; //DDS FSYNC 0(CEをL) 
    __delay_us(1);
 SPI1BUF = data;
    while(!SPI1STATbits.SPITBF);
    __delay_us(20);
 SPIFlg = 1; // CEをH
}

20usの遅延時間は16bitの送信が終わるまでをオシロで確認しながら決めました。

マイクロチップが公開しているSPIのリファレンスマニュアルによると、16bitのデータ送信が完了すると、SPI1IFというフラグがセットされるらしいのですが、いくらやってもこのフラグがセットせず、やむなく遅延時間を入れてCEの信号を作成しました。 また、SPITBFフラグも役立たずで、このwhile文も削除しても動作に影響は有りませんでした。

DDSのイニシャライズです。

void initDDS() {
 DDSwrite(0x2100);//DDS reset
 DDSwrite(0xC000);//PHASE0 0
 DDSwrite(0xE000);//PHASE1 0
 DDSwrite(0x2000);//16bit連続2回送信にて周波数確定
 Freqwrite(Freset,0);//reg0に1MHz書き込み
 Freqwrite(Freset,1);//reg1に1MHz書き込み

DDSにリセットをかけますが、位相、周波数レジスタともにクリアされません。 従い、初期値が存在してはならないデータになっている可能性が有り、何が起こるか判りませんので、それぞれのレジスタにダミーデータを書き込んでいます。 最初の行でセットしたRESETビットは4行目の0x2000のコントロールコマンドでRESETビットも落とし、RESET終了としています。

このAD9833のイニシャル設定は、アナデバが公表している資料によると、ここで示した各コマンドの送出順序と異なる事がわかりました。 もし、この順序でうまく動作しない場合、アナデバが公表しているこの資料を参照して下さい。

周波数の設定

FREQREGの値はAD9833の仕様書から周波数x(2^28/25MHz)で計算されますので、(2^28/25MHz)部分をKdと置き、値は10.73741824という実数になります。 しかし、この発振器の周波数は10Hz単位の表示ですので、実際に計算する場合、Kd=107.3741824という数値に定義し直しています。

void Freqwrite(unsigned long int FQ, unsigned char ML) {
 unsigned long int Freg;
 unsigned int MLset,MFreg,LFreg;
 double DFreg;
 if (ML == 0) {MLset = 0x4000;} else {MLset = 0x8000;}
    DFreg = FQ;
 Freg = (double) (DFreg * kd); 
 MFreg = (Freg >> 14) + MLset;
 LFreg = (Freg & 0x00003FFF) + MLset;
 DDSwrite(LFreg);
    __delay_us(20);
 DDSwrite(MFreg);
}

この関数の中で引数MLは周波数レジスター0か1を指定するものです。

ロータリーエンコーダーによる周波数のアップ、ダウンは、A,B 2bitを定期的に監視して、基本パルスの4倍の分解能(1回転96パルス)を得る手法が一般的ですが、この方法ではエンコーダーの回転速度を検出できないので、今回はINT1と2からの割込みで割込み周期を計数するとともに回転方向を検出する方法にしています。 エンコーダーの回転速度を検出する必要が有る理由は後述します。 従い、1回転24パルスが基本となります。 ソフトの内容は添付ソースファイルを参照下さい。


周波数可変の設定は、ロータリーエンコーダーRE1は10Hzステップ、RE2は1KHzステップ可変です。 200KHzをカバーするのに、RE1だけなら、833回転ですが、RE2だけの場合、8.33回転で済みます。

このチューニング感覚はYAESUのFT450とかFT991と同じで、コンテストのときなどに多用しますが、さすがに10Hzステップのダイヤル操作は同じ感覚とは言えません。ここら付近が改善のポイントと思われます。

現時点でのソースファイルです。 DDS_7MHz180101.cをダウンロード

ファイルの中に、EEPROMのアクセス関数がありますが、この実験では使用していません。

ここまでは、何の工夫も加えられていません。 そこで、いつかは実験しようと考えていた、2個のエンコーダーを1個にして、同様な効果が得られないかトライする事にします。 ヒントは20年くらい前に聞いたKENWOODが保有していた特許です。 

この特許のアイデアは非常にわかり易く、ゆっくりエンコーダーを回転させた場合、周波数もゆっくり変化するが、早く回転させた場合、周波数変化ステップが大きくなり、回転速度以上の速さで周波数が変化すると言うものでした。 具体的には、ゆっくり回転している場合のアップダウンステップは10Hzですが、早く回転させると、アップダウンステップが100Hzに自動的に変わるというものです。

この話を聞いて、すぐにSSBトランシーバーのダイヤル機構を思い浮かべたのですが、私の知る限り、このような機能を設けたトランシーバーは有りませんでした。 理屈は正しいけど、実際に使用した場合、問題があり、実用化されなかったのか、私の知らない所ですでに実用化済みなのか、あるいは、この話の出所が、KENWOODのオーディオ製品を扱う関係者からの話でしたので、トランシーバーを扱う関係者へは、周知されていなかったのでは?と勝手に想像しながら、過去20年間ずっと疑問のままでした。 

そこで、この実験機の10Hzステップのエンコーダー側に、エンコーダーのパルス間隔が50msec以下になったら、ステップを100Hzに変更するプログラムを仕込んでみました。 結果は考えた通りの動作を行い、ゆっくりの場合1回転で240Hzしか変化しないのに早く回すと2KHzくらい変化します。 ただし、LCDの数値変化を見ているだけなので、実際にSSB信号を聞きながら操作した訳ではありません。 従いチューニング操作のフィーリングは判りません。

理屈的にはスピード判定を2段階で行い、最少ステップ10Hz、中間ステップ100Hz、最高ステップ1KHzで操作できれば、百数十円のエンコーダー1個でかなり経済的なVFOができそうです。 ソフト的には簡単に実現でき、10Hzの分解能を得ながら、簡単に200KHzの幅の可変が出来ます。 しかし、これでダイヤル操作のフィーリングがHFトランシーバーと同等なのかは判りません。 LCDの表示を見ていると、数KHz飛んだりと、スムースに変化はしていないようです。 

DDS_7MHz180102.cをダウンロード

例えば、7100KHzから7150KHzに周波数を変えようと、エンコーダーを回します。 7145KHzくらいまでは、スムースに素早く変更されますが、その後、回転速度を落とし、後2KHz以内くらいになったので、さらに回転速度を落としますが、意に反して周波数は7150KHzを飛び越えてしまいます。 仕方がないので、回転を反転しますが、ゆっくりやると10Hzステップでしか、変化しないので、少し早く回したくなります。 すると、またも行き過ぎて、周波数は7150KHz以下になってしまいます。 この現象は何回操作しても同じように繰り返されます。 

しばらく、時間をおいて原因を考察した所、割込み処理時、CNTをクリアーしていますが、このタイミングが悪そうです。 割込み発生から、しばらくは次の割込みを禁止していますが、CNTクリアーはこのディレー設定の前で行わなければ、意味が無い事がわかりました。 このアイデアに対応したソースファイルは以下です。

DDS_7MHz180104.cをダウンロード

CNTクリアーの位置を変更し、いくつかのパラメーターを調整すると、かなりスムースに目的の周波数に合わせ込む事が出来るようになりました。 しかし、まだ、時々、目標周波数の500Hzくらい手前で1KHzくらいジャンプする事があります。 しばらくは、パラメーターを微調整してみる事にします。

正月休みの最終日の夜、風呂に入っていたら、改善アイデアが浮かびました。 エンコーダーのパルス間隔を1msec単位でカウントしていますが、この時のタイマー1の割込み優先度より、エンコーダーの回転検出のINT1,2からの割込みの方が優先度が高く、INT1,2からの割込み処理中はタイマー1からの割込みがブロックされている可能性がありました。 また、INT1,2からの割込み処理が済んでから、タイマー1による割込みによるカウンターをクリアーしていましたので、正確にエンコーダーのパルス周期をカウントしていない可能性もありました。 

そこで、まず、エンコーダーからの割込みよりタイマー1からの優先順位を上げる事にしました。 そして、タイマー1によるカウント値CNTもエンコーダーから割込みが有った直後にiCNTという変数に退避させた後クリアーする事にしました。 さらに、1KHzステップで変化する場合、最初のインクリメントまたはデクリメント時、100Hz及び10Hzの値は00に丸める事にしました。 例えば、7100,57という周波数でインクリメントした場合、最初は7101.00となり以降1KHzステップでアップしていきます。 デクリメントの最初は7100.00となり、以降1KHzでステップダウンしていきます。

同様に100Hzステップの場合も10HZの数値を最初0に丸めてからアップ、またはダウンさせるように変更しました。

この状態のソースファイルです。DDS_7MHz180106.cをダウンロード

1KHz、100HzのiCNTしきい値も微調整した事で、かなり素早く目標周波数に合わせこむ事が出来るようになりました。 ただし、まだ完全ではなく、行き過ぎも頻度は少なくなりましたが発生します。 

DDSに連続して書き込むと、近傍のスプリアスが増え、ビート音が濁って聞こえます。 従い、周波数に変更が無い時はDDSに書き込まないようにしました。 しかし、それでもビートの濁りは消えません。 原因はこの表面実装の基板の中で、DGNDとAGNDをつないである事かも知れません。 ICの足も、インターフェース用の出力ピンもわざわざ独立しているのに、基板内でショートしてあります。 ICの足を浮かし、AGNDを独立させる事を試みましたが、作業の途中で銅箔がはがれてしまい、動作不能に。 

Dds_add_475k

やむなく、予備の基板に交換し、DDS ICの周りに付けられているVCCとGND間のチップコンデンサにパラに4.7uFのチップコンデンサを3個追加しました。 少しは改善しました。S/Nが悪い時はあまり濁りは気になりませんが、S9くらいの強度の信号の場合、まだ濁りが気になります。 この濁りの程度は、以前PLLの7MHz VFOを実験しましたが、それよりかなり悪い状態です。 フィルター前の波形はかなり汚いので、オシロで見てもかなり綺麗に見える2MHzくらいを出力し、TS-930で聞いてみましたが、濁りの程度は変わりません。 もしかしたら、ICそのものの性能かも知れません。 アナデバのDDSを使ったKEM設計の7MHz CWトランシーバーを持っていますが、この受信音は、濁りを全く気にする事が有りません。 チャンスがあれば、両者のスペクトルをスペアナで確認してみる事にします。 

本来の実験テーマである、安いロータリーエンコーダーによる操作性改善は、ソフトの改善アイデアも手詰まりになりましたので、新しいアイデアが出るまで、ソフトやハードの更新は休止します。

Dds_71mhz

DDSのAD出力端子に7MHzのBPFを追加し、1石アンプで増幅しました。 左の波形はRF OUTの出力コネクター部分の波形で、1.5Vppのレベルです。

この状態での配線図です。

7MHzDDS180106.pdfをダウンロード

この基板で信号純度の改善検討を行っていましたが、その途中で、5Vの3端子レギュレーターが入出力ショートモードで壊れてしまい、その結果5Vラインに12Vが流れ込み、PICkit3とLCDそれにLCDがつながれていたPICのI/O3ピンが壊れてしまいました。 3端子レギュレーターはNJM2845といICでしたが、このICは出力をGNDへ短絡すると、入出力ショートモードで破壊するようです。 この破壊モードは今回が初めてではなく、AM送信機検討中も同様な破壊モードになり、多くのICを壊してしまいました。 7805タイプの3端子レギュレーターは電流リミッターが働き、ショートモードで壊れる事は有りませんが、このICは違うようです。 2度と使わない事にします。

PICkit3が壊れるまでの間に変更を加えたソフトの最終状態は以下でした。

DDS_7MHz180210.cをダウンロード

 DDS VFOの実験(AD9833) 2へ続く。

このPICkit3はなんとか修理完了し、また現役に復帰しました。

PICkit3 の修理 を参照下さい。(2018年8月)

INDEXに戻る