« バリコン式ATUの自作 5 (角度センサー) | メイン | TS-930 メインダイヤル誤動作(アップしない) »

2014年8月10日 (日)

バリコン式ATUの自作 6 (角度センサー対応アルゴリズム)

カテゴリ:オートアンテナチューナー(ATU)の製作

TS-930S用ATUのギアBOXにバリコンの回転に連動した可変抵抗器を追加し、バリコンの角度を電圧の変化に変換する角度センサーを使ったATUのSWR収束のアルゴリズムを試行錯誤しています。

1.   フラッシュマイコンにプログラムを書き込むとき、VC1,VC2の最大容量時、最少容量時の可変抵抗器出力データをプログラム上で初期設定し、50Ωのダミー抵抗に整合する時のコイルのTAP番号と、VC1,VC2の角度データを予めEEPROMに書き込んで置きます。  バリコンと可変抵抗器がギアで直結されていますので、いかなる事が有っても、バリコンは180度以上は回転しないという条件を設けます。

2.  TUNE状態になったら、キャリアレベルを検出し、規定値以内のレベルなら周波数を測定し、得られた周波数からコイルのTAP番号と、VC1,VC2の初期設定用角度データをEEPROMから読み込みます。

3.  SWRが20以上ある場合、VC1,VC2を初期設定用角度まで回転させ止めます。TAP番号に変更が有ったらタップの切り替えを行います。 バンド内で周波数を変えたときSWRが20を超えるような場合、収束に時間がかかりますので、当初、バンド幅が100KHzを超えるバンドは100KHz~350KHzくらいごとにバンドを分割し、全体を18のバンドに分割していました。 

何度もチューニングを繰り返す内に、前回SWRが規定値以下に収束したバンドはVC1とVC2を前回の角度にプリセットするだけで、かなりの確率でSWRが実用レベルに収まる事がわかりました。これを利用すべく、周波数をチェックしただけで、バリコンの角度とTAP位置のみを設定し、チューニングはしないモードを作る事にしました。このモード対応の為、最終的には、3.5MHzから29.7MHzまでを28バンドに分割しています。

4.  SWRのチェックを行いSWRが20以上ある場合は、VC1,VC2とも最少容量まで回転させ、そこから、VC1を小刻みに容量最大方向へ送りながら、VC2を180度づつ交互に回転させ、SWR20以下を探ります。 最小容量からスタートする事で、VC1,VC2とも最大容量でSWR最少に収束する現象を回避しました。この小刻みに送る角度は周波数により変化させ、ハイバンドは1回の送り角度を2度くらいにしますが、ローバンドは5度くらいの角度で送り、SWR20以下の検出時間を短くします。1回に送る角度が多ければ早く検出出来ますが、検出漏れが発生しやすくなりますので、これらの角度は実験で決めます。

5.  SWR20以下が見つかりましたら、

・ VC2を短時間CW方向に回転させ、SWRが変わらないか下がる場合、SWRが上がるまで繰り返します。(SWR最少ポイントを少し過ぎたところで停止) 停止コマンドを送ってから、実際に停止するまでの時間は非常に重要です。SWRのチェックは、実際に停止してから行わないと判定を誤ります。停止までの待ち時間を長くとると、SWRのチェックは確実ですが、収束時間が長くなります。何回も動作テストを行い最適値を決めます。

・ SWRが上がる場合、VC2を反転しCCW方向に回転させ、SWRの変化を見ます。SWRが変わらないか下がる場合、SWRが上がるまで繰り返します。SWRが上がる場合、VC2を反転させますが、この動作中に回転の反転を2回やったら、この動作は終了。

 

・ VC1を同じように繰り返します。  VC2もVC1も一度SWRが下がった場合、そのときの回転方向を記憶しておき、メインループを1周して、このルーチンに戻ったとき、前回の回転方向でスタートする事により、スムースにSWR最小ポイントを探す事ができます。 この動きはMTUの調整方法と同じです。

・ VC1、VC2いずれも1回に送る時間は周波数で変化させます。24MHz以上の場合、30mSec、5MHz以下の場合、60mSec、その他の周波数では40mSecとしておき、使用しながら最適値に決めます。また、SWRが2以下まで収束しましたら、この送り時間を半分にして微調整モードとします。

6.  5項をSWRが規定値以下になるまで繰り返します。 規定値は時間経過により、次第に緩くしていきます。最初の5秒間はSWR1.10以下への収束としますが、5秒以上経過したら、SWR1.25以下、10秒経過したら、SWR1.50以下、20秒経過したらSWR3.0でもチューニング完了とします。SWR3付近で完了した場合でも再度チューニングをかけると、SWR1.10まで収束しますので、周波数を可変して、SWRが高くなってきたら、再チューニングしています。

7.  VCが最大容量や最少容量を超えたらとりあえずエラー警告して停止させます。 その上で、バリコンが最大容量で停止したら、TAPをひとつ下げます。最少容量で停止したらTAPをひとつ上げます。 エラー状態を示す赤色のLEDが点滅して停止していますので、再度チューニングスタートボタンを押すと、変更されたTAP状態で再調整にトライします。 私のアンテナはこの処置で全バンド整合できます。 これでもエラーが続くようなアンテナの場合、諦めることにしました。(アンテナ自身を調整する事になります)  なお、2回目からは新しいタップ位置でプリセットされていますので、エラーになる事は有りません。

8.  SWRが規定値に収束したら、TAP番号とふたつのバリコン角度データをEEPROMに記憶します。この機能により、一度チューニングが成功したバンドは、ほぼ5秒程度でチューニング完了です。 バリコンがプリセット位置に移動しただけでSWR1.10以下という状態もかなりの頻度で発生します。この時は2秒以内で収束します。

9.  チューニングする時のモードを二通り選択できるようにしました。  キャリアを出した後、スタートボタンを押すと、SWR最少になるよう本来の動作を行います。 キャリアを出さない状態でスタートボタンを押すと、キャリアが無いという表示であるグリーンLEDがスローで点滅します。この状態で、キャリアーを出すと、TAPの切り替えと、VCのプリセットのみ行い、SWRはチェックせずに終了させます。このプリセットのみの場合の所要時間は2秒以下です。 特にSWRのチェックをしませんので、SSBモードでもノイズだけで周波数を読み、プリセットしてしまいます。 

バンドを28に分割しましたので、天気が同じなら全バンドSWR1.5以下になります。 雨が降って状態が変わってしまったら、このモード終了後に再度チューニングをかけると、SWR最少状態に短時間で収束します。 ATUはバンドを変えたら出力を絞ったキャリアーを出してチューニングするのが一般的ですから、その面倒さゆえバンド切り替えがおっくうになりがちですが、このモードでかなり楽になりそうです。

アンテナをつないで、最初にチューニング動作を行わせた時とか、アンテナを変更したためにバリコンをプリセット角度に移動させてもSWRが20以下にならない時だけ、4項の動作を行いますが、それ以外の場合、3項から4項をスキップして、5項に入ります。また、3項の動作は概ね2秒以下ですが、バンド切り替えが無かったら3項の動作時間は1秒以内ですから、チューニング開始してから5秒くらいでSWR1.10以下に収束します。 

 

Atusens2_2

Atu2

3.8MHz帯の整合がクリチカルな状態でしたので、追加コイルを復活させました。ただし今回は5μH分だけです。

 

バリコンの角度は可変抵抗器のセンター端子から得られるDC電圧をADコンバーターで読んでいますが、このデジタルデータは10bitです。EEPROMの記憶エリアは8bit単位ですので、ADのデータも10bitで取得した後、右へ2bitシフトし、8bitデータとして処理しています。  ギアのかみ合わせ調整時、最大容量で10くらいにセットすると、最少容量で205くらいになります。差は195ですから、バリコンの回転角180度を1度弱の分解能で表示している事になります。

  このバリコンの角度データもLCDに表示できるようにしました。左上の写真にあるLCD表示は1行目左3文字がVC1の角度データ、4番目がTAP番号、5番目からSWR値を表示。2行目の左3文字がVC2の角度データ、4番目以降は周波数です。この例では、14.020MHzでSWR1.04に収束した時のTAP番号は4、VC1の角度は163, VC2の角度は169を示しています。このLCD表示は、プログラムのどの部分を検討しているかによって、随時表示を変えていますので、一定ではありません。

角度センサー付の配線図は以下からダウンロードできます。

ATU-VC4.pdfをダウンロード

整合可能範囲が広いという事は、疑似SWRディップポイントへの収束やバリコン最大容量状態への収束にはまりやすいという事と裏腹のようです。 この対策とバグ取りを行っていましたら、XC8というコンパイラーの癖が見えてきました。

関数の戻り値がマイナスになると無視されます。比較演算の中で、マイナス数値を扱うとWarningがでます。単にWarningが出るだけと思っていましたが、比較の対象が負の数の場合、予期しない動作をします。 比較演算式の中に負の数値が表現されないようにすると、Warningも出ずに、結果も常に正しく判定します。データの型をunsigned charで無く、単に「char」にしても同じでした。 この現象の為、バリコンの回転角を180度以内に抑えるプロテクターが働かず、ギアを外して、設定し直した回数は、数えきれません。 

何回か書き込みしていたマイコンがIDを返さなくなりました。従い、書き込みもできません。どうやら壊れたみたいです。壊れた原因が判りませんが、予備のマイコンに交換して継続しています。 ATUの電源を接続したまま書き込むと、書き込みエラーになります。もちろん、書き込み治具側からの電源供給のチェックを外していますが。 これが原因でしょうか?

一度ごみ箱に捨てたマイコンを拾ってきて、PICkit3から供給する電圧を5Vではなく4.6VにするとIDが返ってきました。 そして、書き込みができ、動作も問題なしでした。

アンテナに接続して、最初にチューニングした場合、ハイバンドで10秒くらい、ローバンドで40秒くらいでSWR最少状態に収束します。2回目からは全バンド5秒くらいで収束します。また、バリコンの角度だけプリセットしてSWR収束処理を行わない時は2秒以下で完了します。 実際の運用は、雨が降らない限り、このSWR収束なしで問題なく交信できます。

一応、完成しましたので、遠隔操作機能を追加しますが、現在使用中のMTUを使用したマルチバンドアンテナシステムの制御回路を含めて変更が必要になりますので、しばらくお預けとする事にしました。 

バリコン式ATUの自作 7 (遠隔操作) へ続く。

INDEXに戻る