« 2月20日のラブジョイ彗星のイオンテールに覆われるM76 | トップページ | 海面更正気圧の計算法 - 気象庁「気象観測の手引」による »

2015年2月22日 (日)

確度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レギュレータごと断熱容器におさめてあります。断熱容器の中には白金薄膜抵抗を利用した温度計(のセンサー部分)も入れてあります(「(趣味の)白金抵抗温度計の製作 - 準備編」)

-------

では計測結果です。
02221140128sec
(図が間違っていたので差し替えました。“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 | トップページ | 海面更正気圧の計算法 - 気象庁「気象観測の手引」による »

時刻と時間」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック

« 2月20日のラブジョイ彗星のイオンテールに覆われるM76 | トップページ | 海面更正気圧の計算法 - 気象庁「気象観測の手引」による »

フォト

サイト内検索

  • 記事を探されるんでしたらこれがいちばん早くて確実です。私も使ってます (^^;; 検索窓が表示されるのにちょっと時間がかかるのはどうにかしてほしいです。

新着記事

リンク元別アクセス数

  • (アクセス元≒リンク元、原則PCのみ・ドメイン別、サイト内等除く)

人気記事ランキング

  • (原則PCのみ、直近2週間)
無料ブログはココログ