概要
懸案の,アンテナ切り替えスイッチ(リモコン部)とエレキーのrefurbish完了しました.
今まで,PICをそれぞれ使って,アンテナ切り替えとエレキーを動かしていましたが,メンテ性の向上のためにmbed1個に置き換えました.実際の機能としては何にも変わりません^^;
mbedの良いところは,ターミナルへ出力ができるので,途中の変数やポートの状況を出力して確認できて,debugが楽だというところです.
今後アンテナの構成を変えたような場合も対応が楽にできると思います.以下従前とreburbish後の様子です.
このアンテナ切り替えスイッチリモコン部は,元々手動のロータリースイッチで+/-/ACの電源を切り替えて,柱上の2系統の切り替えボックスに送り込み,それぞれ2個のリレーを独立して切り替え,3機+3機のアンテナを切り替えてました.
その後リグからのバンド情報をPICでデコードして,自動で切り替えを行うようにして使ってきました.
改造後の様子ですが,基板が前面パネルぎりぎりに取り付けられています.これは,mbedにUSBケーブルを基板の後ろ側から差し込む都合上このようになってしまいました.こんなに前に寄せる必要があるとは,取り付けるまで解りませんでした.mbedは基板に縦に取り付けて,上からケーブルを差し込むようにした方が良かったです.
アンテナ切り替えスイッチは,案外複雑で^^; ソースはPICのものを流用しました.特に問題なく移植できました.
むしろ,今まで機械式のリレーを使用していたのを,フォトリレーに置き換えたのが1番大きな違いかも知れません.リレー4個がなくなってすっきりしましたし,それに伴い,リレーのドライブ用トランジスタと環流ダイオードもそれぞれ4個不要となりました.
いままで,PICのデジタル出力がHのとき,トランジスターをオンにして,リレーが切り替わりましたが,新システムでは,mbedで直接photo relayをグランドに落とすので,出力の論理を反転する必要がありました.
エレキーは,すべての処理をタイマー割り込みで行うようにしたため,今までのソースは全く使えませんでした.ゼロからのコーディングとなりましたが,機能は前と変わらないと思います.
ソースは当然残しますが,またシステムが変わると,ソースコードの使い回しはできないので,アルゴリズムについて,自分用のメモを残しておきます.
エレキーのアルゴリズム
基本は,長点または短点出力が終わり,1ドット分のスペースが終わった瞬間(つまり,次の符号の立ち上がり時)に,パドルが押されているかを判断します.
短点が終わった場合は,次の優先順位で,次に出す符号・状態を決めます.
- パドルの長点側が押されていたら,次は長点
- 短点が押されていたら次は短点
- どちらも押されていなかったら,次はアイドル
まあ,これは当たり前です.
長点が終わるとき
- 短点が押されていたら,次は短点
- もし,長点が出ている間の途中から,今の時点までに短点側のパドルが押されていたら,その状態が保持されていなくても,次は短点
- 長点が押されていたら長点
- 次はアイドル
ということになります.2がいわゆるメモリー動作で,どの時点からメモリーを有効にすればよいかは,要調整です.現在は,長点の後ろの1/3と,長点後のスペースの間に押されていれば,ということにしています.
なお,すべての処理は,1msごとの割り込みで処理します.スピードもアナログポートからボリュームの電圧を読み込み,最低の速度と最高の速度の間を計算して出しています.
動作としては,Iambic Aに近いです.