高分解能周波数カウンタ(RFC-7)を組み立てる

今回は、おじさん工房さんで公開されている「高分解能周波数カウンタ」RFC-7 を組み立てます。
この周波数カウンタの性能は、とにかくスゴイです!
(写真は完成した RFC-7 です。)

RFC-7 の細かな動作原理は難しくて勉強中なのですが、TDC(Time-to-Digital Converter)を使用して、アマチュアが自作できる周波数カウンタのレベルを超越した能力があります。

TDC の概要

今回使用している TDC 用の IC は、TEXAS INSTRUMENTS 社の TDC7200 です。
データシートで、この IC の機能の概要を見てみると、本来は超音波機器用に開発された IC らしいのですが、スタート信号から数えて、最大で5つの信号間の経過時間を「55ピコ秒」の分解能で計測することが出来ます。また、この内部時間は温度によるドリフトを自己補正します。

おおざっぱに言うと、MCU に接続する A/D 変換 IC の時間変換バージョンですね。
最近よく使われる 14 ビットの A/D 変換 IC は、3.3 V で約 0.2 mV の高分解能ですが、TDC7200 で使われている単位の「ピコ」で表すと 200 000 000 pV ですから、その分解能のすさまじさが分かります。

今までは細かな周波数を測るのに長時間を要していたのが、TDC7200 を追加することで1秒ゲート間隔で10桁の精度があります。
つまり、入力周波数が 10 MHz ならば、10 000 000.01 Hz まで測定できることになります。(説明は合っているかな?)

RFC-7 の製作開始

RFC-5 の時と同じように、KiCad で基板を設計してプリント基板製造会社にオーダーしようと思っていたら、おじさん工房さんの掲示板で、すでに基板を設計して自作ケースに入れて完成させた方が現れました。
Hermes-Lite や GPSDO を GitHub で公開されている ji1udd さんです。

ji1udd さん製作の RFC-7,おじさん工房さんの掲示板より引用

ji1udd さんに確認すると、RFC-7 の予備の基板を分けて頂けるとの事でした。
お送りいただいた RFC-7 用の基板用に OHP フィルムをカッティングマシンで切り抜きます。
そして、クリームはんだを塗布します。

クリームはんだを乗せ終わった基板です。

この基板のサイズは、100 mm X 100 mm です。
今まで使っていたリフロー用のヒートプレートでは、小さくて全体が乗らないので大きいほうのヒートプレートを使えるように準備します。
と言っても、コンセントとスイッチを付けるだけですが。
上側が使い込んだヒートプレート、準備が出来たヒートプレートが下側です。(まだ、ピカピカです。)

この基板上に細かな表面実装の部品を乗せていきます。
とてもじゃないですが、肉眼では無理なので電子拡大鏡を使います。

部品を乗せ終わったら、ヒートプレートの電源を入れます。
加熱中にクリームはんだが溶けだすと、0603 サイズの小さい抵抗やコンデンサが数個横を向いたので修正したら電源をオフにします。

オリジナルの回路と違うのは、プリスケーラ部と USB 変換部です。
この部分は、完成した基板を上に載せる予定なので、関連部分には部品が付いていません。

ここまでの状態を、再度電子拡大鏡で確認しておきます。
半田ブリッジなどもなく、問題なくリフローが出来たようです。

続いて、端子類を半田付けして基板は完成です。
気休め程度ですが、内蔵オシレータは温度変化を抑えるためにカプトンテープで被っておきました。
スイッチとプログラム端子は、LCD 用端子と同じくコネクタ式で抜き差しが簡単に出来ます。

USB シリアル変換部分は、市販基板を使いました。(後部パネルにはめ込み式です。)
1/256 プリスケーラ部は、RFC-5 を作る時に作った MB506 の基板を使いました。(裏でグランド線で接続し、ホットボンドで固定しました。)

ファームウエアの書き込み

RFC-7 用に公開されている STM32 のファームウエアは、SWD 端子を使って書き込みました。
基板上に用意されている端子は間隔が狭くて、手持ちの ST-LINK/V2(互換機)が直接つながらなかったので、変換ケーブルを接続する端子を取り付けました。
写真は、ブラックピル(STM32F411CEU6)に接続した ST-LINK/V2 です。この4ピン・コネクタに合う端子を取り付けました。

変換ケーブル経由でパソコンと接続すると、STMicroelectronics 社の書き込みソフト「STM32 Cube Programmer」で、正常に 基板上の MCU と CONNECT 出来ました。

後は、おじさん工房さんで公開されているファームウエア(bin フォルダ内の Main.hex)を書き込むだけです。(今回も RFC-5 と同様に、オプションでNRST_MODE を 3 → 2 ( GPIO ) に変更して保存するのを忘れずに。)

なお、古いバージョンの「STM32 Cube Programmer」ではエラーが出る場合があります。最新のソフトを使ってください。
おじさん工房さんの RFC-7 のページは、以下のリンクをご利用ください。

動作確認

RFC-7 は LCD を自動認識します。(I2C のアドレスを認識しているようです。)
つまり、I2C の LCD も、変換基板を使った LCD のどちらでも使用可能です。
今回、表示用の LCD は変換基板を使い、秋月電子などで普通に手に入るキャラクタ式の 16文字×2行の液晶表示器より少し小さい Aitendo の LCD を使いました。

基板に LCD をつなぐと正常に画面が表示できました。
まだ、周波数を計測していませんが、多分大丈夫だろうと考えて、先にケースを作ります。

ケースの製作

信号発生器(R909-VFO)の出来が良かったので市販のアルミケースを使い、前後のパネルを Fusion で設計して 3D プリンタで出力しました。

アルミケースは、AliExpress で購入しました。
内蔵するプリント基板のサイズが 100 mm X 100 mm なので、100 mm X 110 mm X 40 mm のサイズのケースを購入しました。

販売店の HP より引用

前面パネルの試作品です。
入力端子は基板の元々の位置ですが、スイッチの位置がそのままでは LCD と干渉するので、向かって右側に移動しました。
ケースの長さに余裕がなかったので、LCD は 3 mm 程の出っ張りを作って、そこに収めました。

LCD を納めた状態です。LCD はパネル内に収まっています。
スイッチ用基板は、RFC-5 用に作った基板を流用してはめ込みましたが、スイッチ・ノブを強く押すと外れてしまうのでホットボンドで固定しました。

この LCD には表面に4個の LED が付いています。
試作品では、このLCD 基板上の LED を利用して入力切替表示に使う予定でしたが、現在のパネルではオリジナルの基板上の LED を使っているので見えない状態です。(改造する可能性はあります。)

後面パネルです。
裏面の端子類はオリジナル基板の位置ですが、USB 変換基板は市販の基板を使ったので、ケース状の部分を作ってその中に収めます。

組み立て

アルミケースに基板を納めて、前後のパネルで固定します。
当初は SMA コネクタのネジで固定する予定でしたが、前後パネルで基板を挟み込むと動かなくなったので、現在は SMA コネクタにネジは付けていません。

外観

前面パネル側です。
まだ、文字入れはしていません。
この後、テプラの白文字テープで文字を作りました。

簡単に操作した限りでは、動作に問題はないようです。
外部基準信号(10 MHz)との切り替えも正常に動作しています。

後面パネル側の外観です。
左に外部リファレンス用の 10 MHz 入力と切り替えスイッチ、中央が USB 端子、右側が電源端子です。
電源は、内部で +5 V と 3.3 V をレギュレータ(AMS1117)で作っているので、6.4 V 以上の電圧が必要です。

操作方法

画面表示

1行目:「●」計測完了、周波数表示
2行目:
・A:標準入力、B:プリスケーラ入力と倍率
・Ex:外部リファレンス、空白:内部 TCXO
・ゲート時間
・表示桁数、A:Auto、A+1:Auto +1、数字:小数点以下の桁数

下の表示例は、
A入力で小数点以下5桁表示、内部 TCXO、ゲート時間1秒です。計測周波数は 10 kHz です。

スイッチ操作

RFC-7 は、RFC-5 と同じく2つのスイッチで色々な機能を切り替えられます。

左スイッチ(スイッチ1):長押しでA:B入力切替、設定画面では長押しで保存せずに戻る。
右スイッチ(スイッチ2):長押しで設定保存
左右どちらでも:短押しでゲート時間変更

電源スイッチONと
左スイッチ押しながら:BOOT MODE で立上り、UART ( シリアル ) でプログラム書き込みができます。
右スイッチ押しながら:デフォルト設定にリセット

設定

おじさん工房さんの RFC-7 のページから、操作方法を引用します。

項目説明
 1. LINE2 LCD 2 行目に表示する内容を選択します。
 NORMAL: 通常表示 StdDev: 標準偏差 ( Hz ) Jitter:ジッター ( ps )
 2. DIGITS 周波数表示の小数点以下桁数を選択します。
 AUTO: 自動桁数 AUTO+1: 自動桁数+1桁 0~6: 小数点以下 0~6 桁
 表示が LCD に収まらない場合は適宜収まるよう調整されます。
 表示単位は常に Hz です。
 3. SIG.DIGIT 周波数表示に有効桁表示 ( 下線カーソル ) を追加します。
 OFF: 表示なし Limit: 測定限界 StdDev: 標準偏差から有効桁推定
 4. HOLD 測定信号がなくなった場合、OFF: 表示を消す、ON:前の測定値をホールドして表示する、か選択します。
 ホールドにした場合、測定信号がなくなると周波数表示の左端に H がつきます。
 5. COMMA 3 桁ごとの区切りカンマを 10 種類から選択します。( default は 7:中黒 )
 設定はすぐに周波数表示に反映されますので好みのものを選びます。
 6. PSC DIV プリスケーラー倍率を、x64、x128、x256、x512、に設定します。
 B: 入力時、LCD 2 行目に倍率を表示します。
*7. AUTO F.ADJ  測定周波数が、1, 10, 100, 1k, 10k, 100k, 1MHz から 1Mステップで 100MHz まで、のとき周波数自動調整をします。 
 GPS の 1PPS でも自動調整できます ( ゲート時間は 2秒以上 ) 。
 自動調整後、調整値を追加で +/- できます。
 調整値は 10ppb ( 0.01ppm ) 単位です。
 周波数表示は測定のたびに調整された値になります。
 *この項目は Ref が内部 TCXO のときのみ出ます ( 外部 Ref のときは周波数調整値は常に 0 です ) 。
*8. FREQ ADJ  周波数調整値を +/- します。
 調整値は 10ppb ( 0.01ppm ) 単位です。
 周波数表示は測定のたびに調整された値になります。
 *この項目は Ref が内部 TCXO のときのみ出ます ( 外部 Ref のときは周波数調整値は常に 0 です )。
*9. CONTRAST LCD のコントラストを調整します。
 *この項目は LCD が ST7032 のときのみ出ます。
 10. VERSION ソフトウェアバージョンを表示します。

*印は環境により表示されない。

動作確認

自作の信号発生器を使って、RFC-7 の性能を確認してみます。

通常入力

まず、プリスケーラを使わない通常入力の能力を調べます。

Si5351 を使用した nobcha さん作の R909-VFO を使います。
この信号発生器の最低発信周波数の 10 kHz です。
当然ながら、この周波数は問題なく表示しました。

R909-VFO の最大周波数、225 MHz です。
RFC-5 と同じアンプ構成ですが、ji1udd さんのプリント基板の作りが良いためか、私が作った RFC-5 基板では上限が 200 MHz 程度でしたが、それ以上の周波数でも安定して計測出来ます。

プリスケーラでの計測

プリスケーラに MB506 を使った 1/256 の入力端子側で計ってみます。
入力切替はスイッチ1の長押し1つで出来るので、非常に便利です。

R909-VFO の最低周波数から見ていきます。
さすがに 10 kHz では計測できませんが、驚くことに 20 kHz から反応しました。
(データシートでは測定可能周波数は 100MHz ~ 2.4 GHz)

もちろん、R909 の上限周波数の 225 MHz は余裕で計れます。

もう少し高い周波数を測ってみます。
自作のADF-4351 を使った信号発生器です。

この信号発生器の下限が 35 MHz なので、そこから見てみます。
問題なく計測出来ました。

この信号発生器の上限は 4.4 GHz ですが、下限の 35 MHz から少しずつ周波数を上げて、計測できた最高周波数は 2.4 GHz でした。(完成直後に試しで計った時は 3 GHz 位まで行けたのに、今日は調子が悪いのかな?)
でも、MB506 のカタログ・スペックどおりの値は出ているので満足です。

オシレータの簡易計測

この記事の最後に、前回は企画倒れで中断中の「オシレータ選手権」で、気になっていたルビジウム基準信号発生器の精度を簡単に計ってみました。

基準信号には、honkytonk さん設計の GPSDO を使用しました。
(GPSDO の組み立て記事は、以下のリンクをご覧ください。)

GPSDO の10 MHz 出力は通電してから安定するまで長期間かかりますが、今回は簡易測定なので通電後1週間で使用しています。

参考として、前回のルビジウム・オシレータの計測結果です。
この時の計測には、単体で GPS を利用するオシレータの周波数計測器を使いました。
それなりの精度に見えますが、安価な中古の OCXO と同程度の結果でした。

今回の簡易計測結果です。
簡単な計測しかしていませんが、5倍以上の安定度は出ているようです。(測定できる細かさが違うので、単純に比較は出来ませんが・・・)
GPSDO の周波数が安定したら、もう一度「オシレータ選手権」を行えそうな筋道が見えてきました。

コメント