周波数カウンタを作る 5

手近な部品で周波数カウンタを作る企画の5回目です。
今までの各回で少しずつ機能確認を進めてきました。

1 siliconvalley4066 さんのブログの記事「STM32F103C8T6で192MHz周波数カウンタ」を見かけて、この企画がスタート。TTL レベルで 66 MHz(自作信号発生器 TTL 信号の上限)までの計測を確認
2 市販品のアンプ(20 dBm 程度)をつないで 53 Mhz まで
3 手持ちの部品でブレッドボード上に作ったアンプで 24 MHz まで
4 自作基板でプリスケーラの機能確認(1/256、1/512)

前回の記事は、下のリンクから確認してください。

今回は、計測周波数の安定度を高めるために MCU のオシレータを TCXO に変更するはずでしたが、MCU が同じ STM32 系列で、すごい機能の周波数カウンタを見つけたので作ってみます。

STM32F103C8T6 の確認

周波数カウンタの主要構成品の MCU には、STM32F103C8T6 ボードの互換品を使用しています。
いわゆる「Blue Pill」と呼ばれている評価ボードです。

40ピンの基板上にはリセットスイッチ、2つの LED、3.3 V レギュレータとメインクロックに 8 MHz、RTC 用に 32.768 kHz のオシレータが乗っています。

メインクロックの TCXO 化

ボードに搭載されているメインクロックのオシレータは水晶振動子です。
MCU(STM32F103C8T6 の互換品?)の 5,6 Pin(OSCIN、OSCOUT)にコンデンサ・抵抗と共に 8 MHz の水晶振動子が接続されています。
この水晶振動子の詳細は不明ですが、同型の部品を調べてみたら ±30 ppm 程度の安定度ですね。(これでも通常の用途なら十分の安定度です。)

MCU のデータシートを確認すると、この端子には 4 ~ 16 MHz のメインクロックを供給できます。

次に TCXO の性能です。
だいぶ前に作った周波数カウンタに使用した TCXO (VCTCXO)は、12.6 MHz で周波数が調整可能な物でした。出荷時の周波数確度は1ppm以内という高精度です。

今回使用する予定の TCXO は、パッケージが 3.2 mm × 2.5 mm という非常に小型の物ですが ±2 ppm 程度の安定度なのでオンボードのオシレータの 1/15 の性能があります。

すごい性能の周波数カウンタを発見

STM32F103C8T6 ボードに外部オシレータを接続する方法を探していたところ、他に STM32 で周波数カウンタを製作している方を多数発見しました。
その中で、トランジスタ技術誌で何度も取り上げられている「APB-3」や NanoVNA の情報などで有名な「おじさん工房」さんの所に、すごい性能の周波数カウンタを見つけました。
おじさん工房さんの周波数カウンタのページは、以下のリンクからご覧ください。(別窓が開きます。)

おじさん工房では
RFC-3:GPS-DO 内蔵で常に高安定
RFC-4:GPS-DO を省いて簡略化したもの
RFC-5:SOP-8 の MCU を使い基板サイズ 38 × 38 cm に小型化したもの

の3種類の周波数カウンタを公開しています。

RFC-5 の性能

siliconvalley4066 さんの STM32 を使った周波数カウンタを元に改造しようと思っていた今回の計画ですが、おじさん工房の周波数カウンタ「RFC-5」の性能を見たら、私のような素人が作るより、これをそのまま作った方が良いのでは?と感じました。
下に記載した、周波数カウンタに必要な機能が全て備わっています。

1 周波数計測範囲は、標準のアンプで 100 MHz 以上、追加の高性能アンプを使うと 200 MHz 位まで計測可能(50 Ω 終端ナシなら 300 MHz 以上?)

2 周波数自動調整機能:入力端子に基準周波数(1, 10, 100, 1k, 10k, 100k, 1MHz から 1Mステップで 100MHz まで)を入れると周波数を自動調整することが出来ます。1 Hz から対応しているので GPS モジュールが出力する 1 PPS 信号が使用可能です。

3 外部にプリスケーラをつないだ場合の倍率:x64、x128、x256、に設定できます。

4 オシレータの自動判別機能:接続されている TCXO の周波数を自動で判別して使用します。10MHz, 13MHz, 20MHz, 26MHz のオシレータが使用できます。

5 表示方法の設定:無信号時の表示を「表示を消す」と「測定値のホールド」から選べます。(ホールド時は、周波数表示の左端に H がつきます。)

この性能を見ると、周波数カウンタとして完成されていて、もう何も足す必要を感じません。
必要な部品は少なくて済むように設計されているので、必要な部品をさっそく手配してみます。

RFC-5 の組み立て

おじさん工房の高性能・小型周波数カウンタ「RFC-5」を組み立ててみます。
必要な部品リストです。

・STM32G031J6M6:SOP8 の MCU なので8ピンの変換基板で試験します。
・LCD:I2C 変換基板が付いた16文字×2行の LCD です。
・オシレータ:26 MHz TCXO
・3.3 V レギュレータ
・BF862:入力アンプ用の FET
・抵抗:1 M、10 k x 3、4.7 k x 2、2.7 k、2.2 k、150
・コンデンサ:2.2 u、0.1 u x 3、1000 p x 2、0.04 u、47 p
・スイッチ:2個
・接続端子類

MCU、TCXO、FET は部品箱に在庫がないので、いつもの AliExpress に注文しました。

部品の到着

最近の AliExpress は、部品の総額がある程度の金額(2千円以上?)になると、それなりの速さで荷物が届きます。国内輸送はヤマト運輸で届くことが多いようです。
今回も注文後、2週間ぐらいで北海道まで届きました。

届いたのはこれらの部品です。(他にも色々と頼みました。)
・STM32G031J6M6:SOP8 の MCU です。
・BF862:N チャンネルの FET です。
・TCXO 26 MHz:少し小さい 3225 サイズのオシレータです。(型番:DSB321SDA)

部品の組み立て

STM32G031J6M6 は SOP8 サイズなので DIP 8 Pin への変換基板に半田付けします。

BF862 は SOT-23 サイズと小さいので、基板上にアンプとして仕上げます。

TCXO も 3.2 mm x 2.5 mm と小さいので、同じく DIP 8 Pin の変換基板に取り付けます。

TCXO のピン配置は下図のとおりです。
このオシレータは電圧制御型ではないので 1 Pin は NC になります。

出来上がった部品をブレッドボード上で組み立てます。
こんな感じに組み上がりました。
アンプ部分を別基盤としたため、部品が少なく小さなブレッドボードに収まりました。通常サイズの LCD を使っているので横に並べると大きく感じます。

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

「おじさん工房」さんでは回路図だけではなく動作に必要なソフトウエアも全て公開してくれています。
RFC-5 のページは、以下のリンクです。

「rfc-5_20220906.zip」をダウンロードすると、「bin」フォルダ内にコンパイルされた「main.hex」が入っています。
このファイルを「STM32 Cube Programmer」を使い、ST-LINK/V2(STM 用プログラマの互換品)で書き込みを行います。
ST-LINK/V2 をつなぐ USB 延長ケーブルの品質が悪かったり、ブレッドボードの配線ミスがなければ特に問題なく STM32 と接続できるはずです。

唯一、気を付けなくてはならないのは、「おじさん工房」さんの RFC-5 の「■ソフト」欄で解説されていますが「初回のみ Option Bytes / User Configuration / NRST_MODE を 3 → 2 (GPIO) に変更」することです。
そして「Apply」を押してください。これを忘れると MCU は正しく動作しません。

RFC-5 の動作確認

アンプ部分はこの後作りますが、周波数カウンタ本体部分の動作確認を行います。
電源をつなぐと LCD に表示が出ましたが、エラー表示が出ます。
どうやら TCXO の異常のようです。

動作を確認するために、部品箱内で使える部品を探します。
Dip 8 Pin サイズのオシレータが何種類かありました。(Dip 14 Pin タイプも色々ありました。)
自動で認識されるオシレータの周波数で一番高いのは 20 MHz なので、それと交換してみます。
オシレータの足の配置は大きくても小さくても一緒のようです。そのまま差し替えが出来ました。

オシレータを交換すると、周波数カウンタは正常に動作しました。

TCXO の取り付け方を変更

購入した TCXO は「DSB321SDA」で「大真空」社の小型 TCXO です。
電源電圧は+1.7 〜 +3.5 Vで、出力は「0.8 Vp-p min」なので通常の TCXO と同じですね。
周波数安定度は ±1.5 × 10−6 以下との事です。

TCXO 単体で出力信号を確認してみます。
ジャン測の周波数カウンタで計ったら 26 MHz が出ています。オシロが故障中なので自作のパワー計で見てみたら振幅が 0.8 Vp-p 以上どころか数m V しか出ていません。
「この TCXO 単品の不良かな?」

TCXO も STM32 と同じく DIP 8 Pin 変換基板に乗せましたが、それも良くなかったかもしれません。(微妙に足が合っていないような・・・)
確実に接続するために TCXO の足に直接、単線を半田付けして DIP 8 Pin の IC ソケットに取り付けました。
(TCXO が少し傾いて弱った虫みたいですが、試作の動作に問題はないようです。)

これを取り付けると動作するようになりました。

RFC-5 の機能確認

前回までの STM32 周波数カウンタの製作では、1つ1つの項目ごとに確認に時間がかかっていたので別記事にしていましたが、今回はまとめて機能確認をします。
確認するのは
1 オリジナルとおりのアンプを付けた時の最高測定周波数
2 前回製作した 1/256 プリスケーラを付けた時の最低・最高測定周波数

アンプ付きで測定

今回も信号源は簡易スペアナの GigaSt V.4 の出力を使います。
ブレッドボードで製作した周波数カウンタと、ユニバーサル基板に SMD 部品を半田付けして作ったアンプをつないで周波数の上限を確認します。
「おじさん工房」さんの掲示板で検索したら何人かがすでに同じ RFC-5 を製作されていて、腕が良ければ 100 ~ 200 MHz 程度は計測できるようです。

楽しみですね。さっそく測定を行います。
・・・周波数が測定できません。信号源を色々と変えてみてもダメです。
ジャン測の周波数カウンタで計ってみると、アンプ部に入力はありますが出力が出ていません。
(計算上は5倍程度の増幅率があるはずなのですが・・・)

仕方がありません。
多分、普通のユニバーサル基板を使ったので、SMD 部品間の半田付けの状態が良くないのでしょう。
今度は秋月電子で購入した「SMDプロトタイピングユニバーサル基板」を使います。
この基板なら SMD 部品も簡単に半田付け出来ました。

このアンプを付けてみましたが、同じく出力で周波数が測定できません。

しかたがないので、BF862 を使ったアンプの機能確認は後回しにして、以前 STM32 周波数カウンタで使った FET と高周波トランジスタで作ったアンプで試してみます。

今度は測定できました。
信号源は FRMS + FREX を使いました。
ブレッドボードのアンプなのに 97 MHz まで計測出来ました。(嘘のようですが本当です。)
写真では動作確認のために 20 MHz のオシレータを使っています。26 MHz の TCXO でも同様の結果でした。

プリスケーラを付けて測定

次にアンプを外して、プリスケーラを付けた状態で測定します。
前回の検証で作ったプリスケーラは 1/512 と 1/256 の2つがありますが、RFC-5 の設定できる分周は x64、x128、x256 の3種類なので MB506 を使った 1/256 のプリスケーラで確認します。

MB506 のデータシート上の対応周波数範囲は、100MHz ~ 2.4GHz です。
今回は高い周波数なので GigaSt V.4 の出力を使います。

まず、最高周波数を確認します。
RFC-5 の設定で倍率を変更しておきます。

左スイッチの長押しでメニューモードに入ります。
「4.PSC DIV」(プリスケーラの倍率設定)が表示されたら、右スイッチ長押しで選択モードに入ります。
左右どちらかのスイッチで「x256」になったら右スイッチ長押しで保存します。
保存しておくと電源を切っても設定値は記憶されています。
(通常操作モードの左下に倍率が表示されます。)

1 GHz から周波数を上げていきます。
MB506 のプリスケーラを付けて測定出来た最高周波数は 1.3 GHz でした。

(画面表示は、1行目が測定周波数、2行目にプリスケーラの倍率、MCU の温度、ゲート時間です。)

続いて最低周波数を測定します。
GigaSt V.4 の出力で 171 MHz でした。

次にいつも使っている FRMS + FREX でも試してみます。
おっ、100 MHz 以下でも計測します。少しずつ周波数を下げていきます。
一番下は 70 MHz ですね。

現在の測定結果

BF862 を使ったアンプが動かなかったので途中経過ですが、
アンプあり:~ 97 MHz
プリスケーラあり:70 MHz ~ 1300 MHz

という事で現在のところ、プリスケーラを付けてもスキマなくギガ帯までの周波数の計測が出来ています。
これでブレッドボードではない、ちゃんとしたアンプをつければ良い感じの周波数カウンタになりそうです。

しかし、MB506 プリスケーラのデータシート上の性能では、上限は 2.4 GHz ですが半分程度までしか測定出来ていません。
下限の周波数はデータシートに記載の 100 MHz より下まで計測出来ましたが、測定上限が低すぎるのはなぜだろう?
もともと、HMC363 が付くはずだった1段目を、普通の線でジャンパしたのが問題かなぁ?
今後の検証が必要ですね。

次回の予定

次回は、BF862 の偽物をつかまされたので「偽BF862」の正体を暴きながら、代替品でアンプを作って機能確認をします。(実は、すでに安心して注文できる先へ、BF862 の代替部品を注文しています。)

また、MCU に使えそうな部品も購入してあるので、それが周波数カウンタに使えないか検証してみます。

コメント