TS820用のDDS−VFO(VFOsys改)に対しての本体側のバンド情報のシリアルデータ送出のArduinoNANOの回路をブレッドボードに新たに再現出来ました。これで、現状のTS820に組み込みしたArduinoNANOとTS820外部DDS-VFO(VFOsys)のメンテナンスも改良も検討できる状態となりました。新たなフィーチャーなどのスケッチをコーディングまたデバッグも出来る体制ということです。同じ動作をするものということで、実機で使いながら改善、改良、デバッグ等を行えます。

実は既に別の問題を見つけています。まだ、本体の旧VFOを使った時の追加したArduinoNANO回路のタイマーで発生するプチノイズも、対策案は出来ていますが、実機への組み込みも未だですが、新たな問題です。これは、単純に言ってスケッチ(プログラム)上の私のミスです。先ずは、その内容についてですが、これはDDS-VFO(VFOsys改)を使っていての問題です。実機でSSBの電波の状態を確認しようと思い、他の受信機でDDS-VFO(VFOsys改)の周波数をモニターした時の事です。残念ながらSSBの自分の変調(音声)は聞こえて来ませんでした。おかしいと思いロータリーエンコーダーを回して止まった周波数では問題なく変調(音声)は聞こえます。本体のバンドSWを変えるとバンドSWに合わせた周波数帯の設定周波数に自動になってくれるのですが、その周波数はDDS-VFO(VFOsys改)に表示されてはいるのですが、(変調)信号が出ていないのです。つまりDDS−VFO(VFOsys改)が表示してる周波数のキャリアがが出ていません。受信機から変調(音声)が聞こえない状態です。SSBだとわかりにくいので、CWモードでも確認しましたが、電波が出ていませんでした。ただし判ったこととして、ロータリーエンコーダーを動かした途端に周波数が発振し始めるという何とも変な挙動です。一旦発振し始めた後は各周波数で問題なく動作(発振)します。いままでは、バンドSWを回して、すぐにロータリーエンコーダーに触っていました。このため発振していたので、全くロータリーエンコーダーに触らない状態での確認が抜けていました。実際の周波数をモニターしてわかった問題です。ということで、丁度いい具合にシミュレーションボードも揃いました。また、シミュレーションボード以外に使用していないゼネカバ受信できるトランシーバー(TS−140)も受信機として使うことにしました。これで、実機でのキャリア発振周波数の確認も出来ます。やはり実機で確認するのが必要であると痛感しました。実際の対策スケッチも、オリジナルのVFOsysスケッチを参考にしながら、問題の箇所を探してみます。一旦夕食で外します。続きを書くで、対処方法検討について記します。

つづく?
TS820用外部DDS-VFO(VFOsys改)がTS820本体からのシリアルデータバンド情報を受取ってデコードしてTFT液晶には上手く表示されはするものの、実際のDDS-ICのSi5351AへはキャリアONコードが出ていないという状態です。この状態から対策は、DDS-ICのSi5351AへキャリアONするコードを生成するスケッチを追加するということです。比較的この問題点は容易に解決しそうです。その前にこのような問題を確認出来る様に新たに用意したTS820本体用のArduinoNANOボードと、TS820外部DDS−VFO(VFOsys改)側のESP32DivKitCボードとDDS-ICの写真です。このボードで問題再現を確認しました。そして、対策スケッチコーディング後に、これらのボードで確認してゆきます。

TS820本体側のバンドSWボードとシリアル通信用ArduinoNANOボード
CIMG9009

9Vの電圧を抵抗で分圧してからArduinoNANOのデジタル入力ポートにいれてる各バンド配線です。
CIMG9011

TS820本体のメインボードとなるArduinoNANOボードです。
9Vからレギュレータで5V電源をつくりArduinoNANO、タイマーIC2個とOne Shot Pulse ICの電源供給してます。ArduinoNANOに繋がる配線の状態です。こんなラフな配線でも問題ありません。
CIMG9010

TS820外部DDS−VFO(VFOsys改)側のESP32DivKitC,ロータリーエンコーダー,DDS-IC(Si5351A),TFT液晶の各ボードと配線です。
CIMG9012

確認では欠くことのできないキャリア周波数確認用のゼネカバー受信できるトランシーバーも用意しています。
CIMG9014

これらのボード間のデータのやり取りを確認するためのロジックアナライザーです。
CIMG9015

以上のボード類と他デジタルストレージオシロスコープ、ロジックアナライザー、及びArduinoNANOの開発環境プラットフォーム上のシリアルディスプレー等を使いスケッチを修正しては、確認する方法で対策考え実行してゆきます。

実際の対策は最初の文章の通り、下記の追加で問題なくバンドSW情報をデコードしSi5351Aが送られたバンドの初期設定周波数で発振してくれました。今までは周波数が変わった時のフラグしか入れていませんでした。このためTFT液晶の表示は書き換えられてはいましたが、肝心の周波数発振のフラグがなかったので発振してくれませんでした。
これはスケッチの最初のControl flagsにきちんと記載あります。
/*----------------------------------------------------------------------------------
    Control flags
-----------------------------------------------------------------------------------*/
uint8_t f_fchange;  // if frequency changed, set this flag to 1
uint8_t f_cchange;  // if Car frequency and/or "f_carON" changed, set this flag to 1
uint8_t f_dchange;  // if need to renew display, set this flag to 1

上記の中のf_fchangeフラグを立てる必要がありました。周波数が変わった時に設定1にするとあります。Hi!
追加は下記の様にフラグの1を立てるスケッチ追加です。
f_fchange=1;//add 2020Dec12
void loop()の中の受信したバンド情報シリアルデコードデータからのバンドの周波数設定振り分けする箇所に追加です。全部で11バンド分11箇所に追加です。

-----------------------------------------------------------------------------------------------------
void loop() {    // (core1)
(省略)

if (bdat == "01"){  // 1.9MHz
      frq = freq01;
      HET_FREQ = HET_FREQ01;
      f_dchange = 1;
      f_fchange=1;//add 2020Dec12
     }
    else{
      if(bdat == "02"){ // 3.5MHz
        frq = freq02;
        HET_FREQ = HET_FREQ02;
        f_dchange = 1;
        f_fchange=1;//add 2020Dec12
      }
      else{
        if(bdat == "03"){ //7.1MHz
          frq = freq03;
          HET_FREQ = HET_FREQ03;
          f_dchange = 1;
          f_fchange=1;//add 2020Dec12
        }
        else{
          if(bdat == "04"){ //14.0MHz
            frq = freq04;
            HET_FREQ = HET_FREQ04;
            f_dchange = 1;
            f_fchange=1;//add 2020Dec12
          }
          else{
            if(bdat == "05"){ //WWV 15.0MHz
              frq = freq05;
              HET_FREQ = HET_FREQ05;
              f_dchange = 1;
              f_fchange=1;//add 2020Dec12
            }
            else{
              if(bdat == "06"){ // 18.0MHz
                frq = freq06;
                HET_FREQ = HET_FREQ06;
                f_dchange = 1;
                f_fchange=1;//add 2020Dec12
              }
              else{
                if(bdat == "07"){  // 21.0MHz
                  frq = freq07;
                  HET_FREQ = HET_FREQ07;
                  f_dchange = 1;
                  f_fchange=1;//add 2020Dec12
                }
                else{
                  if(bdat == "08"){  // 28.0MHz
                    frq = freq08;
                    HET_FREQ = HET_FREQ08;
                    f_dchange = 1;
                    f_fchange=1;//add 2020Dec12
                  }
                  else{
                    if(bdat == "09"){  // 28.5MHz
                      frq = freq09;
                      HET_FREQ = HET_FREQ09;
                      f_dchange = 1;
                      f_fchange=1;//add 2020Dec12
                    }
                    else{
                      if(bdat == "10"){  // 29.0MHz
                        frq = freq10;
                        HET_FREQ = HET_FREQ10;
                        f_dchange = 1;
                        f_fchange=1;//add 2020Dec12
                      }
                      else{
                        if(bdat == "11"){  // 29.5MHz
                          frq = freq11;
                          HET_FREQ = HET_FREQ11;
                          f_dchange = 1;
                          f_fchange=1;//add 2020Dec12
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
   delay(0);  
  //digitalWrite(LED_BUILTIN, 1^digitalRead(LED_BUILTIN) ); //  Toggle LED     
}
-----------------------------------------------------------------------------------------------------
上記対策で本体のバンドSW情報でVFOsys改のロータリーエンコーダを回さずにDDS-IC(Si5351A)が上手く表示周波数で発振してくれるようになりました。

TS820外部DDS−VFO(VFOsys改)のESP32DivKitCと修正して書き込んだ物と入れ替えて本物のTS820での確認をできれば明日行いたいと思っています。

つづく?