2021年5月 4日 (火)

dsPICでSSBトランシーバー(AGCの改善)

カテゴリ<SDR> [SSB 7MHz トランシーバー 自作]

dsPICにてSSBジェネレーターを作り、送信はLSB,USB,AM,CWすべてが思った以上の完成度で動作するのですが、受信機が、今ひとつです。 その原因は、AGCの動作レンジが狭く、強い信号の頭で波形がクリップし、歪音が発生します。 特に、強力な信号強度で入感するローカル局は、この頻度が高く、せっかくゆっくりラグチューを楽しもうと思っても、気になって仕方がありませんでした。

ちょうど、Step ATTを作ったので、AGCの応答特性を調べてみました。

 

Dsp_agc

左(画1)の一番上が、2nd IFのDSP前のアナログ信号です。 Step ATTにより途中で、信号強度を10dBアップした時の波形になります。

10dBアップする前に信号がなくなっていますが、これはATTが切り替わるときに一瞬オープン状態になる為に起こる現象です。

そして、10dBアップした後、約4msec間、レベルを維持した後、AGCのフィードバックがかかりだし、レベルがダウン始めますが、ダウンしすぎて、アップする前の信号より小さくなってしまいます。 この状態は次第に解消して、本来安定すべきレベルに復帰します。 この現象を実際にスピーカーで聞くと、最初の大きな振幅の状態では、波形がクリップし、歪んだ後、急に音量が下がり、ひどい時は無音になって、3秒くらいすると、正常音量に復帰します。

この原因は、AGC用の直流出力を復調前のFIRフィルターの後から拾っている為、約4msecの遅れがあるという事です。 2番目のラインはそのdsPICのPWM出力で、3番目のラインはRFアンプのデュアルゲートFETのG2の電圧波形です。 この出力が、dsPIC内部処理の遅れにより、同様に遅れている為であり、dsPICの内部信号を使ったAGCの場合、避ける事が出来ない現象で有る事を、やっと理解できました。 FIRフィルターによる遅延は直線遅延(全帯域が一応に遅延)で、その時間はTAP数/2をADCのサンプリング周期に乗算した値になるという解説をインターネットで見つけました。 このdsPICで行っているFIRフィルターの場合、301TAPであり、ADCのサンプリング周期25.6usecで計算すると、約3.9msecになります。 実測では4msecくらいとなっていますので、ほぼ合っています。

Dspagconly

左(画2)は、AGC用の信号をADCの直後で取り出したものです。 2番目のラインがIF信号のアップに同期して立ち上がり始めていますので、デジタルディレーの時間は、最小になり、約100usecくらいです。 ところが、出力されたDC電圧のリカバリタイムを3秒くらいまで確保する為に挿入したコンデンサ容量とdsPICのPWM出力回路の出力インピーダンスの為、実際にゲインを絞り始めるのは、4msecくらい経過してからです。 

 

そこで、第2IFをダイオードで整流し、得られた直流で2重にAGCをかける事にしました。 

Dspanalog

左のデータがアナログ検出した電圧とADCの後で検出したデジタル信号を同時にAGC回路へ加えたときのものです。 アナログ検出のAGC回路のリカバリ時間は50msecくらいにしましたので、信号がアップしてから1.5msecくらいからAGCがかかるようになりました。

大きな信号が来るたびに1.5msecくらいは歪むことになりますが、マニュアルのRF ATTと併用して、頭の歪と、強入力時、音量が一瞬下がるという現象はなくなりました。

 

 

 

このAGCの調整は、実際に交信を聞きながらカットアンドトライした方が良いようです。

Step ATTを使い、こうあるべきだと設定しても、聴感上は満足できませんでした。

 

何度か調整をやり直したり、ハード的にアタック、リカバリタイムを変更している内に、以前のAGCの状態と異なってきました。 昨日までの最良調整状態がくるってしまい、同じように調整しようとしても、同じ状態を再現できません。 原因を調べる事3日間。 dsPICのi/oポートが壊れていました。 壊れた原因は、AGCのアタックタイムを速くするためにPWM出力ポートにいきなり0.1uFのコンデンサを繋いだ事、その端子をPIC16F1983の入力端子へダイレクトに接続した事のようです。 改めて、このdsPICの電気的特性をチェックしてみました。 i/oポートの最大出力電流は、ポートによって若干異なりますが、一番厳しいポートは最大8mAとなっています。 この端子に直接コンデンサを接続すると、i/oポートの出力インピーダンスが100Ωと仮定した場合、ピークで33mA流れる事になり、完全にスペックオーバーです。 また、dsPICやPICのプログラムを書き換える時に、PICKIT3を繋ぎますが、この時のi/o条件は不定であり、端子によっては、Hを出力している事があり、これが接続された相手のPICの出力がLの場合、同様に33mAの電流が流れる事になります。 結局この繰り返しの為、今までPWM出力に設定していたRB5端子が壊れてしまい、まともにPWM出力を出さなくなって、この症状に陥ってしまったようです。

そこで、壊れたRB5は未使用とし、PWM出力端子をRB2へ移し、かつ、端子に直列に470Ωを入れ、ラッシュ電流を8mA以下に抑えて、時定数決定のコンデンサへ接続する事にしました。 また、メインマイコンへPWM出力を渡す回路にもシリーズに10KΩを入れ、dsPICを保護する事にしました。

これらの対策で、AGC回路が正常に動作するようになりましたので、2nd IFから直接取り出したAGC信号とdsPIC内のFIRフィルターを通過した後のAGC信号をMIXして、RFアンプへAGCをかける事にしました。 アナログ2nd IFから検出したリアルタイムのAGC電圧を軽くRF段へフィードバックさせ、FIRフィルターにより遅れたAGC電圧で、さらに強くAGCをかける事により、アタックタイム時の頭の歪と帯域外の信号による空振りのAGCの影響を最小にするように、動作レベルを調整した結果、強入力時の頭信号の歪もかなり改善し、RF ATTをいちいち調整する手間がかなり少なくなりました。

0tos9

0to10db

0to20db

0to30db

上のAGCデータは一番左が、無信号からいきなりS9の信号を加えた時の2nd IF波形と、AGC用DC電圧の変化です。そして、順に、いきなり+10dB、+20dB、+30dBを加えたときの波形になります。 2nd IFの振幅は+10dBでも+30dBでもほとんど変化がなく、AGCがうまくかかっていることになります。

後は、実際にSSB信号を聞きながら、アナログAGCとデジタルAGCのレベルを調整して最適状態を探る事にします。

土日の2日間、AGCの動作ポイントの調整を行いましたが、アナログ検出のAGCはルーフィングフィルターとなるBW=6KHzのクリスタルフィルターしか利用できないので、2nd IFのFIRフィルターを通過した信号は、6KHzのバンド内にある信号で制御され、つねに音量がフワフワして、非常に聞きにくい状態です。 最終的には、アナログ検出のAGCは、2ndIFが飽和しない程度に弱くかけ、デジタル検出のAGCでたとえ+40dBの信号でも歪まないように深くかける事にしました。 この為、急激な強入力があった場合、頭で一瞬歪みますが、それは1回限りの歪ですので、我慢する事にしました。 さらに大きな信号や、話し方で強弱の激しいSSBの場合、RFゲインを絞る事にしました。

2021年IARU Foneに参加してみました。 送信は全く問題ないのですが、受信がダメですねエ。 送信から受信に切り替えた時、タイミングによってAGCがかかりっぱなしになり、頭の部分が聞こえません。 通常の交信では、大きな声を連続して出す事は少なく、AGC回路の時定数コンデンサの電圧は、次第に低くなりますが、コンテストの場合、つい大きな声で叫んで、即送信終了となる為、受信時より時定数コンデンサの電圧が高くなり、受信に切り替えたとき、音量が下がってしまうのが原因見たいです。 対策として、アナログ検出のAGC入力は、受信信号しかピックアップしないように結線を変更し、かつ、送受信の切り替え時に行うdsPICリセットに同期して、時定数コンデンサを強制放電させることにしました。 また、アナログ検出のAGCループは、時定数を長くして、スローコントロールにすると、聞きやすくなる事が判りましたので、この時定数を決めるコンデンサC52を3.3uFから33uFに変更しました。

  

FIRフィルターのディレー時間を短くしたら、AGCのアタックタイムも短くなり、もっと使いやすいAGCが実現できるかも知れないと、Tap数を49まで削減し、ディレー時間を1msec以下にしたもので実験しましたが、選択度を犠牲にした見返りに得られる改善度合いはかなり低く、また、従来のFIRフィルターにもどしました。

Newagcampadd

左は、アナログ検出のAGC回路を追加したdsPIC側の基板です。 なんとか、隙間を見つけマウントできました。

このアナログAGCを追加してから、この自作トランシーバーの了解度がTS-930やTS-850より良いという事もあり、7MHzのワッチはSSBもAMも、このトランシーバーしか使わなくなりました。

アナログによるAGCループがスローで動くと、信号強度に関係するDCレベルは、このアナログ回路のAGC電圧がほとんどとなり、dspの中で検出したデジタル信号のレベルだけで表示しているSメーターは実体と全く異なる数値を表示するようになりました。 Sメーターの為のDC信号はアナログ、デジタルの合成されたAGC信号を使用しないと、まともにSメーターは動作しません。 そこで、Sメーターの信号を合成信号から取り、かつSメーターテーブルをTS-850Sと同じ表示になるように校正しました。 また、従来有った送信時の信号強度表示は廃止しました。

 

時々、LCD表示と送信周波数が一致しないというバグを修正しました。

オーディオ周波数特性の低音を切りすぎていましたので、FIRフィルターを若干修正しました。 SSBではあまり効果はありませんが、AMモード時は70Hzくらいまで伸びました。

しばらく使っていると、出力波形が振幅変調を受けたように歪ます。原因を調べたところ、電源のSWingに使ったQ7の発振でした。 対策として、C23を0.47uFから10uFに変更しました。

これらの変更を網羅した配線図とマイコンソフトは以下の通りです。

 

最終更新日2024年11月4日

受信時のスピーカー音量が小さく、ずーと気になっていました。ちょうど、Dspicのメンテの為、AMとCWキャリアの微調整をする機会がありましたので、音量ボリュウームとスピーカーアンプの間に1石アンプを追加する事にしました。 部品箱をひっくり返しても2SC2712が見つかりません。やむなく高周波用の2SC3110で低周波アンプを作り、ボリューム最大で信号が飽和するくらいまで約12dBゲインを上げました。

SSB_generator12.pdfをダウンロード

7MHz_SDR-TRX11.pdfをダウンロード

7MHz_dspSSB_TRX_11.cをダウンロード

SSB_generator_12.cをダウンロード

float_TapAUDIOwide201_BPF_BL.hをダウンロード

float_TapUSBwide401_BPF_BL.hをダウンロード

float_TapLSB301_BPF_BL.hをダウンロード

float_TapCW301_BPF_HM.hをダウンロード

float_TapAM301_BPF_BL.hをダウンロード

float_Tap950_BPF.hをダウンロード

elekey_950HzMonitor.cをダウンロード

  

160m SSB送信機の記事はこちら

INDEXへ戻る

2021年4月23日 (金)

Step ATT (ステップアッテネーター)自作

受信機を自作していると、安定した微弱信号が必要になってきます。 信号発生器SGは以前、DDS ICで作って有ったのですが、ATTが無い為、受信機の調整には使いづらい状態でした。 そこで、秋月で小さなスライドスィッチを手配し、ATTの抵抗は全てチップ抵抗によるStep ATT(ステップアッテネーター)を作る事にしました。

Stepattsw

左は、今回、Step ATT用に手配した、2.5mmピッチの2回路2接点スライドSWです。 SWのスライド方向のピッチは2.5mmですが、2回路間のピッチは3.3mmであり、ユニバーサル基板が使えません。 従い、ガラスエポキシ両面基板を切り出して、穴あけ加工を行い、パターンはカッターで切り出しました。

インターネットを検索すると、Step ATTの自作例はたくさん出てきますので、このSWを7個並べ、2dBステップで最大84dBのATTを作る事にし、抵抗はπ型でE24シリーズで作ります。 チップ抵抗で作る為、最大通過電力は100mWくらいにしかなりませんが、受信機用なら、問題ありません。

下に配線図を示します。

Stepattschma

Att2db

左は、2dBのATTを1608タイプのチップ抵抗で構成したクローズアップです。 基板はカッターによる削り出しですから、見栄えは良くありませんが、回路図通り、配線できました。

手元に、測定器が無いので、どのくらいの精度で出来ているかはわかりませんが、7MHzの受信機の前に挿入すると、一応はそれらしく反応します。 チャンスがあれば、ネットワークアナライザでS21をチェックしてみる事にします。

 

Stepatt_back

Stepatt_top

厚さ0.5mmの銅板を金切りバサミで切って加工しましたが、側板を半田付けした事により、強度を確保する事ができました。

Stepattdata_2

 

上のグラフはネットワークアナライザによる実測データです。 100MHzくらいまで使えそうです。 -60dBの1MHz以下のギザギザはアナライザのノイズを拾ったもので、ATTが出している訳ではありません。

受信機を調整する時は、必需品になりますが、使ったスライドSWがちいさすぎて、ATTの切り替えはドライバーかピンセットで行う必要があり、非常に使いづらいです。 再度作り替える場合、SWを大きなスライドタイプにするか、スナップSWに変更しようと思います。 また、ネジ止めタイプのBNCコネクタは何度も同軸ケーブルを付けたり、外したりする内にゆるんできて回転するようになります。 これも次回はビス止め可能なフランジ式のコネクタに変更するつもりです。

 

INDEXに戻る

2021年3月13日 (土)

デジタルDC電圧計

[PIC DC100V ]

200Wのリニアアンプが完成しましたが、この電源は65V 6Aくらいの容量が必要です。 そのため、12V、24Vの固定電圧電源と、48Vの可変電圧電源、計3台を直列接続して、65Vの電源を構築する必要がありました。 固定電圧電源は、問題ないのですが、可変電圧電源は、リニアアンプ以外の機器の電源として、利用する事もあり、いざ、リニアアンプを使おうとすると、毎回、電源電圧の確認をデジタルテスターで行うと言う面倒がありました。 そこで、簡単なデジタル電圧計をリニアアンプに内蔵させ、常に電圧のチェックが出来るようにする為、デジタル電圧計を作る事にします。

使用するのは、PIC12F675という8ピンの8bitマイコンと、aitendoで99円で売れられていたLCDです。 このPICはピン数が少ないだけでなく、プログラムROMも、データ用RAMも容量が少なく、電圧計を構成できるか、不安でしたが、なんとか制限容量内に収まり、完成できました。

まず、回路図です。

Vmeter150_chema

測定しようとするDC電圧を抵抗で分圧し、それを10bitのADコンバーターでデジタル化し、その電圧値をLCDに表示するだけの機能ですが、PICの電源は5Vの3端子レギュレーターから供給されますが、この電源がOFF状態で、測定しようとするDC電圧がADの入力に加わった場合、PICがラッチアップする可能性があります。 そこで、PICの電源がOFFの状態で、測定しようとするDC電圧が印加された場合、AD入力にDC電圧が印加されないようにし、Q1でAD入力をショートし、PICの電源がONになったら、Q2でQ1をOFFにして、ADに電圧が印加されるようにしてあります。

この電圧計を完成させた状態で、PIC12F675のプログラムROM使用量は61%、データRAMの使用量は73%でした。

電圧表示は小数点第1位まで表示し、58Vの電源のとき、表示誤差は手持ちのデジタルテスターに対して+/-0.1Vの誤差でした。 ADCの都合から、測定できる最大電圧は100Vですが、10V以下なら、ATTの値を変更する事により小数点以下2桁まで表示する事も出来ます。

Vmeter150_0

上は、バラック状態で約43Vの電圧を測定しているところです。

この電圧計の校正は通常印加するDC電圧を加えておき、市販のデジタルテスターで電圧を読み、同じ表示になるようにVR1を調整するだけです。

これをリニアアンプに実装したのが以下です。

Vmeter150_1

このデジタル電圧計の最大の欠点は、LCDの視野角が狭い事です。 LCDを正面から見ても、文字が良く見えません。 LCDを下から見上げるようにすると、綺麗なコントラストで文字が見えます。 従い、リニアアンプに実装した時は、かなり斜めに設置し、正面からLCDを見たとき、LCDの下側から見上げる角度になるようにしました。

PICのソースコード V_Meter_DC100V.cをダウンロード  

INDEXに戻る

2021年2月18日 (木)

7MHz 200Wリニアアンプ 2

<RFパワーアンプ(リニアアンプ> [FET TR 自作 2SK1530]

スーパージャンクションFETの放熱の限界が見えて、200Wリニアアンプの開発は頓挫していましたが、今になって考えれば、FETを3個も小さな銅片に集中させた事が熱暴走の主因だったと気がつきましたので、まだ諦めきれません。 大きな放熱板にFET1石のみを半田付けした銅板を間隔を開けて実装すれば、200Wも可能かも知れません。いつか再トライしたいと思います。

スーパージャンクションFETの代わりに最新の高fTのトランジスターは使えないものかと、実験を開始しました。 トランジスタは全て秋月で入手できるものばかりです。 用意したのは、時間的な差はありますが以下の3種類です。

Trcomp2全て、オーディオパワーアンプ用ですが、沢山の種類の中から、fTが高そうな石をピックアップしました。 PCの大きさから、プッシュプル回路で、効率が50%とした時、1石のPC相当が出力電力となりますので、いずれも100Wアンプをめざし、それが実現したら、電力合成で200W出力を得ることにします。 今まで、出力の確認はLPFなしの状態で測定していましたが、歪波形の場合、効率が100%を超える事があり、あきらかに誤計測していますので、以降全て7MHzのLPFを通した後の出力をクラニシの電力計で測る事にします。

 

Trcomp2

上のグラフは、候補の3石でリニアアンプを構成した時の入力対主力特性です。VCCは40V、出力トランスは1:4のインピーダンス比に固定した時のデータです。 青色が実測値、赤色は理想特性です。 この中で、最も出力が大きいのはサンケンの2SC3519Aで、他の2石は20%以上少なくなりました。 従い、以降、2SC3519Aに絞って検討する事にします。 

Tramp1

この2SC3519AはVCC=50Vくらいから熱暴走が起こります。 オーディオアンプの場合、エミッターに抵抗を入れるのは常識ですから、この石も抵抗を入れる前提で設計されているのではと考え、以後、0.1Ωのエミッター抵抗を入れ、かつ温度検出用のダイオードは、TRと共締めするのではなく、コレクタフィンに密着させ、かつシリコングリスで覆う事で、70V電圧でも熱暴走する事はなくなりました。

2sc3519a_max

2sc3519a_pp_1

2SC3519Aを70Vの電源で動作させ、最大出力が得られるようにT3の巻き数比を調整した結果が上のデータです。 この時の最大効率は40%くらいでした。 5W入力で90W得られていますが、これはCWの時のみ利用出来る出力で、SSBの場合、少し歪みますが70Wくらいが限界と思われます。 Vccの電圧をこれ以上、上げると、負荷電流が3Aを超えるに伴い電圧が下がってきますので、レギュレーションを確保出来る限界です。 仮に80Vまで上げたとしてもSSB推定出力は91Wくらいです。

この回路で100W以上出す事が出来たら、2台用意して電力合成し、200Wを達成するつもりでしたが、あきらめました。

次は、SiCを含めて MOSFETの安いものが無いか探す事にします。

SiC構造で、1000円以下のFETを探すと、何石か候補が出てきます。 それらのspecを眺めていると、普通のSi構造のFETでも似たような特性を持つFETが、存在します。 

Fetcomp2

上の表に有るFETは、上から順に、E級アンプに良く利用されるIRF640、サムウェイがHF 500Wアンプに使用している2SK2482、JA1QVM OMがブログ上で紹介しているオーディオパワーアンプ用の2SK1530、1000円以下で買えるPd=150WクラスのSiC FET SCT10N120H。 一番下のSiC FETを使ったリニアアンプの記事は、まだ見つかっていませんので、本当にHFのリニアアンプに使えるかは不明です。

その中で、IRF640に注目しました。 このFETはEクラスアンプでの使用例はWEB上に沢山ありますが、リニアアンプに使った例を見た事が有りません。 specシートを見た状態では、Ciss以外、SiC FETに匹敵する数値を示すのに、なぜ使われていないのか? 手元にチップタイプのIRF640Nが2石有りましたので。これを使い確認する事にしました。

Irf640data 上のグラフは、IRF640Nをリニアアンプとして、使用した時の入力対出力特性です。 使ったチップタイプ(表面実装用)のFETを20mm x 30mmの銅板にハンダ付けし、この銅板を放熱板に固定したもので、温度補償用のダイオードは0.3mmの銅板に包んで、ドレインの近くにハンダ付けし、かつ、熱暴走を防止する為、ソースに0.1Ωの抵抗を入れてあります。 青色の直線がリニアリティOKの理想カーブを示しますが、赤色の実測データは、とてもリニアリティが確保されているとは言い難いカーブをしています。 このFETはスィッチング用ですから、VgとIdの間にリニアリティは必要なく、その特性は全く考慮されておりません。 Vddをもっと上げたら改善するのだろうかと、50Vまで上げ、5W入力を10W入力にしたとたん、FETが煙を出して死にました。  このFETではリニアアンプを作れない事が判りましたので、ここで検討は終了です。

そこで、IRF640はリニアアンプには使えないが、2SK2482や2SK1530はなぜリニアアンプに使えるのかをデータシートの中から、考察しました。

Fetcompidvg リニアアンプのリニアリティを見る場合、Vg対Id特性が一番重要ですので、上の4石のFETのVg対Id特性を抜粋しました。 IRF640と2SK2482はIdが対数目盛で作成されていましたので、IRF640のみ、リニア目盛に書き換えてあります。 このグラフを見ていると、どのFETでもグラフの線がほぼ直線になる条件は存在しますが、IRF640の場合、動作領域となるId 3A以下の部分では、直線となっていません。 またリニアアンプとして実績のある、2SK1530はその動作域(1A~5A)で、1A付近はアイドル電流でカバーするとすれば、直線に近くなっています。 特に2SK1530はオーディオアンプ用ですから、このリニアリティの確保に最重点を置いたFET設計になっているのでしょう。

こういう風にみると、SiCのSCT10N120Hもリニアアンプとしてそこそこ使えるかも知れません。 ただし、1000円を切ったとは言え、簡単に飛ばせる価格ではないし、どこのメーカー品を見ても、Vg対Idの温度依存性がSiに比べて4倍くらい悪化しています。 とりあえず、SiCではありませんが、通販サイトで入手した2SK1530で実験を再開する事にします。

190 x 165 x37mmのサイズの放熱板に2SK1530 2石と入出力トランスをマウントし、オリジナルの紹介回路図とは少し異なる回路で検討をスタートしました。 ファンは臨時に直径14cmの扇風機を使用しています。

I200w_2sk1530_2

最初、2石のアイドル電流の調整を1個の半固定VRだけにして、2石合計で0.8Aに設定したのですが、出力が出ません。 入力レベルを1Wにしても、電流だけは4A以上流れますが出力が有りません。 どうも出力トランスで、PPの出力がキャンセルされているようです。 そこで、2石のアイドル電流を個別に測ってみました。 一方が0.7A、もう片方が0.1Aで、0.1A側の出力は位相が反転せず、2石が同相となっていました。 結局、通販で買った4石のFETの特性はバラバラで、アイドル電流は個別に合わせないとアンプとして動作しない事が判りました。 バイアス回路を変更し、アイドル電流を個別に調整できるようにしました。

一応出力が出るようになりましたので、Vd=50Vと60Vでテストしてみました。 入力端子のSWRは1.7くらいです。

Data2sk1530_50v

Data2sk1530_60v

Graf2sk1530_50v

Graf2sk1530_60v

左上がVd=50Vの時の入出力データとそのグラフ、右上がVd=60Vの時の入出力データとグラフです。 Vd=60Vの時、5W入力時、195Wの出力が得られていますが、この測定が終わった直後にFETが熱暴走を起こし壊れました。 ダイオードによる温度検出で、温度補償を行ったつもりでいたが、不十分でした。 今まで、温度補償用のダイオードはFETの樹脂の表面に押し当てていたのですが、どうもうまく温度をピックアップしてくれません。そこで、FETのドレインに一番近い放熱板に押し当てる事にしました。 さらに、安全の為、ソースに0.05Ωの抵抗を挿入する事にしました。 出力が落ちますが、落ちたらVdを上げてカバーします。

Data2sk1530re_50v

Data2sk1530re_55v

Graf2sk1530re_50v

Graf2sk1530re_55v

温度補償用ダイオードの位置を変更し、ダイオードの数も4本にし、かつソースに0.05Ωの抵抗を追加した時のVd=50VとVd=55Vのデータです。 Vd=55V時に飽和しかかりの状態で205Wの出力が得られています。 ここで、ソース抵抗を入れた事により効率も向上しています。 リニアリティの実測データは、100W以下で、多少出すぎになっていますが、温度による差と考えられ、測定の時間差により出てきた数値と思われます。 従い、大きな歪はないと思われます。

使用したRFパワー計がクラニシのMAX200Wであり、長くパワーを印加できないので、オイル冷却のダミーと、コメットのSWRパワーメーターに変更し、60Vで熱暴走の有無を確認する事にします。

現在の状態での配線図は以下です。 トランスに使用したフェライトコアは配線図の中に書き込みました。 使用したケーブルはエーモンブランド0.75SQの自動車用低圧ケーブルで、ホームセンターの車用部品売り場で見つけたものです。

Sch2sk1530

2sk1530_60v

 左のデータはVd=60V時の入出力特性です。 200W出力を2分間キープした後で測定したデータとなります。 さすがに、200Wを2分間もキープすると、焦げ臭いにおいも漂いますが、熱暴走は起こらず、Idは次第に減少していく傾向にあります。 グラフデータを見る限り完全なリニアリティが確保された出力は170Wくらいですが、TSSで200Wの認証を受けるには、ちょうどぐらいの出力です。 

これから、実際のケースに収めて、エージング試験を行い、実用レベルを確かめる事にします。

 

 

 

 

200wpa_unit

従来の100Wアンプユニットを取り外し、今回の200Wアンプユニットをケースに収納しました。 LPFやアンテナ出力切り替えリレー及び、ファンの移動を行い、ぴったりと収まりました。

このケースインした後の確認事項は、電源からアンプまでの配線が長くなったことによる電圧降下と、ファンによる冷却効果です。 以下の配線図のごとく、配線し、順次確認していく事にします。

配線図 PWR-AMP200W_2sK1530.pdfをダウンロード

 

200wpa_unit_tuitate

ケースインした状態で、アイドリング電流の安定度の確認を行いました。 DC61Vの電源で、それぞれのアイドリング電流を0.41Aに設定、合計0.82Aとした状態で、無信号状態で、放置テストをしました。すると、次第にアイドリング電流が増え、3分後には0.98Aまで増えます。 この原因は、ファンの風が、温度補償用ダイオードに直接当たり、FETよりダイオードの冷却効果が大きい事のようです。 そこで、ダイオードとファンの間に、衝立を立て、ファンの風がダイオードに直接当たらないようにしました。すると、5分経過してもアイドリング電流は0.88Aどまりで、増加しなくまりました。

SDRトランシーバーに接続し、2信号特性を見てみました。 電源電圧は無信号送信時64Vです。 この状態で、アイドリング電流を各0.41A 合計0.82Aに合わせ直してあります。 

Sdr100wpep

Sdr140wpep

Sdr200wpep

 

左から順に100Wpep,140Wpep,200Wpep時の2信号特性です。 従来の100W機よりは改善しておりますが、200Wフルパワー時はかなりつぶれます。 マイクアンプリミッターによる出力制限を200Wに置いても、電源電圧や、ファイナルのFETで決まるリニアリティ悪化開始出力が200Wに近かったら、先頭波形がつぶれるのは止むを得ません。 

140waging

アンプのケースを完全にかぶせた状態ではありませんが、200Wで2分連続、140Wで30分連続のエージングテストを終了し、残すところ、ケースに完全収納し、実際の設置状態でのエージングテストを実施するのみとなりました。 左は、オープン状態でのエージング風景です。 200W連続の時のドレイン電流は下がり気味でしたが、140W時のドレイン電流は開始から終了までの間に20mA増加しました。 エージング終了時に入力をゼロにした時、急速に元のアイドリング電流に戻ろうとしますが、その時間は5分くらいかかりました。 

200wagingcomp

Botom_open

リニアアンプユニットにケースの上蓋をかぶせ、最終チェックです。 200Wで2分間、続けて140Wで30分間エージングした結果、200W時の電流変化はオープン時と同じでしたが、140W30分のエージングの間、電流の変化は5mA以下の減少となりました。 推測ですが、ファンによる風量は変化はないものの、ケースがかぶさった事により、風速が上がり、冷却効果を高めたものと考えられます。 140W出力から信号をゼロにすると、元のアイドリング電流に戻るのに、4分弱でした。 ケースをかぶせた場合、良くなっているようです。 放熱板の下の底板は右上の写真のように、大きな開口になっており、ここからエアーを吸い込みます。

140Wを30分間も連続送信するような実使用は無いでしょうから、以上のテストで、安心して運用出来ます。

200wsprias

200W出力時のスプリアスは左のようになりました。 7MHz近傍のスプリアスはdsPICトランシーバー由来のもので、リニアアンプ有り無しで変わりませんが、高調波は、第2高調波が-62dBくらい、3次以上はノイズに隠れて見えません。 いずれのスプリアスも新スプリアス規制に合致しています。

このリニアアンプは最大出力が300W以上あり、200Wに制限する為に、マイクアンプにリミッターICを使用し、大きなマイク入力が有っても、200Wを超えないようにして有ります。 また、CWのキャリアレベルも200Wを超えないようにdsPICの中で固定してあります。 AMの場合、AM100%変調時のピーク値が200Wを超えてもOKなので、キャリアレベルで60Wに設定してあります。 最終的な電源電圧は、12V+24V+36VのDC電源の電圧を調整し、アイドル状態で64.1V、200W出力時63.5Vで、200W出力時の入力は4Wになりました。

Pa200w_vmeter_2

DC電源を3台合成して使う関係で、電源電圧の監視がマストになりますので、上の写真のように、簡単なDC電圧計を追加しました。 この電圧計は+/-0.1Vの精度があります。 写真に写っているQRPトランシーバーの記事はこちらにあります。

 

2021年3月

そして、下記ブロックダイアグラムを添付してTSSに認定申請する事にしました。

SDR_200W_TX_BLOCK.pdfをダウンロード

TSSに申請して2日後に、SSBジェネレーターについて、質問がありましたが、最終的に上のブロック図のごとく修正して、1週間でTSSの認可が降り、即日(金曜日)、総通へ申請したところ、次の週の水曜日には審査終了となりました。 今回も指定事項の変更は無いので、即ON AIRできます。 ただし、実際にON AIR出来るのは、次の土曜日です。

その土曜日の朝からZeppアンテナを張り、200WでCQを出しましたが、QSOには至りませんでした。 コンディションが悪いですねエ。

 

2021年4月

トラブル発生です。 交信中に突然、電流が15Aとなり、FETがショートモードで死んでしまいました。 とりあえず、TS930SをONして、ファイナルだけは送った後、ケースを開けてチェックしました。 原因は、FETを止めるビス穴がバカ穴になっており、FETが放熱板に密着しなくなったものでした。 放熱板に切ったタップがバカになっており、きつくビス締めしてもFETが指で簡単に回転してしまいます。 

Fetholder

Nfresistor

対策は、左上の写真のごとく、アルミ板をコの字型に加工し、これを生きているタップ穴を使い締め付けました。 また、このFET交換に伴い、取り外したNF用のCR回路に使った1/6W 1KΩの抵抗が黒く焦げていました。 この焦げはPPの両方のFETとも同じようになっていましたので、サイズが3倍くらいある、公称1/4Wの抵抗に変更しました。 FET交換後、バイアス電流を64V時、0.4Aづつ合計0.8Aに合わせて、簡単な動作チェックを行い、200W出る事を確認して修理完了です。 今回の事故で2SK1530のストックがなくなりましたので、手配して置かないと危ないですね。

予想は的中し、もう片方のFETもビスバカで壊れてしまいました。 放熱板のアルミ材に粘り強さがなく、タップを切っても、綺麗に切れず、ボロボロになった上、長さの短いビスの為、タップ穴を貫通していなかった事が要因みたいです。 もう片方も写真と同じように追加加工を行いました。 このトラブルが発生したのは、2SK1530が入手できた次の日でした。 ラッキー!

そして、3回目のトラブル。 最初のトラブルの場合、FETの絶縁にはマイカを使用し、シリコングリスたっぷりで固定しましたが、2回目のFET交換時、シリコンラバーで絶縁しました。 そして、このシリコンラバーで絶縁したFETが、またも破壊しました。 修理は、最初のFETと同じく、マイカとシリコングリスで行いましたが、大丈夫だろうか?

後日、インターネットで検索すると、シリコンラバーよりシリコングリスの方が熱伝導は良好であるけど、マイカはラバーより劣るとの事。 使ったマイカはFETサイズの半分くらいのサイズで、単に絶縁するだけの機能とし、残り半分の面積をシリコングリスのみで絶縁した事になりますが、その効果はいかに。 5月連休中、毎日1時間以上の交信を行いましたが、異常なしでした。

 

2021年7月

順調に運用を続けてきたリニアアンプでしたが、6月末、交信中にFETがショートモード壊れてヒューズが飛びました。 当然、交信は尻切れで終了。 原因は、熱暴走のようでした。 翌日、FETを交換し、ダミー抵抗を使って、修理確認をしていたところ、電流は流れますが、出力が半分くらいしか出ません。 原因はなんだろうと、入力電力を10Wまで上げたところ、また、FETがショートモードで壊れてしまいました。 仕方なく、手持ち最後の2SK1530に交換したのですが、この交換したFETでも出力は半分しか出ず、最大出力は120W位で、効率も従来の半分くらいでした。

2現象オシロを持ってきて、ゲートやドレインの波形を観測すると、ゲートは正常ですが、ドレインの波形は、正弦波のピークが折り返してつぶれています。 どうも、終段のトランスT2の磁気飽和のようです。 今まで、パワーに対して、あまり大きくないフェライトコアを使用していましたが、プッシュプルのFETのドレイン電流が、フェライトコアの中で、直流による磁界をキャンセルさせていたので、大きな問題になりませんでしたが、FETを交換した事により、DCバランスが崩れ、そのため、フェライトコアが磁気飽和を起こし、FETの熱破壊が早まったのが原因のようです。 このリニアアンプの検討の初期段階で、アイドル電流の調整を1個の半固定抵抗で行った為、ドレイン電流がアンバランスになり、出力がさっぱり出なかった事がありましたが、察するに、この時もフェライトコアの磁気飽和が原因だったと思われます。

そこで、現在ZCATタイプのコア1個で作られているトランスをコア2個とし、かつ、インダクタンスも可能な限り少なくすることにしました。

従来のトランスのインダクタンスは129uHくらいでしたが、これを110uHくらいまで減少させ、ドレイン電流のアンバランスによる磁気飽和の起こる確率を1/2以下にしました。 また、トランスをバイファイラ巻きで作っても、完全なバランストランスは不可能ですので、FETのバラツキと反対のバラツキになるようにトランスの接続を選択する事にします。

Inoutvsrb 上のデータは、熱暴走防止対策として、ソース抵抗を0.05Ωから0.1Ωに変更し、終段のトランスT2のコアをZCAT-3035-1330 2個使いとし、巻き数は3.5ターンの状態で、巻線の接続を入れ替えたデータの比較です。 表にあるLは巻線のインダクタンスで単位はマイクロヘンリーです。 VGはアイドル電流を0.4Aを流すためのゲート電圧です。 数値的に大きく離れているわけではありませんが、これだけの差でフェライトコア1個の場合、磁気飽和を起こしていました。 左のデータは理想値に対して、200Wまで直線に伸びていますが、右側のデータは150Wを過ぎたあたりから、理想値より出力が伸び悩んでいます。 多分この伸び悩む原因がコアの飽和現象ではないかと思われます。

今回の修理は、上の左側のデータになる状態で収束させる事にしました。 200Wを出す為の入力は従来の4Wから4.5Wにゲインダウンしましたが、QRPトランシーバーの出力はMAX4Wのままで据え置き、最大180Wくらいで運用する事にします。

今回の修理で2SK1530の手持ちがなくなりましたので、手配して置くことにします。

200wpa_mk3

フェライトコア面に書かれた1530は1330の誤りです。訂正して置きます。

 

200wpa_3

配線図 PWR-AMP200W_2sK1530_2.pdfをダウンロード

 

このリニアアンプに2MHzのLPFを追加し、2-Band仕様にした記事はこちらにあります。

 

INDEXに戻る

2021年1月26日 (火)

中国製 ACDCスィッチング電源の修理

Acdccomp

 リニアアンプ駆動用に24V20Aという中国製のACDCスィッチング電源を購入したのですが、使い始めて2日目に誤って出力をショートしてしまい、煙を出して壊れてしまいました。 この種の電源には通常保護機能が有り、ショートが発生すると、自動的に出力OFFになる物が多いのですが、価格が安いので、そこまで対応していないようです。

物は、アマゾンで見かける左の外観をしたACDCコンバーターです。 購入金額は3580円でしたので、修理しても、修理代が高いのではと、1か月以上放置してありました。

 

最近少し、暇になりましたので、修理できないものかと、分解してみる事にしました。

   

Acdcb4_1Acdcb4_2_2

 

中を開けてみると、ファンの近くに黒焦げのFETかTRか判らない石が2石並んでおり、半田付けされた基板も黒焦げなっていました。 完全にすすけた表面を拡大鏡を使って調べるとメーカー名は不明ですが「13009」という文字が読めます。「13009」をインターネットで検索すると、「BJT 13009」という文字が検索されました。 BJTとは、バイポーラジャンクショントランジスタの事で、一般に言うトランジスターの正式名称です。 通販情報を探すと、ONセミコン製でRSでも扱っています。 400V12Aという極普通のトランジスタですが、実装されていた石は中国ブランド品みたいで、パッケージがTO-247タイプです。 ONセミコン製はTO-3Pタイプで少し形状は異なりますが、実装は可能です。  価格は1石183円、ただしMOQ=5ですから、税と送料を入れると1500円くらいになります。 

Acdcb4_3

このTR以外に壊れた部品がないか調べていくと、「茶黒金」のカラーコードのある抵抗が無限大Ωを示します。 表示から0.1Ω、形状から1Wくらいの抵抗ですが、断線しているようです。 幸い、3Wですが0.1Ωの抵抗は手持ちしていましたので、少し大きいですが、これに交換します。 それ以外の抵抗やダイオードはOKのようです。

RSからTRが届きましたので、まず基板をKURE印の接点復活剤で清掃した後、TRと抵抗を交換し、放熱板に取り付けない状態で、かつ無負荷でAC100Vを通電してみました。 グリーンのLEDが点灯し、テスターで出力電圧を当たると、24V出ていました。

Acdcafter_1_2

無負荷試験はOKでしたので、元のケースに収めますが、オリジナルは、シリコンラバーだけでTRを止めていました。 この際、シリコンラバーの裏表にシリコングリスを塗り、密着性を改善した上で、ケースインしました。

最後にDC出力端子に10Ω 10Wのセメント抵抗を接続し、通電すると、確かに24Vの電圧があり、セメント抵抗がみるみる内に変色しますので、即ACプラグを抜きました。 この試験で2.4Aの負荷でもOKでしたので、修理完了したと判断しました。

この24Vの電源と12Vの電源を直列に接続し、送信機の電源として使います。 送信機には10Aのヒューズを入れてあります。

 

2023年9月

問題無く使用出来ていましたが、2023年の9月に200Wのリニアを動かそうと電源ONすると、数秒間はOKなのですが、急速に電圧が下がりゼロになってしまいます。 修理にトライするも故障個所が判らず、断念。 この電源が無いとリニアが役に立ちませんので、新たにQUREブランドの24V20AのAC/DCコンバーターを購入して交換しました。

INDEXに戻る

2020年11月21日 (土)

7MHz 200Wリニアアンプ

カテゴリ<SDR> [7MHz FET 自作]

SDR用100Wのリニアアンプは完成し、すでにQSOに使っていますが、このアンプを収納するケースは200Wアンプも収納できるスペースを確保していました。 そこで、100Wリニアアンプと同様のスーパージャンクションFETを使ったリニアアンプにトライします。

スーパージャンクションFETを使ったリニアアンプの構造はすでに100Wリニアアンプの記事で紹介済みですが、今回は、整理を含めて、すべての工程を写真入りで紹介する事にします。

200Wアンプもコンベンショナルトランスを使いますが、まず、このトランス用のコアの選択です。 メーカーのカタログより、以下の3品種を候補に絞り、特性を取ってみました。

Coresform200w

Coreselect200w

左上が出力トランス候補の北川工業製GTFC-20-10-10で、これを8個並べた時のインピーダンス特性が左の茶色のグラフです。 真ん中はTDK製のZCAT2032で入力トランス用で、これを2個並べた時のインピーダンス特性が左の青色のデータです。 右上はトーキン製のESD-R-17S-1で、同じく入力用で、2個並べた時のインピーダンスと特性が左の紫のデータになります。 緑色のデータは、TS-930に使われているメガネコアの特性です。 これらのデータから、出力トランス用は北川工業に決めました。 一方、入力側は、従来の判定では、グラフデータが寝ていますので、ロスが多くて使用不可としてきたのですが、

Losstest200w

コアに左のような1ターンの1次及び2次巻線を施し、Vinに7MHzにセットしたアンテナアナライザーを接続し、Voutにハイインピーダンスのオシロのプローブを接続して、VinとVoutのレベル差を比較します。 すると、TDK製は-0.5dB以下の減衰に対して、トーキン製は、-6dB以上も減衰します。 いずれも、メーカー発表のデータシートからは優越が判定できなかったのですが、実測すると、はっきりとその差が判ります。 結局入力トランス用はTDK製で決まりです。(参考:コモンモードフィルターに使う場合、トーキン製が有利です)

トランスのコアがきまりましたので、コアをコンベンショナルトランスに組み立てます。

200wtrans

左上が入力用、右上が出力用です。 入力用も出力用もケーブルを挟める構造の分割コアでしたので、ふたつのコアをビニールテープで縛り、バラケないようにした上で、内側の穴に0.3tの銅板をパイプ状にして挿入し、両端をガラスエポキシ基板で挟み、半田付けしてあります。 これで、トランスのサイズが決まりましたので、アマゾンで手配したサイズW100 D80 H27の放熱板を含めて、構造設計をJW-CADで行いました。

200wamp_jw_2

基板サイズは150mm x 116mmとなり、アンプ部とBias温度補償回路をこの範囲にの中に実装します。

リニアアンプ部の回路図は以下です。

200wamp_schema

200Wの出力を確保する為、FETは東芝のTK12Q60W 3石パラレル、プッシュプルの6石構成とします。 このFETのPdは100Wありますので、全体のPdは600Wとなり、実力が半分としても300Wの放熱が可能です。 200W出力時の効率が50%とすると、熱損失は200Wですから、余裕でカバーします。 また、TSSが要求する定格出力200Wの4倍以下のPdをクリアーします。

パワーのロスを少なくする為、100Wの時、FETのソースに挿入した0.33Ωの抵抗は0.1Ωに変更しました。 この関係で、ダイオードをセンサーとした温度補償回路の能力が不足すると考えられるため、Bias温度補償回路のOPアンプのゲインを上げる事にします。

200wbaias_schema

ゲインは約2倍に上げ、Bias調整用VR1,VR2を最大にしてもBias電圧が6Vを超えないように、新たにVR5を追加してあります。 FET3石合計のIdをいくらにするかは、実際に動作させながら決める事にします。

次に3パラFETのマウント加工です。

Fetmount4_2

Fetmount2

左上は、FETを3石、横に並べて半田付けする1mm厚の銅板です。 サイズは20mm x 35mmです。 右上は、マウントするFETを整列させ両面テープで固定した上で、銅板の両端にこれも両面テーブで、左右の位置決めを行います。

Fetmount1

Fetmount0

左上は、FETのドレイン金属部分に予備半田をした状態。 右上は、FETを裏返し、銅板上に半田付けした状態です。 この銅板に半田付けする前に、銅板にも予備半田をして置き、100Wの半田こてで銅板を暖め、半田が溶けだしたら、3個のFETをその上に乗せ、位置決めしたい位置にすべらし、半田が冷えるのを待ちます。

この様にして、作ったFETマウントユニットが下の写真です。

Fetmount3

FETが少し傾いていますが、良しとします。

Raverset

Fetmount5

FETを放熱板に張り付ける前に、絶縁用のラバーシートを敷きます。複数のシートを敷く場合、多少隙間が有っても問題なしです。 そのラバーシートの上に、FETを張り付けた銅板をビス止めします。 この時、ビスにスプリングワッシャーを挿入しておきます。 熱により、絶縁ワッシャがつぶれて、銅板への密着が不足し、FETが熱破壊する事を防ぐ為です。

Fetsorcer

Tempsencer

FETのソースに0.1Ωの抵抗を配線し、3石のFETのゲートに直列に入る抵抗は、3.3Ωのチップ抵抗を3本パラにして、合計抵抗値を1.1Ωとしてあります。この基板の裏側の銅箔を使い、3石のドレインを結合します。 そして、銅板に巻き付けた温度センサー用のダイオードをセンターFETのドレイン部分に半田付けします。 これらの作業は100Wアンプと同じです。

Pwbmount

200wamptesting

左上が、マウント完了したパワーアンプ基板です。 この基板の左上に半固定抵抗が乗った小基板がありますが、これがOPアンプによるBias温度補償回路です。 右上は、実際にTS-930から7MHzのキャリアを加え、動作確認をしている状況です。

動作確認中に放熱板を冷やす、扇風機の電源を入れ忘れ、FETが熱破壊するという事故もありましたが、20Vくらいの電源電圧から、徐々にDC電圧を上げていき、35Vの時、最大出力225Wを確認できました。

以下、動作確認と効率アップの検討内容です。 ただし、まだ出力端にはLPFが入っていません。

200wampadj

上の表は、出力トランスの2次側巻き数、C14やアイドリング電流を変えた時の出力と効率です。 まだ、基板単体をバラック状態で動かしただけですが、電源電圧35Vにて、最大225Wの出力が得られ、その時の効率が52.1%でした。 ただし、10W入力時の出力は、完全につぶれた波形ですので、リニアアンプの出力としては使えません。 35Vの電源で、140Wがリニアアンプとしての実力です。

200wamptest1

そこで、100Wアンプのシャーシ加工を行い、200Wアンプユニットを収納できるように改造し、出力テストを実施しました。 残念ながら、35Vの電源で140Wしか出ません。 原因を確かめると、リニア電源の能力不足と、アンプユニット内の電源回路網に於ける電圧降下で、10W 入力の状態で、ファイナルのドレイン電圧が27Vまで下がっていました。 この内訳はリニア電源の出力が5Vダウンし、30Vしかない事、アンプの電源回路で3Vも落ちていました。 ユニット単体の時は、リニア電源はアンプユニット専用で、ファンやバイアス回路は別電源でしたが、これらの別電源をリニア電源からとったら、たった0.5Aの電流増加で、リニア電源のフの字特性が働き始めたものでした。 また、LPFの損失が10%くらいありました。 電源回路の再検討が必要になりましたので、しばらく休止です。

Acdc36v20a

電源容量不足が判明してから、1週間経ちました。 色々検討した結果、既成のACDCスィッチング電源を用意する事がコスト的に最良で有る事が判りましたので、今回、24V20Aの電源をアマゾンで手配しました。 価格は3600円弱でした。 これに、以前、AM200W機用に手配していました、12V30Aの電源をシリーズに接続し、36Vの電源を確保します。 電源をシリーズに接続した場合、合成電圧は、各電源の合計値になりますが、電流は、その中の最小定格電流に依存します。 12Vの電源の最大定格は30Aですが、24Vの最大定格が20Aなので、36Vの時でも、最大電流は20Aとなります。 2台のACDCを写真のごとく結合し、12V出力端子と24V出力端子を設け、QRPの親機は12V電源から、リニアアンプは36V電源から電力供給する事にしました。

200wamp_inputswr

電源の準備が完了しましたので、36Vの電源で、バイアスを再調整、アイドル電流を6石合計で500mAにしておき、今まで無かった、リニアアンプの入力部分に3dB ATTを追加した状態での入力SWRをチェックしてみました。 左の写真がCAA-500MK2による測定状態で、1.5くらいになりました。 また、今までの検討の中で、FANの風量に不足を感じましたので、FANモーターに加わるDC電圧を少し上げました。

36Vの電圧でリニアリティを確保した出力は150Wでした。、もちろん、入力を上げると180Wくらいはでますが、完全につぶれた波形です。 このACDC電源は最大で40Vまで電圧を上げる事ができます。 そこで、26V+14Vという組み合わせで、トライしてみました。 残念ながら、出力を確認する前に、26Vの電源を誤ってショートさせてしまい、バリバリという音と、煙が出て、26V電源は壊れてしまいました。 そこで、26Vの電源を従来のアナログ電源に変更し、acdcの14Vとアナログ電源の26Vで40Vの電圧を確保し、トライしました。 しかし、最大出力を得る前に、アナログ電源がショートモードで壊れてしまい、いきなり、57V+14Vの電圧がリニアアンプに加わり、アンプもショートモードで壊れてしまいました。  このアナログ電源はその後修理しました。 また壊れた24V出力のACDCスィッチング電源も修理し、復活しました。

200Wのアンプの前に、電源をちゃんと確保しないと先へ進めなくなりましたので、アンプは一旦休止し、電源を検討する事にします。 

40Vで10A確保できる電源が出来たので、この電源でトライしました。 残念ながら、半田付けした温度検出用のダイオードが溶けて外れるという事故が2回も発生し、当然、外れた時点で、FETは熱暴走し、壊れました。 小さな銅板に3石のFETを置いた事により、放熱容量が不足し破壊に至ったものでした。 スーパージャンクションのFETの限界が見えた状態でした。 結論として、スーパージャンクションのFET3石を1枚の銅板に張り付けるやり方では、リニアアンプは150Wくらいが限界と思われます。

 

配線図 PWR-AMP200W_1.pdfをダウンロード

 

この最初にトライした200Wリニアアンプは、結局実用レベルにはならず、再検討を加えた実用中の200Wリニアアンプの記事は次へ続きます。

7MHz 200Wリニアアンプ 2 へ続く。

INDEXに戻る

2020年9月27日 (日)

ツェップアンテナ(7MHz用)

<カテゴリ:アンテナ>

コンディションが悪い中、国内QSOがメインとなっている7MHzで、垂直ダイポールは、飛ばない、聞こえない、台風でフルサイズに伸ばせない、など使い勝手が悪い状態でしたので、臨時に仮設でき、ホームでも移動でもつかえるツェップアンテナを製作する事にしました。

インターネットで検索すると、沢山の情報がヒットしますので、工作は簡単です。

Zdant0

材料は40φの塩ビパイプと、1.5φのマグネットワイヤー(PEW線)です。 マグネットワイヤーを22ターン巻いて、11.3uHのインダクタンスとなりましたので、これに、5.1KΩのダミー抵抗を付けた状態で、7100KHzに共振するように、コンデンサの値を調整します。 調整した結果は、左下の配線図のようになりました。

Zdant3_3

Zdant1_2

 

実際にパイプの内側に取り付けられたコンデンサは、右上の写真のようになりました。

22Pは3KV、10Pは1KV耐圧の村田製です。 この状態で最小SWRは1.3くらいでした。

Zdant2

Zdant4

このユニットを高さ8mのベランダから2mくらい横に突き出した棒の先端に吊り下げ、そこから、LANケーブルを割いて取り出したAWG24のワイヤーを約20m伸ばし、水の無い池の上に展開し、7100KHzでSWR最小になるようワイヤーをカットした結果、切りすぎて最小SWRは7150KHzで1.3くらいになりました。 7200KHzではSWR1.5くらいですが、7000KHzでは、2.5くらいになってしまいました。もう少し低い方へシフトしたいのですが、調整は次の機会にして、とりあえずこのまま使います。 

このアンテナを使い、自作のトーランシーバによる1st QSOがSSB,CW,AMいずれも成功しました。

このツェップアンテナと従来の垂直ダイポールを比較すると、5エリア、6エリアや3エリアの局はツェップの方がSで20dBくらい高く受信できます。 1エリアの局は+10dBくらい、7や8エリアの局はあまり変わらない状況です。 4エリアはスキップして入感なしでした。 国内QSO用なら、垂直ダイポールは不要というのが判ります。

このアンテナは臨時仮設用ですから、平日は、片づけてしまいます。また移動運用するときは、ポールとこのアンテナを持っていく事にします。

次の週に再度架設するに当たり、給電部を10mの高さまで上げ、水平に約10m、さらに直角に折り曲げながら、斜めに約10m引き下ろし、一番端の高さが3mくらいになりました。

Zepp10mhight

 この際、ワイヤーの長さを前回より54cmほど長くした状態で測定したSWRは左のようになりました。 Zepp_cover

このアンテナは100W AM送信でも問題なく使えました。耐圧は400Wピークでも大丈夫でした。

コイルの防水対策として、右上の写真のように、熱収縮チューブで覆いましたが、効果はあるものの、良好とは言えませんでした。 リニアアンプを使う関係で、シャック内にあるマニュアルチューナーで、アンプと同軸とのマッチングを取ってごまかして使用しています。

このアンテナは常設ではないので、平日の夜、国内がオープンしても使う事が出来ませんでした。 そこで、常設のベントダイポールを作成する事にしました。

 

INDEXに戻る

2020年9月21日 (月)

リチウムイオン電池充電器(16.4V) & DCDC

 <カテゴリ 電源> [自作 14.8V]

移動運用用にdsPICを使ったSDR SSB/CW/AMトランシーバーを作りましたが、これを移動運用にて使用する為、リチウムイオン電池をベースとした、DC/DCコンバーターと充電器を作成しました。

リチウムイオン電池は、魚釣りの電動リールドライブ用の14.8V仕様で、数Aの供給能力があります。この電池のフル充電時の電圧は16.4Vあります。 トランシーバーは12V仕様ですので、16.4Vは高すぎます。 これを12Vに変換するDCDCコンバーターをくっつけます。 トランシーバーの消費電流は10W出力時4A、5W出力時2.8Aです。 このため、DCDCは3Aの定格の物を調達します。

Ilion_dcdc2

DCDCは秋月で扱っている5V 3Aのユニットに半固定抵抗を追加し、12V出力に変更しました。 このDCDCは3A定格ですが、3Aで電流制限がかかる訳ではなく、4Aくらいでプロテクタが動作する仕様になっており、短時間4A流しても12V付近の電圧をキープしています。

通常、市販のリグは、13.8Vの電源で定格出力が出るようになっていますが、今回の自作のリグは12.0Vにて、10Wとか、5Wが出るように設計しましたので、16Vから12Vまで4Vの電圧差を確保する事により、市販の安いDCDCを使う事ができました。

Ilion_charger1

一方、リチウムイオン電池の充電器も付属させています。 この電池の充電条件は、かなり厳しく、鉛蓄電池の充電のようにはいきません。 そして、この条件を満足させる為に、専用のICも存在します。 しかし、ほとんどが、4.1Vの1セル用の充電ICであり、とても16.4Vはカバーしません。 

そこで、定電流充電から定電圧充電と連続し、充電電流が終止電流となったら充電回路をOFFにする回路を作る事にしました。 上の基板が完成した充電回路です。 充電中は青色のLEDと赤色のLEDが点灯し、定電圧充電モードに入ると、赤色のLEDが消灯します。 そして、充電終止電流になると、青色LEDも消灯し、充電完了となります。

出来上がった、回路は、18Vから24Vくらいの出力の外部電源を接続すると、230mAの定電流で充電を開始し、電池両端の電圧が16.4Vになったら、定電圧充電に移り、次第に充電電流が下がり23mAを切ったら、そのレベルをLM311のコンパレーターで検出し、充電回路をOFFにし、過充電を防止します。  電池の外形サイズからして、定電流値としての230mAは少し小さいかもしれませんが、当分はこの値で使ってみて、異常がなければ、600mAくらいまでアップする事にします。

この回路は、最初の起動を行う為、電源投入初期に、Q1を0.5秒くらい強制的にONします。すると、230mAの充電電流が流れ始めて、充電開始状態になります。すでに充電完了状態なら、短時間の間に、自動的にOFFとなります。

電池、DCDCそれに充電回路を100円ショップで買った透明ケースに収め、移動運用時、リュックの中に詰め込めるようにしました。

Ilion_dcdc1

Ilion_dcdc3

 

移動運用の前に、ホームでこの電池パックのみで運用してみました。 モードはAMでしたが、高知の局と交信できました。 出力は4Wくらい出ていましたが、大きな電圧降下もなく大丈夫でした。

充電せずに2週間くらい、自作のトランシーバーでワッチしたり、時々送信していましたが、なかなか電圧が落ちません。受信時12.1Vくらい、5W出力時11.7Vくらいでした。 電池の放電状態を確認する為に、電池の電圧を測ると、12.8Vになっていました。 11V以下になると過放電状態です。 まだ少し余裕はありますが、ここで放電を停止しましたが、これに使っているDCDCコンバーターの入出力電位差は、受信状態(180mA)でも0.7Vしか有りません。 仕様書では、入出力電位差3V以上とありましたので、電池電圧が15Vを切ると、次第に出力電圧も下がると思っていましたが、そうはなりませんでした。 このままでは、過放電が起こっても判らないということなので、入出力の電位差が1.8V以下になると、白色のLEDが消灯するようにインジケーターを追加しました。

Oncharge0

Discharge0

充電時間は約7時間でしたが、早くするためにR11をショートして0Ωに、R6に4.7Ωをパラ付けして2.35Ωとし、定電流値を600mAまでアップしました。(配線図は未修正)

 

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

INDEXに戻る

2020年8月30日 (日)

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

 

カテゴリ<SDR> [SSB 7MHz トランシーバー 自作]

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

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

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以下に抑えています。

LPFの計算は以下のURLで行いました。

https://keisan.casio.jp/exec/user/1257655844

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

 

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

dsPIC側で取った修正

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

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

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

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

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

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

・AGC、TXoutの信号強度を16bitから10bitに圧縮して出力

 

PIC16F側で取った修正

・AGCカーブ補間処理の廃止、Sメーターカーブの見直し。

・TXoutのLCD表示レベルを拡大。

・CW受信時のオフセット周波数設定をLO2からLO1に変更。

・電源電圧を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信号特性を示します。一番左が、6.6Wpep、真ん中が8Wpep、右が10Wpepの出力の時です。 2信号特性を論議する定格出力の1/3の出力で、IMD-30dBくらいです。 良くはありませんが、悪くもないという状態ですので、これも良しとします。 この波形データはリニアアンプのTRがMRF477の時のデータで、2SK2796Lに交換した後は、この波形が10Wリニアアンプの記事のごとく、大幅に改善しております。

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のレベル設定に合わせ、オーバー変調にならないように、キャリアレベルを決めた結果、無変調で2.6W出力になっていました。 

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

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

Rxtotx_noc

Txtorx_noc

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

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

Rxtotx_addc

Txtorx_addc

この対策で、しばらく運用してましたが、たまに送信から受信に切り替わったとき、無音になるとか、受信から送信に切り替えた時、送信音声が大きく歪んで、全く了解できなくなるなどの異常が起こっていました。 いずれの異常状態も、dsPICをresetすると、正常になります。 PTTswのチャタリング対策はマイコン入力端子にコンデンサを追加しただけでは不十分なのかも知れません。 そこで、PTTswのチャタリングを吸収できるソフト変更を実施しました。 また、この不安定なPTTswを割り込みルーチンの中で参照する記述も見つかりましたので、SENDflg参照に変更しました。 

Idspictrxfront8

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

この最大の原因は、信号強度を表すデータは16bitですが、DACのデータは10bitしかなく、上位のbitデータがPWM出力されていない事でした。 PWM方式のDACは16bitのデータでも出力可能ですが、bit数を上げるほど、PWMの出力周期が長くなり、AGCのアタックタイムが長くなって、音声の頭で歪むという問題がありますので、PWM DACのbitは10bitに設定して、PWM出力用にレジスタへデータを送る前に信号強度を表す16bitデータを6回右シフトして10bitに圧縮してやると、AGCレンジが飛躍的に改善しました。 その上で、RF ATTを連続可変出来、かつこれをフロントパネル面で操作できるようにし、歪が発生する信号に対しては、マニュアルで可変する事にしました。 これに伴い、20dB ATTもRF3段目に置いた可変ATTも廃止しました。 AGCのループ内にPIC16Fのマイコンが入らなくなりましたので、PIC16Fに有った、AGC電圧の変化カーブを調整する、補間機能は廃止しました。 その上で、Sメーター用の補間機能を見直し、TS-850とほぼ同等のS表示が出来るように再設定しました。

強入力信号の頭で音声が歪むという問題に対して、AGCをかける回路をRF初段の1石のみとし、RF2段目、IF段のAGCは廃止しました。そして、外部ATTの可変が急峻過ぎるので、ゲインの変化がブロードになるように、ATT用可変抵抗の可変範囲を狭くしまた。 また、強入力が急に加わったとき、一瞬音量が下がる事を防止する為に、AGCアタックタイムを遅らせる目的でdsPICのPWM出力に入れてあった560Ωと1mHのコイルはショートしました。 送信時に受信のRFやIF段が生きているのは、都合が悪いので、2段のRFアンプと2nd IFアンプの初段のFETにミューティングを追加しました。 これらの対策でも、音声の先頭で歪むという現象は完全には対策出来ませんでしたが、+40dB以下の信号の場合、歪は気にならなくなりました。 +40dBを超えるローカル局の場合、ATTを絞る事によりOKとなりました。 (強入力が有った時、一瞬音が消える原因は、FIRフィルターによるデータの遅延でした。対策はここで行っています。)

しばらく実際に使用した感じは、了解度がTS-930SやTS-850Sより良い事に気づきました。 その理由は、感度が市販モデルよりやや低い事と、スピーカーの特性に合わせた、スピーカーアンプの周波数特性にあるようです。 特に、AMはTS850Sを受信機とした100W PWM機と交互に使う機会があるのですが、その聞きやすさは、断然、この自作機の方に軍配があがります。

 

メンテ中にDC電源が壊れ、いきなり57Vが印加され、リニアアンプのファイナルが壊れてしまいました。幸い壊れたのは、リニアアンプだけで、受信部やDSP周りは生きていました。 この壊れたDC電源は自作品ですが、過去にも、何度も壊れて57Vが出力される事故を起こしていますので、またいつ壊れるか判りません。 そこで、5.6Vのツェナーダイオードを3本直列にし、16.8Vのツェナーを作り、この電圧以上の電圧が印加されたら、5Aのヒューズが飛ぶようにプロテクタを入れました。 壊れたリニアアンプのTRは2SK2796LというFETに交換し、MRF477より、リニアリティが向上しました。

 

これらを網羅した、配線図とソースファイルは以下です。 QRP SWによるレベル設定を半固定抵抗に変え、かつdsPIC内で定義したCWとAMのキャリアレベルを修正しました。 SSBの定格出力が10Wのとき、AMの出力は、SSB出力の1/4である2.5Wに設定する必要がありますが、dsPICの中で、簡単にレベル変更出来るのはデータシフトによる+6dBか-6dBで、それ以外のレベルにしようとすると、計算をして、丸めるという操作が必要となり、面倒です。 その事もあり、アンプのリニアリティが向上した為、レベルをシフトだけで調整可能な、3Wに設定しました。

100Wのリニアアンプ接続時は問題無かったのですが、200Wのリニアアンプを繋ぐと、マイクアンプへRFの回り込みが発生しましたので、マイクアンプの入力にCRのフィルターを入れ、かつ、コネクタのHOTとGNDの接続が間違っていましたので、修正しました。

7000KHzと7200KHzの送信出力に大きな差があり、電力比で1.7倍くらいで、7000KHz側が大きくなっていました。 これは、7195KHzでMAX10Wに調整した後、周波数を7000KHzにすると、17Wを出る計算になりますが、実際には、7100KHz付近で10Wに調整しており、7195KHzで予想する出力が出ないと悩んでいた原因がこれでした。 出力差が生じるのは、Mixerで7MHzを作った後、7MHzのLPFを通しますが、最大ピークを示す周波数が7000KHz以下になっていたことでした。 この対策として、C24 680Pを490P(390P+100P)に変更し、バンド内でほぼフラットになるように修正しました。

 

前回作成したHDSDRダイレクトコンバーショントランシーバーでIMDや占有帯域幅を確認してみました。 これで測定する場合、必ずHDSDRの受信のAGCをOFFにして測定します。 AGCがONのままだと、受信強度に関係なく IMDが20dBくらいに固定されてしまいます。

Sc4wpep7002300

Sc04wpepnoise  

左は4Wpep時の2tone特性です。 変調周波数は700Hzと2300Hzです。 帯域内に発生した2次IMDは42dBくらいを示していますが、帯域外になる3次IMDは50dBくらいを示しています。

右はホワイトノイズによる変調です。 赤のラインがキャリア周波数になります。一応、きれいに3KHzの帯域内に収まっています。 この測定を最初行った時、200Hz-2800Hzのフィルターでしたが、3000Hz以上に若干の漏れが認められましたので、SSB用のFIR BPFの遮断周波数を250Hz-2750Hzに変更しました。 下のファイルもこの新しいBPFに修正してあります。

dsPICのRA4が過電流により壊れました。 従い、KYEinの入力はRB4に変更しました。

AGC回路の変更に伴い、3.3Vの電源ラインを変更しましたら、7193KHz付近で強力なビートが出るようになりました。 ミキサーとローカルオシレターと2nd IFアンプが結合して、発振を起こしたみたいです。 対策として、各電源ラインに個別にフェライトビーズを挿入しました。 この自作品の中で使っているビーズは、すべて村田S/SのBLM18タイプで100MHz 1KΩと言われるものです。

2ndif_lpf_data


夜になると、7200KHz以上のAM放送局が混信する原因が判りました。クリスタルフィルターを通過した後、9.8KHz台の2nd IFに変換された信号は、dsPICのADコンバーターへ入力されますが、この入力成分の中には、クリスタルフィルターで十分に減衰量を確保出来なかった、AM放送局の信号も含まれており、これが、ナイキスト周波数以上の成分であることから、エイリアシングノイズを発生させ、放送内容は判らないものの、混変調のような音で、混入しているものでした。 そこで、左に示すようなLPFを2nd IFアンプの前に追加し、この妨害を軽減させる事にしました。エイリアシングが発生する周波数は19KHz以上の成分になりますが、13KHzまでは有効な成分ですので、10KHz±3KHzを出来るだけフラットで通過させた後、19KHz以上を急激に減衰させるため、かなり複雑なLCフィルターになりました。

2ngif_lpf_unit_2

左の写真がそのフィルターユニットですが、3.3mHのチップインダクタとCH特性のチップコンデンサで構成し、基板の空いているところに実装し、配線しました。 2nd IFアンプの位置とかなり離れましたが、周波数が100KHz以下の範疇ですので、弊害はないようです。

以下のファイルの最終更新日 2021年12月26日 

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

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

SSB_generator_10.cをダウンロード

7MHz_dspSSB_TRX_10.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をダウンロード

 

これらのテキストファイルを編集する場合、MPLAB X上でデバッグする時は、MPLAB内蔵のエディタを使いますが、それ以外の通常編集では、サクラエディタを常用しております。 日本語仕様のこのエディタは直感的に分かり易く、もう10年近くも使っており、他のエディタへ変更できませんね。 IEをEdgeに変更したら、Edgeが勝手にテキストファイルとして開いてしまい、見にくいのなんの。 Edge側の言い訳は、セキュリティ対策で、外部アプリを起動してファイルを開く機能を制限した結果との事で、一度、PCのどこかに保存した後でなければ、サクラエディターでは開けないとの事。 不便になりました。

 

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

 

配線図や最新のソフトは以下のページからダウンロードできます。 

dsPICでSSBトランシーバー(AGCの改善)へ続く。

 

200Wのリニアアンプが完成し、200Wの出力が得られる時の、このトランシーバーの出力は4Wとなりました。 そこで、QRPモードにおけるCWやSSBのピーク出力を5Wから4Wに修正しました。

リニアアンプを2band化したところ、7MHzのリニアの感度が下がり、最終的にはCWで7Wの出力に修正しました。

このトランシーバーの後に繋ぐ予定の200Wリニアアンプの記事はこちら。

 

同じような構成で160mバンド用SSB送信機を作成しています。(2021年12月スタート)

INDEXへ戻る

2020年8月11日 (火)

dsPICでSSBトランシーバー(10Wリニアアンプ)

カテゴリ<SDR> [7MHz 自作]

dsPICをSSBジェネレーターとしたトランシーバーが、ほぼ期待通りに動き始めましたので、次は、これに接続するリニアアンプの検討です。 以前、HDSDR用のトランシーバーを製作したとき、MOS-FET IRFI510による10Wアンプを作っていますが、この時の電源電圧は18Vでした。 今回は、DC12Vで10Wの出力が得られるリニアアンプの検討です。

前回の経験から、MOS-FETによるリニアアンプのノウハウは理解していますので、まず、2SK2796Lにてトライしてみました。

2sk2796_vg_id

Tk2q60d_vg_id

2SK2796LのVgs対Idsの特性は左上のグラフデータのごとく、かなり急峻に立ち上がっています。 これは、100Wリニアアンプを検討した時のFKI10531と似た特性ですが、前回は35Vの電源でしたが、今回は12V電源です。 もしかしたらいけるかな?とトライしましたが、アイドル電流を調整中に熱暴走してあっけなく壊れました。 (この2SK2796Lは後述しますが、MRF477より良い結果が得られました。) 次に、このVgs対IdsがかなりなだらかなTK2Q60Dでトライしました。 熱暴走は起こりませんが、最大出力は3.5Wでした。 Rds 3.2Ωが効いて、出力はターゲットに届きませんでした。

MOS-FETによるリニアアンプは電源電圧を高くしないと、効率よくパワーが出てくれないようです。 そこで、トランジスタによるリニアアンプにトライする事にします。

ジャンク箱をかき回すと、3種類のトランジスタが見つかりました。 2SC1969  2SC1791  MRF477  いずれも、2石ペアです。 この中で、2SC1969だけは、放熱フィンがコレクタとなっており、放熱板に取り付けるとき、絶縁する必要があります。他の2品種はフィンがエミッタとなっており、放熱板にビス止めするとき、絶縁が不要です。 そこで、まず、2SC1791でトライします。

この2SC1791は175MHzで6W出せるVHF用のパワーTRです。 放熱板に取り付け、バイアス電流を1石当たり100mAに調整すべく、1mAから次第に大きくしていったのですが、50mAくらいになった途端、異常発振が起こり、Icは3Aくらいまで上昇し、DC電源のプロテクタが働いてしまいました。 結局、一度も増幅することなく、2石ともショート状態で壊れてしまいました。

1時間くらい落ち込んだ後、気を取り直して、 トランジスタをMRF477に変更しました。

10w_power_amp0

当初、2SC1792用のバイアス回路で、トライしたのですが、半固定抵抗を最大にしてもアイドル電流が2Aを超えてしまいます。 そこで、D2のRB521Sをショートして、再度電源ONすると、バイアス電流を可変する事が出来るようになりました。 このTRのデータシートによると、アイドル電流は1石当たり50mAと有りましたので、2石で100mAに調整した後、TS930Sから7MHzの入力を加えてみました。

最初に、5MHz、10MHz付近での異常発振です。 コレクタからベースへ,、お決まりのCRによる負帰還をかけて、発振はとまりましたが、7MHzを中心に+/-2MHzくらいで、ノイズフロアが異常に上昇します。 そのレベルは-30dBくらいです。 このTRのデータシートでは、ベースGND間に10Ωの抵抗を挿入し、入力をダンプしていますので、同様に、入力トランスの出力端を10Ωでダンプし、入力にコモンモードチョークを挿入すると、-50dBくらいまで改善しました。 このノイズフロアはTS-930Sでは-60dBくらいありますので、そこまでは減衰させる必要があります。 

10w_power_amp1

 そこで、ベースにシリーズ抵抗を挿入し、改善具合を調べてみました。

Rb10ohrm

Rb5ohrm_2

左上が10Ω、右上が5Ωのデータになります。この抵抗を大きくすると、ゲインが下がりますので、その分、このアンプのドライバー段に負荷がかかる事になりますが、明らかに10Ωの方が良好です。 動作は安定しましたが、ゲインが落ちてしまいましたので、コレクタからベースへ戻す負帰還抵抗を100Ωから220Ωに変更しました。 すると、また、ノイズフロアの上昇が発生しますので、10Ωはさらに22Ωへ変更しました。 そして、入力トランスの2次側に挿入した10Ωのダンプ抵抗を外してみたところ、ノイズフロアの増加はなくゲインが2dBくらいアップしました。 10Wの出力時の入力は0.5Wとなり、ドライバーの検討がやりやすくなりました。

上のスペアナデータでは、高調波が多く発生しておりますが、これは、LPFやシールド構造を検討して、対策可能ですので、後で対応する事にします。

10w_pa01_2

上の写真が、とりあえず安定に動作したリニアアンプのファイナル部分です。 これから、出力が1W程度のドライバーアンプを検討します。

Dspic_power_amp2

上の回路図が、1Wクラスのドライバーを追加したパワーアンプユニットです。 ドライバーの石はRD16HHF1 一石で構成しています。 このFETは12Vの電源で10W以上の実力がありますが、リニアリティを確保するために軽く使っています。 アイドル電流は、データシートより少し少ない400mAに合わせてあります。 AB級で動作していますが、最大出力状態でも0.65Wくらいの出力しかなく、通常はA級増幅です。 この状態で、ファイナルの出力は13W有ります。 少し出すぎですが、そのままです。

ドライバーの出力トランスは、受信部分で使用したTDKのコア2個を、ビニールテープで固定し、1次:2T 2次:3Tで自作しました。

Power_ampunit2

RD16HHF1には、銅板による放熱板を付けてあり、かつ、温度補償用のダイオードをシリコングリスでくっつけてあります。 ただ、1分くらいの13W出力テストで、あっちっちですから、ドライバーの構造を大幅変更し、ファイナルと同じ放熱板を使う事にしました。 二つの放熱板の間に、30mm角のファンが取り付けられています。

Idsp_pwr_unit2

Idsp_pwr_unit1

バラックの基板状態で、動作テストすると、スプリアスがかなり多く、最悪値で-45dBくらいになっています。 これは、各ブロックをシールドBOXで囲んだり、電源ラインのフィルターなどを検討する必要がありますが、それらは、ケースを確保し、実装設計の時、考える事にします。

13W出力時の全消費電流は4Aくらいです。 MRF477のデータシートには、40%の高効率と書いてありますが、ドライバー段や、30mm角のファンの電流を差し引いたとしても33%くらいの効率です。 多分、40%の効率は、最大PEP出力40Wの時なのでしょう。 電池運用で4Aはきついですから、QRPモードを設定する必要があるかもしれません。

 

2021年3月

メンテの為、パワーアンプをいじっていましたら、DC電源が壊れて、いきなり57Vが印加されました。 この事故の為、リニアアンプのMRF477がオープン状態で壊れてしまいました。 せっかく、使いこなしたTRでしたが、もう有りません。 そこで、このアンプの最初に実験した、2SK2796Lで、再トライする事にしました。 このFETのVg対Id特性は、最初に示したように、素晴らしいリニアリティを確保しています。 そしてCiss=180PF、Td-off=35ns、Rds=0.12Ωと、HFのアンプにも十分使えるSpecです。 前回諦めた理由は熱暴走でしたので、熱暴走が起こりにくくするため、ソースに0.1Ωの抵抗を追加する事にしました。 すると、12Vの電源でアイドリング電流を各0.15A(合計0.3A)にした後、入力を加えると、18Wの出力が得られ、14W出力までは、リニアリティを確保した範囲に収まります。 かつ、ゲインが6dBくらいアップしました。 ゲインはドライバー段のRD16HHF1のアイドリング電流を減らして合わせこみました。

MICアンプのリミッターが働いたレベルで10WのSSB信号が出るようにし、CWやAMはキャリアレベルを調整して、10Wと3W出力に設定しました。QRPの場合、CWにて4Wになるようゲインを調整してあります。

2sk2796amp_1

Sdr10wpep

10w_pa_2sk2796l_sp

ソースに追加した0.1Ωの抵抗は200Wアンプに使った3W品の為、FETより大きくなりましたが、なんとか実装できました。FETは11x16mm t=1mmの銅板に半田付けし、温度補償用ダイオードと一緒に、プラスチックビスで放熱板に止めてあります。 銅板と放熱板の絶縁はマイカ板とシリコングリスで処理しました。

下の2信号特性とスペクトルは10Wpep出力時のデータです。ピークがつぶれだすのは14Wを過ぎた出力からで、それ以下の出力で良好なリニアリティを確保しています。また、スプリアスは第3高調波が規定値ぎりぎりですが、一応スペック内です。

入力トランスの2次側センタータップのGND接続はなしとしました。 終段のFETゲートに加わるRF電圧のレベルの差が小さくなります。 この結果、T7は不要になるのですが、改造が面倒なので、そのままです。  また、リニアアンプ側の電源に挿入されていたラインフィルターは、この部分で1.5Vも電圧ダウンを起こしていましたので、廃止しました。 受信回路の電源に挿入されたラインフイルターはSWing電源を使用した時のノイズ除去に効果がありましたので、残しています。

温度の変化でパワーが増減しますので、ドライバーのソースに1Ωの抵抗を追加し、安定度の改善を行っています。 この抵抗追加に伴い、RD16HHF1のソースも放熱板からマイカとシリコングリスで絶縁しました。

変更された配線図は以下です。

10wpa_2sk2796

この2SK2796Lをプッシュプルで使う時は、特性が揃ったものを使用しないと、この記事のようなデータは得られない事が後日判りました。

dsPICでSSBトランシーバー(ケースイン) へ続く。

 INDEXに戻る

2020年7月26日 (日)

dsPICでSSBトランシーバー(CW,AMモード追加)

カテゴリ<SDR>

dsPICを使い、SSBジェネレーターと、周辺の回路を検討し、リニアアンプ以外、目標の機能が動作するようになりました。 動作確認できたのは、LSBとUSBの送受信機能だけで、当初の構想である、CWとAMのモードはまだ実装されていませんでした。(前回の記事

次は、CWとAMモードをdsPICの中に追加します。

Modelist_2

上の表は、dsPICの中に組み込まれた、Pre BPF、MIXER、Post BPFがモードにより、どのような動作をするかまとめたものです。 例えば、LSB送信モードの時は、200-2800HzのBPFを通った後、サブキャリアとのミキサーを経て、第2IFのUSBバンドのみを通過させ、LO2(24MHz)との第2ミキサーへ供給されます。 LSB受信モードの場合、PreとPostのBPFが逆になって音声信号を復調します。

CW受信時は、SSBのときと全く同じ動作ですが、Pre及びPostのBPFがCW用の狭帯域となります。 そして、受信の時だけ、LO2の周波数を950Hz低い方へシフトします。 CW送信時は、ADCの出力は使用しませんので、Pre BPFをスキップした後、サブキャリアと直流を掛け算して、約9.8KHzのキャリアのみをミキサーで作り、Keyでon/off出来るようにした後、これをAM用のPost BPFを通して、第2ミキサーへ供給します。 CWのトーン周波数は、当初、750Hzに設定していましたが、ちょうど、スピーカーの周波数特性のディップポイントにはまり、音量が伸びません。 そこで、低周波を手でスイープさせて調べたところ、950Hz付近が一番音量が大きくなる事がわかりましたので、950Hzに変更しました。 このスピーカーの特性も一種のフィルターですから、有効活用です。

Dsp110pctmod

AMの場合、ADCの出力にDC成分を加算して、サブキャリアとミックスすれば、AM信号が得られますので、ADCのレベルとDC加算レベルを調整して、ピークがSSBのピークを越えないAM信号を作り、AM用のBPF(LSB.USB全帯域をカバーするBPF)を通した後、第2ミキサーへ供給します。 この様にしてDSPの中で計算により作られたAM信号は、後段のリニアアンプが飽和しない範囲ならオーバー変調しても帯域幅が広がらない(スプラッタが発生しない)というメリットが有り、例え包絡線検波による復調でも、歪感が少ないという特徴があります。 左上の波形は約110%の変調波形です。 オーバー変調したAM波を聞いても、モガモガ音が少しづつ増えるだけです。  一方、AM受信は、Pre BPFのAM BPFを通した後、その出力のマイナス信号をゼロにします。 ダイオードによるAM検波と同じ理屈で、キャリアの正電圧のみを取り出し、この後にあるミキサーはスキップさせます。 当然、この信号には、キャリアのエンベロープ以外に多くの高調波を含みますが、これらは、Post BPFで除去され、音声信号のみが取り出せます。 この検波方式は、理屈では判っていましたが、はたして、ダイオードによる半波整流をソフトウェアで実行して、ほんとに音声信号が得られるのか不安でした。しかし、dsPICにその仕掛けをすると、ちゃんと音声信号を復調できました。 dsPICに入力された信号の1/2の振幅しか使いませんので、SSB復調時より音量が約半分になります。 よって、AMの時だけ、DACの前でデジタル信号の振幅を2倍にしています。


各モードの送信時のdsPIC出力のスペクトルは以下のようになりました。 上から順に、LSB、USB,CW,AMです。 出力レベルは、dsPICのDACが飽和しない安全なピークレベルに合わせてあります。 これらの確認をする上で、Wave Spectraは大変有効です。

Lsb_tx1

Usb_tx1

Cw_tx1

Am_tx1

CW以外、すべて1KHzでの変調ですが、1KHzのレベルはマイクアンプのリミッターレベルより1dBくらい低いところに設定してあります。 リミッターが動作するレベルでは、歪が3%くらいになりますので、その影響が出ないようにして測定しました。 リミッターIC SA2011の歪特性は、あまり良くなく、これよりさらにレベルを下げても、1%以下にはなりません。 このリミッターICが無い時は、0.3%以下の歪になります。

 

LSBとUSBのデータから、逆サイドバンドの減衰量は-70dB以上ありますので、問題なしです。 また、サブキャリアの漏れは、USBよりLSBの方が悪いですが、それでも-70dBくらいはありますので、これも問題なしです。 最初、このSSBのPost BPFはPre BPFと同じ251タップで設定していましたが、 モードを切り替える時、dsPICをresetする事にしましたので、PreとPost BPFのTAP数を合わせる必要がなくなりました。 よって、音声帯域の BPFを201TAP、サブキャリア帯域の BPFを301TAPに変更しました。

CWは、余計な信号が全くないきれいなスペクトルです。

AMは、100%変調した時のピークレベルがSSBのピークと一致するように、キャリアレベルと変調信号のレベルを調整しました。 この状態は、SSBの最大出力が10Wの場合、AM時のキャリア出力は2.5Wになる事を意味します。

Txout_lsb

Txout_usb

Txout_am

上の波形は、7MHz RF出力で、左からLSB、USB、AMです。振幅は、オシロスコープの入力ATT値が異なりますので、無視してください。

Image_lsb左は、7MHz LSB出力時の24MHz第2ミキサーで生じた24MHz LO2のキャリア漏れと、約20KHz離れたイメージ信号です。クリスタルフィルターのDipポイントに合わせこんだイメージ信号は、約-58dBくらいのレベルになっています。 一方、LO2漏れと表示してあるスプリアスは、第2IFを作る為に加えた約24MHzのキャリアLO2の漏れです。 このミキサーは、アナログ回路によるダブルバランスドミキサーとして、動作しますが、アナログ式によるバラツキの為、-48dBくらいしか減衰していません。 クリスタルフィルターにより、LO2の減衰は-30dBくらい確保していますので、ミキサーのバランス効果は-18dBくらいしかないという事です。 これは、必ず-50dB以下にしないと新スプリアス規制に合致しませんので、対策が必要です。 対策案と実施が出来たら、追記します。

 

対策出来ました。 下は、対策したクリスタルフィルター周りの配線図です。

Counterloreak_schema

Loreaklsb

クリスタルが3個つながる回路のGNDを全体のGNDから浮かし、33PでGNDへ接続。 配線図には有りませんが、T4とT5の間にシールドの仕切りをいれました。 そして、T4とT5のバランス巻線の中点は、10Kの抵抗を介して完全独立としました。 さらに、T5のアンバランスを補正する為に100Pを追加した結果、左のスペアナのごとく、LSB(逆サイド)は-62dB程度まで、24MHzのLO漏れは-57dBくらいまで改善し、新スプリアス規制をクリアしました。  この問題は、アナログSWの2G66周りの配線が、SDR-3で使っていいるアナログSW 1G3157と違うのが原因かもしれないと、昨日、アマゾンで10個311円のこのICを発注したばかりでしたが、不要となりました。

 

当初、dsPIC33FJで不足なら、dsPIC33CHに乗り換えるつもりでしたが、その心配は全くなくなりました。

次は、この回路の中に、エレキーを追加します。 昔作った、PIC12F675をそのまま基板上に載せますが、モニタートーンの周波数は、950Hzに変更します。

Pic12f675add

モニター周波数を変更する事と、Hi-tech CのソースをXC8に置き換える為、新規にプロジェクトを作って、コンパイル、プログラム書き込みをやったのですが、ベリファイの結果、0番地のデータが違うというコメントが付いてエラーになります。 2時間くらい悩んで、判った事は、電源電圧でした。 今回のトランシーバーのメイン電圧は3.3Vです。PIC12F675も3.3Vで動作しますので、PICkit3から3.275Vを供給して書き込みをしたのがいけなかったようです。 プログラム時は5Vの電圧で行い、実際の動作は3.3Vでやれば問題なしでした。 このプログラム書き込み中に他の回路へ5Vが逆流しないように、逆流防止のダイオードを追加しました。 なにせ、前回のエレキー製作は6年前の事であり、すっかり忘れていました。  そして、このドサクサの間に、バグも発見され、それを修復しました。 しかし、バグが有りながら、どうしてまともに動いていたのか不思議です。 このオリジナルソフトはスリープモードが有りましたが、トランシーバー内蔵という事で、少しでも応答を早くする為に削除しました。 この弊害か判りませんが、電源をONした時、一瞬、トーンが聞こえます。 対策として、電源やi/o条件が安定するまで、1秒間のディレーを入れ割り込み開始を遅らせました。 また、950Hzのトーン信号がダッシュとドットで少し違うというバグも修正しました。

CWのセミブレークインを検討する為、dsPICにresetをかけた後、ADCの割り込みが発生するまでの時間を調べてみたところ、約8mSでした。従い、キーdownしてから送信状態になるまで、最低8mSはかかる為、CWの信号は、余裕を見て、11mS遅らせます。 これは、送信信号が11mS遅れるのみで、モニター音や受信音にはミリセックレベルの遅れは有りません。

Cw50ps

Cw150ps_o

Cw150ps_4

上の波形は、CWによるセミブレークイン時の最初の信号の頭切れを観測したものです。 一番上のラインがPIC12F675からのキーイング波形です。 上から3番目が、キーイング開始に伴い、モードを即送信状態にしています。 そして、上から2番目のラインが、ディレーさせたキーイング信号です。 一番下が、実際に送信される7MHzのCW信号になります。 左が、約50字/分の送信時の単点で始まる符号です。 真ん中の波形は150文字/分のコンテストスピードで長点で始まる符号、一番右は、同じく150文字/分の短点で開始した符号です。波形で見る限り、先頭の符号で頭切れを起こしている形跡は有りません。

 

送信時のミキサー出力は、Q6バッファーアンプの出力にて、3Vppあります。ここは、電源電圧11Vで動作していますので、8Vppくらいまでは、アップできますが、そこまで上げるかどうかは、後段のリニアアンプ次第です。 このアンプの動作確認を夜やっていましたら、SSBの入力信号がゼロなのに、この出力が8Vppくらいあります。 

7mhzbpf_1k

しかも、かなり変動しています。 原因を調べると、7200KHz以上にあるAM放送局のキャリアがQSBを伴いながら、漏れてきているものでした。 クリスタルフィルター前のアナログSWの受信出力が、送信側へ漏れています。 対策として、RF段のFETのAGC制御電圧をゼロにすると、トータル100dB以上の減衰が得られますので、送信時、このAGC制御電圧をFETでGNDへ落す事にしました。 

左は、このRFアンプの前にあるBPFの特性です。 配線図の中で、コイルのインダクタンスが1uHとなっていますが、1.5uHの間違いです。 この状態で、夜になると、7200KHz以上のAM放送局のQRMを受けます。 これを少しでも改善する為に、共振回路のQをもう少し上げる事にしました。 コイルインダクタンスは4.7uHか5.6uH当たりがよさそうなのですが、あいにく、Qを管理したチップインダクタは2.7uHか12uHしか手持ちしていません。 帯域が狭くなり過ぎるかもしれませんが、12uHで作り直す事にしました。

Frontend_1

7mhz_bpf BPF部分の各定数は上の回路図のようになりました。 そして、このBPFの通過特性を自作のSGとオシロで実測した結果が上のグラフです。BPFのセンター周波数が7120KH付近で、-3dBの周波数が約7000KHzと7300KHzとなっています。あと50KHzくらい低い方へシフトしたかったのですが、ここでコン尽きて諦めました。

MODEセレクタのボタンを何回か押すと、受信音が聞こえなくなるトラブルが発生し続けていました。 dsPICのソフトの問題か?、コントローラーのタイミングの問題か? と丸1日検討した結果、原因はMODEスィッチのチャタリングでした。 このチャタリングの状況をデジタルオシロでモニターすると、4個あるプッシュSWの内、MODE SWだけが、極端にチャタリングがひどい状態でした。 原因が判ると、対策は簡単で、スィッチの両端に0.47uFのコンデンサを入れ、振動を抑制して解決しました。

前回の記事で、AGCの状況は確認していたのですが、何時間も7MHzをワッチしていると、局により、最初の言葉が歪んだり、音量が急に下がり、無音になるような現象が生じます。 さらに、最大感度が低い為、音量の強弱の差が大きく、特にS7くらいの信号はS/Nは良好なのに、ボリュームを一ぱいに上げても、聞き取れないという問題もありました。 そこで、2nd IF段に約20dBのゲインのあるAGC付きアンプを追加し、弱入力時の音量をアップさせる対策を行いました。 また、AGCのアタックタイムを調整する為に半固定抵抗VR7を追加しました。

2ndif_agcamp

Addvr_agcamp

左上が2nd IFに追加したAGC付きアンプ、右上が、アタックタイム調整用のVR7を追加した回路図です。 このハード変更をした上で、デュアルゲートFETのG2の電圧を変化させた時のATT量を調べ、AGC制御電圧が最適になるようにソフトで、加工しました。

Bf1211_agc

Agcv_curve

 

左上が、FETのG2の電圧を可変した時のデータで、G2電圧をリニアに変化させると、ATT量は対数で変化する事を示しています。 このため、急に信号が大きくなると、必要以上のATTをかける為、音量が消えるという現象が現れる事が判りました。 (これは、間違いで、本当の原因はFIRフィルターによる遅延時間の為、リアルタイムでAGCがかからないのが原因でした。) 言葉の頭が歪むのは、マイコンで処理する遅延時間が影響しているようで、実際に信号が大きくなってからAGCが効き始めるまで20mSくらいの遅れが有る事によるようです。アタックタイムの改善は、現状では無理ですので、せめてATTの効き過ぎによる過渡応答を改善する為に、検出した2nd IFのレベルを圧縮する事にしました。 

S4to30dbin

右上のグラフが2nd IFのレベルをAGCアンプへ出力する間に、レベル変換するカーブです。 このカーブはソフトで、補間して作ってありますが、実際にSSB信号を聞きながら、実験的に合わせこみました。 この対策で、+30dBくらいまでの信号は自然に聞けるようになりました。 左のデータは、S4のノイズ状態から、いきなり+30dB程度の信号が入ったときのデータですが、一番上の2nd IFの信号は、クリップなしです。 しかし、+30dBを超えるような信号の場合、頭で歪ますので、その対策として、アンテナ入力に20dBのATTを追加し、これを必要によりON/OFFする事にしました。

このAGCの問題は、トランシーバーとして完成度が上がるに従い、最大の問題点となって行きました。 そして、AGCの補間処理や、追加したFETへのAGCは廃止されました。 詳細は後述します。

ここまでで、気が付いた問題点は、対策完了しました。 このトランシーバーの受信時の消費電流は、12V電源で180mAです。 これは、移動運用を電池で行う時、役立ちます。 今まで、車で行けない、山頂や電波の飛びそうな場所へ、持っていけるSSBトランシーバーが有りませんでしたので、期待が持てそうです。

ここまでできますと、次は、リニアアンプです。 すでにHDSDR用のダイレクトコンバーショントランシーバーで10Wのアンプは作っていますが、これとは別に新たに作ります。 もちろん、すでに自作した100Wリニアアンプも使えるようにします。

SSBジェネレーター回路図 SSB_generator5.pdfをダウンロード

アナログ回路図 DSP-TRX5.pdfをダウンロード

ここまでのソフトです。 以下のファイルは全て開発途中のものであり、必要により更新されます。

SSB_generator_5.cをダウンロード

float_Tap950_BPF.hをダウンロード

float_TapAUDIO201_BPF_BL.hをダウンロード

float_TapAM301_BPF_BL.hをダウンロード

float_TapCW301_BPF_HM.hをダウンロード

float_TapLSB301_BPF_BL.hをダウンロード

float_TapUSB301_BPF_BL.hをダウンロード

7MHz_dspSSB_TRX_5.cをダウンロード

elekey_950HzMonitor.cをダウンロード  

 

dsPICでSSBトランシーバー(10Wリニアアンプ)へ続く 

 

INDEXに戻る

2020年7月18日 (土)

dsPICでSSBトランシーバー(製作開始)

カテゴリ<SDR>

dsPICの、基本機能が完成しましたので、トランシーバー全体の構成を、システムコントローラーとDSPがメインのデジタルブロックと、アナログブロックのふたつに分割した回路基板として製作を開始する事にします。

システムコントローラーの役目は、送受信周波数の選択とモード設定、送受信切り替え、その他付属機能をマイコンで実現するものです。

この回路の範囲は、dsPICによるSSBジェネレーターを中心に、システムコントロールマイコン、LCD表示部、受信時のオーディオ増幅部及びAGC制御回路から構成され、トランシーバーとしてのすべてのコントロール機能を受け持ちます。対応するのはPIC16F1938 8bitマイコンです。

HDSDR用のダイレクトコンバージョントランシーバーに使った同じLCDを使いますが、このLCDに使用されているICのスペックを詳細に調べたところ、LCDは5V電源でないと動きませんが、これを制御するマイコンは3.3Vでも、正常にH/Lの制御ができる事が判りました。ただし、条件があり、LCD側へマイコンからの一方通行の制御に限られますが、LCDからの読出しは行わないので、問題なしです。

dsPIC33Fのi/oをPIC16Fメインマイコンで制御する訳ですが、片方のPICへPICKit3を接続しただけのとき、及び、メインマイコンからdsPICへResetをかけたときなど、二つのマイコンのI/Oの状態が不明の為、Lの出力端子にHの電圧が接続され過大電流が流れるのを防止する目的で、必要な端子には、通常動作で邪魔にならない程度のシリーズ抵抗を挿入し、保護してあります。 最初、この保護なしで接続した為、配線ミスも加わり、RC1の入力回路を壊してしまい、その反省からです。 従い、当初RC1に設定してあった、PTT入力は、RC5に移しました。

dsPICの出力は、DACLが受信時のオーディオ出力で、ボリュームを経由してスピーカーを鳴らします。 DACRは送信時の出力で、9.8KHzのサブキャリアで変調された信号を、次段の24MHzミキサーへ出力します。 こうする事により、アナログSWを1回路省略できます。

一方、アナログ回路は、RF回路、クリスタルフィルターを挟んだ、ふたつのミキサー回路、およびマイクアンプ、送信用バッファアンプ等で構成し、下の回路図のようにまとめました。

7mhz_dsp_trx4

Filterkit

この回路を構成するフィルター部分はブロックとして作成し、簡単な特性のチェックも行っています。

24MHzのクリスタルフィルターは前回の記事で取り上げたように、スペアナで実測したものを、左の写真のように組み替えました。 使った4個のフェライトコアはTDK HF70BB 6.4X5X3.2で、巻き数は4:4:8ですが、バイファイラの巻き線仕様はSDR-3と同じです。

受信のRFアンプの先頭に置く7MHzのBPFもブロック化し、あらかじめ、特性を確認してあります。 7MHz LPFはミキサーの前に置くものです。  

Micampf

青いコイルは40mHのインダクタですが、マイクアンプの出力に置き、3KHzのLPFを構成させます。このLPFは、この後、ADコンバーターへつながる事になりますが、ADコンバターで発生するエイリアシングを防止する為、エイリアシングが発生始める19.5KHz以上で、-50dB以上の減衰を確保します。 このフィルターとマイクアンプ全体の周波数特性は、左のグラフの青色の線になります。 そして、SSBジェネレーター内のBPFにより、実際に送信される周波数特性は、赤色のグラフになります。 700Hzより1800Hzのレベルを2dBアップさせ、少しでも了解度が向上するように細工しています。

約24MHzのLO2と約17MHzのLO1はdds IC Si5351Aで作ります。 このプログラムは、以前HDSDR用のダイレクトコンバージョントランシーバー用として作った事がありましたので、それをアレンジして、可変のLO1と固定のLO2を同時に発生させています。 この出力をそれぞれ、位相反転させ、高速アナログSW 2G66をスィッチングし、ダブルバランスドミキサーを構成しました。

ここまでの回路図には、まだリニアアンプは含まれていません。

そして、この回路図状態で、配線完了した2枚の基板が以下です。

Dsp_trx_pcb_top

Dsp_trx_pcb_back

まだ、配線が完了しただけで、配線チェックも、通電テストもやっていませんが、まず、システムマイコンを動作状態にし、DSP部分、LO、ミキサー部と、順にチェックとカット&トライを繰り返しながら仕上げていく事にします。

 

そのシステムマイコンの動作確認を行いました。 かなりの配線ミスや、配線図自身の間違いがありましたが、とりあえず、動き出しました。

Idspictop0左は、LCDとロータリーエンコーダーを接続して、動作チェック中のシステムマイコンです。 周波数表示とモード表示、RIT表示、Sメーターの数値による表示など、機能しております。 

今後、DSP部分、Si5351AによるLO回路、ミキサー回路、MICアンプなどの動作確認を少しずつ進めていく事にします。 すべての回路機能を確認できるまでは、仮のシャーシとパネルを用意し、回路の改修が簡単にできるようにしておき、完成した時点で、どのようなケースに収めるか考える事にします。

7mhz_ssb_trx1

木製の板の側面にアルミ板をねじ止めし、仮組の回路ができましたので、dsPICとSi5351Aが正常に動作できるまで確認できました。 回路図の間違いもありますが、それ以上にコネクタの1番ピンの位置が間違っているのが多いです。 幸い、基板から煙が出るほどではありませんでしたが、この間違いを修正するのは、一度挿入したコネクタのリード線を引っこ抜き、正しい順序に挿入しなおすだけなので、手間はかかりませんでした。

DDSのSi5351Aの発振周波数を周波数カウンターで確認したところ、第2LOの周波数は、24006766Hzでないとダメなところが、24006416Hzとなっていました。 そこで、ソフトの中で定義した SI5351_XTAL_FREQを 24999633Hzに修正し、ぴったり一致させました。 この校正で、第1LOの周波数も校正されますので、+/-0.1ppmの周波数誤差で、運用できます。

アナログSWの2G66の半田付けのトラブルや、1番ピンと8番ピンの逆付けなどのトラブルがありましたが、自作のSGを使い、アンテナからスピーカーまでの受信回路に信号を通す事ができました。 日を改めて、7MHzのアンテナに接続して、受信テストです。

Agc_amp

最大感度が市販のトランシーバーより悪いですから、雑音の大きさは、断然小さいのですが、とにかく聞きにくいのなんの。

原因はAGCの調整がうまくいっていないようです。 当初、AGCのアタックタイムとリカバリタイム、AGCレベルなど、すべてソフトで対応しようと意気込みましたが、半日でギブアップ。 昔ながらのアナログ回路で作ると、これが、いとも簡単に、TS930レベルの聞きやすさになりました。 左が、そのAGCアンプですが、教科書に出てくる回路と少し違います。通常は、高速に充電して、ゆっくり放電させますが、この回路は逆です。高速に放電して、ゆっくる充電させます。 ICはグランドセンスタイプのLM358ですが、レールtoレールタイプのOP-AMPではないので、出力レベルを5V確保しようとすると、電源電圧は、最低6.5V必要になります。 そこで、78L05の3端子レギュレーターのGND端子にLEDをシリーズに入れ、約1.8V電圧をかさ上げし、6.8Vの電源を作って解決しました。 

Agcv_output

しばらく、受信テストを行っていると、+40dBくらいの強い局を受信すると、音声のピークで歪ます。 原因を調べると、時定数セット用に導入したダイオード両端の0.6VのVfの為、OP-AMPがフルスイングせず、AGC電圧が2.5V以下にならない事でした。 対策として、OP-AMPにオフセット電圧を加えるようにオフセット調整用の半固定抵抗を追加しました。 

左のデータは、上から順に、dsPICの入力となる第2IFのレベル、その下がdsPICのDA出力、その下が、コントロールマイコンのDA出力です。 dsPICの出力と、コントロールマイコンの出力は、同じアナログ信号ですが、極性が180度ことなります。 そして、一番下が、デュアルゲートFETのG2をコントロールするAGC電圧となります。 このAGC電圧は0Vから5.5Vくらいまでフルスイングできるようになりましたので、実際にSSB信号を聞きながら、一番聞きやすい状態になるよう、オフセット電圧調整用のVR4を調整する事にしました。  このオフセット最適状態で、電源ONすると、音声が出始めるまで5秒以上かかります。 原因は、OP-AMPの電源がONされてから、出力が5Vになるまで、ゆっくりと上昇する事によります。 対策すると大げさな回路追加が必要ですので、そのままです。

Uew_short

トラブル発生です。電源ラインがショートして、5V 3端子レギュレーターがあっちっちです。 最初どこがショートしたのか判らず、焦りましたが、原因はRFアンプのトランスにまかれた、UEW線の被覆が破れ、これが基板に張り付けた銅箔にタッチしたものでした。 このUEW線はルーターで強力によりを入れた為、ウレタン被服に傷がついていたようで、コイルが銅箔に密着したとき、ショートしたみたいです。 対策として、トランスと銅箔の間に絶縁テープを挟み込みました。 これで、強く押し付けてもショートしなくなりました。 最初から、この部分のみ、銅箔をカットしておけば良かったと、後悔しています。

1日中、7MHzのSSBをワッチしてみましたが、HDSDRの時の了解度と、この回路の了解度は、比較にならないほど、この回路が良い事が判りました。 ただ、トータルゲインが不足しますので、ノイズと同等レベルの信号は、音量ボリュームを一ぱいに上げないと良く聞き取れません。しかし、聞こえたら、ちゃんと了解できます。

とりあえず、受信はこれくらいにして、送信の確認に入ります。

Lsb_txout

マイクアンプのベースバイアス抵抗を決定し、次の、リミッターアンプの動作確認を行い、LCRの3KHz LPFの実測による定数見直しを行った結果、リミッターが動作した時の最大値は2Vppとなり、これがそのままdsPICのADCへ印加されます。 そして、DSP内部でサブキャリアとMIXされ、第2IF、第1IFを経て、取り出された7MHzのLSB信号が左のスペアナデータです。 外部に20dBのATTが入っていますが、それでも-22dBmくらいの出力レベルが得られました。  この信号をTS930で受信してみると、きれいなSSB信号として復調されます。

送信モードに於いて、dsPICの出力をチェックすると、dsPICの入力の1/4しか有りません。 せめて、入力と出力レベルが同じにする為、DACに入力する前に、データを左シフトを1回行い、データを2倍にして、出力させ、dsPICのDAC出力につながっているOP-AMPで2倍し、元のレベルに戻す事にしました。 これは、受信時でも効果がありますので、受信時の音量不足対策にもなります。

 

このように、送信ブロックは意外とあっさりと完成してしまいました。

これから、使用頻度を上げていくと、改良事項も出てくると考えますので、出てきたら、アップデートする事にします。

以下の配線図は、いままでの対策を盛り込んだ最新バージョンです。

システムコントローラーとDSPブロック回路図 SSB_generator4.pdfをダウンロード

アナログ部分の配線図 DSP-TRX4.pdfをダウンロード

 クリスタルフィルター前後のトランスT4,T5の巻き数が間違っています。 正しくは8:4:4及び4:4:8です。

 

dsPICのソースファイルです。

SSB_generator_4.cをダウンロード

float_Tap10kAM_BPF.hをダウンロード

float_Tap10kLSB_BPF.hをダウンロード

float_Tap10kUSB_BPF.hをダウンロード

float_Tap2800BPF.hをダウンロード

コントローラーのソースファイルです。

7MHz_dspSSB_TRX_4.cをダウンロード

これらのソースは開発始めたばかりの状態ですから、完成度は低いです。

 

dsPICでSSBトランシーバー(CW,AMモード追加)へ続く

  

INDEXに戻る

2020年6月13日 (土)

dsPICでSSBトランシーバー(SSBミキサー)

カテゴリ<SDR>

dsPIC33FJにて、AD変換、デジタルLPF、DA変換の基本動作が出来るようになりましたので、このデジタルLPFを音声源信号のBPFに変え、その後ろにサブキャリアによるミキサーを追加する事にします。

サブキャリアの周波数は自由に決められる訳ではなく、ADCのサンプリング周波数に依存します。 サブキャリアの最高周波数は、サンプリング周波数の1/4で、これより1/2づつ低い周波数、1/8とか、1/16の周波数になります。

今回のADCのサンプリング周波数は39.0625KHzですから、サブキャリアは、その1/4の9.765625KHzとなります。 サブキャリアとしては、10KHzとか12KHzのようなキリの良い周波数にしたくても、dsPICのクロック条件などにより、このような半端な周波数になってしまいます。 しかし、今では、Hz単位で任意の周波数を発振させられるDDSがありますので、中途半端なサブキャリアでも、高周波IFに変換する際、キリの良い周波数に変換できますから、支障は生じません。

まず、ミキサーの前に、SSB信号として必要な音声帯域のフィルターを用意します。 今回は61TAPの200-2800HzのBPFを用意しました。

Bpf2002800

上は、ホワイトノイズを入力した時の、BPFの様子です。低域のキレが良くありませんが、最終的に、SSB信号を取り出せるようになったら、TAP数や遮断周波数をトリミングしてみるつもりです。

この後に、ミキサーを繋ぎますが、まず、サブキャリアの信号を作らねばなりません。 サブキャリアはADCのサンプリング周波数の1/4としますので、Timer3のタイミングでADCが出力するたびに、1/4サイクル分のサイン信号をADC出力に掛け算してやれば良い訳です。

一番簡単な4分割のサイン信号は{sin0度、sin90度、 sin180度、sin270度}で、これを順番に掛け算する事になります。 この数値を実数で表すと{0, 1, 0, -1}であり、HEXで表すと{0x0000, 0x7FFF、0x0000, 0x8000}となります。 この4つのデータをリング状にして、ADCがデータ出力する都度、順番に掛け算をさせる為に、リングメモリーが必要になります。 dsPIC33Fの中には、リングメモリーを2つ作る事ができますが、これは、ミキサーの前のBPFと、ミキサー後にUSBもしくはLSBを切り取るBPFで使いますので、ミキサーでは使えません。 そこで、このリングメモリはアセンブラで直接作っています。

1khz_mixing_2

1khz_mixing_wave

上のスペクトルは、1KHzの音声信号とサブキャリアをミキシングした時の、ものです。 本来はサブキャリのレベルはゼロにならなければなりませんが、ADCに直流成分が含まれており、これが為に、キャリア漏れの現象が生じているものです。 ADC入力に与える直流バイアスを調整する、多回転可変抵抗で、これをキャンセルするポイントを見つける事はできますが、かなりクリチカルです。 デジタル処理だから、調整箇所は無いと思っていましたが、これは誤算でした。 DSB信号から一方のサイドバンドだけを切り取るとき、サブキャリアは、問題ないレベルまで減少することを期待する事にします。

左上の波形は、上が、ADCの入力である1KHzです。下はサブキャリアで変調されたDSB信号です。

10khz_mixing

上のスペクトルは、ホワイトノイズを変調した時のDSB信号です。 ミキサーの前にある61TAPのBPF(ファイル名はLPFですが、実体はBPFです)の特性が、サブキャリアを中心に両サイドに広がっています。

ここまでのソフトは以下です。

SSB_generator_1.cをダウンロード

float_Tap2800LPF.hをダウンロード

FIRフィルターのDSPアセンブラの意味を以下に示します。

//FIR LPF処理
asm("mov _repeat3k_Num,W11"); //リピート回数をW11にセット
asm("mov _Tap_coef3k_adr,W10");//TAP係数格納の先頭番地をW10に格納
asm("mov W0,[W8++]");//W0のデータをW8が示すアドレスにコピーした後W8を+2する。

asm("clr A, [W8]+=2,W4,[W10]+=2,W5");//アキュムレーターAをクリアし、
          //W8が示すアドレスのデータをW4にコピー後、W8を+2する。
          //W10が示すアドレスのデータをW5にコピー後、W10を+2する。
asm("repeat W11");//次の行をW11の回数分繰り返す。
asm("mac W4 * W5, A, [W8]+=2, W4,[W10]+=2,W5");//W4とW5 を掛け算し、結果をアキュムレータ―Aに加算
           //W8が示すアドレスのデータをW4にコピー後、W8を+2する。
           //W10が示すアドレスのデータをW5にコピー後、W10を+2する。
asm("mac W4 * W5,A");//W4とW5 を掛け算し、結果をアキュムレータ―Aに加算
asm("sac A,W0");//アキュムレーターAのデータをまるめ処理してW0にコピー

asm("mov W0,W4");//W0のデータをW4にコピー

 

プログラム上は、このミキサーの後に、281 TAPのBPFを挿入し、新スプリアス対応可能なSSB信号を取り出します。 追加するBPFはPre BPFのTAP数とTAP係数が異なるだけで、そのプログラムの構成は同じですから、Pre BPFの部分をコピペして、必要な修正を行うだけで、楽勝と思っていましたが、落とし穴にはまり、一日棒に振った後、なんとか解決して出てきた出力のスペクトルは以下です。

10khlsbspectra1

約9.8KHzのキャリア周波数を持つ、LSB信号のみを取り出し成功です。 後は、Pre BPFとPost BPFの設定値を見直し、送信に耐える特性にした後、不動在庫の24MHzクリスタルを使い、クリスタルフィルターを作り、24MHzの中間周波数を作ります。

ここで、今回遭遇した落とし穴を紹介して置きます。  結論は、リングメモリーを制御するワーキングレジスタを指定した後は、そのレジスタを、他の用途に使ってはいけないという事でした。 今回、Xメモリー域とYメモリー域に、各1組、合計2組のリングメモリーを設定し、Xリングメモリーのコントロール用にW8を指定しました。 この時、Yメモリー域に配置した、TAP係数の読み出しの為にW10を使いました。 ここまでは良かったのですが、 Yメモリー域に配置したリングメモリーのコントロール用にW10を指定したら、Post BPFが動かなくなってしまいました。 結局、YリングメモリーのコントロールレジスタはW11とし、かつ、Xメモリーに配置したTAP係数の読み出しはW9を当てる事で解決しました。 (参考:W8,9はXメモリーのアドレス用、W10,11はYメモリーのアドレス用として設定されている)

今やろうとしている、この方法は、昔、リング変調器と455KHzのメカニカルフィルターでSSB信号を取り出していた時の構成を、最新のデジタル技術で出来るようにしたもので、この基本形は1999年くらいから提唱されていたようです。 「おじさん工房」が提案した、第4の方法のSSBジェネレーターの考え方も、これと同じですが、IFに変換した時のもう一方のイメージを、ラフなクリスタルフィルターでカットするというアイデアが振るっています。 そこで、次はこのクリスタルフィルターの検討になります。

LSB信号を取り出すまでのソフトは以下です。

SSB_generator_2.cをダウンロード

float_Tap-151_2800BPF.hをダウンロード

float_Tap8000BPF.hをダウンロード

このプログラムで、DSP処理にかかるFcYは463サイクルでした。 ただし、このインラインアセンブラの前後で、Cによる割り込み処理と、復帰処理がありますので、実際はこのサイクルより多くなっているはずです。 許容可能な最大サイクルは1024ですが、どのくらい余裕が有るかわ判りません。 従い、PREとPOSTのFIRフィルターのTAP数は合計で500くらいを目途に進める事にします。

 

中間周波数は25MHz付近とする事は決まっていますが、あいにく、25MHzのXtalが有りません。そこで、手持ちのXtalを使って、特性を取ってみる事にしました。

下は、特性測定用に用意したテスト回路図と、テスト治具です。

Xtal_filter_schema

Xtal_filter_testjig

そして、手動でSSGをスイープさせ、それをスペアナでMAX Holdした時のデータが以下の4枚です。 左上から順番に、16MHz, 20MHz,  24MHz  26MHzのデータとなります。

_re16mhz

_re20mhz

_re24mhz

_re26mhz

Act_re_24mhz

4つの周波数で一番適した特性は24MHzです。 そこで、このXtal Filterの特性に合致するように、第2局発(LO2)の周波数を決めたのが、左の画像です。

DSP内で作ったSSB信号のサブキャリアは9.766KHzでしたので、これを中心にして、LSB またはUSBの信号がフィルターの先頭のフラット部分にくるように配置すると、LO2の周波数は、24006.766KHzとなります。 そして、LO2により生じたイメージ信号は、グラフ右側の特性がディップした帯域にはまります。

この特性から、DSPは、LSB及びUSBを選択的に出力して、第1可変局発(LO1)とIFキャリア周波数23997KHzをMIXし、7MHz帯でLSBもしくはUSBのSSB信号を作り出す事ができます。

従い、DSPの機能は以下のブロックのような動作が実現できれば良いのですが、これが、トラブルの連続で、まだ実現出来ていません。 なんとか目途がついたら、紹介します。

Dsp_block

約1週間、格闘した結果、なんとか使えるSSBジェネレーターが出来ました。

PRE BPFもPOST BPFも251TAPとして、送信/受信の切り替え時、同じリングメモリーが使えるようにしました。 この状態で、USB信号を取り出した時のスペクトルは以下です。

Usbnoise251tapx2

Lsbout_tx

Usbout_tx

左上は、送信モードで1KHz変調のLSBを、右上は同じく1KHz変調のUSBを取り出した時のスペクトルです。

Lsbin_rx

Usbin_rx

左上は、サブキャリアに1KHzで変調されたLSBを復調した状態、右上は、同じくUSBを復調した状態です。

これまでで、一番、苦労したところは、送信/受信 および LSB/USBモードの切り替えでした。 切り替えSWを追加し、ソフトを弄り回しましたが、うまく動作しません。 結局、取った手段は、送信/受信とLSB/USBの初期設定をした上で、RESETをかけるという荒業で、なんとか使えるようになりました。 トランシーバーを構成するには、Si5351AのDDSを制御したり、周波数を表示したりするために、dsPICとは別に、メインのマイコンが必要です。 このメインマイコンからdsPICにRESETをかける事にします。  私の技量では、動作中のモード切替は不可と悟るまで1週間かかったというのが実態です。

モード切替以外にAGC電圧の取り出しを仕込みました。 出力されるDC信号は、高入力のとき、3Vが出力され、信号が次第に小さくなると、ゼロVに近づくというもので、DUALゲートのFETを使ったAGCアンプの制御電圧とは逆になります。 この電圧を利用して、Sメーター表示やAGC電圧を作るには、dsPIC側では荷が重すぎますので、これをPWMにてDA変換し、システムコントローラー側に送り、システムコントローラーは再度これをAD変換するという面倒な事を行いますが、Sメーターの振れ具合や、AGCのかかり具合を細かく調整するには、必要な処理になります。

また、システムコントローラーとなるPIC16F1938には、PWMの極性を反転する機能がありますので、処理が簡単です。ただし、以下の回路図にはまだ反映されていません。

以上の回路図 SSB_generator_3.pdfをダウンロード

ここまでのソフトです。

SSB_generator_3.cをダウンロード

float_Tap10kUSB_BPF.hをダウンロード

float_Tap10kLSB_BPF.hをダウンロード

float_Tap2800BPF.hをダウンロード

 

SSBジェネレーターが完成したので、今回のSSBトランシーバーの全体構想を練ってみました。 24MHzのクリスタルフィルターとその前後のミキサーはSDR-3を真似て、双方向回路にしてあります。 今後これをベースに少しづつ、開発を進めていく事にします。

Ssb_trx_dspic_1

 dsPICでSSBトランシーバー(制作開始)へ続く

INDEXに戻る

2020年6月 9日 (火)

ホワイトノイズ発生器

dsPICを使ったSSBジェネレーターを開発中ですが、そのなかで、デジタルフィルターも作成します。 このフィルターが完成した時の特性が、当初の狙い通りに出来ているか、確認を必要とします。 それに使えるホワイトノイズ発生器の制作です。

Whtnoise_generator 

ノイズ発生源はトランジスタのベース、エミッタ間に逆電圧をかけ、BE間がブレークダウンした時に発生する広帯域ノイズをICで40dBくらい増幅します。

Ng_pcb

上がその回路図で、左が、それを実際に組み立てた状態です。

48mm x 30mmくらいの基板に組みました。 一応100KHzくらいまではフラットであるように期待して、完成した後、勤務先のスペアナを借りて、休み時間に測定してみました。

左下が10Hzより2KHzまでをピークホールドでスキャンしたデータです。

右下は、同じくピークホールドで10Hzから100KHzまでスキャンしたデータです。 2KHz以上は、ほとんどフラットで、1KHzで-6dBくらいのレベルダウンがあります。 2KHz以下の周波数で下降しているのは、スペアナの入力の周波数特性が影響しているもので、下の方にある、低周波領域でのスペクトルは、60Hzくらいまで、ほぼフラットです。

Ng_pk2khz

Ng_pk100khz

このホワイトノイズを15TAP 3KHzのLPFを通し、Wave Spectraで表示させた時のPC画像が以下です。

3khz_lpf

Noise_off

上が、ノイズをONしたとき、下がノイズOFFのときです。 一応、3KHz付近を境に高域がカットされた傾きを示しています。 Wave Spectraにピークホールド機能があれば、きれいに見えるのでしょうが、高級スペアナのようにはいきませんね。

このホワイトノイズ発生器を実際に使っている例はこちらにあります。

しばらく重宝しておりましたが、PC上で動くWave Generatorの中にホワイトノイズとピンクノイズの発生手段があり、かつSSBの2-tone信号も出せる事から、この基板はジャンク箱行きとなりました。

INDEXに戻る

2020年6月 6日 (土)

dsPICでSSBトランシーバー(SSBジェネレーター)

カテゴリ<SDR> [DSP 自作 7MHz ]

HDSDRというフリーのSDRソフトを使った、SSBトランシーバーは完成しましたが、いざ完成すると、それはそれで、色々と不満も出てきます。  HDSDRの+/-48KHzのバンドスコープは、ワッチする場合、大変便利ですが、交信するにははなはだ、不便でなりませんでした。 とにかく了解度が悪く、交信相手に、こちらの信号は59で届いているのに、相手の信号は29から39でしかありません。 この同じ信号をTS-930で受信すると、59です。 この原因は、広帯域の受信バンドの為、S/Nが悪化していること、強レベルの隣接局によるAGCの為、ノイズフロアが常に上下している事などが考えられます。 HDSDRの機能の中に、ノイズリダクションやノイズブランカ―、オーディオ帯の周波数可変可能なBPFやノッチフィルターなど、了解度を改善する機能が満載されている理由が判るような気がします。 そして、これらの機能を駆使しても、通常の会話は了解出来ても、コールサインの確認に手間取る状態でした。

これを改善するには、多くのメーカー製トランシーバーが採用しているように、バンドスコープ用IFと復調用IFを完全に分離するしかないようです。 一方、バンドスコープ用IFと復調用IFを共用しながら、バンドスコーブの幅を必要最小限に狭めたSDRトランシーバー SDR-3 が、「おじさん工房」から商品化されております。 多分ここまで、狭めたら、受信能力の悪化は小さいと予想されますので、今度はこれを手本として、どこまで自作できるかトライする事にします。

Fir31tapgraf

このプロジェクトを開始するに当たり、そのノウハウをパクってきた元はJA1QVM OMのブログです。 これから、SDRの勉強をしようとインターネットを検索していましたら、探していた情報がそのまま出ていました。 OM Very TKS.

左のグラフは、OMの記事を真似て作った、31TAPのFIR LPFの実測データです。 ここまでできると、SSBジェネレーターに必要な300-500TAPのフィルターは簡単にできてしまうと考えましたが、300や500のTAP係数をどうやって入力するのかが最大の課題となりました。  また、メモリーの配置はリンカー任せにしないと、トラブルの連続でしたので、そこも解決しなければなりません。

Ssb_genarator_0_2

まずは、OMに習って、ハードの回路図からです。

 dsPICはdsPIC33Fj64GP802です。 これを始めた2020年6月の時点では、dsPIC33CHがメインとなっている状況ですが、この最新のdsPICに対する情報は少なく、ひと昔前の33Fで勉強し、最終的には33CHに乗せ換えるという魂胆です。 

後日、dsPIC33CHも使いましたが、SSBジェネレーター用としては使いにくく、このdsPIC33FJが最適なようです。

この回路図もOMのプログからのパクリですが、最初、VR1を固定抵抗で済ませていたところ、いざADCが動き出すと、片側からサチってしまうので、オリジナル通り、半固定抵抗に変えました。 しかし、後日、ミキサーを実装したところ、この半固定抵抗の合わせ次第で、サブキャリア漏れが大幅に悪化する事が判りました。 結局、この半固定抵抗は多回転タイプに変更し、かなりクリチカルな調整が必要なようです。  また、DACはL/R出力となっていますが、R-chはまだ配線されておりません。

dsPICでSDRを構築する、あるいは、その要素技術を公開するインターネットサイトは、沢山ある訳では無く、限られた情報を基に、自分で考えないとダメみたいです。 そして、その数少ないサイトのなかから、XC16によるプログラム例を探して、それを、今回の目的に合うようにアレンジしていくわけですが、コンパイルすると、エラーになったり、ものすごい数のワーニングが出たりします。 そこで、今まで読んだ事が無かった、XC16コンパイラのマニュアルを一通り読んでみました。 その中で、興味が沸いたのは、CCI という構文です。 これから、何年か、プログラムのコピペに耐えられようにしようとすると、従来の構文では、不都合が生じる可能性があり、後日、困るのは本人ですから、このSSBジェネレーターは、CCI 構文で進行する事にしました。 以前のXC16の構文を理解していない事が幸いし、以外と楽に乗り換えが出来ました。

まずは、CCI 準拠ですが、XC16-GCCの Option categorise:の中にあるPreprocessing and messagesを開き、その中にある、Use CCI syntaxにチェックマークを入れます。

Xc16_cci

次に、XC16(Global Options)を開き、Additonal options:の枠に -menable-fixed の文字を追加し、最後に下の方にある [Apply]を押します。 これはCCI とは関係ありませんが、 固定小数点形式の数値を使う為の処置です。  後日判明した事ですが、XC16(Global Options)ではなく、XC16-gccのOptionに記述するのが正しいようです。ただし、記事の中でも出てきますが、結局、固定小数点は使いませんでした。

Xc16_add_option

今回、構想するSSBトランシーバーの原型は、「おじさん工房」のSDR-3にあることに触れましたが、使おうとしているdsPICは、SDR-3を構成するハードやソフトにはとても及びませんので、せめて、SDR-3の構成は維持したまま、基本部分を慣れ親しんだPICで実現しようともくろみます。 従い、SSBの発生も「おじさん工房」が提案した第4の方法とします。 

まず、ADCやDACのサンプリングレートですが、ADCとDACのレートを一緒にし、余計な処理が生じないようにしようとすると、サンプリング周波数は、限られた周波数しか使用できません。

ADCのサンプリングレートはFcy=40MHzを80くらいから65535までの任意の整数で割った周波数に設定できます。 一方DACのクロックレートはfvco=160MHzから、1,2,4,8,16,32,64,128,256の8種類の数字のどれかで割り算した周波数(ACLK)をさらに256で割った周波数になります。 この条件から、DSP内部で作るミキサーのサブキャリア周波数を8KHz以上にしようとすると、ADCのクロックレートは40MHz/1024の39.0625KHzしか有りません。 これより低い周波数は、この1/2の19KHz台となり、ミキシングして得られたUSB信号がナイキスト周波数以上になってしまいます。 この39KHz台の場合、dspの処理時間は1024サイクル以下でなければならず、十分な特性のフィルターを作れない可能性がありますが、その限界が見えたら、さっさと、33CHに乗り換える事にします。

一方、DACも同じく39.0625KHzにするには、DACのクロック(ACLK)は39.0625 x 256=10MHzであれば良いので、Fvco(160MHz)を1/16に設定すれば良い事が判ります。

従い、Xtal OSCの周波数は、不動在庫している24MHzとして、これからPLL周波数の160MHzを作る事にしました。

SSB_generator_0.cをダウンロード

float_Tap.hをダウンロード

このCファイルは、後述のクロック条件の下で、ADCから入力された信号をFIRフィルター処理して、DACから出力するまでのプログラムです。 Hファイルは、TAP係数を羅列したファイルです。

実装されているTAP係数は15TAPのFIR LPF用ですが、この実装方法は後程、詳しく説明いたします。

dsPICはそのクロック周波数を高くする必要から、PLLを使いますが、この設定です。

Xtal=24MHzを1/3に分周し、8MHzにします。  この時の分周比 3がデータシートに出てくるN1となります。 そして、PLLPREの設定値は3-2=1です。

また8MHzを20倍して160MHzのPLL VCO周波数をつくりますが、20がデータシートのMとなります。 そして、PLLDIVの設定値は20-2=18です。

160MHzを2分周して80MHzのfoscを作りますが、このときの分周比 2がN2となります。 そして、PLLPOSTの設定値は2-2=0です。

foscが80MHzとなると、PIC内のシステムクロックはその1/2の40MHzとなり、これで、このdsPICは最高速度で動作する事になります。

DACのACLKはfvcoを1/16しますので、APSTSCLRの設定値は 3 になります。

dsp部分で積和演算を行うために、リングメモリが必要となりますが、その設定をX_MODset()という関数で作っています。 ここは、理屈抜きで、このように記述すればOKですが、ここで、TAP数により設定値を変える必要があります。 リングメモリーの先頭番地は、リンカーで決められますので、それをベースに計算する事にしています。従い、プログラム上からは、判りません。

initmain()のなかで、各種初期設定をおこないますが、各設定の順序は、試行錯誤した結果です。 コメントのみ変更して再コンパイルしたら、動かないとか、訳の分からないトラブルを軽減(完全になくすではありません)出来ました。 また、CAST変換がうまくいかずに、時々動かないという問題を少なくするために、デイレーを何か所かに入れてあります。 うまく動かないときは、このディレーを長くしたり、場所を変えたり、時にはPICkit3を外してみたりして、現在の状態に落ち着いています。

後日判明した事ですが、プログラムが動かなかったり、単純な再コンパイルで動作不調になる原因の一つが、リングメモリーの制御用に指定したワーキングレジスタをリンカーが勝手に他の用途に使ってしまう事にあるようです。 リングメモリーを使う時は、リンカーが勝手にワーキングレジスタを使わないようにユーザーが設定しなければならないとコンパイラの説明書に書いてありました。 具体的な方法はこちらを参照して下さい。dsPIC33CHの記事ですがdsPIC33FJも同じです。

Timer3からの割り込みの中に、DSP処理が全部はいりますが、今回は、FIR LPFを動作させるだけのプログラムがインラインアセンブラで記述されています。 ここまでは、JA1QVM OMの記事の通りです。 ただ、絶対アドレスをリンカー任せにしていますので、その記述が異なります。

XC16内で定義した変数は、その先頭にアンダバーをつけると(XC16で定義した変数がabcの場合、_abcとする)、アセンブラでも同じ変数として認識してくれますので、この手法で、XC16で得た各変数の絶対アドレスをアセンブラの中に埋め込んで、絶対アドレスの問題は解決しました。

main()処理は、main()が回っているインジケーターとしてLEDの点滅だけです。 このLEDの点滅を割り込み処理の中にいれ、DSPの速度測定をしようとすると、ADCが動かなったり、ソフトが止まったりしますので、DSPの処理時間を調べる別の方法を考えねばなりません。

次に、このプログラムにFIR係数を実装する方法を説明します。

FIRフィルターの係数計算は、色々な方法がありますが、私はここで計算した値を使っています。

2023年12月以降、edgeのバージョンによってはリンクがつながらない事があるようです。 同じでは有りませんが、緊急避難としてフィルター係数の計算を公開しているサイトが有りましたので、そこからダウンロードしたアプリの使い方を説明した記事をこちらに置いています。 使い方はこのページで紹介しているものと異なりますのでご注意下さい。

Fir_tap_make0_2

TAP数や、遮断周波数の係数を入力して、出てきた数値の後ろに[,]がつくようにチェックマークを入れておきます。 

まず、必要とする遮断周波数を正規化値として入れる必要があります。この正規化値は次のようにして求めます。

求めたい遮断周波数 / ADCのサンプリング周波数

求めたい遮断周波数が3000Hz、サンプリング周波数(ADCのクロック周波数)が39.0625KHzの場合、正規化値は3/39.0625=0.0768となります。 この係数の最大値は0.5です。

Fir_tap_make1 

これで計算した結果が上のPC画面ショットのごとく、左側に縦に羅列されますので、これをすべてコピーします。 そして、float_Tap.hというファイルの中にペーストしておきます。 また、最初の行に、TAP数(Tap_Num)を記入して置きます。

 

このようにすることで、後程、TAP数や遮断周波数を変えたTAP係数の作成が簡単に行えます。

ここに示した、プログラムファイルは、ADCのデータをとりあえず3KHzのLPFを通しただけのものです。 このプログラムを作成する上で、一番トラブったのは、CASTでした。  TAP係数はdouble形式で提供されますので、XC16の中の変数に代入するとき、floatに変換し、これを固定小数点形式に変換する必要があります。  XC16 で固定小数点は _Fract と明示する事になっていますが、いくらやってもうまくいきません。 結局、float形式を16bitのsigned intに変換する事で、DACの出力が出るようになりました。 後日、判った事ですが、極性付き整数は、極性付き固定小数点の一形式と同じで、かつこの逆も言えるという事でした。

今後、これにサブキャリアによるミキサーと、USBのみ取り出すBPFを仕込み、約10KHzのサブキャリアで変調したUSBジェネレーターを完成させることにしますが、どうやって実装するかは、全く白紙状態です。 いつになることやら!

下のスペクトルは1KHz信号を加え、DACの出力をWave Spectraで表示させたものです。

Spectra_with_15tap_lpf

dsPICでSSBトランシーバー(SSBミキサー)へ続く。

INDEXに戻る