PIC AVR 工作室別館 arduinoの館->TopPage->つくってみた->赤道儀(続)

ポータブル赤道儀(続き)

Arduinoを利用したポータブル赤道儀の続きです。

詳細設計(概要)

組み込む機能の大枠が設定できたので、一つ一つの機能を詰めていきます。

「搭載機能」と「スペック」

以下の機能、スペックを盛り込みます。

以下の機能は、別途検討とします。

これらを元に、以下のモノを作ります。

(1)5つの追尾モード

追尾する天体と、搭載する追尾モード

「恒星」「太陽」「月」「星野」「停止」の5つの動作が出来るようにします。

追尾する天体は、「恒星」「太陽」「月」の3つとし、「彗星」などは対象外とします。 太陽追尾モードは、日食などの追尾はもちろんですが、月食の際の「地球の影」を追尾するのにも使えます。

「星野」撮影モードについては、これらの3天体を「太陽追尾」に近似した上で、その速度と地上物の中間速度… つまり太陽追尾の2倍の時間(48時間)で1周するという計算にします。

なお、「停止」は追尾モードの一種に混ぜてしまうと、操作の際に、極軸あわせなどで色々不便や不都合があったりするので、 別の操作系統で「追尾」「停止」をコントロール出来るようにします。使える操作ボタンにかぎりがあるので、アタマをひねります。

計算処理と追尾精度

DDS方式だと、Arduinoの「単精度浮動小数(float型)」では充分な追尾精度が出せません。 また、Arduinoの「double型」は、実装上はfloatと同じ単精度です。 (基本設計の段階を参照:なお、これはArduinoにかぎらず、avr-gccに共通の制約)

なので、①「DDSによる角度の積み重ね」ではなく、②「微小時間の積み重ね→角度に都度都度換算する」という処理を用います。

①は、蓄積誤差による精度の問題がありますが、バッテリーが持つかぎり無限時間の間駆動できます。 ②は、蓄積誤差の問題はありませんが、経過時間が一定以上になると、 変数の桁あふれによって正確な時間(角度)が把握出来なくなる…つまり、稼動時間に限度があるわけです。二律背反です。

double型が使えるほかの処理系であれば、①のDDSでも充分な精度が得られるのですが、 Arduinoでは、②以外には選択肢がなさそうです。まぁ、整数型を使って、力技で計算する方法も無くは無いですが…

なので、この「稼動時間の限界」が実用範囲内なのかについて、検証しておく必要があります。

経過時間と角度(モータのステップ数)を試算

微小時間を積み重ねて、そこから角度に変換するという方式について、実際どのくらいの時間まで、連続駆動できるのかを概算してみました。

詳しいことは、プログラム中の計算式を読み解いていただければと思いますが、検討に必要な基礎数値は以下のものでしょう。
(float型の有効桁数は10進数で約7桁程度なので、これを元にして、各数値や計算途中式の値が、有効桁数内に留まっているか検証が必要)

これらは、単純に考えれば、以下の計算式が成り立ちます。

(4) = (3)×( (1)÷(2) )

そして、(4)を元に、見合う波形を合成して、モータに出力すれば、経過時間に見合った回転角が作り出せます

ちなみに、(1)÷(2)の部分は、今回作っているポタ赤の場合だと「1前後(およそ0.8)」の値になり、 また、Kenko製の赤道儀(減速比が大きい)用コントローラとして使った場合では「10以下(およそ5)」の値となりました。 大抵の赤道儀では、およそ、「0.5~10程度」のレンジと考えておけば良さそうです。

(この数値が小さい方が、連続稼働時間に関する設計は楽になり、大きいと角分解能を高くしやすくなります)

稼動時間の限界について

さて、(3)は丸1日稼動すると仮定しても、最大で24時間×60分×60分=86400秒です。 これは、有効桁5桁なので、float型の限界まで、あと2桁ほど余裕があるように見えます。 実際は、連続稼動は長くても半日程度ですから、float型でもその半分でも足りるでしょう。

しかし、(マイクロステップも使って)毎秒12回~50回程度の分解能でステップすると仮定すると、 (3)の秒数に12~50程度の数値を掛けた精度が必要になってきます。すると、上記の「あと2桁」は、殆ど食いつぶされてしまいます。 今回作る赤道儀でも結構ギリギリの線ですし、ギヤ比の大きい赤道儀(市販の一般的な赤道儀)では、桁が足りなくなります。

これらの(1)~(4)や、その計算過程で現れる数値が、桁あふれしない範囲に留める工夫が必要です。

個々の詳細については端折りますが、簡単に言うと、整数部と小数部を別々に分けて計算することで、 有効桁を少しだけ増やしました(2~3桁程度)。処理方式の工夫によっては、もっといい方法があるかと思います。

以下に掲載するプログラムでは、各変数や、計算途中の数値が、 少なくとも一日(24時間)以内で「float型」の範囲を超えないようになっていると思います。 とりあえず、今回作るポタ赤や、一般的な市販赤道儀レベルでは、12時間程度の連続稼動はスペック的に問題なさそうです。

なお、計算精度設計内の時間を越えて稼動した場合、いきなり処理が破綻するわけではありません。 マイクロステップを使用しているので、そのマイクロステップで分解出来ていたはずの精度が実現できなくなって、 追尾制度が徐々に荒くなっていくことになります。(星の像が1画素内に留まらなくなっていく)

実際は、12時間も連続稼動することは無いでしょうから、大抵の赤道儀に繋いでも、 そういった、「追尾制度が荒くなっていく様」を、実用上体感することはないでしょう。あぁ、一安心。

あらためて、各追尾モードの設計値

各追尾モードでは、異なるのは「赤道儀が1周する間の秒数」です。先ほどの計算式の「(2)」にあたる部分です。

しかも、それらの域値は、各モードで、ほぼ同じレンジの値になっています。 (星野撮影モードは1周する時間が「倍」ですが、そもそも短時間で撮影する前提のモードなので、考慮対象外)

とりあえず、各モードでの「1周あたりの秒数」を、プログラム中で定数の「配列」で持っておけば、計算処理自体は簡単に出来るでしょう。

ちなみに、「恒星追尾」では86164秒、「太陽追尾」では86400秒、「月追尾」では89400秒、「星野撮影」では172800秒を適用します。

(※:キングスレートについては、後述します)

(2)北半球/南半球切り替え

北半球と南半球では、星を追尾する際に赤道儀を回転させる方向が「逆」になります。

北半球では、極軸方向から見て赤道儀を時計回り(clockwise)に、南半球では反時計回り(counterclockwise)に、 カメラや望遠鏡を回転させることで、星を追尾することが出来ます。(それぞれ、「天の北極」や「天の南極」に極軸を合わせた状態で)

南半球に旅行に行ったときでも使えるように、ユーザの操作によって、 追尾の方向を「北半球モード」「南半球モード」両方に切り替えられるようにしておきます。

ネコの目式だと、北半球と南半球を切り替えるのは、ちょこっと面倒なんですが、ウォームギヤ式なら普通に可能です。

(3)時間監視機能、電源監視機能

時間監視機能は、赤道儀には元々必要ないモノなんですが、これまで赤道儀を使ってみて、暗闇での「長時間撮影時」の際に、 「インターバルタイマやリモートレリーズ」的なものが欲しくなるわけで、そのためにあったらいいな、の機能として取り付けます。

同じメーカーのカメラでも、カメラによって「1回のレリーズ操作で、ミラーアップの2秒後にレリーズ」のものと、 「2回の操作で、ミラアップ→レリーズ」となるものがあったりするので、マイコン制御で直接レリーズケーブルに信号を出力すると、 カメラによって設定を切り替えたりなど、色々面倒なことになります。(暗闇でそんな操作はしたくなかった)

というわけで、以前の試作品 の様に、音や光、そして今回はキャラクターLCDに「経過時間」を表示する機能を載せることにしました。

LCDはオプションとしているので、LCD無しでも1秒単位で経過時間が計れるような仕組みを載せます。詳細は以下。

また、今回はモータの駆動波形を、「DDS(Direct Digital Synthesizer)方式」ではなく、少し変形した方式で行うので、 「モータ制御波形生成処理」のためにも「経過時間」を利用します。

モータ制御波形のための時間計測は、その分解能が「追尾精度」と「連続稼働時間」に影響するのですが、 その件はそれぞれの項で後述。

(4)時間経過や動作モード、電源電圧などの表示用LCD

LCDでは、1秒単位で経過時間を把握できるような表示を行うことにします。

ただし、表示桁には限りもあるので、最低でも秒数、できれば分数まで表示できればOK。 (実際は、桁数の関係から、9分59秒までの経過時間表示を行うことにしました)

なお、知りたいのは「経過時間表示」であって、「時刻表示」じゃないので、時刻あわせとか、バッテリーバックアップとかは、 機能として盛り込みません。

その他の表示内容としては、「追尾モード」「動作/停止」「北半球/南半球」「ブザー有無(後述)」「電圧監視(後述」 があります。16文字×2行内に、混乱なく収める必要があります。

各機能や制約を加味して、U/Iと合わせて後ほど整理します。

(5)同上のLED

大抵の情報はLCDに表示するのですが、LCDはオプションなので、搭載しない場合でも1秒単位の時間経過を知ることが出来るように、 1秒毎にLEDを点滅させることにします。

ちなみに、LEDは2個搭載してあるので、1個を時刻表示用に、もう1個を使って現在のモード設定が(LCD無しでも)わかるように工夫します。

(6)同上のブザー

真っ暗闇で写真を撮るとなると、LCDやLEDだけだと色々不便なので、30秒及び1分経過するごとに、 ブザーで音(チャイム)を鳴らして、見なくても時間がわかるようにしておきます。

星を撮るとなると、大抵は30秒単位で露出を設定することが多いので、このブザー音だけでも結構役に立つでしょう。(経験則)

(7)減速機構(ウォームギヤほか)

減速機構には、入手はちょっと面倒ながら、扱いは簡単な「ウォームギヤ/ウォームホイール」を使います。

まずウォームホイールですが、色々なサイズが存在しています。一般的な赤道儀だと、144枚歯のものが多いと思いますが、 汎用のウォームホイールだと144枚歯は入手性以前に、サイズがでかくて大変なので、もっと歯数の少ないものから選択します。

選択にあたって考慮する必要のある点について触れておくと、直径や厚さ、素材、値段などの他に、軸心の径もポイントです。

特に、軸心については、伝達経路である「モータ→中間減速ギヤ→ウォームギヤ→ウォームホイール」と経由する上で、 各ギヤで使用できる(選択できる)軸心のサイズにはラインナップが限られるため、 これらすべてを組み合わせることが可能なサイズとなる製品を、予め選んでおく必要があります。

今回は、ウォームホイールは小原歯車工業の「CG1-60R1」をチョイス。ネズミ鋳鉄製の60枚歯で、右巻き、条数1という、 一般的な小型ウォームホイールです。中心軸は10mmシャフト用です。 (注:ハブ部分に、イモネジ取り付け用のネジ穴が空いていないので、入手後に自分であける必要があります)

中心軸には、自由雲台等を取り付け、カメラ一式を載せる必要があるので、そこそこの強度が必要ですが、 10mmあれば、アルミシャフトなどでも(短く作れば)カメラ一式くらいなら充分すぎる強度が得られるでしょう。

ウォームギヤは、同じシリーズの「SW1-R1」をチョイス。これの中心軸は6mmシャフト用です。

モータには、3mm軸のコパル製ステッピングモータを使うので、中間減速ギヤの組み合わせにより、 この伝達途中で6mm→3mmに変換できる必要があります。今回は、中間ギヤにレインボープロダクツの1mmモジュールの平歯車を使いました。

30枚歯(内軸6mm径)と12枚歯(内軸3mm径)のギヤを使って、中間減速を行います。12枚歯の方は、モータに直結です。

結果、中間ギヤで12/30に減速し、さらに1/60に減速することになります。

ちなみに、ネズミ鋳鉄は少々錆びやすいので、もう少し錆び耐性のありそうな素材(真鍮とか)をチョイスするのもいいかも知れませんが、 値段的にはネズミ鋳鉄がベストでしょう。

(8)動力源(ステッピングモータ)

出来るだけ省電力で、最低限のトルクが出せるモータとして、いろいろなものを比較実験してみた結果、 コパルの「SPG20-332」をチョイスしました。1相あたり68Ωで、出力軸は3mmです。

後継のラインナップの「SPG20-1362」など、68Ωタイプなら、9Vの1-2相励磁程度ならトルク的にはなんとか足りると思います。

もちろん、もっと大型で大トルクのモノを使えれば申し分なしですが、消費電力や連続稼働時間との兼ね合いになってきます。 消費電力の大部分はこのモータが食うので、小さいに越したことはありません。

ちなみに、SPG20-332を単三ニッ水電池4本を使い、9Vに昇圧して、1-2相励磁相等の駆動方法でモータを動かすと、 夏では4時間くらい、冬でも1.5~2時間くらいは動かせると思います。(およその実測値)

動力源としては必要充分ぽいですし、入手性も悪くなく、ラインナップも豊富なので、このシリーズは便利かなぁと思います。 各ラインナップのギヤ比にも、プログラムの定数を修正するだけで、簡単に対応可能でしょう。

(9)軸受け、シャフト

シャフトは、ウォームホイールのスペックに直接左右されます。

ウォームホイールの軸心を、3mmとか5mmとかにしてしまうと、シャフトも当然その太さになり、鉄とかでも強度は不足しそうです。 (その手の素材を、手で曲げてみてください)

今回チョイスした10mmシャフトなら、アルミでも人の手で曲げられないほどの強度が出せるでしょう。 人間の手で持ち上げられるカメラやレンズであれば、この程度のシャフトで充分支えられるでしょう。

なお、シャフトの長さですが、長くすれば長くするほどモーメントが大きくなるので(つまりテコの原理で簡単に折ることができる)、 シャフトは可能なかぎりギリギリ短く作るのが肝心です。

東急ハンズなどで、長さ100mm、太さ10mmに予めカットされたアルミシャフトなどを買ってくるとよいでしょう。

軸受けは、そこそこの強度に耐えつつ、かつ、伝達ロス(摩擦)が小さいものを使う必要があります。

10mmシャフトを取り付けできるものの中から、旭精工の「ひしフランジ型ユニット」を、 筐体の板の両側から挟みこむ形で使用すると、強度的にはイイカンジになりそうなので、これをチョイスしました。 また、ボールベアリングを内蔵しているので、伝達ロスも小さく、重量が載っても軽くクルクル回ります。

実は、この「軸受け」と「ウォームホイール」で組み合わせ可能なものを探すのが、結構骨が折れました。

軸受けは、10mmかそれより太いものばかりがラインナップされていて、 一方、ウォームホイールや減速ギヤに組み合わせ出来るシャフトは軸径が細いものばかりでした。 組み合わせられるものを探していくと、何だかんだで、このあたりのギヤやシャフトに落ち着くのでは?という気がします。

(10)制御基板

(11)三脚取り付け穴

(12)カメラ取り付け機構

(13)筐体、及び支持機構

(14)200mmレンズ数分程度を許容する誤差

(15)必要充分な駆動時間:単三4本で2時間程度、電源∞で半日以上

(16)それなりのユーザインターフェース(UI)

… 続きます …