G-250 コントローラーの製作

約8mの伸縮ポールに 18Mhzと10MhzのアンテナとG-250ローテータを取り付ける
アンテナが軽いので、小型のローテータ(1kg)で十分である。

  

問題は、このコントローラーである。
北や北西、北北西など、おおよその方向に向けるには便利である ダイポールHFアンテナには便利なのだけど、
八木アンテナにして 方向の精度を高めたい場合には、指針メーターの方がみやすい

18Mhzは HB9CVの2エレメントなので、もう少し精度を上げたい


 

中古で買った ダイワのコントローラーの外観を使ってみよう。
これは、以前1200FX エモテータに使っていたが、大型のメーターに変えたので、このコントローラを使おう。
G−250コントローラーはいらない。

仕様は G-250はAC24V誘導モーター。
     ローテータは回転が早すぎるので AC20Vにして少し下げる。 ACモーターはスピードコントロールはできない
     下げすぎると回転しなくなるし、トルクも下がるので、20V位までなら動作するだろう。
     トランスを探す。

     ローテータの内部のVRは 5kΩであった。 これをAD変換する。
     CW/CCWスイッチで AC20Vの正逆回転は可能であるが、リレーを介してコントロールする。
     理由はプログラム上の利点から、、、

     ダイレクトスイッチは3か所にした。
     好きな方向に向けてメモリーすれば、後は、ボタンを押せばその方向へ自動で向いてくれる。

     1)富士山方向、2)ヨーロッパ方向、 3)アメリカ方向、
     いくつでも取り付けられるけど、回転スピードが早いので、CW/CCW ボタンでもよいのでは?と考えて付けなかった
     

 回路は下記になる

回路図


 

破損していたギヤーは修正済である。
このコントローラーはオークションで入手したが競い合った、、部品取りか修理できない人は購入しない方が良いと思った次第である。

20V、0.3Aのトランスから ローテータ用のAC20V  バックライト用とモーター用の 9vは3端子レギュレータ、 マイコン用の 5V3端子レギュレータを搭載する
すべて、30年も前の廃材利用している

トランスの20Vをブリッジ整流すると、約DC29V位になる、 3端子レギュレータは 入力35Vなので、そのまま使う。

AC20VのローテータのCW/CCWスイッチは 直接スイッチに接続してもよいが、
今回は マイコンのポートにリレーを接続して、リレーで CW/CCWをコントロールした。プログラムで指針コントロールの為である





G-250のコントローラーと切り替えながら調整を行った。
トラブルの回避に2〜3日費やした理由は、DAIWAのコントローラーを流用したのだが、メータモーターの端子が板金にアースとして接続されている事に
気がつかなかった。

真の方位と指針の誤差は、プログラムではなく、方位ポテンションメータに半固定抵抗を入れて電圧調整した。
やはり、どっちに向いているかわからないコントローラーより、指針で表示してくれるコントローラーは見やすい

デバッグが完了して基板がケース内に収まったら、LCD表示器は取り外す。表示器無しでデバッグするのは苦労するだろう。

箱の大きさが小さいので、組み込むとかなりギュウギュウ詰めになるが、放熱は考えておこう。

 



プログラムは C言語で作った、計算式が無いのでアセンブラ言語でもよかったがC言語が簡単である

AD変換の初期設定は 下記である
ー−−−−−−−−−−−−−−−−−−−−−−
ADCSRA = 0b10000110;
             // ADEN,ADSC,ADATE,ADIF,ADIE,ADPS2,ADPS1,ADPS0
             // ADEN許可:1 ADSC開始:0 ADATE自動起動:0 ADIF完了割込:0
             // ADIE割込許可:0 分周ck/64 読み取り時間 104uS

ADCSRB = 0x00;

ー−−−−−−−−−−−−−−−−−−−−−−−−
メータ側のVRの読み取り CH1のマクロである

 void METER_IN (void)
{
    ADMUX = 0x41;       //CH1
                    //AVCC基準電圧、入力PA0 0100-0000 データ右揃え
    ADCSRA |= _BV(ADSC);     //変換開始要ループ内
    loop_until_bit_is_set(ADCSRA,ADIF);
                       //変換終了時ADIFがセットされる
                       // a = ADC; //AD変換結果 10bit:0-1024
    houi_dat = ADC; //半分
}

// ---------- 本体側の読み取り ADC CH0-----------------
void ADC_IN (void)
{
   ADMUX = 0x40;      //CH0
                  //AVCC基準電圧、入力PA0 0100-0000 データ右揃え
   ADCSRA |= _BV(ADSC); //変換開始要ループ内
   loop_until_bit_is_set(ADCSRA,ADIF);
                  //変換終了時ADIFがセットされる
                  // a = ADC; //AD変換結果 10bit:0-1024
   meca_dat = ADC; //AD変換結果 4bitシフト= 6bit:0-64
}
ー−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

CWのスイッチを押すと、本体が時計方向へ回転する
同時に、本体内部のVRが回転して抵抗値が変わる、この抵抗値をAD変換して読み取る
読み取った値(meca_dat)と 指針メータの方位(houi_dat)を比較して一致するようにメーターのモーターを回転させる

本体側の回転が若干早くしているので、CWスイッチを切った時、指針が一致していなければ、
一致するまで、メーターを追随させる。
本体より指針メーターが早いと、指針が行ったり来たりするので、若干遅くするのが味噌である。


//---------------------------------------------------
// 時計方向

while(k_cw){R_CW;LED_GON;start_buf=0;cw_buf=1;
       ADC_IN(); //meca_dat
       wait_ms(2);
       METER_IN(); //houi_dat
       if(meca_dat > houi_dat){M_CW;wait_ms(5);}
       if(meca_dat <= houi_dat){M_BREKE;cw_buf=0;}
       
      ADC_hyou();
      }
while(cw_buf == 1){
           METER_IN(); //houi_dat
           if(meca_dat > houi_dat){M_CW;wait_ms(5);}
           if(meca_dat <= houi_dat){M_BREKE;cw_buf=0;}
           ADC_hyou();
           }