このブログを始めて、最初に書いた記事は GPSDO(GPS Disciplined Oscillator:GPS 基準周波数発生器)の製作記事でした。
GPS 衛星の電波を利用して、器材も維持費も大変高価なセシウム原子周波数標準器(原子時計)などを使った超高安定時間標準(10兆分の1(30万年に1秒)の誤差!)に同期した、10 MHz の信号を出力できる GPSDO は、一家に1台は欲しい器材ですね。(こんな器材が欲しい人は普通じゃないという意見も・・・)
以前製作した GPSDO
2年前に製作した GPSDO は honkytonk さんの設計で、STM32F411(ブラックピル)のクロックに OCXO の 10MHz を入力し、プログラムで GPS クロックの揺れを予測して偏差 ±1 mHz 以内の信号出力を目標にしたものでした。
この GPSDO を製作中に可能な限り安定した 10 MHz 出力になるように、高安定な OCXO として有名な HP 10811E を内蔵する改造をしたため、GPSDO のケースは結構な大きさになってしまいました。
それから2年程経過して、おじさん工房さんが公開されている高分解能 周波数カウンタ RFC-7 を組み立てて色々と触っていたところ、また「高精度病」が再発した様です。
1台目の GPSDO
私が組み立てた honkytonk さんの GPSDO ですが、以前計測したデータでは1週間ほど通電すると周波数が安定してきて、10 MHz の + 4/100 Hz から + 4/1000 Hz 程度の誤差に収束していました。(HP のジャンク計測器のケースを流用した GPSDO です。)

ところが、RFC-7 の試験のために久々に通電したところ、この GPSDO の周波数安定度が良くありません。
1週間過ぎても表示される周波数が 10 MHz の + 2/100 Hz 位から下がらないのです。
安定しない理由
周波数安定度が悪い理由は何でしょうか?
色々と考えてみました。
アンテナの設置場所
本来ならば、GPS アンテナは何も障害物のない全天が見渡せる場所に置きたいところですが、北海道の集合住宅に住んでいる身としては、色々と制限があります。
勝手に壁に穴を開けることが出来ないので、冬場には窓を開けて -10 ℃ 以下の外気が入る状態でアンテナを出しておくことになりますが、現実的ではありません。
通常は、何とか衛星を捕まえられる内窓と外窓の間にアンテナを置いています。
それでも、内窓が少し空いた状態なので室内は温度がどんどん下がります。
このアンテナ設置場所の制限による、GPS 衛星の補足数の少なさが1番に考えられる原因でしょう。
電源の不安定
GPSDO に内蔵している電源は、医療用の計測器に内蔵されていた高安定だと言われていた電源を使っています。
そのおかげか、今までの計測では屋内の内窓の所にアンテナを置いても、それなりの高安定度でした。
しかし、久しぶりに GPSDO を使ったので、電源に何らかの不具合が起きている可能性はあります。
OCXO の不良
使用している OCXO は、高安定な HP 10811E を使っていますが、かなりの年代物なので故障している可能性はあります。
解決策
一応、簡単に確認できる電源の安定度を確認しましたが、問題はないようです。
それでも気になるので、HP 10811E のマニュアルに記載されている安定電源を NJM723 で試作して内蔵してみましたが、周波数の安定度に変化はありませんでした。
次に、やっと北海道も暖かくなってきたので、昼間の天気の良い日限定で GPS アンテナをベランダに出してみましたが、USB シリアルから出力される周波数安定度は変わりません。
色々と迷っていてもしょうがないので、新しく GPSDO を作って比較して見るのが一番早いと思いつきました。
それでは、新 GPSDO の組み立て、やってみよう!
新しく組み立てる GPSDO
新 GPSDO は、どれを作るかはすでに決めています。
おじさん工房さんの高分解能 周波数カウンタ RFC-7 のプリント基板を製作された ji1udd さんの GPSDO です。
この GPSDO の製作に必要な全てのデータは GitHub に公開されています。
(GitHub のデータは、こちらのリンクをご覧ください。)
この GPSDO は、3D プリンタで作れるケースのデータも公開されていて、サイズは 10 cm X 10 cm 程度と小型サイズです。
ji1udd さんの GPSDO の完成写真です。

内蔵する OCXO は、CTI 社の「OSC5A2BO2」という電源電圧 5 V(ヒーター電圧も同一電源)で、中国国内の携帯電話基地局で使われていたと噂のものです。
CTI 社のデータシートの内容を引用します。
要約すると、
・短期安定度:0.05 ppb/s
・安定時間:5分間以内
・電源:最大 600 mA、安定後:250 mA、5 V

(データ引用元 EEV Blog)
部品の入手
全ての必要な部品のリストも、ji1udd さんの GitHub に公開されています。
今回は、OCXO 以外は正規部品が必ず手に入る、マルツの通販で注文しました。
プリント基板は、 ji1udd さんのに連絡したところ快く譲って頂けました。(ありがとうございます!)
必要な主要部品
MCU:STM32F410CBT6
GPS モジュール:NEO 7M(部品箱の在庫品)
温度センサ:LM73CIMKX-1
IC :74LVC2G04 3個
電源レギュレータ:AZ1117CH-5.0(5 V用)、AZ1117CH-3.3(3.3 V用)
OCXO:OSC5A2B02、これだけはマルツで販売していないので、AliExpress で中古品を購入しました。
その他に、0.96 インチの OLED、0603 サイズの抵抗やコンデンサ、端子類などが必要です。
ケースは 3D プリンタで出力するので、購入は不要です。
組み立て方
基板の半田付け
ji1udd さんの基板を自宅リフローで半田付けしました。
ただし、今回の基板は裏にも部品が付くので、そちらは手半田で取り付けます。
(今回、初めて自宅リフローで失敗して 48 ピンの MCU を付け直したのは内緒です。)

端子類の取り付け
今回の組立は、オリジナルと違う点が2つあります。
・プログラム書き込み端子のサイズ変更
・USB シリアル変換部は市販基板を使用

OCXO の準備
AliExpress で購入した OCXO は、中古品で出力周波数が可変できる基板に乗っています。

これを半田吸引機で取り外します。
年季の入っている愛用の HAKKO 808 を使うと、5本足の OCXO は簡単に外れました。

こんな感じです。
OCXO が乗っていた基板は、放熱対策のためか OCXO の下側が L字型に切り抜かれています。

OCXO の取り付け
OCXO を GPSDO 基板に取り付けます。
取付位置には温度センサがあるので、そのままではグラグラします。
高さ合わせを兼ねて昔の CPU ファンに付いていた高温対応の両面テープ(?)を追加しました。(薄ピンク色の部分です。)

CPU 用両面テープの上に押さえ付けて OCXO を半田付けしました。
そして高周波用の SMA 端子(背の低い直行タイプ)を取り付けて、基板の半田付けは完成です。

ケースの製作
ケースは公開されている STL データをスライサ・ソフトで変換して 3D プリンタで作りました。
ただし、材料(フィラメント)は、余っていた PLA の透明フィラメントを消費しました。
このフィラメントは、SF 映画の「ブレードランナー」に出てくる「デッカードブラスター」用の透明な部品を作りたくて購入したのですが、全然、透明にならなかったので余っていたものです。(どう見ても「白色」ですよね?)
サイズに問題なければ、後から黒色のスプレーで塗装する予定です。

ケースへの組み込み
メイン基板を M3 ネジ4本で、下側ケースに組み込みます。
通常、3D プリンタで出力すると収縮して小さめに出来上がるのですが、サイズ的にちょうど良かったです。(収縮率が大きい ABS を使った場合は、違ってくるかもしれません。)

次に正面パネルです。
端子を付けた OLED を組み込みます。

後部パネルです。
オリジナルと変更して USB シリアル変換基板が入る部分を作ったために、リセットスイッチなど普段は使わないスイッチはケース内に配置しました。

最終的に、こんな感じになりました。
透明フィラメントを使ったので、中途半端に内部の光が漏れています。

ケースの塗装
ケースサイズも、基本動作も問題なさそうなのでケースを黒スプレーで塗装します。
もちろん、組付けた基板や部品は外してから塗装しました。
使用したスプレーは、ダイソーの商品です。(1本100円、写真はダイソー HP から引用しましたが艶消しです。使用したのはツヤありです。)

なお、ケースの上面の USB 変換器の動作を示す LED の部分は、テープを貼って塗装が乗らないようにしました。

塗装したパネルに、再度 OLED を取り付けます。

下ケースに後部パネルをネジ止めします。
後部パネルは Fusion で設計しましたが、ネジ位置は問題ありませんでした。

文字入れはまだですが、組み立ては終了しました。
GPS アンテナをつなぎ電源を入れてみます。正常に衛星を捕まえているようです。

上ケースの四角く塗装を除いた USB シリアル変換機の赤い LED 部分は、半透明の材料のおかげで光が透けて見えるので、正常動作が確認できるのは思っていなかった収穫でした。
データ転送時には、 LED が点滅して正常動作が目で確認できて便利です。

新旧サイズ比較
新旧 GPSDO のサイズを比較してみました。
上に乗せた新 GPSDO は、凄く小さいですね。これで OCXO が内蔵されているとは驚きです。
後は、どの程度の周波数安定度なのかが気になります。

消費電流
OCXO の安定後の消費電流は 250 mA とデータシートに書いてありました。(5 V 動作時)
実際の値を確認してみます。
GPSDO の電源用レギュレータ IC など色々な部品の消費電流を足しても、OCXO の安定後の消費電流は 268 mA でした。(7 V 供給時)
OCXO としては普通の消費電流だと思いますが、充電池での駆動は無理ですね。

完成写真
GPSDO にテプラの白文字で文字入れしました。
前方です。

後方です

3D プリンタで出来上がりの品質を左右する積層サイズは、時間が節約できるけれど荒くなる 0.3 mm で作ったので、表面の出来がオリジナルの ji1udd さんとは比較にならないザラザラ感があります。
操作方法
操作方法と OLED の表示画面は、ji1udd さんの GitHub に公開されているので引用します。
電源を入れると OCXO のウオームアップ画面が表示されます。
温度センサの計測温度が 35 ℃以上になると、次の画面へ移行します。

GPS 信号待ちの画面です。

GPS からの正確な 1 PPS 信号を計測中の画面です。
GPS アンテナとユニットが正常なら、最下部に時間が表示されます。

GPS 衛星が補足出来て正確な 1 PPS 信号が得られたら通常画面が表示されます。
通常画面では、中央に大きく 10 MHz からの誤差周波数が表示されます。

この画面から、スイッチを押すごとに
・最初に表示される UTC 画面
・エラー画面
・緯度、経度画面
が繰り返し表示されます。
なお、スイッチを長押しすることで、現在の温度センサのデータを保存することで、立上り時間を短くすることが出来ます。
データ保存が成功すると、最下段に「Saved :」と表示されます。

また、使うのは最初の1回だけになると思いますが、電源を入れる時にスイッチを押しっぱなしにすると、OCXO の温度情報がリセットされます。
ファームウエアを書き込んだ後は、メモリの内容が正しい値ではないため、下の画面が表示されますが、上の手順で温度データを書き込めばこの表示は消えます。

今後の予定
これで、GPS と同期した正確な時間標準が2台、準備できました。
さらに、ルビジウム標準信号発生器も持っているので、それぞれから出力される 10 MHz を使って、どれが正しいのか?を確認してみます。
特に、先日完成した、おじさん工房さんの高分解能 周波数カウンタ RFC-7 には標準偏差を実時間で計測できる機能が備わっているので、どんな結果が出るか楽しみです。
コメント