Wemos&CNC3、オリジナルの基板も含めすでに6つのOnStepを作りました。と言ってもST4もGPSもRTC(時計)も使わないことにしたので、至ってシンプルなOnStepです。基本はASiair PlusやStellarmate(INDI, KStars, Ekos)からの操作になります。単独で動作させるときはAndroidのOnStepアプリを使って操作します。SynScanと遜色のない操作ができると思います。SynScanを使い倒したことはないんですが・・・
3Dプリント赤道儀のデータを公開したところ、OnStepの設定方法について問い合わせが増えたので簡単に説明したいと思います。まずは、Config.hファイルを開きます。
// PINMAP ------------------------------------------------- see https://onstep.groups.io/g/main/wiki/Configuration-Controller#PINMAP
// *** See the matching Pins.xxx.h file for your setup
// (found by looking in src/pinmaps/Models.h) with detailed information ***
// *** to be sure it matches your wiring. *** USE AT YOUR OWN RISK ***
// Parameter Name Value Default Notes Hint
#define PINMAP MaxESP3 // OFF, Choose from: MksGenL2, MiniPCB2, MaxPCB2, MaxESP3, CNC3, STM32Blue, <-Req'd
// MaxSTM3, FYSETC_S6_2, etc. Other boards and more info. in Constants.h
まずは、PINMAPを設定します。利用する基板を選択します。CNC3を利用する場合は”CNC3″と太字の部分を書き換えます。上記ではMaxESP3と設定しました。MaxESP3基板は使ったことはありませんが、同じPINMAP設定を使ったオリジナル基板を作成しました。PINMAP設定は、src/pinmap/Pins.MaxESP3.hの中にどのGPIOピンがドライバのどのピンに接続されているか記されています。これを書き換えれば違うESP32に対応させることも可能です。
// SERIAL PORT COMMAND CHANNELS --------------------------- see https://onstep.groups.io/g/main/wiki/Configuration-Controller#SERIAL
#define SERIAL_A_BAUD_DEFAULT 9600 // 9600, n. Where n=9600,19200,57600,115200 (common baud rates.) Infreq
#define SERIAL_B_BAUD_DEFAULT 9600 // 9600, n. See (src/HAL/) for your MCU Serial port # etc. Option
#define SERIAL_B_ESP_FLASHING OFF // OFF, ON Upload ESP8266 WiFi firmware through SERIAL_B with :ESPFLASH# cmd. Option
#define SERIAL_C_BAUD_DEFAULT ON // OFF, n, ON for ESP32 Bluetooth. Option
#define SERIAL_C_BLUETOOTH_NAME "OnStep CycloidalEQ" // "On..", Bluetooth device name for ESP32. Option
ブルートゥース接続をオンにするためにSERIAL_C_BAUD_DEFAULTを”ON“にします。
接続する時に分かりやすいように名前をつけます。SERIAL_C_BLUETOOTH_NAMEを”OnStep CycloidalEQ“としました。デバイス検索をするとこの名前が表示されます。
// MOUNT TYPE ----------------------------------------- see https://onstep.groups.io/g/main/wiki/Configuration-Controller#MOUNT_TYPE
#define MOUNT_TYPE GEM // GEM, GEM for German Equatorial, FORK for Equatorial Fork, or ALTAZM <-Req'd
MOUNT_TYPEにドイツ式赤道儀なら”GEM“、フォーク式なら”FORK“、経緯台なら”ALTAZM“と書き換えます。
// USER FEEDBACK ----------------------------------- see https://onstep.groups.io/g/main/wiki/Configuration-Controller#USER_FEEDBACK
#define LED_STATUS OFF // ON, Blinks w/sidereal tracking otherwise steady on indicates activity. Option
LEDを接続して動作確認をする場合は、上記を”ON“にします。恒星追尾の場合は点滅、それ以外は点灯します。割愛しましたが、この後に2個目のLED、ブザーの設定があります。
// TIME AND LOCATION....
// SENSORS....
// ST4 INTERFACE....
上記は、GPS、RTC(時計)、ST4インターフェイスの設定です。使わないので飛ばします。以降変更点のみとします。
// SLEWING BEHAVIOUR ------------------------------------------ see https://onstep.groups.io/g/main/wiki/Configuration-Mount#SLEWING
#define SLEW_RATE_BASE_DESIRED 5.0 // 1.0, n. Desired slew rate in deg/sec. Adjustable at run-time from
// 1/2 to 2x this rate, and as MCU performace considerations require.
#define SLEW_RATE_MEMORY OFF // OFF, ON Remembers rates set across power cycles. Option
#define SLEW_ACCELERATION_DIST 5.0 // 5.0, n, (degrees.) Approx. distance for acceleration
// (and deceleration.) Adjust
#define SLEW_RAPID_STOP_DIST 2.0 // 2.0, n, (degrees.) Approx. distance required to stop when a slew
// is aborted or a limit is exceeded.
読みやすいように改行とコメントアウトを編集しています。
SLEW_RATE_BASE_DESIREDは、Slewを1秒間に何度動かすかです。Slewって日本語でなんていうんだ?!GOTOするときの移動スピードですね。本家サイトでは1.0〜10.0が推奨と書かれています。減速比やモーターのトルク(電圧)で変わります。最初は2〜5程度でしょうか。速すぎるとモーターが脱調(空回り、異音)します。この数字を下げるかvref調整をします。しかしCPU、モーターの仕様、減速比などの条件で限界はあります。またこの数値は、アプリ側で都度1/2〜2倍の範囲で変更出来ます。あとは初期設定のままで問題なく動いています。
// PIER SIDE BEHAVIOUR -------------------------------------- see https://onstep.groups.io/g/main/wiki/Configuration---Mount#SYNCING
#define MFLIP_SKIP_HOME OFF // OFF, ON Goto directly to the destination without visiting home position.
MFLIP_SKIP_HOMEは子午線を超えてGOTOする時にケーブルなどの絡まりを防止するために一旦ホームポジションに戻すがどうかの設定です。戻すときはOFFで戻さないときはONです。
ここからAXIS1 RA/AZMの設定です。
// Stepper driver models (also see ~/OnStep/src/sd_drivers/Models.h for additional infrequently used models and more info.):
// A4988, DRV8825, LV8729, S109, SSS TMC2209*, TMC2130* **, and TMC5160* ***
// AXIS1 RA/AZM
// see https://onstep.groups.io/g/main/wiki/Configuration-Mount#AXIS1
#define AXIS1_STEPS_PER_DEGREE 7182.933 // 12800, n. Number of steps per degree: <-Req'd
// n = (stepper_steps * micro_steps * overall_gear_reduction)/360.0
#define AXIS1_STEPS_PER_WORMROT 0 // 0, n. Number steps per worm rotation (PEC Eq mode only, 0
// disables PEC.) <-Req'd
// n = (AXIS1_STEPS_PER_DEGREE*360)/reduction_final_stage
#define AXIS1_DRIVER_MODEL LV8729 // OFF, (See above.) Stepper driver model. <-Often
#define AXIS1_DRIVER_MICROSTEPS 32 // OFF, n. Microstep mode when tracking. <-Often
#define AXIS1_DRIVER_MICROSTEPS_GOTO OFF // OFF, n. Microstep mode used during gotos.
#define AXIS1_DRIVER_IHOLD OFF // OFF, n, (mA.) Current during standstill. OFF uses IRUN/2.0 #define AXIS1_DRIVER_IRUN OFF // OFF, n, (mA.) Current during tracking, appropriate for //
// stepper/driver/etc.
#define AXIS1_DRIVER_IGOTO OFF // OFF, n, (mA.) Current during slews. OFF uses same as IRUN. #define AXIS1_DRIVER_REVERSE OFF // OFF, ON Reverses movement direction, or reverse wiring instead
// to correct. <-Often
#define AXIS1_DRIVER_STATUS OFF // OFF, TMC_SPI, HIGH, or LOW. Polling for driver status //
// info/fault detection. Option
#define AXIS1_LIMIT_MIN -180 // -180, n. Where n= -90..-270 (degrees.) Minimum "Hour Angle" for
// Eq modes. Adjust
//n. Where n=-180..-360 (degrees.) Minimum Azimuth for AltAzm mode.
#define AXIS1_LIMIT_MAX 180 // 180, n. Where n= 90.. 270 (degrees.) Maximum "Hour Angle" for
// Eq modes. Adjust
//n. Where n= 180.. 360 (degrees.) Maximum Azimuth for AltAzm mode.
ここは一番の要です。
AXIS1_STEPS_PER_DEGREEが一番大切な数字です。何ステップで1度を動かすかの設定です。上記では1度を7,182.933ステップで動かすということです。(* 3桁区切りのカンマを入れるとエラーになります)。昔自作の赤道儀で手動追尾するときに10秒ごとにノブを1/4回転とかやってたから、それに比べると凄いことです。計算方法ですが、
n = (stepper_steps * micro_steps * overall_gear_reduction)/360.0
- stepper_stepsは、ステッパーモーターが何ステップで一回転するかの数字です。大抵200ステップで1回転します。1.8度/ステップと記載されたりします。これは360度/200=1.8度という意味です。たまに0.9度-400というステッパーモーターもあります。
- micro_stepsは、ドライバで設定するものです。1.8度をさらに細分化して回転させることが出来ます。ドライバによって設定できるマイクロステップが決まっています。128マイクロステップ設定ができるドライバ(LV8729)もありますが、トルクが劇的に低下するので、16または32が良いと思います。
- overall_gear_reducitonは、総減速比です。例えば、ギア付きのステッパーモーター(減速比1:5.18)でハーモニックドライブ(減速比1:78)を動かした場合、総減速比は5.18 x 78 = 404.04となります。
上記の式に当てはめた場合、
n = 200 * 32 * 404.04 / 360 = 7182.933
となります。
AXIS1_STEPS_PER_WORMROTは、PEC(ピリオディックエラーコレクション)を使わないのであればゼロのままです。
AXIS1_DRIVER_MODELは、利用するドライバ名に書き換えます。下線の部分から選択します。ここではLV8729としました。TMC2208は下線にリストされていませんが選択肢に入ります。
AXIS1_DRIVER_MICROSTEPSは、マイクロステップ数に書き換えます。CNC3を使う場合は、下記の表を参照して設定するマイクロステップに合わせてジャンパー接続を変更します。ここでは32としました。
AXIS1_DRIVER_MICROSTEPS_GOTOは、OFFで良いと思います。そもそもGOTO中はマイクロステップは不要だと思いますし、GOTOスピードを上げるためにもOFFが良いと思います。
AXIS1_LIMIT_MINとAXIS1_LIMIT_MAXは、赤道儀であれば-180〜180で問題ないと思います。-270〜270まで設定出来ます。時々あとちょっと動いて欲しい時に制限で動かなくなることがあるので、三脚など接触しないのであれば180以上の設定もありだと思います。
同様にDEC/ALT軸も設定します。
Focuser、Rotator、外部機器を利用しなければ以上です。
保存してアップロード!
もしかしたら間違っている部分もあるかもしれません。その時はご指摘ください。
はじめまして。ラズパイに接続できる高感度のカメラを開発、販売をしているものです。ラズパイで実現している低遅延(100msec以下)のライブストリーミングとリモートコントロールを天体写真に応用したいと考えておりまして、是非、お話を伺いたいと思っております。メールのほうにご連絡をいただけましたらと存じます。
何卒、よろしくお願いいたします。
KEN さん、ご無沙汰しています。
たしかに Config.h の設定には苦労しますね。KENさんの解説記事は すでにOnStep を活用している方々やこれからやってみようと思っていらっしゃる方には非常に有益な情報だと思います。
ハーモニックドライブやサイクロイダルドライブは原理も良く理解できない私にはハードルが高すぎてただ眺めているだけです(涙)
ご無沙汰してます!
寒くなってきましたね〜
ある程度Arduinoのプログラムを自分で書いたりしていましたが、初めてOnStepのConfig設定を見たときは専門用語も多く頭を抱えた記憶があります。今となってはすっかり慣れましたが・・・。少しでもどなたかのお役にたてれば。
ハーモニックドライブは、ドイツにお住まいの方が大幅に精度を改善してくれたので、今3Dプリントしているところです。こんなことで世界のオタクの人達と交流するのも今楽しいです。
始めて投稿させていただきます
初心者のまやさんと申します
OnStepを初めて構築しようと試しにブレッドボードを使って構築し、動かしてみたのですが、AndroidのコントローラアプリからGoTo指示すると、モータは動くのですが、スピードが速くなりません
Config.h の設定を参考にさせていただきながらやってみたのですが、アプリから増速指示をしても変わりませんし、また違う話かもしれませんが、Goto後のAbortボタンも効きません
因みに、「OnStep-Calculations.xls」に表示されている回転数は720RPMと表示されているので、モーターの回転数もそれなりに出るのかなと思いましたが速くなりません
また、AXIS1_STEPS_PER_DEGREEを強制的に最大値に設定しましたが、確かに少しだけ早くなりますが、他のサイト(YouTube)で見たようなスピードが出なくて困っております
(本来の速度はあっているかもしれませんが、モーターが1回転するのが数分かかっています)
何かご教授いただけることがありましたら、助かります。
ご無理を申しますが、何卒よろしくお願いいたします。
すいません、返信遅くて。
コメント読みましたが、問題の可能性が沢山ありすぎて、読んだだけではなんとも。config.hをコメントに貼り付けてもらえれば、何かわかるかもしれません。
スピードが変わらないと言うとマイクロステップのオンオフがうまく行っていないのかもしれません。ドライバのM1,M2,M3の配線確認してみてください。
それとモーターは何をお使いですか?
初めて質問させてください。ここのHPを知ってから自作で赤道儀ができるのかと思い、半年前から3Dプリンターを手に入れ、製作に明け暮れていました。何も知らない身なので、見よう見まねでここを熟読し、苦労しながらサイクロイダルドライブ赤道儀、KEEN ONE EQ赤道儀の2つを作り上げました。やっと完成して晴れた日に星を導入したのですが15秒程度の露出でも星が流れてしまい、何が悪いのか考え込んでいました。ONSTEP Controller2アプリのトラッキングでFrequency Adjustで調整との内容がありましたが、アプリ設定をいろいろ変えても数値が変わってくれません。config.hの設定なのか、配線が悪いのか分からずここで質問させていただきました。どこを検索しても詳しい部分が出てこないのでもし、解説していただけたら助かります。
まだまだ改良途中ですが、このようなHPを好感されていることに感謝いたします。自分のような素人でもやれば赤道儀を作ることができるのだと自信がつきました。
仕事が多忙で、ブログを放置していました。返信が遅くなり申し訳ありません。
原因がいろいろありそうで、文面からは判断できないですね。
異音もなく正転反転のコントロールができるのであれば配線の間違いではないと思います。
config.hのAXIS●_STEPS_PER_DEGREEの設定が合っているかどうか。
サイクロイダルドライブの方は、慣らし運転のような意味合いで、電動ドライバでしばらく回して上げるとよりスムーズになり精度が上がると思います。HexAttach_v2.stlファイルをアップしておきました。電動ドライバ(M4)用です。
それと載せる鏡筒の焦点距離もあるかもしれません。焦点距離が長い場合、精度的に難しい可能性があります。私はRedCat51をメインに使っています。240mmくらいまでなら追尾できています。