« DSPラジオ(7MHz AM用) | メイン | 東広島市鏡山公園 »

2016年10月29日 (土)

LDG KT-100の改造(マイコン)

カテゴリ<ATU LDG KT-100

CM結合器を日本製に変えて、トライしたLDGのKT100改造版でしたが、内臓されたPICマイコンのソフトの問題で実用出来ず、お蔵入り状態でした。 そこで、このPICマイコンも改造版に変えてしまおうと検討を始めました。 基板やその上に搭載されている部品を大幅に変えることなく、PICマイコンを作り替える事にした改造記です。

Newcmd_2

Kt100modify0

左上のCM結合器は、日本製のSWR計に使用されていた基板から必要な部分を糸ノコで切り出して実装しました。 オリジナルCM結合器のコイル部分は残していますが、ダイオードや負荷抵抗は取り外してあります。

右上は検討用にMコネクタを仮配線し、デジタルオシロでタイミングを見る為いくつかのテストポイントを追加した全体の基板です。

オリジナルのマイコンはPIC16F866という8bitのマイコンですが、かなり古いマイコンですので、これとピンコンパチのPIC16F1938に変更しました。 どのマイコンを使おうが、ソフトの開発、デバッグを行う為には、内部の変数やレジスター状態が見える必要がありますが、オリジナル回路は、それらを見る為のi/oが有りません。 従い、PICkit3によるデバッグツールを使う必要があり、以下のハード変更を行いました。

・RE3はデバッグ用にMCLR専用端子とする。

・カウンター入力をTimer0の入力端子となるRA4に変更。

・今までRA4に割り当てられていたTT入力は廃止。

・RB7,RB6端子をデバッグのPCD,PCGと共用する為、74HC04によるバッファを追加し、リレー負荷がこの端子に直接接続されないようにする。

・TS-850からのリモート動作は無視し、マニュアル操作オンリーとし、チューニングスタートボタンと、チューニングリセットボタンのみを操作キーとする。 リセットキーを取り付ける場所が有りませんので、後側にプッシュSWを追加します。

・K3のリレーは本来RC2につながっている方が都合がよいので、RC2に接続し、今までRC2に接続されていたグリーンLEDはRA5に移す。

・オリジナルのfoscは8MHzのようですが、これを32MHzに変更し、オプチマイズなしのXC8コンパイラによる動作速度低下を少しでもカバーさせる。

これらの変更を行った配線図 KT100mod01.pdfをダウンロード

まず、リレーの制御ですがラッチタイプのリレーを何ミリセックの時間でドライブしたら動作するのか確かめてみました。すると、確実にセット、リセットが出来る時間は1.9msecという事が判りました。 実際の設定は余裕を見て、3msecくらいの駆動でセット、リセットを行わせる事にしました。 

また、周波数カウンターは、オリジナル回路では1/32768分周という恐ろしく大きな分周比を使っていましたが、この改造版はU2(74HC393)で1/2分周した後でT0CKIに加え、内部で1/8分周した後、Timer0でカウント動作をさせます。 Timer0は8bitカウンターですので、これにソフトによる8bitカウンターをシリーズにつなぎ16bitカウンターとしました。 そして、Timer1を使い、16msecのゲート時間を作り、Timer0のゲートを制御します。 Timer1のゲート時間は厳密に16msecとはなっていませんが、ここで多少のカウント誤差が有っても、メモリーされたデータを書き込み、読み出す事に関しては全く問題はありませんので、そのままにしてあります。 メモリーすべきデータは16bitですので、すべてのEEPROMエリアを使用したとして、127の周波数分を記憶できます。 1.8MHz帯は10KHz幅、28MHz帯は100KHz~200KHz幅、50MHz帯は300KHz~500KHz幅、その他のバンドは、この幅をベースに分割した73のバンドとして、EEPROMの2番地から16bitごとに記憶エリアを確保する事にします。

使用したCM結合器は1.8MHzから50MHzまで使用可能な、ファラデーシールドされた同軸線とセンタータップGNDタイプのコイルによる結合器で、検波は1N60で行っています。

Cm_swr

左の表は、7MHzで50,100,25Ωのダミー抵抗を使い測定したSWR値です。 このATUに実装する前は100Ω負荷でもSWR2付近を示していましたが、実装したらずれてしまいました。実装状態の周囲の影響が等価でない為、誤差が出るようです。 しかし、目標とするSWR値以下に追い込めたかを測るCM結合器ですから、20%くらいの誤差は許容できますので、これで良しとします。 

リレー駆動のアルゴリズムは、単純にクリアー状態(インダクタ、キャパシタとも0)から最大状態まで順次送り、目標のSWRになったら止めるという方法を基本とします。

Rlytiming

リレー駆動はリレーコイルに正方向に電圧を加えたとき、セットし、逆方向に電圧を加えたときリセットされます。 このセット、リセットの動作以外の時はリレーコイルに電圧が加わらないようにします。 オリジナル回路では、リレーコモン端子が常時5Vにつながっており、駆動コイル端子はマイコンのトーテムポールタイプのi/oに接続され、初期値はH(5V)です。 この状態でリレーコイル端子を3ミリ秒間だけLにするとリレーはセットされます。 また、リレーコイル端子をHにしたまま、リレーコモン端子を3ミリ秒間だけLにするとリレーはリセットされます。

実際のリレー駆動は、最初全リレーをリセットした後、必要なリレーのみセットするという2段構えの駆動になり、約7ミリ秒かかります。

Adtimingjpg

左は、リレーを切り替えた後、VREFが反応するまでの時間を測定したものです。AD読み取りが完了したら50us以内にリレーの切り替えを開始します。 AD読み取り2msec後くらいからVREFが変化し始め、約6msec後までには、安定します。よって、7msec後にAD値を取得する事にし、アルゴリズム完成後微調整する事にします。

当初、オリジナルの回路の通り、R4とR16の10Kは無しで進行したのですが、VREF端子にリレー切り替え時のスパイクノイズが乗り、ADが安定してデータを取得できませんでした。対策として、この抵抗を追加してあります。

とりあえずは、リレーを切り替えてAD取得完了までの1サイクルは15ミリ秒くらいになりました。

従い、コイル、コンデンサの組み合わせを全てチェックすると65,536の組み合わせがあり、約15分かかってしまいますので、小細工が必要です。

この小細工を含めたアルゴリズムは以下のようにしました。

step1:最初にSWRが5以上か以内かをチェックし、5以上ならリレーを8倍の速度で連続可変させ、SWR5以下の条件を探します。 ここでSWR5以下を探せなかった場合、そのアンテナは整合不可とします。 具体的には、リレー番号を8のステップで増加させますが、この時の組み合わせは960しかなく、時間にすると約15秒です。

step2:SWR5以下の場合、現在のリレー駆動データを初期値として、SWR1.15以下を探します。もし、この探す途中でSWRが5以上になってしまったら、再度step1に戻した上で、SWR5以下を探します。 

とりあえず、今回はSWR1.5以上の場合、整合出来なかったと定義しますが、実際に使用してみて、SWR1.5以上が頻発するなら、リミット値をSWR2くらいまでは拡大するつもりです。 ダミーアンテナでテストする限り、SWR1.15以下には収束しています。

step2のアルゴリズムは以下の通りです。

・コンデンサは入力側(アンテナのインピーダンスが50Ωより小さい)を初期値とします。

・コイルのインダクタンスを1step増加させたとき、SWRが下がれば、さらに1step増加させ、SWRが増加するまで繰り返します。 

・SWRが増加したら、可変する素子をコンデンサに切り替え、コンデンサを1step増加させ、SWRが下がれば、SWRが増加に転ずるまで増加を繰り返します。

・コイルもコンデンサも2回以上、SWR増加が発生したら、1stepずつ減少させます。この減少動作もSWRが下がる限り続けますが、途中で、インダクタンスや、キャパシタンスがゼロになったら、コンデンサの接続位置を入力側から出力側に切り替え、かつコイルもコンデンサも1stepづつの増加に変更します。

・これらを繰り返し、SWRがリミット以下になる組み合わせを探しますが、SWR5を超える状態が2回発生したら、整合不能と判断して、チューニング動作を中止します。

18MHz用スカイドアアンテナと20m長のはしごフィーダー経由でテストした結果、14MHzから28MHzまでは、SWR1.5以下に整合します。 1.8MHzから10MHz及び50MHzはまだ実際のアンテナでテスト出来ていませんが、25,50,100ΩのダミーロードではOKですので、この状態のソースコードを公開します。

 LDG_KT100_modif.cをダウンロード

テストを重ねて、改善が必要になれば、不定期で更新します。

下はハードの改造とマイコンを差し替えたKT-100です。

Ldgkt100mod2

SWRが無限大でも、出力制限をしない昔のトランシーバーでは問題ありませんが、FT-991を5W出力にしてテストすると、SWRが5を超える場合、出力が極端に絞られ、ATU内臓の周波数カウンターが動作しません。 カウンターが動作しなくても、チューニング動作は行います。この時、Freqは0となっていますので、周波数が読める状態までSWRが改善したら、再度周波数を確認する事にしました。

INDEXに戻る