google-site-verification: google3bd66dd162ef54c7.html
FC2ブログ

GPSとArduinoでRTC (DS3231) の誤差の原因を徹底調査

◆まえがき
前回の記事で、周波数カウンタ(ユニバーサルカウンタ)を使わないでも、GPSとArduinoを使ってRTCの位相変化を高感度に測定出来るようになりました。つまり手軽にRTCの誤差を評価できるようになった訳です。

そこで早速、これまでやりたかった測定をやってみました。

◆RTCの誤差要因の確認
まずは電源電圧変化に対する精度の変化です。

▼電源電圧 v s誤差特性
電源電圧vs誤差

電源電圧が増えると誤差はマイナス方向に変化することが判ります。位相差が小さくなるので、時計としては追い付いている、つまり進む方向に変化することになります。(なお、誤差の絶対値としては遅れ)

5Vと3.3Vでは0.4ppmも違っています。このRTCの精度は2ppmなので仕様内の変化ではありますが、かなり大きな差だと思います。5V電源としてUSBのACアダプタを使うことが多いですが、その電圧精度は悪くて0.2Vくらいの違いは平気であるので、要注意です。

このRTCはTCXOですが、そういう高級なことをやる以前に、電源電圧変化に対する対策をきちんとやっておいて欲しかったです。なお、この測定はエージングレジスタの値をゼロで行っています。

◆バッテリーバックアップの時は
電源を切ったバッテリーバックアップ状態では、1秒パルスが出なくなるので位相差の測定は出来ません。しかし、再度電源を入れた時の位相の値から、バッテリーバックアップ中の変化を知ることが出来ます。そうやって測定した誤差の量は+0.57ppmでした。この値を上のグラフに赤い点線で書き込んでおきました。

ちょっと乱暴な言い方ですが、バッテリーバックアップ中は電源電圧が 3.4V くらいの状態に相当しているようです。まあ、バックアップ電池(CR2032)の電圧から考えると当然の傾向なんでしょう。そんなことでこの値は、バッテリーのへたり具合で徐々に変わってくると思います。

以上が電源電圧の違いによる時間誤差への影響でした。こうなると、電源電圧が変わった時のエージングレジスタの感度も気になるので、これも測定してみました。

▼エージングレジスタの感度
エージングレジスタの値に対する誤差の変化

電源電圧が3.3Vと5Vの時のエージングレジスタの値に対する誤差の変化をグラフにしたものです。

グラフが平行移動したようになっているのは、前項の測定結果と同じ傾向です。よく見ると、傾きが少し違っていて、5Vの場合は 0.0339ppm/LSB なのに対して、3.3Vでは0.0306ppm/LSB になっています。この値はエージングレジスタを調整して時計の誤差を補正する時に使うので重要です。

ちなみに、以前の記事に掲載したエージングレジスタの感度特性は次のグラフです。

エージングオフセット値と周波数変化グラフ

このグラフはルビジウムを基準オシレーターに使った周波数カウンタで測定したもので、電源電圧は5Vの状態です。この組み合わせの測定器を持っている人はめったにいないと思うので、誰にでも出来る測定ではありません。(このグラフはRTCの32.768kHzのオシレーターの周波数変化を見ているのでグラフの傾きが逆になっています)

これと同じことが7ドルちょっとのGPSモジュール(u-blox M8N) とArduinoを使うと出来ちゃうんだから、技術の進歩ってすごいです。

さて、これでRTCのDS3231の誤差要因は調べつくしました。というか、実は温度特性が残っているのですが、これは測定が難しいのでとりあえずパス。

ともかくここまでで判ったことを整理します。RTC の精度を上げるためには、
1) 電源電圧が変わると時計の歩度に影響がある。
2) 電源を切ることがある(バッテリーバックアップを使う)なら電源電圧は3.3Vで使う。
3) 姿勢差があるので、鉛直方向に対して同じ角度で使う

なお、電源を入れっ放しで使うなら2) 項は無視してもOKです。

さて、ここまでの話の集大成です。判った知見を反映してRTCのエージングレジスタの値を調整し、少し長い時間動かして、RTC の誤差を測定したのが次のグラフです。

◆RTC(DS3231)の精度確認結果
合わせ込み後の誤差
これは約3日間の1秒パルスの位相変化で、基準はもちろんGPSの1PPSです。

赤と黒の線の色分けは、黒い線がRTCの電源ON、赤い線が電源OFFで動かしています。どちらもほぼ一本の線に乗っているので両者の誤差(歩度)はほとんど同じになっています。

傾きはRTCの誤差を現わしていますが、その量は約4ms/Day です。つまり、1日当たり0.004秒しか狂わないという素晴らしい精度に調整出来ていることになります。誤差で言うと0.0463ppm、月差では0.12秒、年差で1.46秒のズレになります。こういう精度が1ドルくらいで手に入るRTCで出るのだから嬉しい限りです。

なお、この測定は温度の影響を無視しています。同じことを冬にやれば結果は変わってくるでしょう。

あと、同等の測定はルビジウムオシレーターの1PPSパルスを使っても出来ます。但しこの場合、ルビジウムオシレーターの電源は入れっ放しにしておかないといけないのでちょっと不便です(電源を入れ直すと位相は保存されません)。

◆まとめ
ふとしたことから買ってみたRTC(DS3231) ですが、突き詰めていくといろいろ知らなかった現象が見えて来て面白いです。

GPSモジュールは安くなったので、基準信号の1PPSを使うためだけに買うのも有りだと思います。最新の neo-9 はまだとんでもなく高いので neo-8 あたりがお勧めです。

ところで、ここまでさんざん遊び相手になってくれたRTC(DS3231)は、3個買った中に入っていた、「当たり」の1個で、この記事に出てくるモジュールのAです。もしこれも外れだったら、ここまでの一連の記事は生まれなかった訳で、偶然とは怖いものです。
ちなみに、モジュールのBとCの誤差を同じようにして測定してみると値が安定しなくて全然ダメ、見てはいけないものを見てしまった感じでした。
関連記事

コメントの投稿

管理者にだけ表示を許可する

No title

Panda43です。
やはりそのような現象が起きていたのですね・・・・
日中はSolarパネルで5vを供給して夜間、もしくは曇りの時は
バッテリーバックアップで使用する実験をしたことがありましたが
誤差に一定な傾向が見つけられず使用をあきらめました
(たぶん温度による変化が大きい季節でしたのでそれも原因かも)
現在はPICに直接32.768KHzのクリスタルを使用して温度変化に
対する補正を加える程度でもかなり安定した時刻がえられるように
なりました
(誤差が温度変化に対してかなり緩やかな変化だったため)
今度はGPSも使用してみたいと思います
(neo-8の発売時の初期割引販売で500円前後で入手しているので・・・現在は1000円以上するようです)

Panda43さん、今晩は

RTCもいろいろやられているんですね。
PICで温度補正とは、温度によって時刻の進み方を微調整する感じなんでしょうか。

あと、neo-8が500円で手に入ったとは驚きです。トラ技の今月号はF9P特集らしいですが、これaliex でもまだ値段が高くてとても手が出ません。
ただ、F9Pは10MHzの信号が出せるらしい?ので、周波数の基準として使うのにもってこいと思っています。

No title

Panda43です。
一秒ごとに気温を測定して変化したであろう値を一時間単位で
累積していきます
(一時間で+-どちらにいくら変化したかを出します)
24時間ごとに前日の値と当日の値から係数で計算した値を
補正しています
経験上、気象現象は一日単位で補正しないと誤差が累積して
変化が大きい時に狂いが出やすいためです
(目標は一週間単位での誤差が一番小さいようにしています)
補正と言っても結構小さな値ですが一か月単位での誤差は小さくなります

購入したGPSモジュールはM8030-KTチップセットのものですが
現在一番安いのはこれのようです。
https://ja.aliexpress.com/item/32797026966.html

このサイトは新しいモジュールが出ると激安になることが多いので
頻繁に見るようにしています。
F9Pは個人レベルでは手が出ませんね~~~~~~

Panda43さん、おはようございます

何だか難しいことやられているんですね。

あと、GPSのショップの情報ありがとうございます。これですね、
https://ja.aliexpress.com/store/2837118/
見ているだけで楽しめます。
カレンダー
10 | 2019/11 | 12
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード