Howard Duttonという人がLosmandy G11という大型の赤道儀を手に入れました。
コントローラーが付いてませんでした。
純正のコントローラーGeminiは高価でした。
また、サーボモーターは誤動作しやすい傾向があり、信頼性の点で却下しました。
他のGoto systemも検討しましたが、ハードウェアが必要以上に複雑だったり、値段が原価の2倍以上で納得がいきませんでした。
何より、全て自分の思い通りにしたかった。
なので、この人はOnstepというGoto systemを自分で開発しました。
What is OnStep?
OnStep is a computerized telescope goto controller, based on Teensy or Arduino control of stepper motors.
「goto」という単語、今までなんとなく理解してましたが、この度、調べました。
海外のWikipediaに解説がありました。
こちらを参照してください。
In amateur astronomy, "GoTo" refers to a type of telescope mount and related software that can automatically point a telescope at astronomical objects that the user selects.
観察者が指定した天体を自動的に望遠鏡の視野に導入してくれる望遠鏡機材とソフトウェアのこと、つまり、天体を自動導入してくれる天体望遠鏡システムをGoToというらしいです。
つまり、OnStepというのは、TeensyというマイコンとArduinoというソフトウェア(?)を使ってステッピングモーターを制御する望遠鏡の自動導入システムのこと、という感じでしょうか。
Howard DuttonさんはOnStepシステムを無料で公開しました。
詳しいことはこちらを参照してください。
OnStepは主にステッピングモーターで動くように設計されています(が、サーボモーターでも動作します)。
赤道儀でも経緯台でも(僕が触ったことがないフォーク式でも)対応してるみたいです。
ステッピングモーターを使う場合は、OnStepのプログラムをインストールしたマイコン(Teensy)でステッピングモータードライバーを制御するようです。
OnStepのコントローラーの作り方は様々なパターンがあるようです。
基板はユニバーサル基板でもブレッドボードを使ってもいいみたいですが、僕はどう配線すればいいのかの知識がありません。
OnStep専用の基板を自分で設計して、プリント基板を外注製作して、安価に提供してくれている人(「のりきゅう」さん)がいます。
その基板に、指定のマイコン(Teensy)とステッピングモータードライバー(DRV8825など)やその他電子部品を言われるがままに組み込めばOnStep赤道儀コントローラーが作れます。
電子工作が初めての素人にはうってつけです。
このたび、のりきゅうオリジナルOnStep基板Rev2.1を用いてOnstep赤道儀コントローラーを製作してみましたので、その過程をご紹介します。
ただし、あまり細かいことは理解してません。
これが僕の初めてのマイコンいじりです。
そもそもマイコンがなんであるかすら説明できません。
今回用いるTeensy4.0が、オープンソースの赤道儀制御ソフトウェアOnStepをインストールできて、USBケーブル経由でパソコン接続できることくらいしか説明できません。
「ここ掘れわんわん」で作っただけなので、質問されても答えられないことが多いと思いますが、自分自身の記録として、また、電子工作の素人の視点での製作報告も誰かの役に立つこともあるだろうと思い、ブログに記事としてあげることにしました。
それでは始まり始まり。
これがのりきゅうオリジナルOnStep基板 Rev2.1(Rev2.0と印刷されてますね)です。
U2にはTeensy 4.0(Teensy 3.2はもはや入手不能でしょう)、J3 (DEC)とJ4 (RA)にはステッピングモーターへのケーブルを接続するMINI-DIN4Pコネクタ、U4にはDCモジュール(5V)という具合に、指定の部品を組み込んでいきます。
パーツ表はのりきゅうさんのホームページを見てみてください。

のりきゅうオリジナルOnStep基板 Rev2.1の裏側

組み上がって、ケースに入れるとこんな感じになります。
のりきゅうさんはRaspberry Pi 4のケースに収まるように基板の形状を設計してますが、より安価に、中身が見えやすいように、ダイソーのプラスチックケースを用いました。
Wi-Fiモジュールとかフォーカサーは今回、組み込みませんでした。
Wi-Fiモジュールを組み込むとAndroidのスマホでコントロールできるようになります。
ただ、僕がiPhoneなんです(^_^;)
なので、コントロールするにはUSBでパソコンに繋ぐ必要があります。

まず最初に、U2のところにTeensy 4.0のピンを指すための丸ピンIC用ソケット(シングル1列) 1×14Pを半田付けします。

こんな感じにしたいのです。

基板の裏側から見ています。
最初に丸ピンソケットの14本あるピンの真ん中付近の一つだけを半田付けします。
下の写真では2列とも、上から7本目のピンだけが半田付けされています。
そしたら基板の側面から見て、丸ピンソケットが基板に対して垂直に立っているかどうかを確認します。
垂直になっておらず、傾いているとTeensyがうまくハマりません。
傾いているようなら、半田を溶かして丸ピンソケットの傾きを修正します。
最初から2本以上のピンを半田付けしてしまうと、この傾きの修正作業ができなくなります。
丸ピンソケットが基板に対して垂直に立っていることが確認できてから、残りのピンを半田付けします。

下の写真は「丸ピンIC用連結ソケット 両端オスピン・1列14P」というもので、秋月電子通商で売られています。
これはTeensy 4.0(ピンなし)に半田付けしてピンにするものです。
Teensy 4.0はピン付きの状態でも売ってますが、それだと丸ピンソケットに入りません。

半田付けした丸ピンIC用ソケット14Pに丸ピンIC用連結ソケット 両端オスピン・1列14Pを差し込みます。

Teensy 4.0(ピンなし)を「丸ピンIC用連結ソケット 両端オスピン・1列14P」に通して、各ピンを半田付けします。

老眼には厳しい作業なので、このような虫眼鏡を使いながら作業を進めました。

丸ピンIC用連結ソケット 両端オスピンをTeensy 4.0に半田付けし終わったら、一旦、丸ピンIC用ソケットから外します。
最初、手で外していたら、うっかりオスピンが折れてしまったことがあります。
下の写真のように、マイクロマイナスドライバーで両端から少しずつソケットから浮かしていくのが安全です。

丸ピンIC用連結ソケット 両端オスピン・1列14Pを半田付けしたTeensy 4.0をひっくり返してみたところ。

表に返したところ。
今度はTeensy 4.0をUSBケーブルでパソコンに繋ぎます。
するとTeensy 4.0のオレンジ色のLEDが点滅します。
給電されるとLEDが点滅するようなプログラムが予めインストールされているそうです。

Teensy 4.0について詳しくはPJRCのホームページを見てみてください。
以下、TeensyにOnStepをインストールして、OnStepをASCOMソフトウェアと連携させられるようにする手順を書き記しますが、もしかしたら、書いている内容に誤りがあるかもしれません。
なぜかというと、僕が一番最初にこの手順を踏んだのが2年前です。
OnStepコントローラはたぶん、5個くらい作りましたが、自分のパソコンに必要なソフトウェアをインストールするのは最初の一回だけなので、あまりよく覚えてないんです。
さらに、2年経って、ソフトウェアがどんどんバージョンアップされていて、細かいところが変化している。
例えば、自分のパソコンにインストールされているアストロアーツのプラネタリウムソフト「ステラショット」で最終的には望遠鏡を操作するわけですが、OnStepとステラショットを中継するASCOM Platformもバージョンアップしていて、それに合わせてASCOM OnStep Driverもアップデートされています。
Arduinoも僕がインストールした時点ではArduino 1.8.8でしたが、今はArduino IDE 2.3.3です。
もし、ここに書いてある手順でうまくいかない場合は、他の情報源をあたってみてください。
注意書きはここまでとして、続けます。
Teensy 4.0にオープンソース赤道儀制御ソフトウェアOnStepをインストールするにはArduinoというプログラムソフトをパソコンにインストールする必要があります。
ArduinoはTeensyにOnStepをインストールするだけでなく、OnStepに自分の赤道儀の情報を打ち込むためにも必要です。
Arduinoのホームページはこちら。
僕がインストールしたときはArduinoでしたが、今はArduino IDEというソフト名になっているようです。
ちなみに、ダウンロードも使用も無料です。
Arduino IDEでTeensy 4.0にプログラムを流し込むために、Teensyduinoという(プラグイン?)ソフトウェアをArduino IDEにインストールする必要があります。
その方法が書いてあるのがこちら。
要は、Arduino IDEの設定のなかに次のリンクをペーストする必要があるらしい。
Arduino IDEを起動するとこういう画面が出てきます。
ファイル>基本設定を選択します。
基本設定の一番下、追加のボードマネージャのURLに「https://www.pjrc.com/teensy/package_teensy_index.json」をペーストしてOKボタンで閉じます。

最初の画面の左のコラムにあるファイルマークの下のボタン(上から2番目)を押します。

ボードマネージャの文字の下のテキストボックスにteensyと入れてReturn keyを叩くと下の図のようにTeensy for Arduino IDE 2.0.4の表示が出てきます。
インストールボタンを押します。
これでTeensyduinoがArduino IDEにインストールされて、Arduino IDEでTeensyを扱えるようになります。

2年前はパソコンでCOMポート経由でシリアル通信ができるようにTeensy USB Serial Driverなるものをインストールしたような気がしますが、こちらを読むと、もしかしたら、今のTeensyduinoは自動的にCOMポート経由でシリアル通信ができるのかもしれません。
次に、TeensyにインストールするOnStepソフトを入手する必要があります。
これはOnStepの開発者のホームページ「Steller Journey」にあります。

右上の緑色のCodeプルタブを押してDownload Zipを選択すればOnStepソフトを入手できます。
最新版は4.24ですが、僕が使っているのは3.16です。
3.16を使いたい場合は、画面左上のrelease-4.24のプルタブを押せば、release-3.16-(retired)が出てきますので、それを選択すれば3.16をダウンロードすることができます。
Zipファイルを開いたら、「OnStep-release-4.24」というフォルダが出てきますが、フォルダ名を「OnStep」に直してください。
そうしないと機能しないようです。
次にOnStep ASCOM unified driverをここからダウンロードします。
OnStepとASCOMを繋ぐためのドライバーだと思ってます。
なお、この操作の前に、パソコンにASCOM Platform 6.5(もしくは6.6)が予めインストールされていることが必要です。
次は、Teensy 4.0に書き込むOnStepの準備です。
僕の場合はOnStepをVixen GP赤道儀のコントローラーとして使ってます。
なので、GPのウォームホイールの歯数と、ステッピングモーターのタイミングプーリの比の情報をOnStepプログラムに入力する必要があります。
まずGroupというネット上のサービスのOnStepのグループのこのページにアクセスします。
Getting Startedのタイトルで始まる文章の一番最初の部分のconfiguration Calculator spreadsheetのリンクをクリックして、OnStepのパラメーターを出してくれる計算シートをダウンロードします。
ダウンロードした計算シートはエクセル書類で、こんな感じです。

緑色の領域に赤道儀の情報を入れていきます。
Stepper-Stepsは、使用するステッピングモーターが何ステップで1回転するか、です。
僕が用いた17HS3401Sというステッピングモーターは、1ステップにつき1.8°回転するので、1回転(360°)するのに200ステップ必要です。
AXIS_DRIVER_MICROSTEPSは正直、よく理解できてませんが、ステッピングモータードライバーが必要とする値で、16か32が良いようです。
この設定で、1ステップをさらに細分化して精度良く動作させるためのもので、16なら1.8°の1/16、32なら1.8°の1/32ずつ動作させることができるようです。
ただし、この値が大きくなればなるほどモーターのパワーが小さくなってしまうらしく、動作の精度とパワーのバランスから16か32あたりに落ち着くようです。
「一番簡単なOnStepシステムの作り方」というブログ記事に詳細が書いてありますので、参照してください。
GR1 Ratioはステッピングモーターからウォームシャフトまでの駆動系による減速比とでも言えば良いのでしょうか。
僕のVixen GP赤道儀の場合、ステッピングモーターからウォームシャフトまでの動力伝達に、モーターに20歯のタイミングプーリーが、ウォームシャフトには60歯のタイミングプーリーが用いられています。
つまり、モーターの回転はウォームシャフトに届くまでに1/3に減速しています。
なので、GR1 Ratioは3となります。

GR2 Ratioはウォームホイールの歯数だと思われます。
Vixen GPの場合は144です。
これらのパラメーターを入力した結果がこれ。
(友人から頂いたデータシートで、日本語版があるようです)

ここで得られた数値をOnStepに書き込みます。
OnStepフォルダの中のOnStep.inoというファイルをダブルクリックしてArduino IDEで開きます。
上にタブが並んでいます。
そのタブの中からConfig.hを選択します。
この画面で、自分の赤道儀の情報を書き込みます。
下の画像だと、#define PINMAPが、MiniPCB2に書き換えてありますが、初期値ではOFFになっています。
これが何を意味するのかは存じませんが、詳しくはこちらに書いてあるようです。
こちらに、miniPCB2がTeensy 4.0のために設計されているみたいなことが書いてあります。

下にスクロールしてゆくと、//MOUNT TYPEの項目が出てきます。
#define MOUNT TYPE、つまり、マウントを定義せよとのこと。
赤道儀はGEM (German Equatorial Mount)です。
初期値がGEMになっているので、ここは確認するだけでOK。
他に、Equatorial ForkやAltazimuth(経緯台)も選べるようです。
#define MOUNT_TYPE GEM // GEM, GEM for German Equatorial, FORK for Equatorial Fork, or ALTAZM <-Req'd
次に、//ST4 INTERFACEの項目の#define_INTERFACEの初期値OFFをON_PULLUPに書き換えます。
#define ST4_INTERFACE ON_PULLUP // OFF, ON, ON_PULLUP enables interface. <= 1X guides unless hand control mode. Option
//TRACKING BEHAVIORの項目で#define TRACK_AUTOSTARTの初期値OFFをONに書き換え。
#define TRACK_AUTOSTART ON // OFF, ON Start with tracking enabled. Option
// AXIS1 RA/AZMの項目です。
AXIS1は赤経軸のステッピングモーターの設定です。
#define AXIS1_STEPS_PER_DEGREEの初期値12800を計算シートで出てきた値に書き換えます。
VIXEN GPの場合は3840になりました。
#define AXIS1_STEPS_PER_DEGREE 3840.0 // 12800, n. Number of steps per degree: <-Req'd
そのすぐ下にある#define ASIS1_STEPS_PER_WORMROTの初期値12800をVIXEN GPの場合は計算シートに出てきた通り、9600に書き換えます。
#define AXIS1_STEPS_PER_WORMROT 9600 // 12800, n. Number of steps per worm rotation (PEC Eq mode only:) <-Req'd
次はそのすぐ下の#define AXIS1_DRIVER_MODELの初期値OFFをOnStep基板に使用したステッピングモータードライバーを書き込みます。
11行上に、使用できるステッピングモータードライバーの一覧があります。
A4988, DRV8825, LV8729, S109, SSS TMC2209, TMC2130, TMC5160などが使えるようです。
僕はDRV8825を使用したので、DRV8825と書き換えました。
#define AXIS1_DRIVER_MODEL DRV8825 // OFF, (See above.) Stepper driver model. <-Often
そのすぐ下の#define AXIS1_DRIVER_MICROSTEPSの初期値OFFを16に。
これは星を追尾するときのマイクロステップ値です。
#define AXIS1_DRIVER_MICROSTEPS 16 // OFF, n. Microstep mode when tracking. <-Often
そのすぐ下の#define AXIS1_DRIVER_MICROSTEPS_GOTOの初期値OFFを8に。
これは天体導入動作時のマイクロステップ値です。
8の方がモーターの回転の力が強くなります。
#define AXIS1_DRIVER_MICROSTEPS_GOTO 8 // OFF, n. Microstep mode used during gotos. Option
次は//AXIS2 DEC/ALTの項目に移ります。
AXIS2は赤緯軸のモーターの設定になります。
AXIS1の設定と基本的に同じです。
#define AXIS2_STEPS_PER_DEGREE 3840.0 // 12800, n. Number of steps per degree: <-Req'd
#define AXIS2_DRIVER_MODEL DRV8825 // OFF, (See above.) Stepper driver model. <-Often
#define AXIS2_DRIVER_MICROSTEPS 16 // OFF, n. Microstep mode when tracking. <-Often
#define AXIS2_DRIVER_MICROSTEPS_GOTO 8 // OFF, n. Microstep mode used during gotos. Option
赤経軸と異なり、赤緯軸は逆回転がありますので、
#define AXIS2_DRIVER_REVERSE ON // OFF, ON Reverses movement direction, or reverse wiring instead to correct. <-Often
あとはArduino IDEのメニューバー>スケッチ>Verify/Compileを選択すればTeensy 4.0に修正したプログラムが書き込まれます。

ここからは、再び基板製作に戻ります。
J6に5ピンのピンヘッダーを、J9に2ピンのピンヘッダーを実装します。
ピンヘッダーは、40ピンのものを切って使います。

ピンヘッダーをJ6とJ9に実装したところ。

次はステッピングモータードライバーDRV8825用のピンソケット(メス)1×8(8P)をJ3, J4に半田付けします。

こんな感じ。

次は三端子DC/DCレギュレーター 5V BP5293-50をU4の位置に半田付け。

こんな感じ

お次は電解コンデンサ−100μF25V105℃ ルビコンPX/25PX100MEFC5X11をC1, C2に半田付けします。
プラスとマイナスの向きがあります。

こんな感じ

D1に3mm赤色LED 625nm 70度 OSR5JA3Z74AをD1に実装
LEDにはプラスとマイナスがあるみたいですね。
脚の長い方がアノード(A)で陽極、脚の短い方がカソード(K)陰極だそうです。

LEDにあった小型 金属皮膜抵抗1/4W330ΩをR6に実装します。

抵抗に向きがあるのかどうなのか、僕は現時点で存じません。

LEDは向きがあるので気をつけてください。
脚の長い方(A, アノード)がコンデンサー側になります。
脚の短い方(K, カソード)がTeensy 4.0側です。

2.1mm標準DCジャック(4A)基板取付用 MJ-179PHをJ8に半田付けします。


J3, J4にミニDINソケット(メス) 4P (S端子コネクター) 基板取付用を実装します。

お次はJ5に6極6芯モジュラージャック 15mmタイプを実装します。

J9のヘッダピン 2Pは電源を基板に繋げるためのもので、ショートさせます。
ショートさせる代わりに電源スイッチをつけることもできます。
J9のヘッダピン 2Pにジャンパピン TK-JMP1を取り付けます。


電圧チェックするために12V電源に繋げます。
写真に撮り忘れましたが、J6のヘッダピン 5PのGNDと5Vに5ボルトの電圧が来ているかテスターで確認します。
GNDと他の端子を絶対にショートさせてはいけないそうです。
ショートさせるとどうなるのかは、やったことがないので存じません。

OnStepのプログラムを書き込んだTeensy 4.0を装着してから電源に繋げるとLEDが点滅します。
その状態でステッピングモータードライバーDRV8825用ソケットのSTP端子とGND端子をオシロスコープに繋ぎます。
オシロスコープ、正直、扱いに慣れてません。
ボルトの設定は2V、DC、20msec、トリガーはAUTOにしました。
オシロスコープにピーク3Vのパルスが出力されていればTeensyの動作はほぼ問題なしだそうです。
DECとRA、両方で同じことを行います。
オシロスコープなんぞ、自分が扱う日が来るとは夢にも思いませんでした(^_^;)

DRV8825にはもう一つGND端子がありますが、これはOnStep基板上でアースにつながっていないとか。

次にステッピングモータードライバーDRV8825の電圧調整を行います。
DRV8825をソケットに挿入します。
僕が使ったステッピングモーターは17HS3401Sです。
データシートを見ると定格電流が1.3Aであるよう。
とりあえず1A以上流れないように、DRV8825の可変抵抗器(半固定ボリューム)を0.5Vに調整します。
詳しい理屈は存じませんが、電圧の2倍の値が最大電流となるようです。
テスターのマイナス端子をJ6のGNDに、プラス端子をDRV8825の半固定ボリュームに当てて電圧を測定します。
半固定ボリュームはマイクロドライバーで回しました。

DECとRAのDRV8825、両方とも電流調整します。
この電流調整をせずにステッピングモーターに接続するとDRV8825が一発でダメになります。

これで基板自体は完成です。
Androidの天体アプリでWi-Fi接続できるようにしたり、フォーカサーも追加したりできるようです。
あいにく僕はiPhoneなのでそれができません。
フォーカサーも使ってないので、一番シンプルな作りになりました。
あとは出来上がった基板をケースに収めるのですが、ラズパイ4のケースがピッタリハマるようです。
やってみたのですが、ちょっと狭苦しい。
僕はDAISOのプラスチックケースを用いました。

穴の位置決めをしてから電動ドリルで小さな穴を開けて、穴の大きさと形をやすりセットで地道に加工しました。

再掲になりますが、完成図はこんな感じです。
このケースの方が、プラグ類が支えられるので、通信が安定します。
ラズパイ4のケースだと、プラグ類がソケットに刺さる部分だけでプラグとケーブルの重みを支えることになるためか、時折ケーブルの重みで接触が不安定になることがありました。
なお、基板のケースへの固定には、六角スペーサーを用いています。

長い記事になりました。
ここまで読んでくれる人がいるかな?
一部、内容に誤りがある可能性がありますが、どなたかの役に立てたら幸いです。
※コメント投稿者のブログIDはブログ作成者のみに通知されます