FocusControl with USB
Focus Motor Control by hidRelayBoard (2022/02/03更新)
最近、天体撮影をはじめました。天体望遠鏡や赤道儀、GOTO等を購入し、ベランダに設置し、室内からKStars等のソフトを使って自由に望遠鏡の方向を制御することができる様になったのですが、望遠鏡の焦点を合わせるには外にある望遠鏡のノブを回さなければなりません。そこで右図の様なFocusMotorなるものを購入し、望遠鏡に取り付けボタンのタッチで焦点を制御することが可能になったのですが、やはり外に出なければならず、PCのモニターを見ながら調整というのは難しい状態でした。
そこで、今回USB制御のリレーボードを購入し、PCからUSBを通してフォーカスボタンを押すことが出来るようハードとソフトを開発しました。これにより、カメラの取り付けとかの初期作業はともかく一旦セットしたら全て、室内のPCから制御出来る様になり、寒い冬も楽に天体撮影をこなせる様になりました。
1. 天体撮影のための機材
天体撮影のためには天体望遠鏡が必要であるが、最初は何も分からず2万円台の反射式望遠鏡と専用のカメラを購入し、随分と安くシステムを構築できたと喜んでいたが、2軸制御の赤道儀、光害防止フィルター、カメラの天体撮影用にカメラの改造などその後遠回りして、機材を買い揃えると10万20万と沼にはまってしまうことになった。ここでは本題の主旨とは外れるのでこれ以上は述べない。
1.1 追加ハード(その1)
2.ハードウェアの改造
2.1 モーターコントローラーとRelayBoardの接続
USBでリレーを制御するために右図の様なRelayBoardをAmazonで購入した。HID制御でOS dependantなDriverは不要というふれこみのUSB制御のリレーボードで799円という安さである。hid制御ということで探せば他にも色々ありそうである。
リレーは1Cの物が2個乗っているがFocusMoterはボタン当たり2C接点が必要なので、5V2C接点のリレーを別に購入して載せ替えている。(後に述べるがリレーの載せ替えは必ずしも必要ではなかったのでこのままでも良い)
余計なことであるが、電話関係の仕事をしていた私としてはC接点はContinues接点のことかと悩んでしまったが、A接点はMake、B接点はBreak、C接点はTransfer接点のことらしい。
WINGONEER DC 5V 2チャンネルリレーモジュール無料ドライバーUSBコントロールスイッチPCインテリジェントコントロール
まず、FocusMoterを制御しているControllerを分解して、その回路を調べてみた。
Controllerはモーターのスピードを制御するボリュームノブと2つのプッシュスイッチが実装されている。また電源として9Vの電池を使っている。回路上スピードコントロール用のボリュームは定電圧回路の電圧を制御している。FASTに回すと電圧が高くなり、SLOWにすると、電圧が低くなるようになっている。
スイッチの1-1と2-1は押すと定電圧回路に電源を接続する為に使われとおり、スイッチの1-2と2-2はそれぞれどちらかを押すことにより、モーターに加える電圧の極性を変えている。すなわち押されたスイッチにより、モーターの回転方向が変わることになる。
RelayBoadのそれぞれ二つの接点をプッシュスイッチの接点と置き換えれば良いことになる。
しかし、ここで注意しなければならないのリレー接点を接続したら、2つのプッシュスイッチは必ず取り除かなければならい。取り除かないとリレーのみ動作した場合電源がショートしてしまう。
1-1と2-1はスイッチが押されていない時、電池が定電圧回路に接続されない様にして、電池の消耗を避けるためのものであり、電池でなくローカル給電とする場合は常にON状態としても問題は無いであろう。従って、電池でなければ1C接点のリレーでも制御出来ることになる。
3. 制御ソフトウェア
3.1 USBRelayBoadの検出
RelayBoadがPCから検出出来るかどうかを確認する為、Terminal画面から
lsusb -v -d
と打ち込むとそのPC(Mac)のUSBに接続されている全機器のリストが表示されます。
このRelayBoardに関しては
USBRelay2:
Product ID: 0x05df
Vendor ID: 0x16c0
Version: 1.00
Speed: Up to 1.5 Mb/s
Manufacturer: www.dcttech.com
Location ID: 0x00320000 / 14
Current Available (mA): 500
Current Required (mA): 20
Extra Operating Current (mA): 0
の様に表示されます。
3.2 USBRelayBoadの制御
これにより、ProductIDとVendorIDが判明するので、これに向けてコマンドを送出すれば、リレーが制御することができます。コマンドの様式が不明ですので、Manufacturerであるwww.dcttech.comを検索すればどうコマンドを送れば良いかが調べられます。どうやら8バイトのデーターを送ればリレーを制御出来る様です。
1. 0xff or 0xfd (0xffでON、0xfdでOFF)
2. 0x01 or 0x02 (0x01は一個目のリレー、0x02は2個目のリレー)
3-8 0xff (fillerとして0xffを埋めておく)
3.3 制御プログラム
GUIプログラムなので、Xcodeを使って開発しました。
Mac用実行形式ファイル FocusControl.app (実行可能プログラムなので「セキュリティとプライバシー」で実行許可を与える必要アリ)
また他のOS用の参考として FocusControl.xcodeproj
をダウンロード出来る様にしています。
ここでこのプログラムを動かしてみます。
リレーボードをUSBに接続しないで動作させると左下の様になり、接続すると右下の様に変わります。
プログラムはコントローラーをシュミレートしている。2つのボタンは”Near"と"Far"と記してあるが、押すことにより遠くあるいは近くに焦点を合わせる意味であるが、モーターの取り付け位置により逆となるが、特に気にすることも無いであろう。コントローラーのメカスイッチは押している間だけ動作するが、マウスのクリックでの操作は難しいので"Time Select"のラジオボタンで押している時間を制御する様にした。
プログラムの終了は赤ボタンではなく、”QUIT"ボタンを押す。コントローラーには速度調整用のボリュームノブが実装されているが、プログラムでは制御していない。ノブは使用状況に合わせて、適当な位置にセットしておけば用が足りると思う。
このコントローラでは9V (006P)をモーター電源としているが、メインテナンスを考えると煩わしくせっかくのUSB接続なので、USBから電源を取ることにした。USBは5Vなので、9Vでにする為に右の様なDC-DCコンバーターをAmazonで購入した。これも2個で899円と安価であった。他にも色々あったが降圧のみで昇圧できないものもある様なので、USB端子がついているものを購入するのが安全である。
これをUSBの電源供給端子に接続して、出力電圧を9Vに調整した。
4. 電源のUSB給電
5. 最終形
このUSBコントロールのフォーカスコントローラーのスナップを左にアップした。
最初は電池電圧の供給までは考えていなかったので、1Cのリレー2個を2Cのリレー2個に取り替えて、フルに配線してある。このリレーボードと電源ボードをコントローラーの背面に貼り付けてある。
何かのボックスに入れればもっとスマートにできたかもしれないが見かけにこだわらないので、裸で天体望遠鏡のところに転がしてある。
追記:
天体望遠鏡からPCへの接続はUSBカメラ、マウントコントローラーなど数が多くUSBハブを使ってUSB一本でPCまで持っていっているが、流石にこれらを一個のUSBポートのバスパワーで電源供給するのは厳しいので、ローカル給電のハブを使用している。
ローカル給電にするとこのリレーボードが認識されないことがあったが、一旦ローカル電源を抜き差しすればその後は問題なく認識する様である。