ACURE OPTICS TRAVERSE がSky-Watcher(R)社のSynScanProで動かせると聞いたので 以前に調査したモータープロトコル がそのまま使えるのでは?と思い調べてみました。
TRAVERSEとSynScanPro間の通信を調べてみると、モータープロトコルの仕様書には記載されていないコマンドが多用されていました。新しいコマンドは最近のSynScanAppバージョンと、最近のAZ-GTiファームウェア間で通信されている「:X」で始まるコマンド群のようです。
仕様書は2021年止まりで以来更新されておらず、Xで始まる送信コマンドの記述はなく、推測するしかありません。
つまり、AZ-GTiを動かしていた方法では全然制御できそうにありません!
トラバースでモータを動かすだけなら簡単!
一方、少なくともTRAVERSEを動かすだけであれば、コマンドはとても単純でした。
赤経と赤緯、スピード0~9、の通信内容を全て調べたところ、非常にシンプルな規則性が判明。
従来のプロトコルでは、1.回転方向セット、2.速度セット、3.動作開始、4.動作終了、と4つコマンドを使う必要がありましたが、トラバースを動かすコマンドは「速度セット」1つのみと超シンプル!
基準となる数字は「12091.5」
恒星時駆動x1.0の速度がどうやら「12091.5」のようです。X0.5なら6046、x8なら96732。これを覚えていてください。(なぜこの数値になるのか、プロトコルが不明なので謎のままですが、とりあえずこの数字でトラバースはうまく動きます)
モーター速度セットコマンド
モーター速度を変更するコマンドはこのような21文字のテキストフォーマットです。
:X1020000000000002F3C
(これに続けて改行コード0x0Dを送るとコマンドが確定します。)
パーツに分解すると以下のようになります。
:X | 1 | 02 | 0000000000002F3C |
拡張コマンド? | 赤経・水平軸=1 赤緯・垂直軸=2 | 速度設定コマンド? | 速度設定値 |
「:X」のあとに赤経か赤緯かで「1」か「2」の1文字、その後「02」、その後16進数表記の16文字で速度指定し、最後は改行記号「0D」を送ればコマンドが確定します。チェックサムもありません。軸番号と速度指定値を差し換えれば、自在に動かせます。
SynScanAppでプラス方向(右ボタン、上ボタン)のとき、速度指定値は次のようになっています。
STEP | 対恒星時速度 | 速度設定値 | 10進法での値 | 12091.5の何倍 |
0 | 0.5 | 000000000000179E | 6046 | 0.500020676 |
1 | 1 | 0000000000002F3C | 12092 | 1.000041351 |
2 | 8 | 00000000000179DC | 96732 | 8 |
3 | 16 | 000000000002F3B8 | 193464 | 16 |
4 | 32 | 000000000005E770 | 386928 | 32 |
5 | 64 | 00000000000BCEE0 | 773856 | 64 |
6 | 128 | 0000000000179DC1 | 1547713 | 128.0000827 |
7 | 400 | 000000000049CCFA | 4836602 | 400.0001654 |
8 | 600 | 00000000006EB376 | 7254902 | 600.0001654 |
9 | 800 | 00000000009399F3 | 9673203 | 800.0002481 |
また、反対方向に動く、つまりSynScanAppでマイナス方向(左ボタン、下ボタン)のとき、速度設定値は単純にマイナス値になります。(64ビット整数表現でのマイナス値)
STEP | 対恒星時速度 | 速度設定値 | 10進法での値 | 12091.5の何倍 |
0 | -0.5 | FFFFFFFFFFFFE862 | -6046 | -0.500020676 |
1 | -1 | FFFFFFFFFFFFD0C4 | -12092 | -1.000041351 |
2 | -8 | FFFFFFFFFFFE8624 | -96732 | -8 |
3 | -16 | FFFFFFFFFFFD0C48 | -193464 | -16 |
4 | -32 | FFFFFFFFFFFA1890 | -386928 | -32 |
5 | -64 | FFFFFFFFFFF43120 | -773856 | -64 |
6 | -128 | FFFFFFFFFFE8623F | -1547713 | -128.0000827 |
7 | -400 | FFFFFFFFFFB63306 | -4836602 | -400.0001654 |
8 | -600 | FFFFFFFFFF914C8A | -7254902 | -600.0001654 |
9 | -800 | FFFFFFFFFF6C660D | -9673203 | -800.0002481 |
そして、モーターの停止は、速度に0をセットするだけ。全く同じ構造です。
STEP | 対恒星時速度 | 速度設定値 | 10進法での値 | 12091.5の何倍 |
0 | 0000000000000000 | 0 | 0 |
上記の表は、SynScanProアプリで、速度ステップを変えた時の値を拾ったものですが、表にない値でも任意の速度で動かせます。
(赤道儀状に設置して)太陽時駆動、月時駆動も次のようにできるはず。
恒星時 23:56:04.091 = 86164.091(秒)
太陽時 24:00:00.000 = 86400.00(秒)
月時 23:03:39.014 = 83019.014(秒)
太陽時速度=12091.5 * 86164.091 / 86400.00 = 12058.49≒ 12058⇒ 0000000000002F1A
月時速度=12091.5 * 83019.014 / 86400.00 = 11618.34≒ 11618 ⇒ 0000000000002D62
64ビットHEX(16進数表記)の簡単な取り方
64ビット整数表現ですが、Windowsなら電卓アプリで簡単に取れます。
電卓を起動、プログラマ電卓モードにします。
DEC(10進法)を選択して、例えば10進法で数字「-12092」を入力すると、HEX(16進数) のところに 「FFFF FFFF FFFF D0C4」と表示されます。
その後、HEXを選択すると表示が16進表示に変わるので、そのままCtrl+Cで「FFFF FFFF FFFF D0C4」がコピーできます。
TRAVERSEを動かしてみましょう
ネットワークで動かすにはUDP通信で動かしますが、ここでは簡単にシリアル通信でやってみます。
USBA-USBCケーブルでWindowsPCとトラバースを接続します。
トラバースはなんと、PCのUSBポートからの給電のみでも動きます。省エネ!
ここではTeraTermを使っていますが、シリアルターミナルなら何でもよいです。
USBケーブルを接続すると、シリアルCOMポートが一つ追加されていますので、これを選択して接続します。(USB接続なのでボーレートは何でもよいです)
改行コードはCRに設定。見えやすいようにローカルエコーはONにします。
「:X10200000000009399F3」と入力してEnter。赤経軸(水平軸)が800倍速で回転します。
「:X102FFFFFFFFFF6C660D」と入力してEnter。赤経軸(水平軸)が800倍速で逆回転します。いきなり逆回転に設定してもちゃんと減速・停止・加速制御をしてくれます。えらい!
「:X1020000000000000000」と入力してEnter。赤経軸(水平軸)が停止します。
「:X20200000000009399F3」と入力してEnter。赤緯軸(垂直軸)が800倍速で回転します。
「:X202FFFFFFFFFF6C660D」と入力してEnter。赤緯軸(垂直軸)が800倍速で逆回転します。
「:X2020000000000000000」と入力してEnter。赤緯軸(垂直軸)が停止します。
このように下記のオレンジの部分だけを変えれば、自由自在に動かせます。
「:X10200000000009399F3」
自作プログラムで制御して、例えばトラバースをタイムラプス用架台にするとか、望遠鏡以外でも何かを乗せて2軸電動架台にするとか、何かと遊べそうです。