« dsPICでSSBトランシーバー(10Wリニアアンプ) | メイン | リチウムイオン電池充電器(16.4V) & DCDC »

2020年8月30日 (日)

dsPICでSSBトランシーバー(ケースイン)

 

カテゴリ<SDR>

各ブロックやリニアアンプが完成したので、これをケースに収納し、最終仕上げします。 受信時のシステムからのノイズや、リニアアンプ出力における不要輻射の確認など、ケースインしないと確認が出来ませんので、やっと、ここまでたどり着いたという状況です。

まずは、トランシーバーの外観と、中の構造のみ紹介です。 動作テストや確認結果は随時書き足していきます。

Dsp_trx_comp1

今回は、中古の測定器ではなく、アイデアルの汎用ケースを買い、これに詰め込みました。 このトランシーバーは電池で動作させ、屋外で使う事を前提に設計してきましたが、それにしては、少し大き過ぎました。 しかし、リュックに入らないサイズではないので、我慢する事にします。

Dsp_trx_comp6

Dsp_trx_comp2

パネルレイアウトで失敗があります。 TUNEダイアルの左側にSPAN切り替えのSWが有り、そのインジケーターとして、黄色のLEDを付けたのですが、斜め上から見えません。 正面からなら見えるのですが、使いにくい。 対策として、LED用の穴を良く見える位置に、もう1個明け、新たにLEDを追加する事にします。

Dsp_trx_comp5

Dsp_trx_comp4_2

全ての回路を収納し、天面にビス止めされたスピーカーで7MHzを聞いてみました。 すると、スピーカーBOXの条件が良くなったのか、低音が良く出るようになった為、全体として、こもるような音質になってしまいました。 これは、了解度の面で非常に不利で、音量を上げないと良く聞き取れない音質になっていました。

Normal

Box

左上がこもった音のスペクトルです。右は、バラックの検討段階で、聞いていたミニスピーカーBOX(プラスチック製)の時のスペクトルです。 ソースは同じではありませんが、右側の方の500Hz付近はかなり落ち込んでいます。 Hi-Fi音を追求するには、左上の特性が必要ですが、了解度を確保するには、500Hz以下の成分を、適当に落とす必要がありそうです。 そこで、スピーカーの周波数特性だけを落とす為、C10を4.7uFから0.022uFに変更しました。 バラックの時は、ゲインが20dBほど低い状態でしたので、高S/Nの了解度でしたが、ノイズが増えた現状では、バラックの状態の了解度までには到達しませんが、かなり聞きやすくなりました。

 

10W出力時の消費電流が4Aを少し超える状態で、移動運用に使う予定のリチウムイオン電池に対して、負荷が重すぎます。 そこで、QRPモードを追加する事にします。 方法は、送信時のdsPICのDA出力をアナログアンプで増幅しますが、この途中でレベルを3dB落とす事にします。 このゲインダウンで、最大出力が5Wになりますので、消費電流を3A以下に抑えられる見込みです。

全体の回路を接続し、未調整の状態で、出力は16Wくらい出ていますので、これを最大10Wとになるようにドライバーのアイドル電流を調整した状態で4Aの消費電流となり、QRPモードの5Wの時は2.8Aくらいの消費電流となりました。

Dspictrx_cw_splias

次に、気にしていたスプリアスの確認です。

左のスペクトルは、CWを送信した時のリニアアンプ入力部分のスプリアスです。4MHz付近に-30dB、6MHz付近に-37dBくらいの大きなスプリアスがあります。 このスプリアスの原因は、DDS Si5351Aが出しているもので、完全に不適合です。

もっと早い時点で見ておけば良かったのですが、前回のダイレクトコンバーショントランシーバーでは全く問題が無かったので、安心していたのがいけなかったようです。

Dspout24mhz

Dspout17mhz

左上が、Si5351Aの24MHz出力、右上が17MHzの出力です。 本信号の近傍に、-46dBくらい、さらに広範囲に渡り、-50dBより大きなスプリアスが連立しています。このキャリアを使い、ミキサーを構成する為、最終的に取り出された7MHzの信号は、前述のごとく、全く許容できない状態になってしまいました。 DDSの出力端子として、CLK0とCLK1を使っていますので、CLK0とCLK2を使ったり、周波数割り当てを逆にしたりしてみましたが、結果は同じでした。

前回のダイレクトコンバーショントランシーバーと何が違うのか確認してみると、前回は28MHzのみを出力し、かつ1/4に分周して利用するものでしたが、今回は2つの周波数を同時に発生させます。 そこで、24MHzと17MHzを単独で発生させてみました。

24mhzonly

17mhzonly

上の画像は24MHzと17MHzを単独で発生させた時のスプリアスデータです。 スペクトルの数が極端に少なくなりました。 24MHzのスプリアスレベルは、2波同時発生時と同等です。 一方17MHzは、スプリアスを-60dB以下に抑えています。 ただし、インターネットで紹介されているスプリアスデータは30MHz付近では-70dBくらいのものが多く、今回の回路では、平均より10dB以上悪化しているのが現状です。 また、Si5351Aで送信機のLOを構成する場合は、マルチ出力(2波または3波の同時出力)は使用できないというレポートが多い事に気づきます。

Lsbfnosignal

Lsbfullpower

左上はLSB無信号送信時のリニアアンプ出力でのスプリアス、右上は、同じくLSBフルパワー出力時のスプリアスです。無信号時に発生するスプリアスは、LO1とLO2のスプリアスがMIXしただけのスプリアスですが、フルパワー時は、このスプリアスにLO2とサブキャリアをMIXした時のLO2のスプリアスが加わります。 即ち、LO2のスプリアスは2重に効いてくる事になります。 

Cwfullpower

Lsbfullpower

CWとLSBそれぞれフルパワー時のスプリアスを比較してみました。レベルに若干の差はありますが、発生している周波数は、どちらも同じでした。 この比較は、LSBは、マイクアンプからDSPの入力までのアナログ回路が動作するのに対して、CWはDSPのADCの出力がカットされており、アナログ回路の信号は一切使っていない状態です。 すなわち、スプリアスの原因のほとんどがddsのスプリアスであり、送信出力が、アナログ前段に回り込んだものでは無いという事が言えます。

この問題の対策として、SDR-3は、Si5351Aのクリスタル周波数を27MHzにしたり、アンプ出力に通常置くLPFをBPFにしたりして、切り抜けているのではと推測します。 私の基板では、基本のスプリアスが多く、特に、周波数を可変すると、キャリア近傍の200KHz以内に、不適合のスプリアスが見え、BPFだけでは対策不可能です。 また、あいにく27MHzのクリスタルも持ち合わせていません。

 

24mhz_lo2_xtalosc

Xtalosc24mhz

 

そこで、24MHzのクリスタルを使い、コルピッツ発振回路を組んでみました。

左上がその回路図。右上のスペクトルが、24006348Hzを発振させた時のもので、さすがクリスタル。 高調波以外、余計なスプリアスは一切ありません。 発振周波数が、クリスタルフィルターの特性から決められた 24006766Hzに対して、418Hzほど足りませんが、クリスタルに直列に入るコンデンサをトリーマに変えて、ぴたりと合わせる事にします。 また、CW時に、LO2を950Hz低い方へシフトするのは止めて、CW受信時のみ、LO1の周波数を950Hzだけずらす事にします。 ただ、今回実験したのは、オープンの回路状態で、実際にアナログ基板に実装したわけではありません。 最終状態で、確認が必要です。 これで、LO2のスプリアスは目途が立ちました。

クリスタル発振回路の中で、最大面積を占有するのは、クリスタルそのものです。 基板上で、これを収納するスペースを確保するために、ミキサーに使っていた74LVC2G66とキャリアの反転に利用していた74LVC1G00を廃止し、手配したけど使い道が無かった、74LVC1G3157に変更し、スペースを確保する事にしました。

Dds_onlylo1

Newmixer0909

24MHzのLO2の周波数は20Pのトリマーを追加し、24006766Hzに調整しました。 上のコルピッツ回路で、2000くらいから8000くらいまで可変できます。 そして、左の画像のごとく、Si5351Aをずらして、クリスタル発振回路を収容できました。

多分、ミキサーの変換効率などが変わってしまいましたので、送信モードの各モードに於けるレベル設定はやり直しとなる事でしょうが、それらは、スプリアスの確認が終わった後にします。

左下のスペクトルがLO1(17MHz)を50MHzスパンで見たスペクトルです。右は同じ周波数を10MHzスパンでみたものです。 Si5351Aの出力を1波だけにし、かつ、ICの表面に銅箔を張り付け、バイパスコンデンサを最短で配線した結果、17MHzの両端に並んでいた沢山のスプリアスも数がかなり少なくなりました。残念ながら、最大レベルは-60dBくらいで変わらずです。

Lo1_50mspan

Lo1_10mspan

Lsb_ampin

Lsb_ampout

Lsb_50mhzspan

左上のスペクトルは、リニアアンプ入力部のスプリアス、右上がリニアアンプ出力のスプリアスです。 入力に4.5MHz付近の高いスプリアスがあり、それがそのまま出力にも出ていますが、リニアアンプの4.5MHzのゲインが高い為、レベルが3dBくらい上昇しています。 また、9MHz付近のスプリアスは、入力では-60dBくらいですが、出力部では-50dBくらいまで増加しています。 これもリニアアンプの周波数特性だろうと思われますが、後6dBくらいは落としたいところです。 左の1枚は50MHzスパンのスペクトルです。 4.5と9それに14MHzのスプリアスがNGです。 対策を考える事にします。

第1ミクサーの出力をQ6で増幅した後、広帯域のまま、リニアアンプへ出力していました。 このコレクタの負荷を7MHzの共振回路にして、スプリアスを落とそうとしましたが、ゲインが上がり過ぎて発振してしまい、抵抗でダンプすると、発振は止まりますが、フィルター効果は無くなってしまいます。 結局、また元の広帯域アンプに戻しました。  代わりに、DSPの出力バッファであるIC4の送信側出力ラインを0.047uFにてGNDへ落とす対策が有効でした。 4.5MHzと9MHz両方が-50dB以下に収まりました。 4.5Mと9MはSi5351Aが出しているのでは無く、dsPICが出しているものでした。  14MHzは終段のLPFの回路定数を見直し、これも-50dB以下にできました。

7mhzlpf_data

Sprias_taisaku0913

上が、定数変更したLPFの定数と、その特性です。

左が、これらの対策を実施した後のスプリアスデータです。 4.5MHzは-58dBくらいまで、9MHzは-70dBくらいまで、14MHzの第2高調波は-56dBくらいまで落ちました。 第3高調波以上は-60dB以下に抑えています。

ここまでの状態で、TSSへ保証認定依頼を出す事にします。

 

dsPICが時々動作しなくなる問題が出続けていました。 そこで、怪しい設定や、メモリーの設定などを見直しました。

dsPIC側で取った修正

・MPLAB X IDEに設定していました固定小数点オプションの指定は削除しました。

・configの記述が間違っていましたので、修正しました。

・TAP_Numのメモリーをstaticからconstに修正。

・メモリーの配置をリンカーに任せていますが、関連するメモリーの並びを整然となるように、記述順序を変更。

・CW及びAMのキャリアレベルの見直し。

・TAP係数の編集時に置いていたディレーやCAST変数の中継を廃止。

 

PIC16F側で取った修正

・AGCカーブ、Sメーターカーブの手直し。

・LO1にCW受信時のオフセット周波数を追加

・電源電圧をLCDに表示。これに伴い、i/o割り当て変更。電圧表示の更新は、2秒間隔とします。

・AGCのリカバリタイムをソフトでもカバー出来るようにしました。 しかし、アタックタイムの遅れによる応答特性の悪さの改善には不足で、これは今後の課題となりました。

・RIT ON状態で送信した時、周波数がずれるバグを修正。

 

Elekeyのモニター音の周波数を950Hzから700Hzに変更。 これは、CRフィルター2段による高調波除去でも、音の濁りがひどい為、モニター音のみ聞きやすい周波数に変更したもの。

ハード的には、以下の修正を行いました。

・クリスタルフィルターの周りのミキサーを含めて、シールドケースで覆いました。

・電池運用時の電圧監視機能を追加。 このハード対応の為、AN端子を使う必要が生じましたので、i/oポートが壊れて未使用となっていたRC1ポートの出力ポートを調べた結果、生きていました。 そこで、LCDのE端子をRA2からRC1に移し、AN2を電源電圧測定用に変更しました。

・アナログ回路とDSPICのレベル配分の最適化を行った結果、パワーが出すぎます。 よって、リニアアンプのコレクタからベースへ設けた負帰還回路の抵抗を220から100Ωに変更。 

 

Dspictrx_front_2

Dspicssbtrxtop_2

Dspicssbtrxleft

Dspicssbtrxright

Lsbcarusb

左は、リニアアンプ出力に於ける1KHz変調のLSBスペクトルです。 キャリア漏れや、USB漏れが出ていますが、いずれも新スプリアス規制をクリアしています。 もう少し、トライしたら、すべて-60dB以下にできそうですが、 実運用上では大差ありませんので、これで良しとします。

下に2信号特性を示します。一番左が、3.3W、真ん中が4W、右が5Wの出力の時です。 2信号特性を論議する定格出力の1/3の出力で、IMD-30dBくらいです。 良くはありませんが、悪くもないという状態ですので、これも良しとします。

2tone3w

2tone4w

2tone5w

 

TSSへ提出したブロックダイアグラム5_dspic_sdr_trx_block.pdfをダウンロード

TSSの審査が5日間で終了し、即、総通へ変更申請を行い、こちらも1週間で審査終了となり、晴れてON AIR出来る事になりました。

いざ、ON AIRしようとしても、先日の台風通過で垂直DPは半分たたんだまま。 台風シーズンが過ぎるまで、伸ばす気は有りませんので、臨時にツェップアンテナを張ってトライする事にしました。

このツェップをリグに接続したら、軒並み+30dBくらいのS表示となり、RF ATTをONしても時々歪みます。 今まで、半分たたんだ垂直DPで受信し、RFゲインやAGCを合わせていたのですが、フルサイズの水平系ツェップを張った途端、受信信号が強力に上昇したものでした。 結局、このツェップをベースに再度RFゲインやAGC特性を再調整する事にしましたが、 解決手段を見いだせず、Q15のゲインを手動で可変する事にしました。 

9月下旬の土曜日、10Wの出力と、ツェップアンテナで、念願の1st SSB QSOに成功。音質も、メーカー製と変わらないとのリポートをいただきました。 さらに、CWによる1st QSOも成功し、残りはAMだけになりました。 AMはSSBのレベル設定に合わせ、オーバー変調にならないように、キャリアレベルを決めた結果、無変調で4W出力になっていました。 

次の日の日曜日、AMによるQSOが成功し、一応全モードによる交信が出来ました。 ただ、時々、送信から受信に切り替えた時、音が出なくなるというトラブルが継続していまして、この現象が発生したら、電源をOFF/ONして正常になります。対策が必要ですが、まだアイデアは有りません。

もしかしたら、PTT SWのチャタリング ?   データを取ってみました。

Rxtotx_noc

Txtorx_noc

予想通り、ひどいチャタリングです。 マイクに付属したSW、本体のトグルSWいずれも、あきれるくらいチャタリングしていました。

以下、0.1uFのコンデンサをマイコンのi/o端子とGND間に接続したものです。

Rxtotx_addc

Txtorx_addc

この対策で、PTTがONしてからマイコンが反応するまで約6msの遅れが生じましたので、CWのブレークイン時にとっていたマーク出力のディレータイム11msを17msに変更しました。 

Idspictrxfront8

 しばらく、QSOに使っていますと、AGCの効きに不満が出てきます。 アタックタイムが長いのが災いして、少し強い局の音声の頭が歪ます。 これが最初の1回だけなら我慢できるのですが、数秒ごとに歪んで聞こえます。 ふたつのマイコンのDAとAD、DAを繋いだ信号処理では、ダメなようです。 そこで、現在の方法に見切りを付け、dsPICのPWMによるDAの出力をそのままアナログ回路で、カット&トライする事にしました。 この変更で、頭の歪は大幅に改善されましたが、AGCで音量が一定になる範囲(AGCレンジ)が狭いのは、改善さされませんでした。 

そこで、RF ATTを連続可変出来、かつこれをフロントパネル面で操作できるようにし、信号強度に応じて、マニュアルで可変する事にしました。 これに伴い、20dB ATTもRF3段目に置いた可変ATTも廃止しました。

 

これらを網羅した、配線図とソースファイルは以下です。

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

配線図 SDR-TRX8.pdfをダウンロード

SSB_generator_8.cをダウンロード

7MHz_dspSSB_TRX_8.cをダウンロード

float_TapUSB301_BPF_BL.hをダウンロード

float_TapLSB301_BPF_BL.hをダウンロード

float_TapCW301_BPF_HM.hをダウンロード

float_TapAM301_BPF_BL.hをダウンロード

float_TapAUDIO201_BPF_BL.hをダウンロード

float_Tap950_BPF.hをダウンロード

elekey_950HzMonitor.cをダウンロード

 

移動運用をする為に、リチウムイオン電池パックを作りました。

INDEXへ戻る