RFC-3 レシプロカル周波数カウンター

おじさん工房 TOP へ     RFC-3 とその仲間のレシプロカル周波数カウンター へ     掲示板へ


■ページ履歴
2021/07/15 このページ作成開始
2021/08/09 基準発振器を OCXO にしました
2021/09/05 新しい基板ができました



2021/07/15

いままで何回もレシプロカル周波数カウンターを作ってきましたが、今回の RFC-3 はこれまでの集大成と言えるものです。
HP53131A を目標とし、超えるものを目指しました。




front
 ・フロント外観

 内蔵 TEST 信号 6,666,666.6667 Hz を測定しているところです。
 周波数測定誤差 -0.0002Hz は -0.03ppb になります。

 大きさは幅100mm x 高さ50mm x 奥行100mm です。

 RFC-2(前に製作したもの)の外装をそのまま使っていますので
 一部合っていないのですが...


rear
 ・リア外観

 micro USB で電源供給し USB-Serial 通信をします。
 いろいろな設定や周波数ログを取るのに使います。


freq_drift
 ・周波数誤差 Ref=Rubidium 10MHz, Input=Rubidium 10MHz

 2000 秒間の測定結果です。
 だいたい±0.1ppb(±0.001Hz@10MHz)以内に収まっています。


freq_deviation
 ・周波数誤差ばらつき

 上の周波数測定結果 2000 回の周波数誤差分布図です。
 ほぼ正規分布とみなせそうです。
 σ=0.039ppb となりました。

 3σ=0.117ppb を超えるのは 6回/2000回程度と見積もることができ、
 上記のだいたい±0.1ppb以内に収まっているという結果と合います。


GPSDO
 ・内蔵 GPS-DO の特性 Ref=内蔵GPS-DO, Input=Rubidium 10MHz

 周波数(左軸 ppb)ばらつきは±2ppb 程度には収まりそうです。
 基準発振器が VC-TCXO なのでこれぐらいが限界です。

 VC(右軸)は VC-TCXO の制御電圧をつくる 20bitDAC 値です。
 制御感度は 0.03ppb/LSB です。
 右肩上がりになっているのは時間とともに VC-TCXO の周波数が下がっていくのを
 補正しているためです。 つまり VC-TCXO の安定度が悪いということです。

 locklevel(左軸)はロック状態を示す内部変数です。
 大きくなるほど時定数が大きくなり、7 で 300秒です。





2021/08/09 基準発振器を OCXO にしました

本当に精度が必要なときは Rubidium を Ref に入力すればよいので基準発振器は TCXO でいいかな、と思っていたのですが、GPSDO 時の ±2ppb という精度は周波数カウンター部の ±0.1ppb とはあまりにも釣り合わないという気がしてきました。 いろいろ探してみると小型で 5V の OCXO が中古で安価に入手できたのでこれに乗せ換えることにしました。

しかし、いままでの Ref 入力に OCXO をつなぐだけなら簡単ですが、GPSDO の基準発振器としても使えるようにするには TCXO との交換になり大改造が必要になります。


ということで、まずは電源を普通の 2.1mm ジャックからとれるように背面に追加しました。

次に、一番時間がかかっていた処理の高速化と処理の時分割を行いました。
一部トリッキーなコードやループアンローリングなどで何とか問題ないぐらいに収めることができました。

1PPS capture は Timer のクロックを 100MHz にして分解能を 10ns にしました。
たくさんある TIM の中 TIM1 だけ PLLQCLK を使うことができます(他 TIM は CPU と同じか分周したもの)。
このためこれまで PPS capture に使っていた TIM17 を TIM1 に変更する必要があり、玉突きで TEST PG を TIM1 から TIM3 に変更しました。

TDC の性能は悪くなっても誤差が 2 倍になる程度なのでこのままとします。

他にも OCXO の VC 端子の入力インピーダンスが低いためバッファを追加したり、基板はもうぐちゃぐちゃです。
新しく基板設計をやり直そうか考えています。


GPSDO
 ・OCXO での GPS-DO の特性 Ref=内蔵GPS-DO, Input=Rubidium 10MHz

 OCXO が小型のためか立ち上がりは早く、10分もすれば 1ppb 以内になります。

 周波数(左軸 ppb)ばらつきは ±0.3ppb 程度になりそうです。
 VCTCXO に比べ 1/7 くらいに改善されました。
 
 OCXO の制御感度は 0.0024ppb/LSB と TCXO の 1/10 ぐらいです。
 
 36000 秒のところが 朝 5:30 で、ここから気温が上昇し始め、それにつれて
 VC も変化をはじめます。
 OCXO とはいえ外部温度の影響があり、これをなくすには D-OCXO が必要です。
 そうなると本格的な GPSDO になりますが、さすがにそこまでは不要でしょう。

inside
 ・内部

 基板は修正に修正を重ねてぐちゃぐちゃな状態です。

 茶色の四角が OCXO(OC5SC25) です。
 熱が逃げないようにコルクで囲んだあとカプトンテープを巻いています。

 左上が新たに追加した電源ジャックです。

 右上の赤い基板は GPS 受信機(NEO-6M)です。

 右下のユニバーサル基板は入力アンプです。
 入力アンプは当初は OPA356(FET入力オペアンプ)だったのですが、
 大振幅信号入力時に変な波形(1/2 周波数)になるので、
 FET バッファ + SN74LVC2GU04 アンプに変更しました。

 中央下の QFN48 がマイコン(STM32G031)です。
 STM32G031 にしたことで大幅な簡略化ができました。





2021/09/05 新しい基板ができました

基準発振器を OCXO にした基板が届き、早速実装して動作確認をはじめました。 が、、、、いくつか不具合が見つかりました(泣)。

入力に 1kHz を入れて LPF1kHz にしたときにカウント値が安定しません。 どうも波形整形コンパレータに使った FIN1002 が低い周波数ではうまく動かないようです(LVDS 用だからしょうがないか)。 高い周波数ではうまく動くのですが...(低い周波数でもきれいな信号なら問題ないので見逃していた)

仕方がないので 74LVC1G97( schmitt input ) をコンパレータ替わりに使うことにしました。
そうするとヒステリシス幅が 0.1V から 1V になるので入力アンプゲインが足らなくなり、いままで 74LVC2GU04 1 段アンプだったのを 2 段縦続接続に変更しました。

他にも入力 DC amp( FET x2 source follower ) が高周波数かつ大振幅で DC bias がずれてくることがあり、初段アンプを FET 1個の単純な source follower にして DC が必要な LOGIC 入力用の信号は source follower の前から取ることにしました。

ということで、またしても基板は修正で満身創痍です。


inside

 ・新基板
 早速の修正でジャンパー線がたくさん飛んでます。

 使っている部品は左上から、
  SOP8 の USB-SERIAL IC、その右は PTC ヒューズ、電源 SW、REG
  その下が OCXO(OC5SC25)
  その右に REF10MHz のバッファと 10MHz 切り替えSW
  その右横にある TSSOP20 はいろいろな信号出力バッファ
  その下、LCD コネクタの下にある TSSOP16 は HC595(ポート拡張)
  赤い基板は GPS受信機(NEO-6m)
  OCXO の下あたりが GPS-DO 用の VC 電圧生成回路
  その右に TDC 回路、STM32G031(QFN48)、入力切替SW、入力アンプ
 です。

 こうしてみるとカウンター本体はマイコン1個でほとんどは高精度にするための回路です。
 徹底的に簡略化したレシプロカル周波数カウンターを作ってみたくなりました。









inserted by FC2 system