赤道儀自動ガイドの自作(後編)
−高精度モータドライブの実現に向けて−
福井 雅之
1.はじめに
前編では時間切れ未完成だったため、主にハードウェアを中心とした製作記とし、ステッピングモータ&ギアの望遠鏡への取り付けとそのコントローラ製作を写真・回路図を交えて紹介しました。
→http://www.d1.dion.ne.jp/~ueharas/seiten/gt30/sekidogi.htm
前編で書き忘れたのですが、今回使用したモータ&ギアを購入したときのミザール本社訪問記を銀河鉄道第21号に掲載しております。ご興味がございましたらご覧ください。
→http://www.d1.dion.ne.jp/~ueharas/seiten/gt21/mizar.htm
後編では、前編で製作したモータドライブを駆動するためのソフトウェア開発と完成後の評価について紹介し、完結編とさせていただきます。
なお前編公開後、TA7291SGのデータシートを読み返していたらVrefにプルアップ抵抗を入れるよう指示されているのを発見しましたので回路図を修正しました。あわせて前編30号の回路図がごちゃごちゃしていたので、余計な部分を省いて図1に再掲載します。
図1.全回路図(修正版)
2.パルス数の計算
ミザールから購入したステッピングモータは(株)三龍社のP43-2130(12)で、2相2励磁(バイポーラ2相励磁)で駆動させるタイプです。このモータのステップ角度は15°ですので24ステップで1回転します。
同時購入したギアユニットは5段で減速させる構造で総ギア比は1:500でした。これにギアユニットから赤道儀への接続ギア比1:2.5と赤道儀自体のウォームギア比1:144、さらに上述しました24ステップ/回転を全て含めると1:4,320,000となります。これは432万ステップで赤道儀がちょうど1回転することを意味します。
太陽は1日で同じ位置に戻りますので、これを追尾する場合、1日で赤道儀を1回転させる必要があります。したがって432万ステップ/24時間の駆動パルスを与えればよいことになります。これは1秒に換算するとちょうど50ステップとなります。
太陽に比べ、恒星と月の追尾は計算がちょっと複雑です。恒星は太陽より若干早く進み、月は遅れます。恒星の太陽とのずれは1年でちょうど1周分=360°となりこのずれを考慮しなければなりません。月はさらに複雑で、地球を周回する回転と地球を通じて太陽を周回する回転の両方を考慮する必要があります。
天文年鑑のデータを引用し、赤道儀1回転の時間を次のとおり計算しました。
太陽:86,400.00秒/回転
恒星:86,164.09秒/回転…天文年鑑の1恒星日を元に計算
月 :89,428.33秒/回転…天文年鑑の1朔望月を元に計算
この数値から、モータ1ステップの周期を導きます(表1)。
|
赤道儀 |
モータ速度 |
ステップ周期 |
太陽 |
86,400.00 |
50.00000 |
20.00000 |
恒星 |
86,164.09 |
50.13690 |
19.94539 |
月 |
89,428.33 |
48.30684 |
20.70100 |
*4,320,000ステップ/回転で計算
表1.モータドライブのステップ周期計算
この表1のステップ周期毎にタイマ割り込みを発生させてステッピングモータの波形ステップを進めれば、正確な速度で追尾できます。
実際には“倍速ボタン”を設けたため、この1/2の周期でタイマ割り込みを発生させ、等速は2分周で動作させています。
3.モータ駆動パルスの生成
前項でも述べましたが、今回のステッピングモータは2相2励磁(バイポーラ2相励磁)で駆動させなければなりません。2相2励磁の特徴を三龍社のカタログから引用すると、「2相に巻かれたステーターコイルに電流を反転させつつ常に2相とも励磁する方式で、コイルの利用率が高く、同じ消費電力の場合4相2励磁と比較して50%前後のトルクアップができ、励磁方式として最も優れています」と書かれています。反面、コイル流す電流を正逆反転させる必要からどうしても回路が複雑になりますが、前号紹介したドライバIC
TA7291SG(東芝)を使用することでこれを解決しています。
<2相2励磁(バイポーラ2相励磁)の波形>
2つのコイルに90°位相をずらせた波形を加えます。
プログラムではφ1φ2波形反転(+→−または−→+)のタイミングでタイマ割り込みを発生させ、この波形にあわせた電圧をドライバICから出力させます。
ドライバIC TA7291SGのデータシート指示にしたがい、反転時に+側−側トランジスタの同時ONを避けるため約100μSの両トランジスタOFFタイミングを設けています。
図2.ステッピングモータに加える波形
完成後に実際の波形をオシロスコープで観測してみました(写真1、写真2)。
正逆切替え時の両トランジスタOFFの状態(約100μS)がわかりますでしょうか?
抵抗負荷の場合はこの間が0Vですが、モータ負荷の場合はコイルの逆起電力の影響で波形が逆方向に振られているのがわかります。電源電圧を少し超えたところで止まっているのはドライブICに内蔵されている逆起電力防止ダイオードの働きによるものです。
写真1.実際の波形1(抵抗負荷) 写真2.実際の波形2(モータ負荷) 4.ソフトウェアのプログラミング 1チップマイコンにPICシリーズPIC16F84Aを使いましたので、この開発環境を用意する必要があります。マイクロチップテクノロジー社ホームページから開発ツールMPLABをダウンロード・インストールしてこれを使います。プログラム開発はMPLAB内蔵のアセンブラで行いました。 メインルーチンは初期設定のみとし、それ以降の動作は全てタイマ割り込みルーチンのなかでプログラミングしています。 <タイマ割り込みでの処理>
図3.全体フローチャート 5.完成後の評価 @電源は単3充電電池または単3乾電池8本とする これは前号のハード編でも紹介しましたとおり単3×8本の電池ホルダーを内蔵させており仕様どおりです。 A12時間程度は連続駆動し続けること 残念ながらこれは実現できませんでした。消費電流を実測すると208mAでしたので、使用した三洋のエネループ(2000mAh)では9時間37分で電池が消耗する計算になります。満充電状態からモータを連続回転・放置させましたら、偶然ぴったり9時間37分でモータが停止しました。 9時間以上ということはほぼ1晩大丈夫ですし、予備の電池を1セット持っていけば問題ないので目標未達成ですがOKとします。単3電池ならコンビニでも買えますし… Bできれば時計並みの精度を実現させること 今回使った京セラの12.8MHz超高精度クリスタルモジュールを無調整のまま周波数カウンタで測定すると、その名のとおり高精度であることがわかりました(写真3)。 その結果、実測(1時間のタイマ割込み数から誤差計算)で1日あたりの誤差が1秒以内に収まっていることが確認できました(表2)。 ステップ数 1日あたりの <測定方法> @入力ON期間のタイマ割込み回数をカウントし、その結果をEEPROMに保存するようPICプログラムを追加。 Aバルブ撮影用のタイマコントローラ TC-80N3aから1時間のON信号を入力。 カウント数から誤差計算する。 太陽 360,001 -0.22 恒星 360,983 +0.64 月 347,807 +0.50 表2:ステッピングモータ制御精度測定 基準にしたTC-80N3aの精度が+4.3秒/日と思ったより悪かったので、表2のステップ数はその分の補正を加えています。最終精度が1日あたり1秒以下に納まりましたので仕様の“時計並みの精度”は実現できたと判断します。 ただ、これよりも大気差・極軸合わせの精度・望遠鏡重みからくる歪みの影響のほうが大きいと考えており、こちらは今後の調査課題とさせていただきます。 C駆動速度は3段階(恒星・太陽・月)切替え可能とすること D微調整用に停止・倍速ボタンを設けること この2つはハードスペックですので実現できています。テストでも問題なく動作していることを確認しています。 6.おわりに 今回、試し撮りでなかなかピントが合わせられず、近眼・老眼・乱視の3点セットの自分の限界を感じました。マニュアル直焦点でもオートフォーカスが利くと大変ありがたいのですがこの実現は難しそうですね。 最後に今回製作したモータ・コントローラと望遠鏡に搭載したところをご紹介します。後ろに見えているミザールCX-150(15cm反射)もこの赤道儀に搭載できるように改造しています。 こちらの実力もそのうちご紹介させていただきます。ではまた。
写真4:赤道儀AR-1+ギア 写真5:モータドライブコントローラ 写真6:モータドライブ+120SL(奥に見えるのがミザールCX-150) <付録1:写真がよくなった??(試し撮り報告)> 撮影地は自宅から車で約1時間少々の伊豆半島中央に位置する天城高原。天体写真の撮影地としても知られていたので今回初めて行ってみましたが、伊東の街明かりの影響か東の空が明るく期待はずれでした。曇りがちの天候の中、それでも何枚か撮影できましたのでそのうちの3枚を掲載します。結構風が強くせっかくのガイドが安定していないのがちょっぴり残念です。ただ、ガイドスコープを常に見ながら微動ハンドルを回し続けたこれまでと比べると格段に楽になったのは事実です。深夜の帰り道、道路脇から十数頭の鹿のお見送りを受けました。 天気のいい日、もっと条件の良い朝霧高原か井川湖近辺で再チャレンジします。三岳山の星は本当にきれいでしたね。福知山がうらやましいです。 以下3点の写真全ての撮影データが同じですので最初にまとめて記載しておきます。 撮影日/場所 2009年11月21日(土)/静岡県天城高原駐車場 望遠鏡 ミザール120-SL(D=120mm、F=720mm) カメラ キヤノン EOS
kiss Digital X ボディ 撮影方式 直焦点 ISO感度 800 露出時間 10分、ノイズ除去機能ON (3枚とも) 補正 空が思ったより明るかったので階調補正を加えています。 Presto!
ImageFolio 4 で少し黒を引き締めました。 デジタルはこんなことが簡単にできるのがいいですね。
写真7.M45プレアデス星団 写真8.M31アンドロメダ銀河 (編集者注:今号表紙)
写真9.M42オリオン大星雲 <付録2:全プログラムソースリスト> 久しぶりのアセンブラ挑戦です。冗長な部分がありますことご容赦ください。 ;******************************************** ; This program is AUTO GUIDE CONTROLLER ;
for PIC16F84 ;******************************************** LIST P=PIC16F84A,R=DEC INCLUDE "P16F84A.INC" __CONFIG
_HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF ;********************************** ; 変数のレジスターへの割り当て設定 ;********************************** ;<レジスタ> ST_CNT EQU 0DH ;状態カウンタ(割り込み毎にC−UP) LED_CNT EQU 0EH ;LEDカウンタ(LED出力ステータス) T1 EQU 0FH ;補助タイマカウンタ(補正タイマ) W_CNT EQU 10H ;波形状態カウンタ(出力ステータス) OUT_A EQU 11H ;ポートAバッファ(波形出力) ;<I/OポートA> U3_1 EQU 0 ;波形出力 U2_1 EQU 1 ;波形出力 U3_2 EQU 2 ;波形出力 U2_2 EQU 3 ;波形出力 LED EQU 4 ;LED出力 ;<I/OポートB> DS_MOON EQU 0 ;ディップスイッチ−月 DS_STAR EQU 1 ;ディップスイッチ−星 PB_FAST EQU 2 ;押しボタンスイッチ−倍速 PB_STOP EQU 3 ;押しボタンスイッチ−停止 ;<波形出力データ> OUT_0 EQU 0011B OUT_1 EQU 0010B OUT_2 EQU 0110B OUT_3 EQU 0100B OUT_4 EQU 1100B OUT_5 EQU 1000B OUT_6 EQU 1001B OUT_7 EQU 0001B ;********************************** ; タイマ・カウンタ定数 ;********************************** TM_SUN EQU 132 ;タイマ割り込みセット(太陽) TM_STAR EQU 132 ;タイマ割り込みセット(星) TM_MOON EQU 127 ;タイマ割り込みセット(月) CN_SUN EQU 80 ;補正カウンタセット(太陽) CN_STAR EQU 52 ;補正カウンタセット(星) CN_MOON EQU 27 ;補正カウンタセット(月) CN100US EQU 80 ;100usオフカウンタ ;********************************** ; プログラム開始 ;********************************** ORG 0 ;メインプログラム開始番地へジャンプ GOTO ORG 4 ;割り込み開始番地へジャンプ GOTO
T_INT ;********************************** ; メインプログラム ;********************************** MAIN ;ここから初期化部 ;<ページ1のレジスタ設定> BCF STATUS,RP1 BSF STATUS,RP0 ;ページ1のレジスタ設定 CLRF TRISA ;ポートAを全て出力モード MOVLW 11111111B ;ポートBを全て入力モード MOVWF TRISB ; 〃 MOVLW 00000111B ;OPTIONレジスタ初期設定 MOVWF OPTION_REG ; 〃 ;<ページ0のレジスタ設定> BCF STATUS,RP0 ;ページ0のレジスタ設定 MOVLW 00010000B MOVWF PORTA ;ポートA初期値出力 CLRF INTCON ;全割り込み不許可 ;<レジスタ初期状態設定> CLRF ST_CNT ;状態カウンタリセット CLRF LED_CNT ;LEDカウンタリセット MOVLW 8 ;波形状態カウンタセット MOVWF W_CNT ; 〃 CLRF OUT_A ;ポートAバッファ初期値設定 MOVLW TM_SUN ;タイマ割り込み初期値時間セット MOVWF TMR0 ; 〃 MOVLW CN_SUN ;補助タイマカウンタ初期値セット MOVWF T1 ; 〃 ;<割り込み許可> BSF INTCON,T0IE ;タイマ割り込み許可 BSF INTCON,GIE ;タイマ割り込み許可 ;<メインプログラム停止> LOOP1 GOTO LOOP1 ;メイン処理はここで停止 ;********************************** ; 割り込みプログラム ;********************************** ;<タイマ割り込み処理ルーチン> T_INT BCF INTCON,T0IF ;タイマ割り込みフラグリセット BTFSS PORTB,DS_STAR ;DSW=星? GOTO AJ_STAR ;星の時間補正へ BTFSS PORTB,DS_MOON ;DSW=月? GOTO AJ_MOON ;月の時間補正 ;<太陽の時間補正> AJ_SUN MOVLW CN_SUN MOVWF T1 SUN_LOOP DECFSZ T1,F GOTO SUN_LOOP ;時間補正3サイクルループ NOP NOP MOVLW TM_SUN ;タイマ割り込み太陽初期値時間セット MOVWF TMR0 ; 〃 ;LED点灯処理 BTFSS LED_CNT,3 GOTO SUN_OFF BCF PORTA,LED ;LED ON GOTO PB_CHK SUN_OFF BSF PORTA,LED ;LED OFF GOTO PB_CHK ;<星の時間補正> AJ_STAR MOVLW CN_STAR MOVWF T1 STAR_LOOP DECFSZ T1,F GOTO STAR_LOOP ;時間補正3サイクルループ MOVLW TM_STAR ;タイマ割り込み星初期値時間セット MOVWF TMR0 ; 〃 ;LED点灯処理 MOVF LED_CNT,W ANDLW 00111000B BTFSS STATUS,Z GOTO STAR_OFF BTFSS LED_CNT,2 GOTO STAR_OFF BCF PORTA,LED ;LED ON GOTO PB_CHK STAR_OFF BSF PORTA,LED ;LED OFF GOTO PB_CHK ;<月の時間補正> AJ_MOON MOVLW CN_MOON MOVWF T1 MOON_LOOP DECFSZ T1,F GOTO MOON_LOOP ;時間補正3サイクルループ NOP NOP MOVLW TM_MOON ;タイマ割り込み月初期値時間セット MOVWF TMR0 ; 〃 ;LED点灯処理 MOVF LED_CNT,W ANDLW 00110000B BTFSS STATUS,Z GOTO MOON_OFF BTFSS LED_CNT,2 GOTO MOON_OFF BCF PORTA,LED ;LED ON GOTO PB_CHK MOON_OFF BSF PORTA,LED ;LED OFF GOTO PB_CHK ;<PBチェック> PB_CHK INCF ST_CNT,F ;状態カウンタインクリメント BTFSS PORTB,PB_STOP ;PB停止? GOTO LED_OFF ;LEDオフ BTFSS PORTB,PB_FAST ;PB倍速? GOTO WAVE1 ;波形生成 BTFSC ST_CNT,0 ;偶数? GOTO WAVE1 ;波形生成 GOTO END_INT ;リターン ;<波形生成> WAVE1 INCF LED_CNT,F ;LEDカウンタインクリメント DECF W_CNT,F MOVF W_CNT,W CALL GET_WAVE MOVWF OUT_A MOVF PORTA,W ANDLW 00010000B IORWF OUT_A,W MOVWF PORTA MOVF W_CNT,F ;波形状態カウンタ=0? BTFSC STATUS,Z GOTO W_DFT T_100US MOVLW CN100US MOVWF T1 T100_LOOP NOP DECFSZ T1,F GOTO T100_LOOP ;100us遅延 WAVE2 DECF W_CNT,F MOVF W_CNT,W CALL GET_WAVE MOVWF OUT_A MOVF PORTA,W ANDLW 00010000B IORWF OUT_A,W MOVWF PORTA MOVF W_CNT,F ;波形状態カウンタ=0? BTFSS STATUS,Z GOTO END_INT W_DFT MOVLW 8 ;波形状態カウンタセット MOVWF W_CNT ; 〃 GOTO END_INT ;<LEDカウンタリセット> LED_OFF CLRF LED_CNT ;LEDカウンタリセット ;<メイン復帰> END_INT RETFIE ;<波形生成データサブルーチン> GET_WAVE ANDLW 0FH ;下位4ビットのみ取り出し ADDWF PCL,F ;PCレジスタに数字を加えてジャンプ RETLW OUT_0 RETLW OUT_1 RETLW OUT_2 RETLW OUT_3 RETLW OUT_4 RETLW OUT_5 RETLW OUT_6 RETLW OUT_7 ;<リストの終わり> END
@モードSW(恒星・太陽・月)、速度SW(停止・倍速)の判定
A1ステップ周期のタイミング生成(波形切替タイミング)
Bステッピングモータへの波形生成および出力
C波形反転時のトランジスタ同時ON回避処理(100μS OFF)
DモードLED点滅処理
図3にフローチャートを示します。ソースプログラムは最後に添付しておきます。
前編で記載した5つの基本仕様を実現できたのかを項目毎に確認・評価します。
写真3.クリスタルモジュールの精度
この8桁精度が維持できれば半年で約1秒の誤差となりますが、実際にはこれにソフトウェアの誤差を含めなければなりません。タイマ割り込みだけではどうしても精度を追い込めないため、開発環境MPLABシミュレーションモードを駆使し、繰り返しループや最後はNOPの挿入で微調整しました。
(step/時間)
誤差(sec/日)
B測定後EEPROMのデータを読み出し、その
52歳にして久しぶりに回路設計・製作・プログラムに挑戦しました。若いころのようにスムーズにはいきませんが、何とか動かすことができました。ソフト開発は頭のトレーニングにはよさそうですので機会があればまたチャレンジしたいと思っています。天文関係で何か製作意欲が出てきましたら銀河鉄道で紹介させていただきます。
せっかく自作したモータドライブ自動ガイドです。前編でお約束しましたとおり試し撮りを行いましたのでその成果報告させていただきます。
おなじみのM45プレアデス星団(すばる)です。天城高原に到着したときから目立っていたのですぐ望遠鏡を向けましたが、これは帰宅する直前に撮り直したものです。拡大するとわかるのですが風の影響ですべての星が2重星になってしまいました。特徴である青色のガスがもう少しはっきりするくらい露出時間をかけるとよかったと思います。
自動ガイドが完成したら是非撮りたかった被写体です。M45同様もう少し露出時間をかけると迫力が出たと思います。お隣の銀河とはいえ230万光年の光芒はいつ見ても神秘的です。720mm直焦点では画面に入りきりませんので望遠レンズの方がよかったかも。
有名なオリオンの大星雲です。10分露出でこれだけ写りました。光害の影響で全体が白っぽかったので強めに補正をかけています。赤色がもう少し出れば申し分ないのですが。