DDS-VFOを使った7MHz-CWトランシーバーの製作

[公開:any]

[電子工作/PIC]
[電子工作/アマチュア無線]
[PIC,DDS,AD9833,TA7358P,PIC18F14K50]

origin 2014-06-14


 しばらくぶりの更新です。本業が忙しく、まとまった工作の時間が取れません。とりあえず作り始めましたが、完成までは時間がかかりそうです。

  • とりあえずVFOの製作まで(2014-06-14)
  • TA7358を使ったRF+MIXまで製作(2014-06-21)
  • IFフィルター(クリスタルフィルター)の製作(2014-06-22)
  • TA7358を使った検波回路と低周波増幅までの製作(2014-07-06)
  • TA7358を使った周波数変換回路と電力増幅回路まで製作(2014-07-13)
  • LPFの製作(2014-07-27)
  • ブレークイン回路やサイドトーン回路を追加してトランシーバー回路として完成(2014-08-02)
  • ケースに入れて完成(2014-08-12)


 DDSでVFO製作

 アナログ・デバイセス社のDDS-ICであるAD9833がイーエレさんで安く手に入ったので、トランシーバーのVFOを作ることにします。トランシーバーは、以前にも作っていますが、交信相手に不自由しない7MHzのCW用とします。
 AD9833の詳細は、データシートを見ていただければわかると思いますが、クロックは25MHzまでとなっていますので、仕様では、その半分の周波数12.5MHzまでの出力に対応しています。実際にVFOとして使うには、信号純度が必要となるので、クロックの1/3程度・・つまり8MHz程度までと考えた方がよさそうです。DDSは、自由な周波数が出力できるので、中間周波数となるクリスタルフィルタの周波数をうまく組み合わせれば、18MHz帯までのトランシーバーのVFOとして使用できそうです。

 回路図です。AD9833の制御は、これまで使用実績のあるAD9834と全く同じです。マイコンは、「AD9834を使った実験用DDS-VFOの製作」で実績のあるPICを使用しました。プログラムもほぼ同じもので一部手直しして使用しています。クリスタルフィルタには、10.24MHzか4.19MHzの水晶発振子を使用する予定なので、DDSの出力周波数を3MHz台としてLPFのカットオフ周波数を5MHz近くとしました。
 RIT機能を実装するため、送信時に+5Vとなる電源を入力ポートで読み取ることで、送信状態を検出しています。

AD9833 DDS-VFO 回路図

 AD9833のパッケージはMSOP10ピンなので、秋月電子で取り扱っているDIPへの変換基板を使用しました。いつものようにユニバーサル基板に実装しました。クロックは、手持ちの25MHz水晶発振モジュールを使用しましたが、出力が3MHz程度なら20MHzのクロックでも問題ないと思います。

AD9833 DDS-VFO基板表AD9833 DDS-VFO基板裏

 デバッグ状態なので、LCDには、オフセットを加えないDDSの発振周波数を100Hz台まで表示させています。CWでも100Hz単位の周波数可変で運用できると思いますが、問題があれば、RIT機能により10Hz台の周波数調整を行うことを予定しています。

AD9833 DDS-VFO

 APB-3にて、ワイドスパン(15MHz)とナロースパン(100KHz)のスペクトラムを確認しました。出力は、-17dBm程度となりました。混合(周波数変換)に使用する回路によっては、信号レベルが不足する可能性があります。2倍高調波が、基本波から-67dBmとなりました。その他、近接にも細かなものが見えますが、いずれも問題ないと判断しました。

AD9833 DDS-VFO Wide spectrumAD9833 DDS-VFO nallow spectrum

 混合にTA7358を使用して、ブレッドボードでテストしてみました。TA7358の局発入力(8番ピン)は、信号レベルとして‐17dBmあれば問題ありませんでした。IFを10.24MHzとして、IFを取り出してみると変換利得も約30dB得られました。検波にもTA7358を使用してみましたが、IF増幅なしでも検波できました。アンテナをつないで検波出力をイヤホンで聴いてみると十分な感度で受信できます。ただ、IFフィルタがないので、多くの局が混ざって聞こえます。うまく同調をとるとSSBも復調できます。



 TA7358でRF+MIX


 前回の「7MHz-QRP-CWトランシーバーの製作」と同じようにランド方式で各ブロック毎に小さな基板で製作します。この方法だと、ブロック毎に性能の確認が簡単にできるので失敗が少なくなると思います。また、性能に満足できなければ、そのブロックのみを作りかえることも可能です。
 高周波増幅と混合には、FMフロントエンドICのTA7358を使用してみました。IF用の10.7MHzのコイルはFCZの手持ちがありましたが、7MHzのコイルは手持ちがなく、FCZコイルの入手もできなくなったので、キャリブレーションさんで購入したアイテック電子研究所のALハムバンドコイルを使用しました。

TA7358 RF and MIX board

 回路図です。クリスタルフィルタは、10.24MHzの水晶発振子を使用するので、局発としてDDS-VFOから3.2MHzを入れて10.24MHzのIFを取り出しています。7MHzコイルの同調コンデンサは、FCZコイルの推奨値である100pFとしましたが、ALハムバンドコイルでは、もう少し小さな容量でよさそうです。(82pFか75pF)

7mhz rf+mix

 DDS-VFOと接続して、動作確認を行います。


 DSA815で測定したIFのスペクトラムです。RF入力にSGから‐80dBmの信号を入れると、IFでは、−44dBmの出力が得られるので、変換利得(高周波増幅の利得を含んで)は、約36dB得られています。

IF出力のスペクトラム


 IFフィルターの製作

 前回のクリスタルフィルターには、10.24MHzのHC-49U型水晶発振子を使用しました。最近、手に入るのは、小型(高さが低い)のHC-49US型が多くなっています。今回は同じ周波数でHC-49US型のものをaitendoさんで入手したので比較してみました。

HC-49U型水晶発振子とHC-49US型水晶発振子

 測定環境としては、良くはありませんが、ブレッドボードにクリスタルフィルターを組み立てて測定してみました。インピーダンスマッチングも無しです。下の画像の左側がHC-49U型、右側が小型のHC-49US型を使用したものです。コンデンサや接続は全く同じですが、これだけの差が出ました。HC-49US型を使用したものは、挿入損失が約3dB大きくなりますが、3dBドロップでの帯域幅は、1/2程度となりました。この結果だけを見れば、クリスタルフィルターには、小型のHC-49US型が良いと判断できます。(・・当然、すべてのHC-49U型とHC-49US型に当てはまるかは不明です。)

HC-49Uクリスタルフィルター特性HC-49USクリスタルフィルター特性

 CW用のIFフィルターは、狭帯域のフィルターがほしくなります。前回は4素子で帯域800Hz程度のクリスタルフィルターでした。これでも十分ですが、もう少し帯域が狭ければさらに使いやすいと思います。
 フィルターの素子数(クリスタルの数)について検討してみました。3素子から6素子まで重ね書きしてみましたが、素子数が増えるにつれてシャープな特性となります。ただ、1素子当たり、約2.5dBの挿入損失の増加があります。中心から500Hz離れたところで、1素子あたり10dBの減衰量が得られることがわかりました。今回は、HC-49US型を使用するので、前回、HC-49U型で作成したものと同じ4素子として聴き比べてみることにします。

クリスタルフィルター素子数による特性変化

 クリスタルフィルターの回路図です。前回と同じシリーズ型です。シリーズ型は、入出力のインピーダンスがパラレル型の半分となります。このため、前段や後段にもよりますが、インピーダンスマッチングなしでも問題が少ないと思われます。
 
クリスタルフィルター回路図

 小さな基板上にランド方式で実装して、RF+MIX基板に半田で接続しました。

4素子クリスタルフィルター

 作ったクリスタルフィルターの特性を測定してみました。ブレッドボードでのテスト時よりもスカートの特性が良くなっています。4素子なのでキレは良くありませんが、前回よりは期待できそうです。挿入損失は、約7dBとなりました。

4素子クリスタルフィルター特性

 クリスタルフィルターを経由した後のIF出力は、-50dBmとなりました。RF+MIXからの信号レベルは、-44dBmだったので、クリスタルフィルターの挿入損失分のロスのみ(不整合によるロスを含んでいる)と考えてよさそうです。インピーダンスマッチングは不要と判断しました。



 TA7358で検波


 検波段の回路図です。RF+MIXと同じくTA7358を使用しました。BFOは、10.240MHzの水晶発振子で作ります。前段のクリスタルフィルターからの信号レベルは十分なので、IFアンプも使用しません。

TA7358検波回路図

 ランド方式で実装して、RF+MIX+クリスタルフィルタに接続しました。


 検波出力にセラミックイヤホンなどをつないで、SGからの信号を耳でモニタしながら、検波音が800Hz付近になるようにBFOのトリマを調整します。確認のため、TA7358の4番ピンから3pFのコンデンサを介してIFとBFOのスペクトラムを見てみると、816Hzとなっていました。



 低周波増幅回路


 AFアンプは、過去の実績からLM386(使用したのは、セカンドソースのNJM386)を使用したいつもの回路です。

LM386低周波増幅回路

 ランド方式で実装して、検波回路の横にくっつけました。SGから信号入力して100Hz単位の周波数可変で良いかテストしていると、受信音の変化に違和感を感じました。AF出力をオシロでモニターすると、100Hz単位のはずが、ところどころ200Hz単位で周波数が変化しているところがあります。また、試しに10Hz単位での周波数可変にしても、100Hzまたは200Hz単位でしか周波数が変わりません。(VFOの周波数表示は、正確に100Hzまたは10Hz単位で変化しています。)


 思い当るところは、周波数をAD9833にセットするときに計算する浮動小数点計算での桁落ちくらいです。該当するソースを見直して、変数の型変換を暗黙の型変換ではなく、明示的に型変換を行っても症状はおさまりません。デバッグ用のコードを追加して計算結果を確認すると、24ビットの計算になっていることがわかりました。"MPLAB XC8 double 24bit"をキーワードにgoogleで検索すると原因がわかりました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/***************************************************************
    AD9833 DDS control (frequency to serial code)
***************************************************************/
void freq2serial(unsigned long f)
{
    unsigned long msb, lsb;
    unsigned long data;

    // dds_ref_clock / accu = 25*10^6 / 2^28 = 0.093132257
    data = (double)(f / 0.093132257);

    msb = (data >> 14) + 0x4000;
    lsb = (data & 0x00003fff) + 0x4000;

    dds_dataset(0x2000, 16);
    dds_dataset(lsb, 16);
    dds_dataset(msb, 16);
}

 MPLAB XC8のLinkerは、デフォルトでdouble(floatも同じ)を24ビットで扱う設定になっていました。コンパイル時のログを見直してみると、コンパイルオプションで"--double=24 --float=24"というのがありました。MPLABでプロジェクトプロパティのLinkerのメモリーモデルを24ビットから32ビットに変更して、コンパイルしなおしたら問題なく動作するようになりました。


 VFOのLCDもオフセットを加えて受信周波数を示すようにプログラム変更しました。アンテナをつないで実際の交信をモニタすると、十分な感度で受信できます。AF段でのS/N10dBの感度は、-110dBm程度となったので、市販の無線機と同等です。ただ、AGCがないので、強い局が入電すると爆音となって、AFがひずみます。
 クリスタルフィルターのキレもかなりいい感じです。無信号時のノイズが少なく、混信にも強そうです。また、100Hz単位の周波数可変でも問題はなさそうです。ここまでで受信機回路としては、完成しました。



 周波数変換


 送信機を作ります。最初に、VFOからの3.2MHzの信号と水晶発振からの10.2MHzの信号を混合して7MHzの信号を出力する周波数変換部を作ります。混合回路は、受信部と同じTA7358を使用したものです。


 はじめは、左画像のようにTA7358の混合出力(6番ピン)を内蔵の高周波増幅回路(1番ピン)に入れて増幅する予定でしたが、混合出力のレベルが高すぎて出力が歪むので普通に混合出力から複同調回路で取り出しています。(右側画像)


 周波数変換部の出力スペクトラムです。出力レベルは、約-18dBmとなりました。6.4MHz付近に小さなスプリアスがあります。局発の2倍高調波です。基本波に近いので複同調回路でも取りきれません。トラップ回路で押さえ込むこともできそうですが、基本波も減衰すると思われます。局発周波数の選択ミスです。とりあえず基本波から60dB以上あるのでこのまま進めます。



 前置増幅+電力増幅


 送信機の出力は1W〜2W程度を目標とします。周波数変換部からの-18dBmを+30dBmまで50dB近く増幅する必要があります。2段では無理だと判断して、3段構成とします。初段は2SK241を使用して増幅します。-3dBm程度まで増幅できました。


 2段目と終段はトランジスタを使用します。使用するトランジスタの選択と利得配分がシビアなのでブレッドボードでテストして回路を決定しました。


 回路図です。トランジスタは、2SC1815と2SC2078を使用しました。2段目で+20dBm(約100mW)まで増幅します。終段でさらに+10dBとします。終段は、C級増幅なので2SC2078を使用する必要はないかも知れません。ベースの抵抗値で出力の調整が可能です。ブレッドボードでのテスト環境では、75Ωで2W程度の出力が得られました。


 スペース的に厳しいのですが、3段の増幅回路を1枚の小さな基盤にランド方式で実装しました。本来は、回り込みや変な結合が出ないように実装すべきです。2SC2078は、連続送信するとかなり発熱します。このサイズの放熱板で良いのか計算していませんが、連続1分間の送信でも問題は発生していません。


 送信波のスペクトラムです。50dBのアッテネーター(20dBカップラーと30dBアッテネーター)を介して測定しています。50-16.4=33.6dBmの出力なので2.2Wの出力です。局発のスプリアスが6.4MHz付近に見えますが、50μW以下なので電波法(無線設備規則)的には問題ありません。



 LPF


 LPFの回路図です。最初は7次のバタワースで作ったのですが、第2高調波を十分減衰できなかったので、チェビシェフに変更しました。


 小さな基板に実装して終段出力につなぎました。(下の画像は、最初に作ったバタワースLPFです。)


 LPFの特性です。第2高調波にあたる14MHz付近で、40dB以上の減衰量となりました。設計では、もう少し減衰量が稼げそうですが、コンデンサの値やコイルの値のバラツキがあるので、こんなものでしょう。7MHzでの挿入損失が1dB近くあります。


 LPF出力です。第2高調波で-70dBm以下となっています。50dBのアッテネータを差し引くと-20dBm以下となります。また、基本波の近くに局発の第2高調波とそのイメージもありますが、いずれも50μW以下なので、電波法上の問題はありません。基本波は、-17.5dBmなので送信出力は32.5dBmとなり2W弱となりました。



 ブレークイン回路等


 送受信の切り替えを行うブレークイン回路と送信時のサイドトーン回路を追加して、トランシーバーの回路として完成させました。ブレークイン回路は、送信時に500mA程度の電流が流れるので、PNPトランジスタの選別に注意する必要があります。細かな基板を半田でつなげて一体化しました。DDS-VFOの基板を除いて、縦100mm横180mmの大きなサイズとなりました。ランド方式は、作るのは楽ですが実装密度が低いので部品数の割には大きくなってしまいます。


 最終的な回路図です。アンテナ切替はリレーを使わない回路をJR3TGSさんのホームページを参考にしました。


 あとはケースに入れる作業が残りますが、RIT機能(これはソフトウェアで実装できます。)とAGC機能(TA7358のAGCは、Webに情報あり)、Sメーターについて、実装するかどうかを検討中です。


 ケースに入れて完成


 ケースに入れて完成させました。ケースはYM-250で過去の製作物からの使いまわしです。ランド方式の基板は、両面テープでケース底に固定してあります。
 最近のトランシーバーはDSPによる信号処理で狭帯域のフィルターを使用している局が多く、正確にゼロインしていないと取ってもらえない可能性があると聞きました。このため、DDS-VFOの周波数ステップを100Hzとしていましたが、20Hzに変更しました。
 あと、RIT機能も搭載しました。スイッチでRITをONにするとメインダイヤルで受信周波数を10Hz単位で変更できます。当然のことながら、RITがONの時は、送信周波数は変化しません。


 AGCやSメーターの実装は見送りました。


▲ページ Top へ...