確度0.0005ppmの周波数測定 - GPSの1PPS出力を使った高精度周波数カウンタ
GPSの1PPS出力の特長として出力時刻の精度は限りなく正確であることがあげられます。
RTCや水晶発振器の精度が1ppmという場合それは累積していって一日で0.09秒になります。
今使っているGM-5157Aは1PPS出力の精度としてデータシートには10nsRMSと書かれています。0.01ppmに相当するわけですがこれは“ゆらぎ”(ジッターと言うべき?)であって累積していくわけではありません。つまり100日たってもやっぱり10nsRMSであるわけで0.09秒遅れていたり進んでいたりということにはなりません。
つまりGPSの1PPS出力を使う場合サンプル時間を長くすれば長くするほど周波数測定の確度が上がっていくはずです。
今回は128秒間のサンプルで断熱容器に入れた水晶発振器の周波数を測定してみました。
ところでなぜ高精度の周波数カウンターが必要になるかというと水晶発振器の周波数が信用できないからでしょう。それだったら周波数が正確な発振器を作ってしまえばいいという考え方もなりたちます。
「超高精度VCTCXO・VM39S5GをPLLでGPSに同期させてみた」
「標準電波にVCTCXO・VM39S5GをPLLで同期してみた - 長波JJY受信機の製作」
1秒で0.01ppmなら128秒だったら0.0001ppm以下になるのではないか、タイトルが0.0005ppmなのはなぜか、と言われそうですが、測定対象に20MHzの発振器を使っているのでそれ以上の周波数分解能が得られないためです。
“実用”としては128秒のサンプル時間が必要になることはあんまりなさそうです。VCTCXOの周波数チェックも今のところ16秒のサンプルで済んでいます。
「VM39S5G(VCTCXO)の外部制御電圧と発振周波数の関係 - 超高精度・温度補償型水晶発振器」
でもさすがにこれは32秒のサンプルです。
「VM39S5G(VCTCXO) - 温度補償型水晶発振器の温度係数を測る」
さらにここまで行くと128秒でのサンプルが必須になりますが....
「VCTCXO/VM39S5G+GPS/TIMEPULSE+PLLで0.01Hzの周波数偏差をめざす」
=======
測定方法は「GPS/RTCの1PPS出力を利用した超高精度周波数カウンター」に書いた周波数カウンターのプログラムをベースにしています。測定に必要なゲート信号は「超高精度SPIバスRTC・DS3234Sを使った周波数カウンターの実力」に書いた方法で作っているのですが、今回は128秒単位での計測になるのでその後にバイナリカウンターを接続して使っています(「24ビットバイナリーカウンター」の最初の7段分を使用しました)
上の周波数カウンターはタイマー1のオーバーフロー回数をlongの整数でカウントしています。20MHzを128秒計測するとこのカウンタが31bitでは足りなくなりますのでコーディングあるいは結果の取り扱いに注意が必要です。
測定対象となる水晶発振器は周波数の安定度がいいことがわかった「クリスタルオシレータ(20MHz)SG-8002DC(3.3V)」です。
安定度がいい、と書きましがこれは秒単位で見たときの話です。この水晶発振器については、PLLを使っているためジッタがある、ということはメーカーも明記しています。誤解されるといやなので念のため書いておきます。
これをシャントLDOレギュレータごと断熱容器におさめてあります。断熱容器の中には白金薄膜抵抗を利用した温度計(のセンサー部分)も入れてあります(「(趣味の)白金抵抗温度計の製作 - 準備編」)
-------
では計測結果です。
(図が間違っていたので差し替えました。“GM-5157Aは断熱容器に入れてある”と書いていましたが、断熱容器に入っているのはもちろん水晶発振器です。)
左側が周波数の目盛りで実際の周波数から20MHzを引いたものを表示しています。最初のデータは-53.15なのですが、これは周波数が19,999,946.85Hzだったことを意味しています。
測定を始めて一時間くらいはいろいろやっていたので安定していませんが、その後はいったん中断するまで温度も周波数も安定しています。
DS3234Sで測った周波数は安定していないように見えますが、DS3234Sは「超高精度SPIバスRTCDS3234Sを使った周波数カウンターの限界」に書いたように急激な温度変化に敏感でこの時期窓を開け閉めするようなところにおいておくとこんなことになります。
とは言え測定値は19,999,948~19,999,946Hzの間にあるわけですからゆらぎは1Hzつまり0.05ppmしかないですし測定結果もGPSの1PPS出力を利用したものとよく一致しています。けっして精度が悪いわけではないです。
それとDS3234SはRTCです。正確な時を刻む、という観点から1PPSの精度をしつこつ追求するというのはないものねだりのような気もします。
断熱容器に収められた水晶発振器ですから温度変化による周波数の増減もゆっくりとしたもので比較的安定な周波数が得られていると思います。
このグラフを見ると温度が0.3度下がったとき発振周波数が0.2Hzあがっていく様子がきれいにとらえられています。この様子から見る限り0.1Hz以下0.01Hz近いところまで正確に周波数がとらえられていると思えます。
温度計も断熱容器に入れてありますから、どっちかというと温度測定の精度(分解能)の方が心配になってきます (^^;;
途中で測定を中断して再開したときに動きが見られます。断熱容器はそのままだったのでおそらく電源をいったんきってまた投入したときの初期変動が見られているのだと思います。さすがにこのレベルの測定になると電源を入れて30分くらいはそのままにしておかないとまずそうです(この測定時はGPSは電源いれっぱなしでした。GPSの電源をいったん切るともっととんでもないことが起こりそうな気もします)
これやこれまでの実験結果を見るとポジションフィックスしてからしばらく時間が経過した後はGPSの1PPS出力を基準とする周波数カウンタはもう何も考えずに使ってもだいじょうぶそうな気がしてきました。
--------
GPS/RTC(DS3234)の1PPS出力を利用した超高精度周波数カウンター
超高精度SPIバスRTC(リアルタイムクロック)DS3234Sを使った周波数カウンターの実力
ほんとうに超高精度かもしれないRTC・DS3234Sを使った周波数カウンター
PICでSPI - 超高精度SPIバスRTC(リアルタイムクロック)DS3234Sの使い方(ソース付き)
PICでSPI - 超高精度SPIバスRTC(リアルタイムクロック)DS3234Sの実装
はじめてのGPS受信モジュール - GM-5157A - 概要
はじめてのGPS受信モジュール - GM-5157A - 実装
GM-5157Aの実装
趣味の電子工作
PIC
趣味の気象観測
趣味の実験
時刻と時間
GPS受信モジュール
« 2月20日のラブジョイ彗星のイオンテールに覆われるM76 | トップページ | 海面更正気圧の計算法 - 気象庁「気象観測の手引」による »
「時刻と時間」カテゴリの記事
- 星食観測ハンドブック2016とaitendoのGPS受信モジュールNEO6M-ANT-4P(2016.03.15)
- 毎日送信してほしいJJY(標準電波/電波時計)の試験電波(2016.01.26)
- GPS受信モジュールu-blox6/NEO6M-ANT-4Pと温度補償型水晶発振器VM39S5Gの周波数(位相)を比較してみた(2016.01.15)
- GPS受信モジュールNEO6M-ANT-4Pはまじおすすめ、現在在庫数 76(2016.01.13)
- (非公式)JJY(標準電波/電波時計)の呼び出し符号(コールサイン)送出方法(2016.01.13)
この記事へのコメントは終了しました。
« 2月20日のラブジョイ彗星のイオンテールに覆われるM76 | トップページ | 海面更正気圧の計算法 - 気象庁「気象観測の手引」による »
コメント