タイミングベルトが届くまで、OnStep(赤道儀制御ソフト)の研究をしたいと思います。まずは本家のサイトを熟読。したつもりが後から結構読み飛ばしてたことに気づく。
日本語での情報だとマイコンにArduino MegaかTeensyを使っている人がほとんどでした。これらはWifi機能も無ければBluetooth機能もありません。機能が必要な場合外付けしなければなりません。Megaに関してはデカ過ぎ!Teensyは家にない。昔からArduinoを使った工作をしています。Arduinoが1個だけ必要でもAmazonで3個セット買ったほうが街の電子部品屋さんより安かったりするので、2個余剰となります。そんなことを繰り返し家には20個程度のArduino及び互換機が転がっています。
この中で有力なのが、ESP-32S開発ボード(白いスポンジに刺さっているやつ)です。これにはWifiとBluetoothが内蔵されています。技適も通っていますので安心して使えます。値段も一個950円!
久しぶりに使うので簡単なプログラムを書いて動作確認。書き込めない・・・(涙
すっかり忘れていましたが、普通のArduinoと違って書き込みモードにする必要があります。右のボタンを長押ししながら左のボタンを一回押すことで書き込みモードになります。そしてさらに書き込みが始まったらNanoと同じように右のボタンを押さなければなりません(0.1μFのコンデンサをはんだ付けすれば自動化可能)。壊れたかと思ったよ。
それよりもOnStepがESP-32S開発ボード上で動作するのか、ネット検索。これで動かしている人発見。
OnStepをダウンロードして、Config.hファイル(設定)を書き換えてコンパイルしてみましたが、エラー連発。ボードの種類が違います!みたいなエラーが。またまたネットを彷徨う。解決策が見つからないので先程動かしている人に助けを求めることにしました。質問を送ったあと改めて本家のサイトを読み直したら、なんと書いてありました。MaxESP3を選べと。こんな風に(MiniPCB, MiniPCB2, MaxPCB, MaxPCB2, STM32Blue, Ramps14, MaxESP2, MaxESP3)に並んでいたから気づかなかった。MaxESP32とかだったら気づいたと思うんだけどね。
早速、OnStepをESP-32S開発ボードに書き込んでみました。
問題なく書き込み完了!と言うことは配線すれば動くということ。その前にどのPINをどこにつなぐか確認しなければなりません。PinsMaxESP3.hのファイルをみると下記の通りでした。
// Axis1 RA/Azm step/dir driver
#define Axis1_EN 12 // Enable
#define Axis1_M0 13 // Microstep Mode 0 or SPI MOSI
#define Axis1_M1 14 // Microstep Mode 1 or SPI SCK
#define Axis1_M2 23 // Microstep Mode 2 or SPI CS
#define Axis1_M3 Aux2 // SPI MISO/Fault
#define Axis1_STEP 18 // Step
#define Axis1_DIR 0 // Dir
#define Axis1_DECAY Axis1_M2 // Decay mode
#define Axis1_HOME Aux3 // Sense home position
// Axis2 Dec/Alt step/dir driver
#define Axis2_EN SHARED // Enable pin control shared with Axis1
#define Axis2_M0 13 // Microstep Mode 0 or SPI MOSI
#define Axis2_M1 14 // Microstep Mode 1 or SPI SCK
#define Axis2_M2 5 // Microstep Mode 2 or SPI CS
#define Axis2_M3 Aux2 // SPI MISO/Fault
#define Axis2_STEP 27 // Step
#define Axis2_DIR 26 // Dir
#define Axis2_DECAY Axis2_M2 // Decay mode
#define Axis2_HOME Aux4 // Sense home position
EN, M0, M1, M2はRA軸とDEC軸でPINを共有してるみたいだけどM2だけ違う。間違いか?下記の通りM0, M1, M2ピンの状態でステッパーモーターのMicrostepsが変わってくる。Config.hを見ると別々に指定できるのでM0とM1が間違っているね。とりあえずそのまま進むことにします。
M0 | M1 | M2 | Step |
Low | Low | Low | Full |
High | Low | Low | 1/2 |
Low | High | Low | 1/4 |
High | High | Low | 1/8 |
High | High | High | 1/16 |
やはりそのままのPIN設定では動かないので、先程のPIN設定をESP32S開発ボードに合わせなければなりません。
とりあえず動きそうなので、ブレッドボードで試作してみます。
作図しているうちにだんだん面倒になってコンデンサーのあたりが適当になっちゃった。これで多分動くはず。
KEN 様 初めまして。山縣と申します。
KEN様が苦労されて開発された「サイクロダル赤道儀」の開発模様を拝見しました。つきましては内容をそのまま利用させて頂きたく思います。そこでクーロンXX番を製作する為電気的な駆動部の実験を行っていますが次の条件下でコンパイルを実行してもコンパイルエラーが発生し書き込めません。非常にご多忙と思いますがアドバイスを頂きたくよろしくお願い致します。
条件:Arduino IDE: Ver1.8.13,1.8.16,1.8.18,2.2.1 それぞれインストールしました。
Firmware:Onstep-4.24
開発ボード:ESP-32 DEV KIT V1
Congi.hファイル内:PIMMAP:CNC3或いはMaxESP3
コンパイルエラー内容:
Arduino:1.8.18 (Windows 10), ボード:”ESP32 Dev Module, Disabled, Disabled,
Huge APP (3MB No OTA/1MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb),
115200, Core 1, Core 1, None, Disabled”
中略
スケッチをコンパイルしています…
In file included from I:\TEST\OnStep-release-4.24\OnStep\src\HAL\ESP32\ESP32.h:71,
from I:\TEST\OnStep-release-4.24\OnStep\src\HAL\HAL.h:90,
from I:\TEST\OnStep-release-4.24\OnStep\OnStep.ino:68:
I:\TEST\OnStep-release-4.24\OnStep\src\HAL\ESP32\Analog.h:54:97: error: default
argument given for parameter 3 of ‘void tone(uint8_t, unsigned int, long unsigned
int)’ [-fpermissive]
__attribute__ ((weak)) void tone(uint8_t pin, unsigned int frequency, unsigned
long duration = 0)
In file included from C:\Users\A\AppData\Local\Temp\arduino_build_264796\sketch\
OnStep.ino.cpp:1:
C:\Users\A\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.12\cores\esp32
/Arduino.h:217:6: note: previous specification in ‘void tone(uint8_t, unsigned int,
long unsigned int)’ here
void tone(uint8_t _pin, unsigned int frequency, unsigned long duration = 0);
次のフォルダのライブラリBluetoothSerialバージョン2.0.0を使用中:C:\Users\A\AppData\Local\
Arduino15\packages\esp32\hardware\esp32\2.0.12\libraries\BluetoothSerial
次のフォルダのライブラリWireバージョン2.0.0を使用中:C:\Users\A\AppData\Local\Arduino15\
packages\esp32\hardware\esp32\2.0.12\libraries\Wire
次のフォルダのライブラリEEPROMバージョン2.0.0を使用中:C:\Users\A\AppData\Local\Arduino15\
packages\esp32\hardware\esp32\2.0.12\libraries\EEPROM
exit status 1
ボードESP32 Dev Moduleに対するコンパイル時にエラーが発生しました。
以上よろしくお願い致します。
こんにちは!山縣さん。
日曜日まで出張のため、月曜日に改めて返信します。
見覚えのあるエラーなので、同じエラーを経験しているはずです。
ネットで、ボードマネージャーでesp32のバージョンを2.0.3から2.0.2ダウングレードして成功した書いているの見ました。試してみては?
それと最近OnStep4.24はコンパイルエラーが良く出るとフォーラムで報告されています。OnStepXだと問題なくコンパイルできるので、最近はOnStepXを使っています。近々OnStepXの記事書きますね。
ちなみに僕は、未だにArduino IDE 1.8.19を使っています。
KEN様 こんにちは 出張先からの回答でしょうか。有難うございます。
ESP32のVerを変えてコンパイルしましたが、同じようなエラーが発生しました。アドバイス通りOnStepXをGitHubより入手し再度トライしました。ボードをWEMOS D1 MINI ESP32及びESP32 DEV Moduleの2種類についてコンパイルしました。両方ともあっけなくコンパイルが完了しました(Upload speed :921600)。動作確認はASCOM経由Cartes du Cielです。何度も繰り返しコンパイルしてもエラーは発生しませんでした。今後、OnstepXでコンパイルをやっていきます。さらに、サイクロダル赤道儀のギア減速比のパラメータ有難うございました。RA軸のGR1とGR2のギア比の関係がよく分かりました。
中華製のMetal Harmonic DriveをAliexpressで検索したらピンキリですね。数万円のはバックラッシュが<30Arc sec、1万円以下は<2Arc minでした。自分の望むところは電子観望用で30秒撮影できればOK,且つ軽量であること。後期高齢者のため重量物の組み立てがNGなのです。作り上げたらご報告いたします。お忙しいのに懇切丁寧な記事を掲載していただき感謝しています。
OnStepXでコンパイルできて何よりです。OnStep 4.12はすでにかなり古いコードなので、どんどん新しくなるArduino IDEやモジュールに対応していない部分が出てきているのだと思います。
因みに僕が利用しているハーモニックドライブ(1:100)は下記です。
https://ja.aliexpress.com/item/1005005681762321.html?ug_edm_item_id=1005005681762321&pdp_npi=3%40dis%21JPY%21%EF%BF%A525%2C001%21%EF%BF%A525%2C001%21%21%21%21%21%4021038de316950049278737820d7e3b%2112000033994462874%21edm%21%21&tracelog=rowan&rowan_id1=buyer_accept_goods_timeout_20221027_1_ja_JP_2023-09-17&rowan_msg_id=2985817502007607%24ab4a5ea85a9b485f843ce16ba32f16c4&ck=in_edm_other&gatewayAdapt=glo2jpn
基本、ハーモニックドライブは構造上バックラッシュはありません。
なぜメタルハーモニックドライブをおすすめしたかと言うとコンパクト、軽量(サイクロイダルとほとんど変わりません)、3Dプリントするパーツが10点程度なので1〜2日で印刷が終わる、組み立ても2時間程度で可能なためです。サイクロイダルドライブは、ギアの精度が赤道儀の精度となるので、プリント結果に大きく左右されます。僕もギアから全部作ったことで、3Dプリンタ技術の向上、サイクロイダルドライブの詳細な理解に繋がったので良かったと思っていますが、今後はメタルハーモニックドライブ赤道儀を推していくと思います。
サイズ比較
https://mr-deep-addicted.com/wp/wp-content/uploads/2023/09/comparison.png
近々、作り方のサイトを立ち上げる予定です。
大変有難いアドバイス、ありがとうございました。
ハーモニックギアドライブの色々な文献を調べた結果、KEN様のアドバイス通り、非常に高精度のギアでロボットアーム、医療機器等の高精度の位置決めを必要とする分野で活躍している事が分かりました。またゼロバックラッシュが得られる為、正確な正逆転方向の移動が可能、高トルクの伝達比が得られるなど言い事尽くめである事から、天体観測機器の駆動部に最適ですね。またコンパクト化+軽量化が可能。一方、サイクロダルギアドライブは高い減速比が得られますが、一般的に他の減速機より歯車伝達効率が低く且つ高価です。今回はサイクロダルのBOMより大半の部品を購入した事から、まずはこれを使いこなしたいと考えています。
*OnStep4.24のコンパイルエラーの追試について
ESP32ボードマネージャのVerを5種類選択しコンパイルした結果は次の通りとなりました。
Ver2.0.11:X,Ver2.0.10:X,Ver1.0.6:〇,Ver1.0.5:〇,Ver1.0.4:〇
HALへのパラメータ引き渡しに難があるようです。今後はOnStepXを利用していきます。
KEN様 こんにちは
お忙しい中、ご回答頂き恐縮しています。色々試したのですが同じようなエラーが発生し前進しません。すでに頭はパンク状態ですのでよろしくご指導をお願い致します。これが成功したらESP32S開発ボードとCNC V3シールドを購入し電気系統を完成させ3Dプリンタで機構部パーツを製作します。Config.h 内のRA軸:AXIS1_PER_DEGREEとWORMROTの値は減速比1:45、マイクロステップ1/16で800steps/度、6400steps/WORMROT, DEC軸AXIS2の減速比1:180、3200steps/度でよろしいでしょうか?因みにESP32のスケッチ例何点かをコンパイルし動作させています。
このサイクロイダル赤道儀の減速比は下記として運用しています。
【RA軸】GR1 Retio 4.00 x GR2 Ratio 45.00 x MicroSteps 32 x 200 / 360 = 3200(1:4のプーリーが入ります)
【DEC軸】GR1 Retio 1.00 x GR2 Ratio 45.00 x MicroSteps 32 x 200 / 360 = 800
WORMROTの数値はPEC補正を使わないので設定不要です。
話はそれますが、市販(中華製)メタルハーモニックドライブ(約25000円)を2個使い赤道儀を完成させました。忙しくて全くブログが書けていませんが。こちらの精度は1000秒でもしっかり追尾できる性能があります。総額が6万円ほどかかってしまいますが、市販のハーモニック赤道儀に負けないコストに見合う出来です。これも近々オープンソースにする予定です。
サイクロイダル赤道儀の性能は、ギアが3Dプリントのため精度に限界があり、(240mmの鏡筒で)追尾は30秒ならほぼ問題なし。60秒なら1/3は星が流れてしまいます。ですので、電子観望向けと考えてください。
今後、更に簡単に安く精度の高い赤道儀のアイデアを思いついたので、ブログでストーリーを書いて行くつもりです。