夕食を食べて7時半となると、少し眠くなるのだが、そこは、我慢して?TS820VFOの自動周波数設定の為に選択したバンド情報のシリアルデータを本体から送り、そのシリアルデータを受信するArduinoNANOのスケッチ移植までを、先ずまとめることにします。今も続いていますが、TS820 用へのVFOsysの改良の流れです。

①最初YOUTUBEに面白いDDS-VFO動画をアップしているのを発見。データを公開してくれているので、対応するハード類を準備:VFOsysをダウンロードしてハード部を配線し、スケッチをコンパイル、書き込みし、アナログ風のデジタルデータダイアルサブダイアル、周波数表示に超感激!

②TS820用として、最初にVFOsysスケッチに周波数7MHz用でTS820のVFOの仕様に合わせて、周波数範囲を下記対応となるようにSI5351Aの周波数設定部のスケッチに追加修正を行う。
ダイヤル7.000MHz:VFOsys出力周波数5.500MHz
ダイヤル7.500MHz:VFOsys出力周波数5.000MHz
③VFOsysをSSB,CW用としてのキャリア補正部を追加 awase 変数にてSI5351Aの周波数ズレを補正出来るようにした。

④TS820VFOのVFOメカ部を外した後にTFT液晶を取り付けるために主ダイヤル、サブダイヤルの描画位置と周波数のフレームを外し、さらに周波数表示位置をTS820VFOフロントパネルの窓に合うようにスケッチ変更。仮組み込み完成。

⑤周波数7MHzオンリーでは、せっかくのTS820がモノバンドトランシーバーになってしまうので、TS820の全バンドをVFOsysに情報取り込む方法を検討開始。

⑥シリアル通信を使いTS820本体から、バンド選択情報を送る方式に決定し、先ずは手持ちのArduinoNANO2つで実験開始。TX用,RX用それぞれスケッチコーディング開始する。

⑦シリアルTXの送出データの仕様を勝手に決定(Stringデータを使用することに)扱い易いため!
”01  1.9MHz;" → ”01” バンドに対応する単純な”01”から順番にTS820のパネルに記載されている周波数全部を割り当てる。(一応仕様としてCandle for LINUX20に記載済み)

⑧受信部用のArduinoNANOにて、TS820本体に見立てたロータリーSWでの実験で先ずは、全バンドSW分を受信デコード成功!

⑨ESP32DivKitCの実験基板をVFOsys用に再び用意して、ArduinoNANOのシリアル受信部のスケッチを移植し、デバッグして、ArduinoNANOと同じくシリアルデータデコード成功!

⑩ArduinoNANOでTS820本体のバンド選択情報を送り、ESP32DivKitCのシリアル受信デコードを確認していて、VFOsysのロータリーエンコーダーを回して、バンド情報を送ってみると、周波数の設定が設定周波数に戻るバグに遭遇!さあー大変だ!になった。

⑪周波数エンコーダを回した後の送出が連続垂れ流しのシリアルデータであることが、周波数を毎回設定している状態だと、気づく!考えれば分かることだったが、遅かった!連続シリアルデータでも良いようにソフト処理で対策出来ないかを一応考え始める。がかなり大変そうなので他を検討することに!

⑫一番てっとり速い、シリアルデータを数回送り。その後は送出しない方式を検討することにした!安易な方法!ArduinoIDEにあるシリアルモニタを使い、ESP32DivKitのVFOsysのシリアル受信デコード部が2回の送出データでデコードが、ほぼ問題ない事を確認。ということで、シリアル受信部はほぼ変更無しで進めることに!

⑬TS820本体側のシリアルデータ送出用に用意したPUSH-SWで、2回送る様にプログラムを修正開始。本体のバンド切り替えSWを選んでから、シリアル送信用SWを押すことで、全バンド問題なくデコードされる。一応半自動周波数情報送出部完成とした。シリアル送受信とも一旦完成!

⑭全部のバンド情報がVFOsys側に取り込めるようになるので、全バンドの周波数表示とVFOの出力が常に5.500MHzから5.000MHzになるように、VFOsysのスケッチ追加修正を実験ボードのESP32DivKitCで行う。ほぼ完了!

⑮TS820本体のシリアルデータ送出用SWをなくすことを検討開始。SWのトリガーとしての単安定マルチバイブレータを実験開始。(TTL-IC:74121)本体のバンドSWに見立てたロータリーSWを回すも、パルスの発生とバンドSWの安定時間とのタイミングが悪いため、パルス発生するも不安定動作することが判明。別の方法を検討開始する。

⑯バンドSWを回して+B電圧(各バンドOSCの電源)がArduinoNANOのデジタルポートのD2 〜D12 のどれかにかかる事を想定して、各バンドに+B電圧が加わるまでのタイムラグを検出する方法をトリガーとする方向でタイマーIC555の検討開始。バンドSWを回すと、必ずオープンとなる時間が存在するので、1石のTrでスィッチングを行い同相の出力を得、タイマーIC555のTRG入力のトリガーとし、時定数用CRで0.5SECのH出力の立ち下がりでArduinoNANOの送出SW代わりになるようにした。最終的に時定数は約0.1SECとした。トリガー後にバンドSWが安定した時にシリアルデータ送信してくれる為、安定動作するようになりました。タイマーICはある時間経過後に今まで付けていた送出SWと同じ役目をしてくれるので、SWを押さなくても本体のバンドSWを変えるだけで、上手くシリアルデータを自動送出してくれます。ひとまず実験段階ですが、TS820のバンドSWを回すだけで、VFOsysへのシリアル情報を自動送出出来る様になりました。このバンドデータの自動送出化についても、後でまとめたいと思います。
ソフトウェアでの意地悪実験もやってみましたが、全部クリアしてます。下記の様な確認です。
バンドSWをできるだけ速く変える。1.9MHzから29.5MHzまでを一気にガチャガチャガチャと回すやつです。きちんとVFOsysも29.5MHzに設定されます。その逆も問題ありませんでした。2つ変えるとか3つ変えるとか色々とやりましたが、問題なく最終の止まったバンド設定にきちんとなりました。ゆっくりまわしても同様にきちんとバンド設定情報が送られて、設定されました。全く問題ありませんでした。予想以上に上手く動作してくれています。

あと検討することは、TS820本体のOSC部の電圧は+9Vであることより、今検討しているのは+5Vでの実験であることより、+9Vを+5Vへのレベル変換をを考える必要があります。が、単純に抵抗を使った分圧で9Vを5Vにするので良いのではないかと、安易に考えてます。大丈夫かなー?

今現在は、⑯というところです。とにかく自動で周波数が変わってくれるまでにはなりました。TS820のバンドSWに連動してVFOsysの周波数も設定されます。最高にいいです!
本体との接続としては、従来のVFOケーブルに追加するシリアル通信様のRX線、TX線の2本が必要となります。(GNDはVFOケーブル共用なります)
実験での成功を本体の820に組み込んで、同じようにシリアル自動送信するためにバンドSWの検出が上手く行き、自動送出してくれるかはまだ、わかりません。実験段階ではOKです。案外検討不足の為に実際の確認でコケることがあるので、そうならないといいのですが!特に確認していないのが、送信時の影響です。高周波の回り込みです。実際の電波が出ている時に動作が問題ないかということです。前のDDS-VFOでは問題ありませんでしたが、今回は、シリアル通信線があったりとか、TS820本体側のOSCの+B電源につながるとかがありますから!こんなことを考えると、やはり、各電源ラインなどに、パスコンでも余分に入れようかなどと思ったりしています。(SWRが高い状態で、確認したいところです。)

シリアル受信部とVFOsysへのシリアルデータでの全バンド対応のスケッチ改良部については、又の機会にまとめたいと思います。また、自動送出部の回路図もEAGLEでまとめないいけません。記憶が新しい内にやらないといけません。Hi!

あと、VFOsysには無い周波数メモリ機能とか、レジューム機能等、誰かVFOsysを改良している方がいたら、教えていただけると良いのですが!Hi!
2020年度内に先ずTS820のVFOのDDS化デジタルダイヤル化でリニューアルしたいものです。

つづく?