CCP1利用時の水晶発振子の誤差調整 ― 2011年09月30日 01時09分03秒
PICマイコンで天体望遠鏡用のモータードライブコントローラを作る場合、水晶発振子の誤差も気にする必要があります。
大抵の製品ならば±20ppmとか±50ppmとかの誤差があるものです。これに加えて更に温度によって誤差が発生します。
天体望遠鏡の赤道儀で恒星時追尾をするような場合、短時間ならばこのような誤差は余り問題にはなりませんが、通常の市販品ではギアの減速比とモータのパルス数から恒星時の1/2^nに丁度分周できるような特注品の水晶発振子を使っていることから、ある程度の精度は気にしていた方が精神衛生上いいでしょう。
大抵の製品ならば±20ppmとか±50ppmとかの誤差があるものです。これに加えて更に温度によって誤差が発生します。
天体望遠鏡の赤道儀で恒星時追尾をするような場合、短時間ならばこのような誤差は余り問題にはなりませんが、通常の市販品ではギアの減速比とモータのパルス数から恒星時の1/2^nに丁度分周できるような特注品の水晶発振子を使っていることから、ある程度の精度は気にしていた方が精神衛生上いいでしょう。
水晶発振子は固体によってばらつきがありますから、発振周波数にもばらつきが発生します。ある程度以上のばらつきによってステッピングモータへのパルス供給に対しても許容範囲を超えるような場合には何らかの修正をしたくなります。電子回路だけなら不可能ですが、PICマイコンを使うわけですからある程度の調整をしてみようと思います。
以下のように対応します。
(1) 恒星時に与えるタイマカウンタのカウンタ値(CCP1の場合はコンパレータの設定値)をEEPROMで定義して、コード定義しない
(2) EEPROMのカウンタ値を起動時に反映させて恒星時パルスを発生させる
(3) 組み立てた後に周波数カウンタで測定した結果を逆算したものを水晶発振子の周波数と考えて、その周波数で再度恒星時パルス数となるようなタイマカウンタのカウンタ値を求め直して、PICKit2を使ってEEPROMの定義値だけを修正する
以下は組み立てた基板の一枚での測定値です。かなり誤差があります。恒星時設定の時の1相あたりの周波数が5.26504Hzとなっています。これは4MHzの水晶に対してタイマカウンタ値23745から逆算すると4.00058799MHzとなり、誤差は+146.9984ppmとなります。かなりのハズレ水晶です。
以下のように対応します。
(1) 恒星時に与えるタイマカウンタのカウンタ値(CCP1の場合はコンパレータの設定値)をEEPROMで定義して、コード定義しない
(2) EEPROMのカウンタ値を起動時に反映させて恒星時パルスを発生させる
(3) 組み立てた後に周波数カウンタで測定した結果を逆算したものを水晶発振子の周波数と考えて、その周波数で再度恒星時パルス数となるようなタイマカウンタのカウンタ値を求め直して、PICKit2を使ってEEPROMの定義値だけを修正する
以下は組み立てた基板の一枚での測定値です。かなり誤差があります。恒星時設定の時の1相あたりの周波数が5.26504Hzとなっています。これは4MHzの水晶に対してタイマカウンタ値23745から逆算すると4.00058799MHzとなり、誤差は+146.9984ppmとなります。かなりのハズレ水晶です。
4MHz基準でのタイマカウンタ値は23745ですが、これを4.00058799MHzとして計算し直すとタイマカウンタ値は23748になります。この値をEEPROMに設定します。計算時のEXCELの結果は以下。
PICKit2でEEPROMでの設定値がオリジナルの状態。
EEPROMの設定値のみを修正値で変更。
EEPROM上のタイマカウンタ値を変更後の恒星時設定での測定値は以下。十分実用になる値となりました。
コメント
トラックバック
このエントリのトラックバックURL: http://kumikomi.asablo.jp/blog/2011/09/30/6127001/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。
※投稿には管理者が設定した質問に答える必要があります。