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

GPSでRTC (DS3231) の姿勢差を測定 (音叉型水晶の姿勢差の測定)

◆まえがき
前の記事の実験で、GPSモジュール( u-blox M8N)から出ている1PPS信号のジッタは極めて少ないことが判りました。こういう高精度(確度)の信号を手軽に使えるようになると、いろいろなことが出来るようになるはずです。

そんなことで、ジッタの少ない1PPS信号だから出来る測定事例を紹介します。

◆RTCに変な誤差が発生する
最近の取り組みで、RTCのDS3231の精度(歩度)をエージングレジスタを使って正確に合わせ込もうとしているのですが、なんだか変な結果が出ています。きっちり合わせ込んだはずなのに、予想外の誤差が発生することがあるのです。DS3231のスペック上の精度である 2ppm には充分入っているので文句は言えないのですが、なんだか釈然としませんでした。

◆RTCでも姿勢差発生
いろいろ調べてみると、どうもRTCのチップを置いた時の、地面に対する角度の違いで誤差が変わってくるようです。つまり、重力の方向に対し、どういう姿勢でRTCを置くかで誤差が変わってくるようです。詳しく調べると、ICの長手方向を鉛直に置いた時にその違いが大きくなることが判りました。これ、機械式時計では姿勢差という言葉で呼ばれる現象なのですが、まさか電子時計でも、測定に引っ掛かるほどの姿勢差が検出されるとは思っていませんでした。これ、ちょっとした発見です。

文書だけでは判り難いので、写真で説明すると、

▼RTCの向きと、時計の進み遅れ
DS3231
これはRTC(DS3231)のチップです。この写真のチップの左側を上にすると時計は遅れ、右側を上にすると時計は進みました。その違いは、1.584e-7 つまり 0.1584ppm でした。

とても小さな差なのですが、これをどうやって測定したのか? その方法を解説します。

◆位相差を測定
ユニバーサルカウンタをタイムインターバル ( TI )モードで使い、GPSとRTCから出ている 1秒信号(1PPS)の時間差を測定します。もちろん基準はGPSです。この時間差が拡大(縮小)すれば、時計には遅れ(進み)誤差があることになります。位相差は0.1μの分解能で測定出来るので、1秒の測定で10のマイナス7乗の違い(誤差)が判ります。また、時間をかければかけるほど、高い分解能で測定出来るようになります。

▼正常な姿勢で測定
1ピン側が下
RTCの基板は直立した状態です。この時 DS3231 のPin1側が下になっています。

この状態での位相差の測定結果は、60秒間で-3.6μsの変化だったので、誤差は -5.833e-8 です。

▼天地逆で測定
1ピン側が上

この状態での位相差の測定結果は、60秒間で-13.0μsの変化だったので、誤差は -2.167e-7 です。

◆姿勢差
ということは、両者の差の 1.58e-7が姿勢差と言うことになります。判り易い値で表現すると 0.158ppmです。小さな値ですが、何度測定しても同じような値が出るので、姿勢差があると考えて間違いありません。

ちなみに DS3231 はエージングレジスタの値をいじることで誤差の微調整が出来ます。その感度は 0.035ppm/LSBなので、姿勢差は4.5LSB 分あることになります。実はデバイスを立てた状態で測定と補正を行い、電源を切った時(時計は電池でバックアップされて動き続けます)は横に寝かせた状態で放置していました。これでは姿勢差の影響がもろに出るので、いくら調整しても時計をぴったりの精度に調整出来るはずはありませんでした。

◆まとめ
RTC で使っている水晶は、音叉型で非対称な形状なので姿勢の違いの影響を受けそうな感じではあります。音叉型水晶の姿勢差で調べてみると、シチズンの腕時計で、姿勢差を無くすために音叉型水晶からATカットの水晶を使う物があるようです。この時計の精度は何と年差で±1秒というのだから大したものです。

GPSと一般的な測定器を組み合わせるだけで、10のマイナス7乗台の時間精度(確度)の測定が簡単に出来るようになりました。これって結構便利だと思います。

ちなみに、前の記事でやったルビジウムはものすごく高精度なので、誤差を測定するのは一日掛かりになっています。でも普通の水晶なら精度は6乗台程度なので、1分くらいの測定で誤差は充分把握出来ます。これくらいの測定なら、Arduinoのソフトだけでもいけそうです。単純な仕掛けでやると時間分解能は4μs になりますが、積分時間を長くとれば、そこそこ実用的な測定精度が得られるのではないかと思います。

こう書いていて、それって昔やったような気がするので検索してみると、
Arduinoで時間間隔の精密測定という記事でやってました。だめです、5年前から進歩していません。でも、当時使ったGPSと比べ現在の物は1PPSのジッタが飛躍的に小さくなっているので、相手が水晶なら十分な精度で測定出来そうです。

あと、GPSモジュールから1PPSよりもっと高い周波数が出せるといろいろ便利になります。ということで、時間のある時に調べてみたいと思います。ともかく、新し部品が手に入るとそこからいろいろな応用が拡がる、ということで楽しいです。

書き忘れていました。この記事で測定を行ったチップは、こっちの記事に出てくるチップのAです。BとCはとんでもないジッタがあるので、精密な時間差の測定は無理です。あと、Aのチップが本物であるのかどうかは、私には判りません。なんだかややこしい世の中になったものです。
関連記事

コメントの投稿

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

No title

水晶発振子の傾きで発振周波数が変わるなんて、理論上はわかっていても、個人で測定できるって、いままで無理だったわけで。
素晴らしいです。トラ技とかに起稿できますよ

SGさん、どうも

なるほど。大したお金を掛けなくても、個人でこれくらいの精度の測定が出来るようになった、という切り口は判り易くて良いですね。
カレンダー
09 | 2019/10 | 11
- - 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 31 - -
プロフィール

ラジオペンチ

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

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