ホーム >> 無線ブログ集 >> TS820-DDS-VFOその10

無線ブログ集

  メイン  |  簡易ヘッドライン  

link jl7gmnのblog jl7gmnのblog (2024/7/3 7:06:06)

feed TS820-DDS-VFOその10 (2022/2/28 3:49:23)
DDS-VFOにしたTS820本体の試験運用、国内局との交信テストでやはり機能不足が確認出来ました。いわゆる周波数ズレで呼んでくる局です。聞き取りにくい受信時には、やはり相手にゼロイン受信するためにはRITが必要です。(KENWOOD:RIT、YAESU:クラリファイア)受信の周波数のみ変化させ、送信周波数は変わらないRIT機能をDDS-VFOに追加する必要が出てきました。
先ず、RITの周波数をどうやって変化させるかを考える必要があります。ロータリーエンコーダーをシフトモードなどにしてRIT動作させる方法は良く使われている方法の様ですが、メインのロータリーエンコーダーには触りたくありません。よって他の方法を考えることにしました。

単純に押し釦式SWをクリックする方法でやってみることにしました。USBモード,LSBモードと+側もー側も両方合わせられなければなりませんこれが必要条件です。先ずは仕様を考えます。イメージとして、周波数の動きやその時のステップ等を下記の様に考えました。この様な方式のRITの無線機への搭載は過去見たことはありません。実用性は別にして、カッコ良く言わせてもらえば、 世の中では初の押し釦式のRIT方式スケッチ部かと思います。なので、私のTS820本体組込のDDS-VFOに初方式での追加初搭載になります。Hi! 
(オリジナルのDDS-VFOはJF3HZB局、上保氏の作製デジタルサブダイヤル式DDS-VFOのVFOsysスケッチです。このVFOsysをTS820本体用の組込DDS-VFOにモディファイし、新たに独自方式のRITスケッチ部を追加したものになります。)

【RIT追加仕様】
■ESP32DevKitCにRIT-SW用と送受信用の2入力ポートを割り当てます。
送受信切り替え用の入力ポートには電源投入時に出力してたポート0を止めて割り当てます。
RIT-SW用に空きのポート17を入力ポートとして割り当てます。
■送信周波数を0とし基準周波数とします。受信周波数も初期時0
■周波数のステップ:100Hz(RIT-SWを押すごとに動かす周波数は100Hzとします。)
RIT-SWをずっと押しっぱなしの間自動でステップ変化。RIT-SWワンプッシュで1ステップ動作
■周波数の偏移:基準周波数に対しRIT-SWプッシュで受信時の受信周波数だけを可変、送信周波数はいつも基準周波数0(エンコーダーを止めた位置)送受信は最初同じ0(ゼロイン)
RIT-SWを押した時の周波数の偏移
0>+100>+200>+300>+400>+500>+400>+300>+200>+100>0>-100>-200>-300>-400>-500>-400>-300>-200>-100>0> [Hz] 繰り返し元の0へ
送信周波数を中心に受信周波数のみ±500Hz動かす仕様です。実践で使ってみて周波数変化量が足りなけれは増やします。

ESP32DevKitCに追加するポートは余りの中から何とか選び出しました。
RIT-SW     :PORT 17 // 連続Lで自動ステップ動作、単発Lで1ステップ動作 通常時:H
TX/RX-SW:PORT 0   // 送信時:L 、受信時:H

----------------------------------------------------------------------------------------------------------------------------------------
RIT機能追加の為のスケッチの追加箇所

周波数設定の心臓部である周波数設定項にモディファイスケッチ追加してある awase を利用 することにしました。
void task0(void* arg)ルーチン部にTS820様にヘテロダインとズレ分のスケッチ追加変更した部分のawase値です。
 //set_freq( frq + offset_frq );
    set_freq( HET_FREQ - frq + offset_frq + awase );   //change to ts820vfo  

現状の周波数のズレ分の +150Hzを使います。ここが基準となります。使用するDDS用ICにより周波数ズレ分はまちまちですので、必ずしも150Hzとはならないので、実際の周波数のズレに合わせて設定します。ご注意下さい。

const long awase = 150;
このままでは固定値での設定なので、下記の バリアブル対応の変数に変えます。
long awase = 150;

私のDDS-VFOでの周波数ズレ値としては下側に150Hzでした。 awase が+150Hzでドンピシャの周波数となっているのでこの150Hzに対して加算、減算してRIT周波数変化させるスケッチの追加になります。

ステップアップ用のカウンタ変数にsを設定
int32_t  s = 0;

入力ポートを2つ追加
#define RX_RIT 17 // LOW THEN RX MODE RIT 2022/feb/15 add
#define TX_SW 0 //TX-RX change SW 2022/feb/15 add

setup(){ ルーチン内でのポート設定も追加します。 出力ポート0を送受信切り替えの入力ポート
に設定し直し。RIT-SWをポート17に入力ポートとして設定。
 //   pinMode(START_ON, OUTPUT);   // ポート0  START TORRIGGER OUTPUT
  pinMode(TX_SW,INPUT_PULLUP);  //ポート0、TX/RX SW INPUT: (L: TX、H:RX)
   // RX_RIT TEST
  pinMode(RX_RIT,INPUT_PULLUP);  //DIGITAL INPUT 17 ;

上記の設定追加後の void loop(){ ルーチンの各バンドのヘテロダイン設定ルーチン後に以下 送受信SWとRIT-SW用のスケッチ を追加します。

void loop (){
〜省略
 }
    if(((((((((((digitalRead(TO_ESPD0)==LOW)     // "1" BCD port condition check
        and(digitalRead(TO_ESPD1)==LOW)
        and(digitalRead(TO_ESPD2)==LOW)
        and(digitalRead(TO_ESPD3)==LOW)
        and(digitalRead(TO_ESPD4)==LOW)
        and(digitalRead(TO_ESPD5)==LOW)
        and(digitalRead(TO_ESPD6)==LOW)
        and(digitalRead(TO_ESPD7)==LOW)
        and(digitalRead(TO_ESPD8)==LOW)
        and(digitalRead(TO_ESPD9)==LOW)
        and(digitalRead(TO_ESPD10)==HIGH))))))))))){  //1.9MHz
            HET_FREQ = HET_FREQ01;
            if(p==0){
              frq = freq01;
              p=1;
            }
            else{
              frq = HET_FREQ -5500000 + o_frq;
              p=1;
            }
       
            f_dchange = 1;
            f_fchange=1;//add 2020Dec12
            //digitalWrite(LED_BUILTIN, HIGH); //CHANGE TO USE D0 THERE'S NO OUTPUTPORT FOR USE    
            //digitalWrite(LED_BUILTIN1,HIGH); //CHANGE TO USE D1 THERE'S NO OUTPUTPORT FOR USE
            //digitalWrite(LED_BUILTIN2, LOW); //CHANGE TO USE D2 THERE'S NO OUTPUTPORT FOR USE
            //digitalWrite(LED_BUILTIN3,HIGH); //CHANGE TO USE D3 THERE'S NO OUTPUTPORT FOR USE
     }
     p=1;                
   }

    if(digitalRead(TX_SW)==LOW){      //Port 0
         awase = 150;
        }
        else{
          if(digitalRead(TX_SW)==HIGH){
               if(digitalRead(RX_RIT)==LOW){ //Port 17
                  s = s+1;
                  delay(200);
                  if(s == 0){
                    tawase = 0;
                  }
                  if(s == 1){
                    tawase =100;
                  }
                  if(s == 2){
                    tawase = 200;
                  }
                  if(s == 3){
                    tawase = 300;
                  }
                  if(s == 4){
                    tawase = 400;
                  }
                  if(s == 5){
                    tawase = 500;
                  }
                  if(s == 6){
                    tawase = 400;
                  }
                  if(s == 7){
                    tawase = 300;
                  }
                  if(s == 8){
                    tawase = 200;
                  }
                  if(s == 9){
                    tawase = 100;
                  }
                  if(s == 10){
                    tawase = 0;
                  }
                  if(s == 11){
                    tawase = -100;
                  }
                  if(s == 12){
                    tawase = -200;
                  }
                  if(s == 13){
                    tawase = -300;
                  }
                  if(s == 14){
                    tawase = -400;
                  }
                  if(s == 15){
                    tawase = -500;
                  }
                  if(s == 16){
                    tawase = -400;
                  }
                  if(s == 17){
                    tawase = -300;
                  }
                  if(s == 18){
                    tawase = -200;
                  }
                  if(s == 19){
                    tawase = -100;
                  }
                  if(s == 20){
                    tawase = 0;
                  }
               }
               if(s>20){
                  s=0;
               }
               if((s==0)or(s==10)or(s==20)){
                  awase = 150;
               }
               awase = 150 + tawase;
           }
        }



ブレッドボード上での動作試験はほぼ完了しているのですが、組込の為には、本体からのTX信号(送信時:”L”、受信時 :”H" ;+3.3V)を準備する必要があります。TS820本体の回路図を見て回路追加ありも考慮の上,TX/RX信号線を用意しなければなりません。RIT-SWもロック無しタイプのSWに交換しないといけません。本体の元々のRIT-SWの交換(ロック無しSWに変更)用SWがあるのかも探さないといけません。まだまだやることがたくさんあります。先ずは実機動作確認が重要ですので、仮のボタンSWを使いRITテスト運用したいと思っています。

VFOsysはJF3HZB局  上保(uebo)OM の公開のデジタルサブダイヤルDDS-VFO スケッチ です。私なりのスケッチ追加にて全バンド化モデファイしTS820Sの本体のアナログVFOと入れ替えたものです。

上保氏のホームページからリンクされたgithub.comにスケッチがあります。ここのVFOsysを使わさせていただきました。 UEBO氏には、重ね重ね、お礼申し上げます。

https://tj-lab.org/2019/02/15/vfo4/

https://github.com/tjlab-jf3hzb/Digital_VFO_with_analog_dial

つづく?

execution time : 0.031 sec
サイト内検索

メインメニュー

ログイン
ユーザ名:

パスワード:



パスワード紛失


オンライン状況
160 人のユーザが現在オンラインです。 (85 人のユーザが 無線ブログ集 を参照しています。)

登録ユーザ: 0
ゲスト: 160

もっと...