GPSを用いた10MHz基準周波数発生器


はじめに

GPSを使った高精度な10MHzの周波数発生器を作りました.
正確な周波数カウンタを作るには,高精度な周波数源が必要となります. アナログTV放送があったころは,カラーサブキャリア周波数を利用して周波数発生器を作る方法がありました. 現在安価に入手できるGPSモジュールには,±1usの誤差でGPS時刻と同期した1pps(1Hzのパルス)信号を出力するものがあるので,ここではそれを利用した周波数発生器を作ります.

設計・製作

高精度な周波数源を作る場合は,気温の変化による周波数の変動をできるだけ防ぐために,通常OCXO(恒温槽に入れた水晶発振器)が使われます. またGPSから得られる基準パルスに対して,出力周波数を微調整できる発振器を使う必要があります. ここでは,±1ppmの周波数安定性を持つMaximのDS4026というTCXOを使いました.OCXOよりも周波数安定性では劣りますが,この周波数発振モジュールの便利な点は,I2Cで周波数の微調整と温度の読み取りが可能なことです. 使用した発振モジュールは40MHz出力のものなので,D-FF(74AC74)を使って4分周して10MHzの出力を得ます. GPSモジュールには,1pps出力を持ったLR9543を使いました.コネクタが0.8mmピッチで扱いにくかったので,コネクタのピッチ変換基板を自作しました.

GPSの基準パルスに出力周波数を同期させる制御はAVR(ATtiny2313)で行いました. 周波数を同期させる技術というとPLLがよく知られていますが,ここではソフトウェアで単純な制御により同期させます. まずGPSの1pps出力をゲート信号として,発振器の出力パルス数をカウントします.10MHzの発振器なので10,000,000個のパルスがあるはずですが,もしそれより少ない場合は周波数を上げて,多い場合は下げます. また,もしパルス数の誤差が十分少なければ,今度はゲートの時間を10倍して10秒間の出力パルスをカウントし,同様に誤差の修正を行います. パルス数の誤差が十分少なければ,さらにゲート時間を10倍して100秒間としますが,逆に誤差が大きければゲート時間を10分の1にして1秒とします.

現在の発振器の同期状態などを表示するために,8桁の14セグメント液晶(IM50175H)を使いました. JSTでの現在時刻と,捕捉しているGPS衛星数,パルス数誤差の絶対値,ゲート時間を表示します. 出力端子として,10MHzのパルス出力,RS-232CでのGPSモジュールの情報(NMEAデータと1pps信号)の出力(NTP用),RS-232Cでのモニター信号(現在のゲート時間やパルス誤差,TCXOの温度など)の出力を用意しました.

メインモジュール回路図
メインモジュール配線図
コネクタのピッチ変換基板
オシレータモジュール回路図
オシレータモジュール配線図
オシレータモジュールの基板
完成写真(内部)
完成写真(前面)
完成写真(背面)

上の「完成写真(内部)」で右側にある白いものがオシレータモジュールです.気温の影響をできるだけ避けるため発泡スチロールに入れてあります. また,左側の側面にあるのがGPSモジュールです.

完成したので電源を入れてしばらく放置してみました. パルス数誤差が小さくなってだんだんゲート間隔が大きくなりましたが,誤差が0になり安定するということはありませんでした. GPS時刻に同期させるといっても,TCXOを使用していて周波数変動がそれなりにあるので,もっと高い精度を得るにはOCXOを使う必要がありそうです.

ファームウェア

ケース加工データ

参考資料

  1. Bertrand Zauhar: A Simplified GPS-Derived Frequency Standard.

[戻る]
2014-05-17 ページ作成
(2010-05 製作)
T. Nakagawa