2022/10/31

AZ-GTi をついに赤道儀化(激安バランスウェイトの自作含む)

はじめに

AZ-GTi を MAK127 とセットで買って 2年と4ヶ月ほど。ついに赤道儀化です。やってみてしまえば仰々しい赤道儀化という名前ほど大したことはなかったのですが、

  • ファームを入れ替えると Right Arm になってしまう(赤道儀モードは Right Arm のみ)
  • 微動雲台やバランスウェイトや極軸望遠鏡(いるの?)の追加費用
  • 赤道儀の経験ゼロなので色々不安!!!
  • 経緯台モードで惑星撮影十分楽しめてるからいいじゃん

を考えるとなかなか手を出せない(出さなかった)という状況でした。
特に Right Arm 仕様は困ったもので、セットになっている MAK127 は経緯台モードで MAK127 のファインダー側から見ると AZ-GTi の左側にセットするようにできています。ガイドスコープが MAK127 の左上に乗る位置です。

こんな風にセットします(二つ載せてますが。。)

普段は風や周囲の明かりを避けるため、三脚は一番低く、地べたに座って運用してるので、Right Arm になってファインダーが右斜め下についてしまうとファインダー覗くの非常に大変。。これが一番躊躇してる理由でした。でもオリジナルのファームに書き直せばいいんだよね?と思ったらまぁダメなら戻せばいいかと気が楽になりました(まだ試してないけど)。そもそもオリジナルのファーム公開してるの?ということころも分かってなく、無駄に不安がってましたが、Right Arm 版だけでなくオリジナルのアップデートもダウンロードサイトに置いてあります。

追加費用は赤道儀の経験及び AZ-GTi の赤道儀モードの使い方がわからないので、なにがどこまでいるのかわからず、投資したものの全く使い物にならないとイタイなと。AZ-GTi の極軸望遠鏡の運用ってどうよ?というところから未知で。最低限微動雲台はいるものの、載せる望遠鏡やカメラ次第ではバランスウェイトもなくても使えなくはないなという感じです。ちなみに追加費用はスカイメモSの微動雲台が一番高くて Amazon で 13000円程。バランスウェイトには 1500円ほどを費やしましたのでトータルで 15000円以下。

赤道儀の運用経験ゼロなので、というのも不安要素。どうやって極軸合わせするんじゃーいと思ってましたが、北極星がなくても極軸合わせができるということがわかりこれも解決(極軸望遠鏡すらいらない)。しかも自動導入もできるので経験ゼロでもどうにかなる。

というわけで 2022年の例年に比べて 10月中旬までの長い惑星撮影期間が終わった(シーイングが明らかに悪化)のを機会に赤道儀化に挑みました。

そもそも赤道儀化をやってみたかったのは憧れのアンドロメダ銀河を撮影してみたかったので。ちょうど一年ほど前に試したことがあるのですが経緯台モードだと撮影した像がぐるぐる回転してしまいます。都内からの撮影ですぐに飽和してしまう長時間露出は出来ないので短時間露出では経緯台でもいけなくはないのですが、撮影した像が回転するとスタック時に使えるのは真ん中のみになってしまうので困ります。なので赤道儀で撮影したかったわけです。

まだ二晩ほどの運用ですが、赤道儀のメリットを享受することができました。像が全然回転しないし、経緯台モードより露出伸ばしても星が流れないです。当たり前か。ただ以前に経緯台モードで撮影したときもうっすら感じてたのですが、光害カットフィルターが無いせいか地上側が処理した後に明るいんですよね。。次はそこが気になります。

AZ-GTi の赤道儀化

は簡単です。

ファームの入れ替え

スカイウォッチャーのファームウェアダウンロードの場所()に行き、SynScan USB ドングルまたは SynScan hand コントローラーを使ってファームをアップデートするツールか、WiFi を使ってアップデートするツール (Windows 用しかない) のいずれかと、赤道儀対応の AZ-GTi のファームのふたつをダウンロードしてきます。

Windows のアップデートツール
  • Windows program: Motor Controller Firmware Loader
  • Windows program: Motor Controller Firmware Loader - WiFi
いずれかひとつ。上が SynScan USB などケーブルで Windows マシンからダウンロードするバージョンです。

AZ-GTi のファーム
  • Firmware: AZGTi Mount, Right Arm, AZ/EQ Dual Mode
これ持ってきます。ちなみに元に戻したい場合は、
  • Firmware: Universal DC Motor Driver with Built-in Wi-Fi
をダウンロードします。試したことないけど。書き込みは自作ケーブルで行いました。もともとのファームのアップデートかけたり赤道儀化のファームを書いたりと特に問題なく行えています。

ファーム書き込みツール (SynScan USB などを使う版) はダブルクリックすると以下のようなウインドウが現れるので、ケーブルを接続し、電源を入れ、ファームを選択したら Browse から別途ダウンロードしたファームを選択し、


Update ボタンを押すとアップデートが始まります。そこそこ時間かかります。アップデートの前後で MC Version でバージョンが変わったことを確認してみると良いかもしれません。ちなみに赤道儀有無で MC Version は変わらないようなのでどちらが入っているかこのボタンはわかりませんでした。

赤道儀化できる微動雲台を付ける

これも対応する微動雲台を用意できれば接続するだけです。ケンコーのスカイメモS用の微動雲台を入手してそれに載せました。アリガタを AZ-GTi の底に付けるのですが、AZ-GTi の底にある凹みの利用方法がわかりました。滑り防止なんですね。


あと注意点がひとつ。アリガタを固定するノブが AZ-GTi に干渉します。半径が十分小さいものに変更するなど工夫が必要です。ノブを削って小さくしてしまう人もいるようです。


自分の場合は、頭が6角の M8 のねじに交換しました。雲台を三脚に載せ、AZ-GTi を雲台に固定します。ちなみに雲台には角度表示のメモリがあるのですが、90° - 現在の緯度 (35°ぐらい) を引いた値のところに合わせておきます。

バランスウェイト・シャフト

実際に Nikon D750 と 300mm のズームレンズを載せ、方位角ノブ(上記写真で、交換したねじの上にある小さな黒いノブ)を緩めるとそれなりに重量があるのでクルンと回ってしまいます。これは、、ということでバランスウェイトを取り付けようと思い、シャフト自身は 12mm のねじが切ってあれば繋がるということがわかっていただけで、急遽近所のコーナン(というどちらかというとプロ向けのホームセンター)に行って使えそうな部品を漁ってきました。なんだかんだで全部で 1500円弱といったところ。うまくいけばラッキーです。

12mm ネジが切ってある 285mm の棒と、M12 の滑り止め付きのナット(普通のナットの片側が裾が広くなっていて滑り止めように溝が切ってある)、そしてウェイトに使えそうな穴のあいた四角いそこそこ重量のある板(Z角座金というらしい。80mm x 80mm x 9mm)が売っていたので、複数の板を組み合わせてウェイトがわりにすることにしました。座金に空いている穴は 12mm のシャフトに対し 18mm ぐらいと随分大きく、スカスカしてます。ネジで締めるとそれほど気にはならないのですが、3D プリンターを持っているのでスペーサーを自作しました。


重量は 5枚で 2kg ほど。サイズ感もちょうどいい感じです。重さは枚数で適宜調整できるので試してみて適当に変えてみようと思います。最終的には座金はバラバラしてると扱いにくいのでビニールテープでぐるぐる巻きにしました。気持ち固定用のチョウナット、ほとんど意味のない脱落防止のエンドのナットを追加して出来上がりです。


ビニールテープを巻いた後だと座金を止めている滑り止め付きのナットが座金にピタッと張り付いて座金がスムーズにくるくる回るようになりました。


クルクル回りすぎるのでチョウナットを追加したのですが、きっちり締めないと動いてしまいます。まぁネジなんで簡単に大幅にずれたりはしないからいいですかね。

運用

運用というほどではないですが、我が家のベランダの場合、北側の空は視界が開けてます。まずは水準器できっちり水平を取り、あらかじめ以下のようなポジションにセットして、せっかくなので北極星をマニュアルでざっくりと導入しちゃってます。都内だと天候にもよりますが北極星は肉眼でギリ見えるか見えないかぐらいですが、どうにかこうにか。

このポジションでいいんですよね?
きっちりホームポジション?に合わせる方法わからないのですが。。

マニュアルは読んでないので、、人様のブログ(ありがとうございます!)によると赤道儀として使う場合は SynScan Pro の 2スターアライメントを推奨しているようです。その後、SynScan Pro のユーティリティー→アドバンスド→極軸アライメントを選択すると、基準となる星を導入(2スターアライメントに使用した星を推奨)し、緯度の調整(微動雲台のノブで中央に調整)、方位の調整(微動雲台のノブで中央に調整)を行うと完了です。最初に北極星をなんとなく導入しておきましたが、だいたいの方向でよいらしいです。少なくとも緯度がきっちり合わせられてれば大変じゃないような。ところで調整最後ど真ん中にならないのは調整不足?ちなみにスカイメモSの微動雲台の方位の調整のネジ片方を緩めてもう片方をねじ込んでの調整はちょっと固めでした。

あとは自動導入でもなんでもござれです。赤道儀、撮影した画像が回転してなくて感動です。ぼちぼちいろいろと撮影試してみます。



2022/01/23

私家版 天体写真の撮影機材と撮影 (2021年度版)

MAK127とAZ-GTi を手に入れて一年半。木星を手始めに眼視よりは撮影重視で楽しんできました。MAK127 と AZ-GTi は値段も手頃で初心者にはありがたい組み合わせです。Twitter をみていると、より高解像度な惑星を撮影するために MAK127 より大口径に移行していったり、より安定した導入や長時間露光などを求めて AZ-GTi の経緯台またはおまけの赤道儀モードからちゃんとした赤道儀を導入されていく方がちらほらと。

まだしばらくこの組み合わせでやっていこうと思います。

AZ-GTi の赤道儀化とかまだやってみたいことはある。

撮影機材

望遠鏡

  • Skywatcher MAK127 (有効径: 127mm, 焦点距離: 1500mm)
  • Vixen Icarus-6M (有効径: 60mm, 焦点距離: 910mm)
MAK127 はマクストフカセグレンというタイプの望遠鏡。安い割にはよく見えると定評です。月、惑星向き。買った当初は月、惑星と言われてもピンときませんでしたが、倍率的に星雲、星団ははみ出ちゃうので厳しいです。また F値が暗い (1500/127=約F12)ので撮影にもあまり向かないと言われます。でもそれなりに楽しめます。撮影対象は月、惑星(木星、土星、火星、金星)とオリオン大星雲(M42)ならギリ。シュミットカセグレン系は筒内気流により像が安定しなくなるという欠点があるので観測開始よりしばらく前の時間に出しておいてというのは基本のようですが、鏡筒に災害用の保温アルミシートを巻き始めました。効果の程はいかほどに?

Icarus-6M は本当に古い安物。小学生の頃に買ってもらってほぼほぼ寝ていたものを、最近アメリカンサイズの接眼レンズなどが使えるように改造。また AZ-GTi に搭載できるように、アリガタプレートを装着。撮影対象は月。オリオン大星雲もいけそうな気がするけど暗い(910/60=約F15)ことと、変に色がついているっぽいので難しいかなと。その代わり月は案外解像してくれるので、一枚物の撮影用として D750 と組み合わせて使うことが多いです。


架台

  • Skywatcher AZ-GTi (赤道儀未対応)
だけです。現状使えるのは。カメラだけの場合、カメラ用三脚を使うこともあります。月とか彗星や流星の撮影で。AZ-GTi に赤道儀対応のファームを入れると赤道儀としても使えるのですが、MAK127 が赤道儀対応ファームを入れると、経緯台時にファインダーがとてもみづらい位置になるので、躊躇しています。星を導入するのにファインダー必須ですから。あと赤道儀化にはファームの入れ替えだけでなく、斜めにするための台座、バランスウェイト、極軸望遠鏡など追加で必要になるものがあるのと、うちのベランダって北極星方向は開けてるけど、北極星が肉眼で見えない日も多々あるんですよね、というところも躊躇するところ。

カメラ

  • Nikon D750 (Size: 6016 x 4016, Pitch: 5.97um x 5.97um)
  • ZWO ASI462MC (Size: 1936 x 1096, Pitch: 2.9um x 2.9um)
一昨年はよくわからないものには投資したくなかったので、とにかく D750 でがんばりました。フルサイズのデジイチなのですが、フルサイズは画素が大きいので集光率がよい反面、同じものを撮影すると、対象に対するピクセル数が荒くなります。どっちがいいんだろ?なので APS-C を撮影に使っている方も多いようです。その点天体撮影に特化した CMOS カメラ、ASI462MC は画素ピッチが D750 の半分程度なので、惑星をより高解像度に撮影することが可能です。画素が小さい分のノイズはスタックすればさっ引くことができるので多分いいんですね。ただセンサーのサイズそのものがフルサイズよりは小さいので撮影範囲が小さいです。月の拡大には使えますが、星雲系には全然使えないです。D750 の動画撮影機能はどうしても圧縮されたフォーマットしかないので、あんまり嬉しくないというのもありました。また SharpCap からコントロールできない(できなくはないようですが僕はできていない)のも使いにくい点です。ASI462MC は生データが得られるので天体撮影には間違いなく有利です。



バローレンズ・レデューサー

  • SVBONY x2
  • SVBONY x3
  • SVBONY x0.5
一昨年天体写真を撮り始めた頃は、接眼レンズを挟んで D750 を MAK127 に接続していましたが、最近はなにも間に挟まない直焦です。バローレンズはお試しで x2 買ったのにはじまり、もっと拡大したくて x3 (望遠鏡の口径次第であまり拡大しても意味ない)を追加で。ASI462MC に付けて使っています。またMAK127 でも広範囲を撮ってみたくて x0.5 のレデューサーも買ってみましたが、レデューサーは周囲が歪むのでイマイチかな。。

レンズ

  • Nikon AF-S NIKKOR 28-300mm f/3.5-5.6G ED VR 
D750 のレンズ他多数。24mm, 35mm, 50mm, 12-24mm(DX) など持ってますが、上記を主に使ってます。あまり天体写真に良いレンズとは思いませんがこれしか焦点距離長いの無いので。


その他アイテム

  • ZWO ADC 1.25''
大気分散の影響を避けるためのプリズムが入ってます。主に惑星の撮影に使います。AZ-GTi だと調整中に望遠鏡が揺れるのでとても調整しづらいです。

撮影

AZ-GTi は月を撮影するときは全く制御しなかったりします。スチルでも動画でも。セットするの面倒なので。それ以外の時はちゃんとアライメントとって自動追尾させます。しかし暴れることしばし。。

撮影に使うソフトは ASI462MC は SharpCap、D750 は digCamControl を使用しています。APT (Astro Photography Tool)も入手したけど使いこなせておらず。APT は D750 もコントロールできていいんですけどね。D750 でスチル一枚を撮るだけの時と、動画を撮る時(今はやらない)のときはソフト使いません。ブレないようにレリーズは使います。

  • D750 + NIKKOR 28-300mm (スチル一枚撮り)
  • D750 + Icarus-6M (スチル一枚撮り)
  • D750 + MAK127 (スチル一枚撮り、動画)
  • ASI462MC + MAK127 + 直焦, x2, x3 バローレンズ (動画)
色々な撮り方しています。スチル一枚撮りではシャッタースピードもだいぶ速いので、三脚だったり、AZ-GTi に載せても電源いれてなかったりします。動画も30秒ぐらいならありかと。ASI462MC を使った場合はだいぶ拡大になるので自動追尾させながら撮影し、部分、もしくは全体モザイク合成をします。




惑星(木星、土星、火星、金星)

  • ASI462MC + MAK127 + x3 バローレンズ + ADC (動画)
この組み合わせしかありません。D750 では倍率を上げるため、接眼レンズと組み合わせて動画を撮っていましたが、ASI462MC の方が遥かに良いので D750 では撮影しなくなりました。



星雲星団系

  • D750 + NIKKOR 28-300mm (スチル一枚撮りを複数)
  • D750 + MAK127 (スチル一枚撮りを複数)
MAK127 に D750 直焦はちょっと倍率高いので対象が絞られます。M42 ではみ出る。また一枚どりでもこちらは数秒を数百枚レベルなので、AZ-GTi で自動追尾させます。経緯台モードなので像が回転してしまうのが難点ですが、DeepSkyStacker がそんな画像でもスタックしてくれるので真ん中は使えます。お試しで少ない枚数を撮って重ねるだけなら普通の三脚で固定もありかなと思います。 


こうしてみると、とりあえず星雲星団系撮るレンズが無い。。28-300mm は周囲歪むんですよ。星が点にならずに放射状になる。多分レンズのせいです。普段使いでは便利なんですが。




私家版 天体写真の処理 (2021年度版)


一昨年から始めた天体写真の 2021年度に主にやっていた方法まとめ。一昨年は本当に手探りでした。そもそも都心の家から出ずに撮った画像からどんなものが出てくるのか皆目わからなかったので、ステライメージのような商用ソフトに手を出す前に、フリーのツールでできる範囲でということを主眼に置いてます。もちろん他にもいい方法やツールはあるとは思いますので、良い方法見つけたら試していきたいと思います。また本当は Mac で全部やりたいんですが、現状 Bootcamp の Windows で完結してます。M1 Mac も欲しいけど悩ましい。。

月、惑星の処理

基本的には動画をスタックして、ウェーブレットで強調処理をかけています。ただし月に関してスチルで一枚撮りの場合は、ウェーブレットで強調処理かけておしまいにする場合もあります。楽ちんなので。その場合強調処理をしたいとき、フォトショ系ツールで強調するよりパリッと仕上げやすい気がします。その後フォトショ系のツールで色味などを整えています(面倒なので iPhone だったりする。でも優秀)。元画像は RAW だったり、動画の方も非圧縮とかとにかく高画質なものの方がいいです。あと飽和すると画素データが消失するので、ちょっと暗めに撮っておくといい感じかと思います。


スチルの処理

ウェーブレット変換の機能のみを Registax6 で行ってるだけです。スチルを一旦 TIFF フォーマットに変換して、それに対して Registax6 に読み込ませます。だいたいレイヤー2,3あたりのスライダーと Sharpen, Denoise あたりをいじってます。Registax6 の出力フォーマットは 16bit の PNG にしてます。他のフォーマットも出せますが、TIFF はでかく、JPEG は非可逆の圧縮がかかるので、とりあえず PNG にしてます。
月を撮るときは ISO感度は低めでシャッター速度もかなり速くできます。

動画の処理

惑星(金星、火星、木星、土星など)の処理と月で使うツールは同じです。Autostakkert! でスタック処理をして、TIFF を出力、Registax6 でウェーブレット変換での強調処理をおこないます。スタック処理しただけではモヤっとした感じでもウェーブレットで強調処理をすると詳細が浮かび上がってきます。Autostakkert! の受け付ける動画フォーマットは制限があるので、対応しない MOV などは PIPP などのツールでフォーマットの変換をする必要があります。SER などの劣化しないフォーマットを選びます。また PIPP は自動追尾していてもしていなくても対象が画面上フラフラしている(風だったり振動だったり追尾エラーだったり)のをセンタリングして切り出す機能や、画質の悪いフレームを削除する機能があるので併用したりします。Autostakkert! にもセンタリングする機能はあるのですが、PIPP でセンタリングした方が良い場合があります。月の拡大撮影の場合は PIPP よりも Autostackkert! でアンカーに固定した方が良い時もあったりします。スタックしたあとの Registax6 の操作はスチルと特に違いはありません。
動画は時間にして30秒程度で1500枚程度の画像が得られ、それだけあれば十分な感じです。大気の揺らぎによるシーイングの補正に有効なんだと思います。またシーイングが良いのは正義で、月でも惑星でも段違いの解像度が得られます。

星雲/星団の処理

オリオン大星雲、アンドロメダ銀河などの処理の仕方です。複数のスチル写真をスタックして画像を得ます。
DeepSkyStacker を使っています。長時間?露光したスチルを数枚〜数百枚レベルでスタックします(総露出時間は数十分〜数時間になるぐらいで効果が出てくるようです。複数の日に撮ったデータを合成する方もいるようです)。JPEG も対応していますが、RAW の方がいいよとツールに言われます。多少時間によってずれたり回転したりしていても写っている星を頼りに移動/回転をかけながらガンガンスタックしてくれます。撮影条件(温度含む)が同じでレンズキャップをしたまま撮るノイズ除去用のダークフレームや、周辺減光を補正するためのフラットフレーム(撮り方色々ですがPCの液晶にグレーを表示させて撮ってます)は無くてもスタックしてくれます。スタック後にトーンカーブのようなものをいじって光害をカットしつつ星雲/星団を浮かび上がらせるよう補正をかけて炙り出します。一昨年もチャレンジしたのですが、元画像の解像度、ピントなどさまざまな要因はあるものの、イマイチ炙り出し方がわからなかったのが一番の原因だったんだなと思います。
長時間露光をすればスタックに使う枚数は減らせますが、そもそも都内で撮影すると30分なんて長丁場の露出画像を得ることは難しく、そもそも自分の場合赤道儀を持ってないのでそんな撮影もできません。短時間露光(数秒程度)で枚数を稼ぐやり方を知ったのですが、短時間露光なら飽和もしないし星も流れないし、赤道儀じゃ無くてもどうにかなるので(弊害はありますが)、都心で撮るなら一石二鳥?なのでお試し中です。

スタック処理後の追加処理

スタック後に複数の画像から一枚の画像を生成するモザイク合成と、複数の画像からデローテーションする方法について。適用できる種類は限られますが、更なる高解像度を得る手法です。


モザイク(パノラマ)合成

Image Composite Editor2 を使って先程の動画処理で得られた月の拡大画像などを繋げて一枚の画像にすることができます。月全体を一枚で撮るより更に高解像度のデータが得られます。星雲、星団系でも複数の画像を繋いで大きなものにするケースがあるようで、このツールが使われることもあります。

デローテーション

WinJUPOS という惑星の回転を考慮してスタックしてくれるツールを使います。土星などにも使えるようですが、木星を処理する際に有用です。木星の自転はとても速く、撮影中に刻一刻と回転していく様子がわかります。複数の時間差で撮った動画から得られたスタック結果を WinJUPOS にかけることにより、更に鮮明な画像を得ることができます。

処理画面例

Registax6

PIPP

Autostakkert!

DeepSkyStacker (補正前)

DeepSkyStacker (補正中)

Image Composite Editor2


ツール一覧

* Image Composite Editor2 は Microsoft が公式に配布をしなくなったので、別のところからダウンロードする必要があります。上記天文ガイドのリンクから辿って下さい。

2021/12/04

Tang Primer (EG4S20) の ADC を使ってみる

はじめに

RISC-V に興味があって Tang Primer を買ったのが 2020年5月頃。ADC をいじろうとするも、やりかけてお蔵入りに。記憶あいまいだけどある程度のところまで進んでました。安価な Tang Primer の ADC も使えるようになれればいいなということで、とりあえず今回は実際に動かすところまでやってみました (2021年11月末)。
そういえば当初は家にある激安電子ドラムのカスタマイズに使おうと思ったんだっけ。なんもしてない。。

Tang Primer

Anlogic の EG4S20 を搭載した Sipeed の FPGA 開発ボードです。
国内だと、スイッチサイエンスさんや、Shigezoneさんで入手できます。

使い方は Tang Primer の上記 URL の Getting Started を見ていただければ。あとはググれば試されている方の情報見つかります。本もあるようですね。

EG4S20  の ADC


EG4S20 の ADC は 8-channel 12-bit 1MSPS ですが、詳細はデータシートをみてみます。
データシートは以下からダウンロードできます。
以下、Eagle_DataSheet_V2.8_english.pdf から抜粋しました。

電気的特性


ADCモジュールの端子機能


タイミングチャート


以上です。

VREF は Tang Primer では 3.3V 固定です。従って 0-3.3V が 0-4095 に対応します。またADC のクロックは最大 16MHz。16 cycle で変換終了するので、ちょうど 1MSPSになります。

動作は SOC に 1パルス与えると動作開始で、EOC 1パルスでれば終了です。チャネルの選択は SOC より前に選択して EOC が立つまで保持ということかな。アナログのマルチプレクサの切り替えになると思うので早めに切り替えておくに越したことはないと思います。

Sampling Pulse と書かれている部分は多分、Sample/Hold 回路が開いている時間だと思うのですが、ここの長さは制御できないようです。まぁ、中の回路はクロック同期なんでしょうから、例えばこの期間のクロックを伸ばせば多分時間延ばせるのではないかと思います。なのでちょっとしたクロックゲーティング回路を足せば実現できるのでは?でもEG4S20に CG (Clock Gating)セルなんてあるんでしょうかね。Latch と AND または OR で作れなくはないけどタイミング合うかな。。

ADC IP Core の生成

RTL を書く前に IP core を生成します。とはいっても ADC のモジュール EG_PHY_ADC の有効にしたいチャネルを入れたラッパーをインスタンスするだけのようです。手置きしても大丈夫っぽいですが、Generator を使います。EG_PHY_ADC はパラメータで各チャネルのEnable, Disable を切り替えるようです。

EG4S20 _DataSheet_V1.5_english.pdf の 4.1 Special IP use にごく簡単に生成方法が書かれています。有効にしたいチャネルを選択するぐらいです。途中 File (ファイル名)と Component name (module 名)を指定するところがあります。adc など何でもいいとは思いますが、同じ名前にしておいてもいいでしょう。好みですが。あと Add to project ウィンドウでプロジェクトに入れる?と確認するところはチェックを入れてOKしておけばプロジェクトに取り込まれます。ファイルはデフォルトでプロジェクトのフォルダの下の al_ip フォルダ以下に置かれます。

選択したチャネルのピンアサインは固定で、IO Constraint で与えることはできません。また選択したチャネルにアサインされたピンは、IO Constraint から他の機能にアサインできなくなります。TD (Tang Dynasty) の HDLBit Flow で Optimize RTL まで実行すると IO Constraint で選択できるピンから消えます。

Tang Primer の端子アサインについては、sipeed-tang-primer-pins.pdf で確認できます。

SPI + ADC の仕様

ADCの動作を確認するため、SPI client?(今どきはなんとよべば) I/F をくっつけてみます。SPI は CPOL=0, CPHA=0 のモード0 で。ビット幅は 16bit とします。お手軽に SS が下がったら ADC を起動して、5bit 目から ADC 12bit の結果を MISO(いやこのネーミングもどうすれば。。)に出力します。ADC の結果は符号なしなので、とりあえず最初の上位 4bit は 0 出力で埋めておきます。ちなみに ADC 終了の eoc は見てません。SPI のクロックが早すぎると間に合いません。


タイミングチャートは Google のスプレッドシートでw

クロックは Tang Primer のボードには 24MHz の Xtal が載ってます。これから 16MHz 以下の ADC clock を作ればいいので 1/2 分周して 12MHz のクロックを ADC に与えることにします。この条件で SPI は 2MHz 程度で動作します。

端子アサインは以下の通りにしました。
N11: ADC0 (ADC 入力)
K14: CLK_IN (24MHz Xtal)
C15: MISO
C16: MOSI (使いません)
B16: SCLK
B15: SS
K16: XRES_IN (Tang Primer の USER スイッチ。プルアップされてます)

Simulation

回路が出来たので検証します。ADC モジュールのビヘイビアがあるのでそれを利用します。
ビヘイビアは以下の場所にあります(Windows の場合)。

C:\Anlogic\TD4.6.4\sim

TD でテストベンチのトップとか、Model Sim 用の do ファイルとか作ってくれるのですが、自前でテストベンチ用意して、Icarus verilog (iverilog) で検証してみました。

ところで ADC モジュールのビヘイビア、eg_phy_adc.v の中身を見ると、Channel select signal s に与えた値を dout に出す仕様のようです。s のチェックにはなるのですが、SPI 含めてデータがちゃんと通るかどうかを見るために、テストベンチでは ADC の出力データを決めている sample_B を外からフォースしてシミュレーションしてみます。1bit だけ立てて SPI で読み込み、を 12bit 繰り返します。

GtkWave

うまくいってるようです。よしよし。

論理合成と書き込み

端子アサインは FPGA Flow の User Constraints -> IO Constraint から指定して、適当な名前で保存しておきます。



タイミング制約は FPGA Flow の User Constraints -> SDC Constraint で作成。途中経過出すと長くなるので、作成した制約の中身は以下のような感じ。create_clock だけやっときました。


合成は緑の丸に三角のボタンで。あっという間です。特にバイオレーションとかもないので、下矢印のアイコンをクリックして書き込みです。イレースして、Flash に書き込みます。

動かしてみる

合成結果を書き込んだ Tang Primer を実際に動かしてみます。
ADC の入力はパルジェネとか安定化電源持っていないので、M5Stack の DAC を使って生成しました。12bit の ADC に対して 8bit の DAC では役不足だし、正確な出力も作れず、校正された計測機器は持ち合わせていないので、ファンクション確認程度になります。
また Tang Primer に実装した ADC は SPI I/F を持っているのでもう一つ用意した M5Stack で SPI をポーリングで動かして ADC のデータを取り込んでみました。
DAC の出力は Faces に付けたエンコーダーパネルでグリグリすると変わるのがわかると思います。だいたい。。同じ値ということで。

 

今回お試ししたデータ

Git に上げておきます。


RTL 検証・合成環境


RTL

src, al_ip フォルダに入っています。
adc_top.v
トップレベル階層です。adc_core と spi がインスタンスされています。
spi.v
SPI I/F 部分です。
adc_core.v
EG_PHY_ADC をインスタンスしています。

テストベンチ

simulation フォルダに入っています。
tb_spi_test.v
テストベンチのトップです。adc_top.v をインスタンスしています。
run_spi.bat
テストベンチ実行用バッチファイルです。実行すると iverilog でシミュレーションを走らせて検証を行います。tb_spi_test.vcd が生成されますので、GtkWave などで波形を確認できます。

実行環境

Windows10 で実行しました。
TD 4.6.4 64-Bit
Verilog simulation iverilog 11.0 (devel)
VCD 波形表示 v3.3.100

M5Stack プログラミング環境


m5stack フォルダに入っています。
ADC_SPI_IF.ino
Tang Primer と SPI 接続する側です。ポーリングした結果をディスプレイに表示します。
SCLK(G5), MISO(G17), MOSI(G16), SS(G22)
MOSI は使っていません。
DAC_Controller.ino
Tang Primer の ADC の入力信号を DAC で作ります。Faces のエンコーダーパネルを使う前提のコードです。出力中のデータを画面に表示します。
DAC1(G26)

Arduino IDE 1.8.13 で確認しています (なぜかこちらは Mac で。Windows でもきっと問題ないです)。M5Stack ディレクトリに .ino ファイルを置いています。
SPI master (MOSI はいらない) と DAC がそれぞれひとつずつ使えればいいので、M5Stack シリーズならほぼなんでもいいと思います。多少書き換えは必要とは思いますが。エンコーダーパネルを使いましたが、ボタンで値の上下でもいいですね。

2021/09/12

MAK127 focuser ver.3 (電子工作編)

機械工作編に続いて電子工作編。

モータとコントローラの配線及びソフトウェアについて紹介します。

ここで用意するものは、

です。DCジャック付きケーブル以外は機械工作編で紹介したかと思います。

念の為、ステッピングモータはバイポーラ型、12Vのものを。

ステップ数は 200ステップ(1.8°)もあれば十分だと思います。

電源は12V。電流容量は1Aもあれば十分。大きい分にはかまいません。

ちなみにATOMICステッピングモータードライバーキットはM5Stackという中国の会社の製品。こちらのサイトから直接購入できます。日本にも発送してくれます。遅いけど安かったりするようです。日本での入手先は機械工作編みてください。あまり高くはないので、まず ATOMIC ステッピングモータードライバーキットを入手して、ソフトウェアの準備ができそうだったら電子工作や機械工作を進めてみるといいかもしれません。


電子工作を少しでもやったことがある方だと簡単な部類に入ると思います。


ハードウェア

工作はいたって簡単。

  1. モータのケーブル、DCジャック付きケーブルを適度な長さにカット
  2. ビニールの被覆を5mmぐらいカッター、ニッパーなどで剥く
    (ブルジョワな方はワイヤーストリッパーを買いましょう。とても楽です)
  3. 配線をATOMICステッピングモータードライバーキットにネジで繋ぐ
  4. ATOMICステッピングモータードライバーキットの設定をする

以上です。

出来上がりはこんな感じ
シンプルです。

ビニールの被覆を剥くのが苦手な方はいるかもしれませんが、たいていモータのケーブルなどは余計に長いので何度も練習するチャンスはあります。銅線を切らないよう注意してください。

3. のネジで配線を繋ぐところと調整だけ説明しましょう。

配線を繋ぐ

まずモータとDCジャックケーブルのそれぞれの配線が何を意味しているかを調べます。


バイポーラ型のステッピングモータには配線が4本ついています。とりあえずデータシート(仕様書)を探して、どの色がどのように繋がっているか調べます。

上記モータのリンク先、秋月電子にあるデータシートをみると、以下のような絵が見つかります。

コイル(くるくるした線)が二組あるのがわかります。それぞれの線の先に色と記号(ここではA,C,B,D)が書かれています。記号は各社まちまちで、A+, A-, B+, B- とかかれている場合もあるし、他の書き方もありますがここでは一旦無視します。ここで重要なのは、二組のコイルがあるのでとりあえずどっちでもいいので、A, B と名前をつけておきます。そして A, B のそれぞれの両端を+,-とどっちでもいいので決めておきます。

上記の例ではとりあえず左側を A、右側を Bとしておきます。黒を A+, 緑を A-, 赤を B+, 青を B- としましょう。

また、DCジャックですが、ACアダプターを繋ぐものです。大抵真ん中が+、外側が-です。AC アダプターに合わせてどちらが+か-かを調べておきます。秋月の説明をみるとテスターで自分で調べろ的なことが書いてあります。

これらがわかってしまえば、あとは ATOMIC ステッピングモータードライバーキットに付いているラベルの指示通りに配線を精密ドライバー(ねじ小さいです)でねじ止めすれば完了です。


電源はそうはいきませんが、モータは配線間違ってもこわれずに回らないか、反対に回る程度です。仮に反対に回ってしまってもツールの方から反転設定ができるので回らなかったら、配線を見直す程度でいいと思います。

注意点

被覆を剥きすぎて、隣同士がショートしないようにしてください。あとお好みですが、配線がちらばるのが嫌であれば、100均などでスパイラルチューブを購入してまとめるといいです。
あとねじ止めした部分ですが、切れやすいので引っ張って力を入れないように。

調整(と設定)

ディップスイッチ

ディップスイッチの設定をしておきます。
まずはキットの ATOM Lite(下側の四角の小さい箱、ESP32が入ってます) を上に引っ張って外し、モータコネクタ側のカバーを横から押しながら外します(爪を折らないように)。

外したところ

ディップスイッチは4つあります。左から1,2,3,4。下下下上(OFF, OFF, OFF, ON)です。左三つはマイクロステップの設定。右端はディケイの設定。詳しくは DRV8825 のデータシートを見てください。このモジュールの設定情報はこちら。Full step というモードにしてます。

ステップモードについて

ステッピングモータの軸を指で回してみるとわかるのですが、クリック感があってカチカチ止まる場所があります。このクリック感がある場所で止まるのが Full step モードです。モータのステップ数はFull step で止まる箇所の数になり、それが一周200だったり400だったりするわけです。マイクロステップはこれより細かいステップで動かすことができるのですが、そこまで細かくなくてもいいと思っているので、Full step の設定にしました。ディケイモードもとりあえずFastにしておきました。ソフト的には Full step 以外には Half step (1/2)〜1/32までのステップモードを選ぶことができます。そのカチカチの 1/2 の位置とかいうことです。DRV8825 はそういうモードを持っています。さらに細かく動かしたい場合はこれら設定を選ぶようにします。ただ、励磁を止める(電流を切る)と、中間的な位置にいたモータの軸は Full step の位置に移動してしまうので、電源を切るとズレてしまうので Full step の方がいいかもしれません。

myFP2ESP のファームではマイクロステップの設定をソフトウェアで変更できるようになっています(これらスイッチがESP32のGPIOに割り振られている)。ただしこのキットはソフトウェアでは変えられず、ディップスイッチで設定を変えることはできます。

電流設定

ATOMICステッピングモータードライバーキットは、モータを動かす電流の調整をすることができます。実際に動かそうとして動かないとか、動かしている時の消費電流を下げておきたい(バッテリー駆動の時に)とかいう場合に調整するといいです(ステッピングモーターのドライバーはモータの軸が止まっていてもずーっと電流を流し続けます)。また Full step 以外のマイクロステップモードにした時も電流をちゃんと設定しないと脱調(回らず滑る)する場合もあります。安全のためにわざと脱調しやすくしておくのもいいとは思います。

キットの基盤の上にプラスネジで回せる電流調整用ボリュームがあるので、これをドライバーで回しながら調整します。時計回りに回すと電流大、反時計回りで電流小です(ケースのラベルに説明ある)。脱調しない程度に左に回して電流絞ると消費電力は下がります。

あれ、回らないな?と思ったらここを調整してみてください。

ちなみにステッピングモータは流す電流次第で結構熱くなります。びっくりしないように。そういうもんです。ただ電流抑えればそれほどは熱くはなりません。

以上で電子工作のハード的な準備はおしまいです。

ソフトウェア

マイコン使った電子工作の経験がないと、ここが一番の難関だと思います。

M5Stack と ATOM Lite

今回使った ATOMIC ステッピングモータードライバーキットは、M5Stack 社の ESP32(WiFi, Bluetooth と接続できる機能を持ったマイコン) を使った製品で、他にも色々製品があります。
M5Stack Basic (製品名)は、ESP32 に、ディスプレイ、3つのボタンを付けた小型の機器で、これだけで大分遊べるのですが、ここからディスプレイをLEDに、ボタンは1つに省略し、更に小型に価格も安く抑えたのが ATOM Lite という製品で、その拡張製品が ATOMIC ステッピングモータードライバーキット (ATOM Lite + DRV8825) になります。

入手は、秋葉原だと千石電商マルツ秋月などで購入が可能です。
オンラインでは取り扱いが一番大きいのはスイッチサイエンスだろうと思います。

ネットで情報も色々ありますし、本も出てたりするので電子工作(組み込み)初めてみようという方には丁度いいガジェットだと思います。プログラミング環境もC、Python、UIFlow など様々な環境が用意されていますので、プログラミングの勉強にもいいと思います。

開発環境

開発環境を整える必要があります。多分ここが一番ヤマ。

開発環境として利用できるのは、Windows と Macと Linux。私は Mac 時々 Windows な感じです。Arduino と呼ばれる元々は Arduino のために開発された環境に、M5Stack の開発環境を追加することになります。

さて、どうしたものか。。。
公式のインストール手順はコチラになります。英語ですが。
今回使う ATOMIC ステッピングモータードライバーキットは ATOM Lite を使っているので、

For Atom Matrix/Atom Lite

の部分に書かれているライブラリのインストールをしてください。

英語よくわからん。という人は、上記リンクを Google の翻訳窓に貼り付けて、日本語にしてしまいましょう。日本語のリンク先をクリックすれば日本語になります。

また、M5Stack Arduino 開発環境 などのキーワードでググれば色々情報出てきますのでそちらを参考にお願いします。

うまくインストールできたかどうかは、M5Atom のスケッチ例 LEDSet を試してみるといいと思います。ATOM Lite のボタンを押すと LED の色が変わります。


myFP2ESP(クイックハックの紹介)


ソフトウェアのラスボスです(笑)

可能であれば本家に取り入れてもらってそれを公開するのが良いとは思いますが、それが可能なのかも分かりませんし、その準備もしていないのでクイックハックの方法を最初に公開します。なので、本家にとりいられることがあったり、誰かが ATOMIC ステッパーモーターキットに対応するよう修正されたものを公開したらそちらに切り替えると思います。

myFP2ESPとは

とにかく作者の Robert Brown さんには大感謝!!!
やりたいことがすぐできました。

本家のサイトから、

A DIY remote ASCOM focuser based on ESP32/ESP8266 WiFi (based on myFocuserPro2). DRV8825, ULN2003, L298N, L293DMINI , L9110S, TMC2225, TMC2209, ESP8266 L293D Motor Shield. Support for Webserver, Bluetooth, LocalSerial and ASCOM REMOTE ALPACA, mDNS as well as TCP/IP.

です。DIY 向けの ESP32 か ESP8266(ESP32と似たようなマイコン)+様々なモータドライバに対応した ASCOM フォーカサーです。コントロールや接続方法も色々用意されてます。

ESP32 と DRV8825 に対応してますよね?なので、ATOMIC ステッピングモータードライバーキットには最小限の手順で移植できると推測されます。


本家のサイトにあるダウンロードから、PDF のドキュメントがダウンロードできるのですが、とても詳細に書かれていますので興味があれば読んでみるといいです。あと、このサイトの Files のタブの下の、Documentation の下に、Focuser Basics.pdf が置いてあるのでこれは英語ですが読んだ方がいいと思います。ステッピングモーターの1ステップで移動する距離が妥当かどうかを判断するのに。転記していいかどうかわからないので書きませんが。

ちなみにライセンスについては独自のライセンスのようで、改変、公開は構わないけど、オリジナルのファイルを全部つけること、ライセンスの明記、無償公開が条件のようです。詳しくは上記 PDF を読んでください。

ちなみにドキュメント類は必要な(興味ある)ところだけつまみ食いしただけなので、理解してないところも多々あります。

クイックハック(という名の移植)

ようやく本命です!
ここでは最小限の手順で移植する方法を紹介します。

もう少しちゃんとやる方法を確認しましたので、近々修正します。
ただ少々修正部分増えます(2021/9/13)。

変更内容 

  • 色々あるボードの組み合わせから ESP32 + DRV8825 対応を選ぶ
  • モータのモードなどを設定する
  • 接続方法を選ぶ WiFi
  • 接続の設定を選ぶ SSID など
  • GPIOの接続を修正する(ターゲットとしているボードと配線が違うので)
    Enable, STEP, DIR 端子が割り当てられれば良い。
ぐらいです。
最後の GPIO の設定は JSON ファイルを修正すれば良いみたいなのですが、取り急ぎ変更を公開したかったのでクイックハック版です。あとで JSON を修正する方法に変更します。

接続方法について(シリアルについては最後に追記)

接続する方法はいくつかあるのですが、ベランダで観測する人なので、家庭内の無線LANに ATOMIC ステッピングモータードライバーキットを接続し、同じネットワークに接続した PC から操作する方法をとっていますのでそれを紹介します。この他 PC から無線でダイレクトに繋ぐ、シリアルで繋ぐなどいくつかの手段がありますが、えー、と思ったみなさん、ドキュメントを読んでお試しください。シリアルはうまくいきました。最後の方に書いてます。
えーと、実はうちのベランダ、Wi-Fi つながりにくいので、ずっとシリアルで接続していましたが、先日 Windows10 をクリーンインストールして、myFP2ESP アプリを最新版に入れなおしたらシリアルのサポートがなくなっていました (1.0.0.21 より) 。過去のバージョンは公開していないようなのであきらめて PC に Windows10 のモバイルホットスポット機能でアクセスポイントを立ち上げて、そこにぶら下げるようにしました。望遠鏡の近所に置いている PC で立てたアクセスポイントなら電波強いので接続が落ちるようなことがないといいなと。ちなみにモバイルホットの画面にぶら下げた ESP32 の IP アドレスが出るので、myFP2ESP で接続するときはこの IP アドレスを使います。
ちなみに Windows マシン自身が有線/無線 LAN などでネットワークにつながっている必要があります。


モバイルホットスポット

ソースコードの入手

GitHub というネットワーク上でソースコードが管理されてますので、ここからダウンロードします。https://github.com/brownrb/myFP2ESPFirmware/releases

Source code (.zip) というリンクがあるので、クリックするとデータ一式がダウンロードできます。これを書いている時点で試したのは Release 230-1 です。

ライブラリーのインストール

ダウンロードした Source code (.zip) には myFP2ESP をコンパイルするために必要なライブラリが含まれています。展開すると以下の部分。


ここにある .zip ファイルを Arduino の開発環境にインストールする必要があります。
Arduino のスケッチ→ライブラリーをインクルード→. ZIP形式のライブラリをインクルードからこれら .zip ファイルを選んでインストールします。

ここでインストールができているかコンパイルして確かめてみます。
myFP2ESP のソースを Arduino 環境で立ち上げてみます。Arduino 環境がインストールできていれば以下の myFP2ESP.ino ファイルをダブルクリックすれば Arduino が起動します。


立ち上がったら、ボードを選択します。


ATOM ステッピングモータードライバーキット(ATOM Lite)が PC に接続されていたら、ついでにシリアルの設定もしておきます。これは上記でお試しした時に設定されているかもしれませんが。


ではコンパイルしてみます。左上の✅ボタンをクリックします。
この時点では ATOM Lite にプログラムは書き込まれません。設定がめちゃめちゃなので、まだ書き込まない方がいいです。

特に問題がなければこんなメッセージが出て終わります。エラーが出た場合はメッセージ(ログ)をみて対処してください。だいたい最初の方のエラーを潰す(多分ライブラリの不足なのでインストールする)とエラーは解消されると思います。そうじゃなかったらゴメンなさい。


ここまでがヤマでした。あと一息です!

ファイルの修正

修正する箇所が多いとイヤになるし間違いますよね?最小でいきましょう!
細かいところは目を瞑って。

修正するファイルは3つです。

まずは簡単なところから。

generalDefinitions.h
以下の行の #define の前にある // コメントアウト(行のそれ以降を無効)を消します。
 #define SETUP_DEBUG       1
これだけです。あとで確認する ATOMIC ステッピングモータードライバーキットに割り当てられた IP アドレスを確認するためです。保存しましょう。

focuserconfig.h
3箇所あります。

まずは ESP32+DRV8825 を有効にします。DRV8825 の行の先頭の // を消して、ULN2003 の行の先頭に // をつけます。
 #define DRVBRD 	PRO2ESP32DRV8825
//#define DRVBRD 	PRO2ESP32ULN2003
続いてモータの設定。一周するのに何ステップかかるかを書いておくようです。私の場合は、60 / 20 x 200step = 600step です。有効になっている 2048 の行頭に // を入れて、新たに 600 の行を付け加えます。
 #define STEPSPERREVOLUTION 		600
//#define STEPSPERREVOLUTION 		2048           // 28BYJ-48 stepper motor unipolar with ULN2003 board
続いて接続方法を選択します。私は無線LANにぶら下げたいので、ACCESSPOINT の先頭に // を入れて、STATIONMODE の先頭の // を消します。ここでは LOCALSERIAL と BLUETOOTHMODE が選べるようですが、STATIONMODE 以外試していません。
// to work as an access point, define accesspoint - cannot use DUCKDNS
//#define CONTROLLERMODE  ACCESSPOINT

// to work as a station accessing a AP, define stationmode
#define CONTROLLERMODE  STATIONMODE
このファイルは以上です。保存しましょう。

myFP2ESP.ino
最後です。2箇所あります。

まずは無線LANのアクセスポイントの設定です。SSIDとパスワードを設定します。your_ssid と your_ssid_password の文字をあなたの環境に合わせて書き換えます。
 char mySSID[64]     = "your_ssid";
char myPASSWORD[64] = "your_ssid_password";
最後です!DRV8825の接続に合わせて GPIO の設定を行います。実はここが無理矢理書き換えているところで、本来は .jsn ファイルで該当する設定を書き換えればいいだけです。あとでここらへん訂正します。

さて、cachepresets() と #if defined(TIMESETUP)の間に新しい行を複数加えます。mySetupData から digitalWrite までですね。Enable ピンを GPIO22、STEP ピンを GPIO22、DIR ピンを GPIO23 に割り当てているだけです。このアサインについては ATOMIC ステッピングモータードライバーキットに貼られているシールに書かれています。
   cachepresets();
  
  mySetupData->set_brdenablepin(22);
  mySetupData->set_brdsteppin(19);
  mySetupData->set_brddirpin(23);
  pinMode(mySetupData->get_brdenablepin(), OUTPUT);
  pinMode(mySetupData->get_brddirpin(), OUTPUT);
  pinMode(mySetupData->get_brdsteppin(), OUTPUT);
  digitalWrite(mySetupData->get_brdenablepin(), 1);
  digitalWrite(mySetupData->get_brdsteppin(), 0);
  
#if defined(TIMESETUP)
  Setup_DebugPrint("setup(): ");
  Setup_DebugPrintln(millis());
#endif
お疲れ様でした!保存すれば修正は以上となります。
あとはキットを繋いで、→ボタンを押すとコンパイルして書き込みです。


うまくいくと100%の後に、Board resetting via RTS pin.. が出れば成功!だと思います。さて動作確認といきたいところですが、その前にキットにアサインされた IP アドレスを確認します。キットは接続したままで、Arduino のシリアルモニタを立ち上げて、右下の速度が115200bpsになっていることを確認します。以下シリアルモニタを立ち上げるところ。



なにか表示されているかもしれないので、出力をクリアしておきます。その後、ATOM Lite の左側横にあるボタン(リセットボタン)を押して離してみてください。
画面になにか出てくるはずです。無線LANに接続できると IPアドレスが以下のように表示されるはずです。このアドレスをメモっておきましょう。あとで使います。


これが現れないということは、SSID, Passowrd の間違いか、接続方法の指定が間違っているか、無線LANの設定の問題、そもそもデバッグしている場所から無線LANが離れているなどが考えられます。一つずつ確認してみてください。

ちなみにプログラムを書き込むときはモータの電源は不要です。PC に繋いだケーブルから電源が供給されますので。両方いれても問題はないです。

アプリとドライバのインストール

Windows 環境で試しました。
から、アプリとドライバをダウンロード、インストールします。

Windows Application と ASCOM Drivers の下にあるツールをインストールします。

ASCOM driver はよくわからないのですが(ちゃんと調べてない)、myFP2ESPASCOMv208.exe の方をインストールしました。

ここは説明端折ります。

動作確認と設定

待ちに待った動作確認です。
ASCOM ステッピングモータードライバーキットは PC から外してかまいません。電源 12V だけ入れて無線LANに接続された状態にしてください。

myFP2ESP アプリを起動してください。


こんな画面が出てくると思います。
Interface を TCP/IP にして、TCP/IP の IP を先ほどメモした IP アドレスに変更してください(多分当面は同じ IP を割り当ててくれると。。思いたい。違ったらまた同様に確認です)。それから Connect ボタンを押すと、接続を開始します。


上記画面はとりあえず無視。OKでいいです。
成功すると以下の画面に遷移します。


これが立ち上がったらほぼほぼ成功です!MAK127に繋ぐまえなら好きに動かせばいいのですが、すでに接続している場合は必ず動かす前にフォーカスノブの軸の中のネジの位置を確認してください。
あまり端にいると少し動かしただけで端に到達するのですが、モータが回せる力の限り移動させようとします。電流をうまいこと制限すれば少しでも余計な力がかかると脱調状態にできたりするので、安全にはなりますが。

では動かしてみましょう。

数値はステップ数です。既に値がアサインされているボタン、-500, -100, -10... をクリックするとそのステップ数回転します。動いている最中に止めたければ HALT ボタンをクリックしてください。左側の数値(Forcus position)、上記では 5600 が現在の位置(ステップ数)。0がホーム(だったと思います)。Max steps はその名の通り最大で、自分の環境に合わせて書き換えてください。私の場合、21mm / 1.25um = 16800 ステップです。右側のウィンドウに値を入力して、Set ボタンを押せば書き換えられます。

自分の好きな位置に動かしたい場合は、Focus position の値を書き換えて GOTO すると、相対的に移動します。例えば 5600 の時に 5000 と書き換えて GOTO すると今の位置を 5600 として、-600 ステップ回転します。

MAK127 のフォーカスノブとの関係を合わせたければ、例えば 0 の位置に移動して、Focus position 0 に Set position すればいいと思います。


あとは、IN, OUT の関係が逆だったら、配線を入れ替えてもいいのですが、Motor settings の Reverse Direction にチェックを入れて、Set すると +/- の挙動が反転します。

Preset には複数の設定を保存できるので、アイピースごとだったり、バローレンズの組み合わせだったり、有効に使えるかと思います。まだいじってないけど。えーと、そこらへんはみなさんの方が詳しそうですね。

ASCOM ドライバーもインストールしていれば、他の ASCOM focuser 対応のアプリからも Step の変更が可能になります。FireCapture で動作確認してみました。

とりあえず以上です。

myFP2ESP のその他の機能

myFP2ESP には他にも機能があって、まだチェックや移植をしていない部分があります。

Temperature 

温度補償です。鏡筒の温度に合わせてピントを変えます(でいいんですよね?)。DS18B20をサポートしてて、これは ATOM Lite に手間なく実装できそうです。

OLED

OLED ディスプレイ。M5Stack なら移植する価値はあるとは思いますが、ATOM Lite ベースのキットで LED(多色)一つしかないので工夫が必要。少なくとも文字は出せません。

プッシュボタン

ステッパーの IN/OUT を手動で行えます。これは実装できると思います。ATOM Lite で使える色々なユニットというのがあって、プッシュボタンもあったと思います。

リモコン

なんと IR のリモコンにも対応。これもユニットがあるので実装できると思います。

ジョイスティック

ジョイスティックも対応です。これもユニットあるので実装できると思います。


 IN/OUT LED

モータが動いている時にどちらの方向か LED で表示する。
LED 内蔵なので移植可能。

ホームポジションスイッチ

これも実装可能ですね。

ちなみに ATOM Lite には Grove と呼ばれる端子があって、5V, GND, GPIOが二つ出ています(一つアナログ)。これを使えば上記を実装できます。ただし複数の機能を一緒に入れることは難しいと思います。

移植の本家へのフィードバックについて

気が向いたらリクエストしてみようかな。

ちょい変

LEDをつけてみます。

FocuserSetupData.h を include している後で M5Atom.h インクルードします。
#include "FocuserSetupData.h"

#include "M5Atom.h"
M5Atom の初期化コードを入れます。M5.begin()。void setup() の先頭で、Serial.begin() の前。
  void setup()
{
  M5.begin(false, false, true);
  Serial.begin(115200);
最後に以下のコードを myFP2ESP.ino の最後の方に挿入します。#endif の次の行から、} // end Loop() の行の前まで。ボタンのチェックと、LEDの点灯です。M5Atom のライブラリを使ってこれらを簡単に使うことができます。
#if defined(TIMELOOP)
  Setup_DebugPrint("loop(): ");
  Setup_DebugPrintln(millis());
#endif
  if (M5.Btn.wasPressed())
  {
    if (digitalRead(mySetupData->get_brdenablepin()))
    {
      digitalWrite(mySetupData->get_brdenablepin(), 0);
    }
    else
    {
      digitalWrite(mySetupData->get_brdenablepin(), 1);
    }
  }
  if (digitalRead(mySetupData->get_brdenablepin()))
  {
    M5.dis.drawpix(0, 0xf00000);
  }
  else
  {
    M5.dis.drawpix(0, 0x00f000);
  }

  M5.update();
} // end Loop()
上記修正をすると、起動するとLEDが緑に光り、モータが動き始めると赤色に変化します。LEDのところがボタンになってるのですが、それを押すと励磁、非励磁状態をトグルします。つまりモータに電流が流れたり切れたり。流れているとモータの軸は指で回すのが大変なほどに固定されます。切れると指で回せるようになります。

もっといじってみたいなーと思ったら、以下のサイトを紹介しておきます。
https://lang-ship.com/blog/
色々な機能試されています。もともとM5StickC中心でしたが、他も色々触ってますし、情報も書かれています。

これで本当におしまい。
お試しする方々、うまくいくといいですね!

追記(シリアルモードについて)

ノーサポートになったので、なかったことに。

まだ安定して動作できてません。複数の M5ATOM Liteを持っているので他ので試したらうまくいったり、いかなかったり。原因調査中。とりあえず成功したことのある手順書いておきます。

2021/9/25時点で、ダメなケースがなんとなく。
ATOM Lite を PC に刺したとき、デバイスマネージャーで、USB Serial Port のプロパティを見た時に、詳細でハードウェアIDが二つ見えるデバイスはダメっぽいです。一つしか見えないのは問題なさそうに見えます。ちなみにデバイスドライバを入れ直してもこの関係は変わらずでした。ATOM Lite 単品だとそんなに高くはないので買い足して試してみる手もあるとは思いますが、手持ちのM5ATOMシリーズでの勝率は2/6でした。


一応以下に手順を書いておきます。

シリアルモードにするには(WiFiと共存できません)、focuserconfig.h と myFP2ESP.ino を以下のように書き換える必要があります。

focuserconfig.h

myFP2ESP.ino


focuserconfig.h は CONTROLLERMODE を LOCALSERIAL にします。あと、MANAGEMENT を消します。// でコメントアウトします。

myFP2ESP.ino は、setup() 冒頭の Serial.begin() を消します。// でコメントアウトします。

generalDefinitions.h

SETUP_DEBUG もコメントアウトしておく必要あるかも。

アプリからの接続は、Interface で Serial を選択。ケーブルを接続しておいて、Port で接続している COMx を選択します。見つからないときは Refresh ボタンを押してみてください。あと Speed は 57600bps です。





質問は Twitter の方まで。@ttrsato