IC-7400 外部VFO その1

ウチのシャックでは無線機は机の正面ではなく、左横のラックに置いてあり、左手で操作をしている。今まで交信よりは制作メインだったので、正面に無線機があると、制作のときにはんだごてで無線機のパネルを溶かしたりしまったことがあり、正面には置いていない。机をL字型にしてコーナーに陣取る配置にするのが理想的かも知れないが、サラリーマンの住宅にはそんなスペースは無い。先日、Field Day コンテストの時、無線機のVFOを左手でずっと動かしているのに疲れてしまったのでどうにかならないかと思った。エレキーも左手なので疲れると符号も間違える。

ICOMの無線機で使える、リモートエンコーダーといういいものがあるが、ソフトも合わせると3万円弱になりおいそれとは買えない値段。
RS-BA1
CI-V を Arduino に接続し Arduinoエンコーダーをつないで制御すれば同じものができるのではないかと思いついた。周波数表示もエンコーダー側につけて外部VFO風にすればほとんど正面を向いてオペレートできそうである。

事前調査のため参考にしたページ:
ICOMトランシ-バ用周波数表示機 Frequecy display for ICOM radio
https://jj1jpm.at.webry.info/201608/article_1.html
CI-V 取得のテストをしてみた。
Sメーターレベルの読み込み
コマンド15 サブ02
9byte のデータが返ってくる。赤2byteが Sメーターレベルのデータ。
FE FE E0 70 15 2 0 81 FD
表示周波数の読み込み
コマンド 03 サブ無し
11byte のデータが返ってくる。赤5byteが周波数データ。
FE FE E0 70 3 80 71 26 44 1 FD
データはHexだが、10進の部分だけの数字データが 10Hz の桁(6byte目)から上に向かって返ってくる。6byte目の1の位の値は常に0であり、10Hz のデータは10の位に入ってくるので4bitシフトしたほうが処理しやすい。このデータは 144.267.18 を表している。
無線機の電源オフ時
2byte のプリアンプル FF FF が返る(ように見える)。
周波数データの設定
[コマンド 05 サブ無し] となっているが、やってみると周波数を設定できない。
以下のページを見ると、サブコマンドのフィールドは送信していないので同様にしてみると設定できた。
http://www.kc9umr.com/?p=135
気づいたこと:
- 数値が周波数として適合しないバイト値があると値は設定されない。99MHz以下の場合など、本来はバイトデータは4個かも知れないが、バイト値は5個で最後の値を 0 にしてもOK。
- 周波数を設定して直後にコマンド03 で読み取りすると、70e0fefef といったゴミ周波数が返ってくる。時間を長く置いてから読み取りしてもNG。もう一度読み取りすると正しい値が得られる。これはちょっとハマった。
- CI-V のトランシーブ設定をON/OFF 変更して 05 コマンドを試したがどちらも変化なかった。トランシーブ設定とはどういう意味があるのだろう?

ロータリーエンコーダについて
まず手持ちの軸がとっても固い秋月のエンコーダーを使って動作確認。
P-06358 ロータリーエンコーダ(ノンクリックタイプ)EC12E2430803
https://akizukidenshi.com/catalog/g/gP-06358/
しかし、このエンコーダー、データシートもピン配置も載っていない。とりあえず参考ページで使っている EC10E と同じピン配置(GNDが右)と想定して使ってみたところ、値はとれるが、エンコーダーを回すと増加しかしない。ピン配置を変更(GNDが真ん中)したところ正しく動作するようになった。なお、抵抗でのプルアップだけではなく、本番では以下のように配線したほうがよさそうである。
https://tech.alpsalpine.com/prod/j/html/encoder/incremental/ec10e/ec10e_common.html
秋月の EC12E2430803 は24分解能でトルクが重いので、Standard か Lightest が欲しいが、クリック無しでは Lightest の EC12E24104A6 しな無く、ALPS ではいいのが無い。秋葉界隈の店ではちょうどいいのを入手できるかわからない。
Amazon を見ていたら 5V Terminal Electronic CNC Handwheel Manual Pulse Encoder Generator という、まるで VFO 用に作られたようなロータリーエンコーダーを売っていた。アルミ地と黒色があるが、黒色なら最安で 2139円。
https://www.amazon.co.jp/-/en/gp/product/B07K1N3GDQ/ref=ox_sc_act_title_2?smid=A2BUGY3TKODVI&psc=1
さらにアリババを見てみると最安は 1300円ぐらい。普通の抵抗型のエンコーダーでも 900円ぐらいするので、アリババで買うしかない、と悟った。
https://ja.aliexpress.com/item/1005002353049308.html?spm=a2g0o.productlist.0.0.31ea346dNBuim1&algo_pvid=320367d5-2904-42f2-8f2f-dd0d9b2b6efd&algo_exp_id=320367d5-2904-42f2-8f2f-dd0d9b2b6efd-12
配線が4Pと6Pがあってよくわからないが、6P は RS-422 らしい。
しかし、さらに悩ましい問題が発覚。パルス数は今、テスト用に使っている秋月EC12E2430803 と同じ 25PPR が欲しい。これは IC-7400 の VFO ノブの 1/4 パルスになり、CW での選局操作がやりやすい。しかし、CNC Handwheel Manual Pulse Encoder Generator の選択肢は 25PPR-12V か 100PPR-5V になってしまい、25PPR を選ぶと 12V が必要になる。そうすると、製作品の電源としては12Vとなり、Arduino 用には降圧が必要になってちょっと面倒。できれば 5V 単一ですっきり済ませたいと思うが仕方ない。

ロータリーエンコーダーのケースを考えねばならない。 https://www.takachi-el.co.jp/products/TS で一番小さい傾斜型ケースは TS-1S。周波数表示LEDモジュールは 12.7cm と書いてあるので、それを収めるとなると TS-1 になるがちょっと卓上には大きすぎる感じ。エンコーダーの枠は木で作って、Arduino+周波数表示部は別体にする案もある。エンコーダーが動かないように錘が必要になる。
[続く]