久々のブログを更新です。
TS-820のとてもお気に入りのトランシーバーも時代と共に古くなり少しでもリニューアルできれば、との思いから外部VFOを使ったDDS-VFOの構想をし作製しました。
TS-820用の外部VFOを使った周波数データのシリアル通信を使う方式でのDDS-VFOは完成し実際の運用まで上手くできました。が、やはり本当の本体用のDDS−VFOとしてはTS-820 本体には組み込み出来ていません。外付VFOを利用した異質の本体用DDS−VFOでした。やはり本体に組み込んだ単体型ではない、構成上シリアル線が繋がったりと設置上利便性に欠けたDDS-VFOとなっていました。また、ネットをみても、TS-820のDDS-VFOも従来のLCDタイプや、自作器用以外で、特に目をひく様なDDS-VFOはありませんでした。あれば真似しますが! 勿論素晴らしい動作上問題のないDDS-VFOはたくさんありました。ということから新たにTS-820用組込DDS-VFOを検討して見ることにしました。元となるのは、今回も、JF3HZB上保OM局の公開のソフトウェアのVFOsysを利用させていただきました。VFOsysは外観上サブダイアルもデジタルで処理され、また周波数表示もあるとても素晴らしいDDS-VFOです。
外国の方々もVFOsysを使った応用回路を実際につくってWEB公開している人もいます。
新たにというのは、他のArduinoを使わずにVFOsys用のESP32DIVKITC単体構成にするという事です。

作製済みの本体側に組み込みしていたシリアル通信でバンド情報検出のArduinoNANOは勿論使えません。前のTS−820外部DDS-VFOを参考にしますが、回路構成はかなり再考する必要があります。

今回は先ず、考える必要のある事ととして、前のDDS−VFOで使っていた本体の周波数(バンドSW)情報用のシリアル通信情報の代わりの周波数(バンドSW)認識方式を別途考えます。前のDDS-VFOで使っていた本体のPLLユニットからのバンドSW選択時の11本の出力とGND,+9Vの電源はそのまま利用することになります。周波数をArduinoNANOから送出のシリアルデータで得ていたESP32DevKitCではシリアルポートを使わずに認識する必要があります。つまり単純には、新たに11本の入力ポートを用意する必要があります。しかし、現状のDDS-VFOで使用している、ロータリーエンコーダ用ポート、TFT液晶用ポート、DDS-IC(SI5315A)用ポート、後々付けたいHAMLOG用のシリアル通信2ポート、他バンド出力4ポート(BCD)等を考えると、各バンド用11本の入力ポート追加は容易には用意出来ません。そこで、バンド出力と同じ4ポートでの11バンドを判別するBCD変換回路を用意することで入力数を減らす事を考えます。ポートを減らしてのバンド判別が可能になります。これは前のブログの中で、拡張ポートの検討時に既に検討済みのダイオードを使ったBCD変換回路そのもので行います。

http://jl7gmn.livedoor.blog/archives/8032904.html
ダイオードでのBCD変換回路
範囲を選択_164
ここでは+5Vとしての回路ですが、使う場合は、PLLユニットからのバンド出力は+9Vですので、抵抗分圧による簡易分圧回路が入ります。

下記が実際に組んだBCD変換回路です。RN3,RN4が抵抗アレイで入力のバンドSWからの抵抗とで1/2に入力電圧を分圧します。(+9Vを約+4.5Vに変換)
ESP32DevKitCの入力としては+3.3Vが適切かと思いますが、後に抵抗を通してバッファーICを入れるので最終的には微調整したいと思っています。
範囲を選択_246
ジャンパー線がいつくかありますが、パターン配線上必要な為の追加で、回路上はなんら、必要ありません。
上記の回路でバンド情報をBCDに変換します。
必ず11ポートのどれかには、+9Vがかかっています。上記回路にあるD21,D22,D23,D24がバンドSWが変化した場合の検出出力で次の入力回路に繋ぎます。ESP32DIVKITCに検出の為の入力ポートを用意する必要があります。ただし、ESP32DevKitCの入力検出としては通常時”H”、検出時”L”の検出SWを想定し、実際はこのSWの代わりのパルス発生回路追加をする必要が出てきます。これは前の外部DDS-VFOの時と同じ動作なので同じ方式を用いる必要があります。連続の同じ出力を用いた場合は、バンド情報は検出できても、エンコーダーを回しても周波数は、常にリセットされてしまう現象が前のDDS−VFOでも確認されました。前回はこの対策としては単発パルス方式に変える対策で処理しました。全く同じですので、過去と同じ対策回路を今回も利用しています。この回路で使用するのは、トランジスタでの”L”検出回路とタイマーIC(555)及びパルス発生IC(74121)での通常時”H”、検出時出力の”L”の単発”L”パルス出力です。若干変わったのはトランジスタ回路の後段接続のダイオードD25の追加です。

範囲を選択_248A

動作としては、バンドSWが変化した時に通常”H”レベルが一瞬”オープンになりT1がオフとなっている間、タイマーICの入力に繋がったD25がR3を通してGNDレベルになります。これがタイマーICのトリガーとなり出力がタイマー設定時間”H”を出力します。このタイマー出力の立ち下がりを次段のパルスIC(74121)が検出して通常時”H”レベルだったのが設定時間分の”L”パルスを発生するという仕組みです
このパルスをESP32DevKitCのバンドSWの検出パルスとします。
この状態(電源が入っていから安定している状態)ではバンドSWの変化の検出は問題なくできますが、しかし、電源投入時はこの回路では、バンドSWの情報が検出できません。(同じバンドSWと初期設定バンドが同じ以外)初期設定と異なるバンドSW状態ではソフトウェアの初期設定バンドのままで起動してしまいます。前のTS-820外部DDS-VFOでは、この回避の為に、ESP32DevKitCからシリアルデータで”99”を送出し、シリアルRX線から信号パルス検出し別のタイマーICを用意して、起動時のバンドSW読み取りのためにタイマーを起動させ、ある時間経過後に同じパルスICでパルス発生させていました。今回はバンド情報送出のシリアルポートは使いませんから、代わりにESP32DevKitCでは出力ポートを1つ用意します。このポートでは電源が入ってからある時間経過後の安定通常時”H”になってから”L”を出力し、その後”H”を出力し通常時に戻す方法をとります。この”L”時の出力がタイマーの入力に繋がっているのでトリガーとなりタイマーが開始します。パルスICに繋がっているのでタイマー出力が終わる”H”から”L”の立ち下がりでパルスICから”L”パルスが出力されるという具合です


ESP32DevKitCの出力ポート設定の追加(VFOsysのコードに追加)
#define START_ON 0    //Output PORT 0 start timer torrigger for IC 555 2pin

void setup() の各初期化設定後のコーディング中にSTART_ONのピン設定と最後に出力するコードを書くことで対応した。

void setup()
}
.
.
.
 pinMode(START_ON, OUTPUT);   // 0  START TORRIGGER OUTPUT
.
.
 digitalWrite(START_ON,LOW); // 0 Port  Preset OUTPUT level "L"
 digitalWrite(START_ON,HIGH); // 0 Port START TORRIGGER OUTPUT "H"

 }    


この”L”出力を今回も別途用意したタイマーICの入力に繋ぎ電源が入ってからのタイマーとOR動作処理でパルスを発生させることで電源投入時のバンドSWの読み取りを行わせています。方式は違いますが、電源投入後に長めのタイマーを使いパルス発生させることは前のTS-820外部DDS-VFOと同じ方式です。なお、パルスはESP32DevKitCの検出入力ポートがパスル”L”を検出した時にダイオード構成のバンドBCD出力を同じく4ポート分の入力ポート状態をそれぞれ読み取りし、状態に合わせてソフトウェアでバンド識別を行いDDS-ICへ周波数を設定するコーディングにします。

下記が新たなバンドSWの検出回路全体になります

範囲を選択_250

ESP32DevKitCのバンドSW(BCD)検出用の4ポート入力とバンドSWパルス入力のソフトウェア処理については、次にします。

つづく?