周波数カウンタを作る 10 完成と基板のお裾分け

周波数カウンタを作る企画の10回目です。
区切りの良い回なので今まで進めていた、おじさん工房さんの「RFC-5 周波数カウンタ」の製作を振り返りつつ、PCBgogo さんにオーダーしたプリント基板が届いたので、組み立てて簡単な機能確認を行います。

また、アマチュアが作った基板ですが、簡単に機能確認した限りでは 190 MHz 程度まではカウントすることが確認できたので、この基板を「無料配布」します。
(製作者のおじさん工房さんには、許可を頂いています。)
配布の詳細については、この記事の最後をご覧ください。

・2024年11月20日 追記
 プリント基板の応募があった場合に、残りの数を記載します。
 現在の残数:11 セット

ー「お裾分け」についてー

今回の表題にある「お裾分け」は「他の方から頂いたものを、他の人に分け与える」という「お福分け」の意味で使用しています。
本来の厳密な意味からは、少し離れてしまいますがご了承ください。
(決して言葉本来の「つまらないもの(裾)を分ける、自分には余計なものを他人に分ける」という意味ではありません。)
このブログを始めようと思ったのは、第1回目の記事でも書いている「honkytonk」さんの作製された GPSDO を組み立てることでした。
「honkytonk」さんは、自作された GPSDO の回路図、ファームウエアをブログで公開して頂いているだけではなく、製作したプリント基板も分けて頂き沢山のアドバイスももらう事が出来ました。
おかげさまで、しばらく遠ざかっていた日曜電子工作に戻ってくることが出来ました。

この「honkytonk」さんの GPSDO、そして「ラジオペンチ」さんと「siliconvalley4066」さんの OLEDオシロスコープに関して頂いた数々のものを、電子工作に興味がある方が増えるように「お福分け」できれば良いなぁと思って「基板のお裾分け」を始めました。

今までの周波数カウンタを作る企画の各回の概略は下のとおりです。
1 siliconvalley4066 さんの「STM32F103C8T6で192MHz周波数カウンタ」を見て、この企画がスタート。TTL レベルで 66 MHzまで計測
2 市販品のアンプ(20 dBm 程度)をつないで 53 Mhz まで
3 手持ちの部品でブレッドボード上に作ったアンプで 24 MHz まで
4 自作基板でプリスケーラの機能確認(1/256、1/512)
5 おじさん工房さんの RFC-5 を組み立てる。測定周波数は ~ 1.3 GHz(プリスケーラあり)
6 RFC-5 のアンプ(120 MHz まで計測可能)と他の MCU(20 Pin)で動作確認
7 カウンタの入力を切り替える実験(40 MHz 程度までは切り替え可能)
8 RFC-5 をプリント基板化する前のアンプ類の接続方法の検討
9 RFC-5 のプリント基板の製造とオーダー

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

RFC-5 周波数カウンタ

SDR(Software Defined Radio:ソフトウエア・ラジオ)や NanoVNA の情報で有名な「おじさん工房」さんの最新作が超小型周波数カウンタ RFC-5 です。

おじさん工房さんの周波数カウンタの種類

この「RFC」シリーズの周波数カウンタには現在、下の3つのバージョンがあります。
RFC-3:GPS-DO 内蔵で常に高安定
RFC-4:GPS-DO を省いて簡略化したもの
RFC-5:SOP-8 の MCU を使い基板サイズ 38 × 38 cm に小型化したもの

おじさん工房さんでは、この周波数カウンタのシリーズ以外にも AVR(ATmega88)で作った周波数カウンタや「LPRO-101 ルビジウム発振器モニター&周波数カウンター」(ATmega168 使用)の製作データを公開されています。

RFC-5 で使用している MCU

RFC-5 は STM32G031J6M6 という(少し前まで秋月電子で安価で販売していた)STM32 シリーズの Cortex-M0 コアで SOP-8 の超小型 MCU を使用しています。

STマイクロエレクトロニクス社から引用した図です。
この図の一番左列が8ピンの MCU ですが、STM32G031J6M6 は下から2段目の「32 K/8 K」のところに出てきます。

この MCU は、2022年頃までは秋月電子で1個 120円程度で購入できたようです。
現在はマルツ(DigiKey)で購入できますが1個 623円程度必要です。
(秋月電子さんでは購入者からの要望を叶えてくれるという夢のシステム「商品リクエスト入力フォーム」があります。皆さんのご協力で再販してくれないかなぁ?)

この周波数カウンタは、VCXO やアンプ部を含めても 38 mm X 38 mm という極小のユニバーサル基板上に組み立てられた高性能なカウンタです。
(周波数カウンタに使用している MCU)

このサイズ(38 mm X 38 mm)で、以下の機能があります。

1 周波数計測範囲の上限は、FET 1つの簡単なアンプで 200 MHz 位までカウント可能
2 GPS を利用した基準信号などを入力して周波数を自動調整する機能(対応周波数は 1, 10, 100, 1k, 10k, 100k, 1MHz ~ 100MHz)
3 外部にプリスケーラをつないだ場合の倍率設定:x64、x128、x256、に設定できます。
4 オシレータの自動判別機能:10MHz, 13MHz, 20MHz, 26MHz を自動判別
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 pF
・タクトスイッチ:2個
・接続端子類

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

部品の到着

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

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

部品の組み立て

STM32G031J6M6 は SOP8 サイズなので DIP 8 Pin への変換基板に半田付けします。
(写真の写りが悪く、1番ピンが光っているために半田が見えませんが問題なく導通しています。)

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

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

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

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

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

「おじさん工房」さんでは回路図だけではなく動作に必要なソフトウエアも全て公開してくれています。
(この項では基本的な動作確認のための書き込みについて記載しています。現在(2024年11月)ではプログラムのバグ修正の情報が公開されています。その対応については最後の方で記載します。)

ページの「■ソフト」項目にある「rfc-5_20220906.zip」をダウンロードします。
圧縮ファイルを解凍すると、「bin」フォルダ内にコンパイルされた「main.hex」が入っています。

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

唯一、気を付けなくてはならないのは、「おじさん工房」さんの RFC-5 の「■ソフト」項目の4行目で解説されているとおりに「初回のみ Option Bytes / User Configuration / NRST_MODE を 3 → 2 (GPIO) に変更」することです。
(左のアイコンの3番目の「OB」を押すと「Option bytes」画面が出てきます。)

そして「Apply」を押してください。これを忘れると MCU は正しく動作しません。

下の図は、ブレッドボード上に回路を組んで MCU と ST-LINK/V2 を USB ケーブルでつないだ後に Windows11 パソコンで「STM32 Cube Programmer」を立ち上げた後に「Connect」を押して、正常に接続した後の画面になります。

なお、パソコンと MCU を正常に接続するには MCU の VCC に 3.3 V を供給しなければなりません。
回路図どおりにブレッドボードに 5 V を加えてレギュレータから 3.3 V を与える方法と ST-LINK/V2 の 3.3 V を接続する方法がありますが、私の環境ではどちらも正常に動作しました。

「NRST_MODE」の書き換えが終わったら、左側アイコンの2番目を押して「Erasing & Programing」画面を表示させます。
「File path」項目で「Browse」ボタンを押すと解凍した「main.hex」の場所を指定できます。
「Start Programming」ボタンを押すと書き込みが始まります。確認画面は内容の Verify(検証)も行うので2度表示されます。

RFC-5 の動作確認

プログラムの書き込みが正常に行われると周波数カウンタが起動します。
場合によっては下の写真のように「ERROR HSE」と表示されます。
これは TCXO が正常に動作していない事を表しています。

使用しているオシレータの配線を確認してください。

プリアンプ

オリジナルの RFC-5 ではアンプに N チャンネル FET の BF862 を使用していますが、この FET は高性能な高周波用なのですが現在では入手が困難です。
私も通販で購入しましたが偽物でした。

そこで、代替品を探しました。
おじさん工房さんの掲示板でも話題に出ていましたが「2SK2394」が良さそうです。
(海外の情報でも動作電圧などの点以外では BF862 の代わりに 2SK2394 を使うのは悪くない選択のようです。)

通販で扱っている店を探すと、現在でもマルツエレック株式会社(旧マルツ電波)さんでは 2SK2394 の取り扱いがあります。
2SK2394-6-TB-E」の在庫は本日現在で「8944」個です。

マルツと DigiKey

マルツエレック株式会社は DigiKey と2018年に提携しています。
同じ部品なら秋月電子さんや aitendo さん、AliExpress が安い傾向にありますが、珍しい部品の正規品を入手するなら DigiKey なら間違いがないでしょう。

DigiKey は、6000円以上で送料無料、それ以下の送料は2000円です。
この送料は、ちょっと考えちゃいますね。
しかし、マルツさんで購入すると同じ物が3000円以上で送料無料、それ以下の送料は小型部品ならネコポスが使えるので350円です!
到着までに若干時間がかかるようですが、アマチュアの電子工作なら急がないことが多いので大丈夫ですよね。

2SK2394 でアンプ作り

送られてきた部品を一応確認します。
マーキングは「YJ6」なので、2SK2394 で間違いないですね。

2SK2394 のデータシートの記載

アンプの製作

秋月電子の「SMDプロトタイピングユニバーサル基板」を使って SMD 部品でアンプを作ります。

前回作ったアンプの電源端子のプラスとマイナス間をマルチメータで計ってみました。前回の偽物を使ったアンプの ± 間の抵抗値は 5 MΩ でしたが、今回のアンプは 213 Ωです。
期待が持てますね。

アンプの動作確認

電源はデジタル系と直結で、出力も単線をブレッドボードにつなぐという高周波を扱う状態ではありませんが、簡単な動作試験なので後で直します。

こんな状態ですが、前回と同様に FRMS + FREX の出力を入れてみます。
前回のブレッドボードで作ったアンプで 97 MHz まで計測できたので、90MHz から試します。
(写真の上側に映っているのは偽アンプです。この後、切り離しました。)

ご覧のように、いい加減な接続でも 120 MHz 程度までカウントすることが出来ました。
しっかりと作ったプリント基板上にアンプと周波数カウンタ本体を作れば、もっと上まで行けるでしょう。

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

次にアンプを外して、プリスケーラを付けた状態で測定します。
前回の検証で作ったプリスケーラは 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 の温度、ゲート時間です。)

続いて最低周波数を測定します。
FRMS + FREX でも試してみます。
100 MHz 以下でも計測します。少しずつ周波数を下げていきます。
一番下は 70 MHz ですね。

プリント基板化の検討

周波数カウンタを製作するには、現在のブレッドボードのままでは大きいし高周波特性も良くないので最低でもユニバーサル基板化をしたいですね。
でも、使用している部品はチップ部品ばかりなので製作を楽にするためにプリント基板化したいところです。

そこで、どの様な構成にするかを検討します。
検討する必要があるのは、以下の3種類の入力部をどのように切り替えるかです。
1 通常の「5倍アンプ」
2 高性能な「20dB 低雑音アンプ」
3 256倍のプリスケーラ

ちなみに、スイッチやデジタル回路で切替を検討しましたが、周波数カウンタの上限周波数(200 MHz)に及ばない(40 MHz)結果となったので切替回路を使うのは取りやめました。

プリアンプ + デジタル部

プリアンプはオリジナルの RFC-5 で使用している FET(GF862)が手に入らなかったので、代替品(2SK2394)を使用していますが、試作基板上で ~ 120 MHz 程度までカウント出来ました。
ここではオリジナルの回路図どおりにアンプの出力を STM32 の入力端子へ接続しています。

プリスケーラ + デジタル部

次に、高い周波数まで計測するためにプリスケーラを接続しました。
プリアンプを外して、直接、プリスケーラの出力を STM32 の入力端子へ接続しています。

なお、プリスケーラ IC には MB506 を使用し ECL – TTl 変換 IC には MAX961 を使っています。
プリスケーラの基板は、HMC363 を1段目に使う予定で製作した基板をバイパスした改造基板ですが、測定出来た周波数は 70 MHz ~ 1.3 GHz でした。

プリスケーラ + プリアンプ + デジタル部

最後に、オリジナルのプリアンプを外さずにアンプの先にプリスケーラを接続してみました。
今回はプリスケーラ基盤に MAX961(ECL – TTL 変換 IC)は取り付けていません。
測定出来た周波数は 120 MHz ~ 1.3 GHz でした。

最低測定周波数は、プリスケーラを直接接続した場合より 50 MHz ほど上からしかカウントしませんでした。
しかし、プリアンプ単体での動作上限が 120 MHz 程なので、何とか途中が抜けることなく計測出来そうです。

一応、ECL – TTL 変換の MAX961 を付けたプリスケーラ基板でも試してみましたが、測定できる周波数範囲は変わりませんでした。

周波数カウンタの完成形

色々と検討した結果、RF 信号を切り替えるのではなく、オリジナルの RFC-5 に必要に応じてプリスケーラを取り付ける形になります。
図にすると周波数カウンタの完成形はこんな感じを目指そうと思います。
1 デジタル部・プリアンプ・充電回路を乗せたメイン基板(入力端子 BNC)
2 プリスケーラ基板(入力:SMA、出力:BNC)
3 スイッチ回路基板

メイン基板はオリジナルのプリアンプ以外に、「20dB 低雑音アンプ」仕様も選べるようにします。

プリスケーラと本体は BNC コネクタで接続し、位置合わせをした電源端子も結合するような「合体型」に出来ないかな?
最終的には 3D プリンタでケースを作ります。

KiCad で作図

それでは、いつもの KiCad でプリント基板を作ります。
まずは、おじさん工房さんの RFC-5 のページから回路図を落としてきます。

今回はこの回路図に「20dB 低雑音アンプ」のパターンも追加して、部品実装でどちらのアンプを使用するか選べるようにします。

また、電源スイッチと充電・変圧回路基板もプリント基板上に実装しましたが、操作スイッチはケースに組み込めるように別基盤にしました。
(充電・変圧回路基板:これ1枚に USB からの給電、リチウム電池の充電と設定電圧への昇圧の3つの機能が組み込まれています。)

作図が終わったプリント基板

さて、出来上がったプリント基板はこちらになります。

メイン基板
サイズは横幅が約 8 cm です。

スイッチ基板
操作用のスイッチ基板は、メイン基板から切り離してケースに取り付ける予定です。

部品などの大まかな配置です。
作製したプリント基板の左上に BNC コネクタとアンプ部品を組み込むと、オリジナルの周波数カウンタが出来ます。
この部分の回路は、オリジナルで使用している「BF862」が手に入らないので「2SK2394」に置き換えても抵抗など値はそのままで動作することを、すでにブレッドボードなどで実験しているので問題なく動くはずです。

基板左下に BNC コネクタと「20dB 低雑音アンプ」部品を付けると高感度な周波数カウンタが出来るはずですが、まだ動作確認をしたことがないのでプリント基板が出来上がって組み立てるのが楽しみです。

GND などの区分です。
LCD を 3.3 V 対応品にしたので、デジタル回路は全て 3.3 V 系に収められました。
アンプ部のアナログ系 GND(5 V 系) は別系統にしてノイズ対策を行ったつもりです。

別バージョン

RFC-5 は 8ピンの MCU を使用していますが、STM32G031 には 20ピンのバージョン(STM32G031F6P6)があります。
この 20ピンの MCU でも RFC-5 のファームウエアが、そのままで動作することを確認しています。
そこで、20ピンの MCU を乗せて回路を一部改造したバージョンの周波数カウンタのプリント基板も作図しておきます。
こちらのバージョンも充電・変圧回路とスイッチ基板を含んでも、余裕で横幅 10 cm に収まりました。

ピン数が多い MCU 用に、操作スイッチが4個のバージョンのスイッチ基板も作図しました。

完成したプリント基板データ

オリジナルの周波数カウンタ、20 ピンバージョン、2種類のプリスケーラなど全ての KiCad の作図が終了したので、1つの基板(10 cm X 10 cm)にまとめました。

発注先はいつもの PCBgogo さんです。
複数基板を配置して V カットを付けると製作代金が高価(2万円位)になったので、各部をGND でつないで1枚の基板(?)になっています。
この状態なら10枚で $5(+送料)でオーダー可能でした。

一部の部品が乗ってませんが、プリント基板全体の完成予想 3D 図です。

LCD と操作スイッチを合成した、周波数カウンタの完成予想図です。
リチウム充電池は写っていませんが、この感じだとケースに入れても 10 cm X 4 cm 位には出来るかな?

オーダー基板が到着

PCBgogo さんにオーダーしたプリント基板が到着しました。
今回も KiCad のデータ圧縮して送信したら、すぐに日本語で連絡(2時間ぐらい?)が来ました。
下の表を見てもらえると分かりますが、製作指示をしてから24時間かからずに基板が完成しました。
(すごい早さです!これを見ると自分で基板をエッチングして作る気力がなくなりますね。)

今回は送料の安い OCS で頼みました。(送料は $16 です。)
OCS を使うと国内輸送は佐川急便で届きます。

パッケージは、PCBgogo さんの正方形の白い箱に入って到着しました。
(今回は梱包の写真を撮り忘れたので、下の2枚の写真は以前の荷姿です。)

内部は、真空パックされたプチプチに丁寧に包まれていました。
開封してみても、基板に傷などはありませんでした。

RFC-5 用プリント基板の組み立て

オーダーした基板の1枚です。指定どおりにいくつかの基板がつながった状態ですが、それぞれの基板の切れ目に横長の穴が開いています。

この基板の1枚の大きさは 10 cm × 10 cm ですが、RFC-5 オリジナルの基板は一番上の部分になります。

基板の切り出し

基板の切り出しには、自作した丸のこを使いました。
各基盤のつなぎ目は、今回は横穴を開けてもらったので切断は楽でした。

実際に切り出してバリをヤスリ掛けした基板です。(別基板にしたスイッチ基板は写っていません。)
部品点数の多い基板に見えますが、オリジナルの RFC-5 を作るには上部の 1/3 程度しか必要ありません。
下側の 2/3 程は、おじさん工房さんが公開している「20dB 低雑音アンプ」用の部分なので今回は使用しません。

クリームはんだの塗布

OLEDオシロスコープ基板の時と同じく、カッティングマシーンでステンシルを作ります。
透明な薄いプラ板をクラフトロボで切り抜きます。

出来上がったステンシルを、アルコールで洗浄・脱脂した基板に貼り付けます。
プリント基板にクリームはんだを塗布する際には、弾いて付きが悪くなるのを防ぐために必ずアルコールで拭いてから行いましょう。

今回はクリームはんだの塗布には新兵器を導入しました。
AliExpress で購入(300円程です。)した「クリームはんだ押し出し機」です。(写真の青い部分です。)

レバーを押し込むことで、微量のクリームはんだを楽々出すことが出来ます。
おススメです。
(最初、後ろからつけようとして「ハマらないじゃん。これ、不良品か!」と悩んだのは秘密です。実際にはネジを短くして前からはめます。)

部品の搭載とリフロー

チップ部品を基板に乗せます。
非常に小さい部品もあるので、モニタ付きの電子拡大鏡を使います。

なんとか全ての部品を乗せ終わりました。
この後、ヒートプレートに乗せて自宅リフローしましたが、その写真はありません。
小さい部品が多いためか、加熱すると2~3個の SMD 部品の向きが動きましたが、あわてずに先の細いピンセットで優しく・ゆっくり修正すれば OK でした。

リフロー後の基板です。
下側の基板が別基盤にしたスイッチ基板です。
(上の写真との違いが分かりませんね。)

必要な部品の取り付け

BNC 端子、スイッチ、端子とケーブル類を取り付けます。

一番上に映っているのはリチウムイオン電池の充電と電池の出力電圧(4 V 程度)を昇圧する機能が合体した基板です。(市販品で AliExpress で購入しました。200円程度)

周波数カウンタ基板の右側の余白部分に、この充電・昇圧基板を乗せます。
固定用のために右側に用意した端子を使います。ただし、下側の端子は昇圧した電圧の出力端子を兼ねています。
上側の端子は固定のために設けた端子で、周波数カウンタ基板とは絶縁されています。

プログラムの書き込み

設計上は上の写真の一番下に映っている周波数カウンタ基板だけで、プログラムの書き込みが出来るように製作しました。

具体的には上列左の端子に ST-LINK/V2 をつなぎ、右端に見える端子が 3.3 V を切り替える端子なので、ジャンパでつなぐと電源を与えなくても書き込みが出来ます。

実際にやってみました。
ジャンパを 3.3 V 側に切り替えると「STM32 Cube Programmer」で「STM32G031J6M6」が認識できました。
パソコンにつながれば、前回と同じ手順でプログラムを書き込むだけです。
オプションの設定変更と書き込みは正常に終了しました。

仮組み立て

出来上がった基板を組み合わせて動作確認をを行います。
リチウムイオン電池は薄型の物を使用しました。

電源スイッチを切り替えると、オシレータの異常表示もなく正常に画面が表示されました。
「やったー!」(もちろん本当に声に出してはいません。)

周波数の自動調整

非常に多機能な RFC-5 には、正確な周波数を入力して自動で誤差を調整する機能があります。
自宅には honkytonk さんの作製された GPSDO のプリント基板を譲って頂いて再現した、高安定の 10 MHz 基準信号発生器がありますが、周波数が安定するのに1週間以上は必要です。

しかたがないので、校正も何もしていない「野良な」中古ルビジウム 10 MHz 信号発生器があるので、それを使います。

(多分、ほぼ正確な 10 MHz が出力されている)ルビジウムの出力を入力してみました。
周波数カウンタの電源入力の直後とはいえ 88.6 Hz もズレています。
この後、数秒で周波数は数 Hz 以内の誤差になりましたが写真を撮り忘れました。

周波数が安定してから自動調整を行いました。
他の周波数カウンタの製作例では、誤差を測って数値をプログラムに書き込んだりする手間がかかるものが多いですが、これは楽です!

上限周波数の測定

しっかりとした信号発生器は持っていないので、また、今回も信号源は FRMS + FREX を使いました。
この器材の出力上限周波数は 200 MHz ですが、ほぼ上限の 190 MHz 位まで計測出来ました。
プリント基板の製作は成功ですね。

LCD の交換

機能確認では国内で良く見る 16文字 2行で 3.3 V 動作の LCD を I2C 変換器を経由して使いました。
しかし、もう少し薄くて小さな LCD を使いたかったので aitendo さんの「PX1602」に交換します。

この LCD はケーブルに 1 mm ピッチの 20 ピン FFC(Flexible Flat Cable)が使われているので、前回の動作確認には FFC 変換アダプタを使いましたが、組み込むには邪魔なので FFC ケーブルを取り除いて I2C アダプタを直付けします。

まずは、半田ごてで温めて FFC ケーブルを外して半田吸い取り線で余分な半田を取り除いてキレイにしました。
「キレイに取り外せたな。」
自己満足しましたが・・・

ひっくり返すと悲劇が待っていました。
この LCD は液晶部分が基板に直接接触していたのを忘れていました。
そのために熱を加えた部分が変色して元に戻りません。

ダメですね。
これでは使用することが出来ませんね。
あきらめて、もう1枚の LCD で FFC アダプタ経由で使います。

新しい LCD で組み合わせるとこんな感じになりました。

交換前の LCD と比較すると、かなり小型化できたのではないでしょうか?

プログラムのコンパイル

Arduino IDE で簡単なプログラムを作る程度の私には初めての経験になりますが、RFC-5 のプログラムはネット上から gcc 、make、rm を落として来て、適当な場所に配置して CGI でコンパイルする手順が必要になります。

そんな私が書く内容なので、一応動いていますが間違っている場合は教えてください。

プログラム環境の作成

インストール用のプログラムはないので、必要なファイルを手動でダウンロードして解凍し、環境を作る必要があります。

必要なプログラム

arm Developer の「Home/Download/GNU-Rm」から「gcc-arm-none-eabi-7-2018-q2-update-win32.zip」をダウンロードします。
すでに現在では「gcc-arm-none-eabi-10.3-2021.10-win32.zip」の最新版が公開されていますが、指定されたバージョンを落とします。

Make for Windows の「Download」から「Binaries」の行の Zip 部分にある「make-3.81-bin.zip」と「Dependencies」の行にある「make-3.81-dep.zip」を落とします。

CoreUtils for Windows の下の方の「Download」にある「Binaries」の行にある「coreutils-5.3.0-bin.zip」を落とします。

コンパイルに必要なファイルを ST マイクロから入手します。
STM32CubeG0 にある「STM32Cube_FW_G0_V1.3.0」を落とします。
(旧バージョンの 1.3 は、下図の部分を押すと出てきます。上のファイルはパッチなので必要ありません。)

ファイルの配置

1 適当なフォルダに「gcc-arm-none-eabi-7-2018-q2-update-win32.zip」の内容を解凍します。
私は「D:\tools」の下に解凍しました。
フルパスでは「D:\tools\gcc-arm-none-eabi-7-2018-q2-update-win32」となりました。

2 「make-3.81-bin.zip」と「make-3.81-dep.zip」内の make.exe 、libiconv2.dll 、libintl3.dll を「D:\tools\gcc-arm-none-eabi-7-2018-q2-update-win32\bin」内にコピーします。

3 「coreutils-5.3.0-bin.zip」内にある「rm.exe」も同じ場所へコピーします。

4 「C言語」の開発環境とは別に、周波数カウンタのプログラムなどを入れておくフォルダを準備します。
私は、「D:\Data\電子工作」内に「RFC-5」フォルダを作りました。
(本来は日本語のフォルダ名は使わない方が良い気もしますが、問題なくコンパイルできました。)

「STM32Cube_FW_G0_V1.3.0」を解凍します。
400 MB、2万を超える沢山のファイルがありますが、必要なのは「\Drivers\CMSIS」内の「Core」、「Core_A」、「Device」と「Include」フォルダのみです。
(図では「Documentation」資料フォルダも残していますが必須ではありません。)

下図のように解凍した必要なフォルダを、RFC-5 のプログラムと並列に配置します。
(「20220906」は元の周波数カウンタ、「20220912」は信号発生機能付きのバージョンです。)

コンパイル

プログラムをコンパイルするには、もう少し準備が必要です。
この後は、「rfc-5_20220906」を使って解説します。
解凍したプログラム・フォルダ内の「ARM-GCC用DOS窓utf-8_gcc9.bat」を編集します。
具体的には2行目のパスの記載を、自分で gcc を解凍して準備したフォルダに書き換えます。

私の場合はこんな感じです。
書き換えが終わったら、上書き保存をします。

@ECHO OFF
SET PATH=D:\tools\gcc-arm-none-eabi-9-2020-q2-update-win32\bin;%PATH%

doskey
chcp 65001
rem echo ARMGCC 9 を使うための設定をしました。

cmd.exe

最後に、コンパイルしたファイルを保存するフォルダである「bin」の中身をいじります。
元々のオリジナルの「main.hex」を保存しておくために「original」というフォルダを作って移動しました。
(自動でバージョン管理をする方法があるのかもしれませんが、私の能力では分かりませんでした。)
今後、色々と設定を変更した場合にはそれぞれのバージョンの「main.hex」を別のフォルダに保存しておいた方が良いかもしれません。

編集が終わった「ARM-GCC用DOS窓utf-8_gcc9.bat」をダブルクリックしてコマンド・プロンプトを開きます。

これまでの設定が終わっていれば、半角英数で「make」と入力して Enter を押すとプログラムがコンパイルされて「main.hex」が出来ます。
エラーが出る場合は、フォルダの位置や設定の変更部分を見直します。
なお、「bin」フォルダに「main.hex」がすでに存在する場合は「make: Nothing to be done for `all’.」というメッセージが出ます。

正常に終了すると以下の表示になると思います。

バグの修正

おじさん工房さんから、RFC-5 のバグ修正の情報を頂きました。

バグ修正 2024/10/27
  入力周波数が 110MHz ぐらいのとき演算がオーバーフローしておかしくなる対策
   freqcounter/freqcounter_measure.c の 197行目
    int div = (fWATCHDOG_MS)/2000;      を     int div = ((f/10)WATCHDOG_MS+100)/200;  に修正
  ソースファイルを修正し再コンパイルしてください。

との事です。
さっそくやってみましょう。

「rfc-5_20220906」フォルダの「freqcounter」内にある「freqcounter_measure.c」を編集します。

int div = (fWATCHDOG_MS)/2000;

int div = ((f/10)WATCHDOG_MS+100)/200;
に書き換えるだけなので簡単ですね。

この状態で再度コンパイルします。
(事前に「bin」フォルダ内の「main.hex」を移動するのをお忘れなく。)

出来上がった「main.hex」を RFC-5 に書き込めばバグの修正は完了です。
(入力周波数を 110 MHz 付近に設定して詳しく調べる器材(信号発生器)を持っていないので、詳細は不明ですが改修後も動作はしています。)

RFC-5 プリント基板等のお裾分け

最後に、いつも利用している基板製作メーカの PCBgogo さんで作った「おじさん工房さんの RFC-5 周波数カウンタ・プリント基板」のセットを、ご希望の方に「無料配布」します。
(送料のみご負担ください。基板代・梱包代は無料です。返信用封筒も必要ありません。)

お送りするのは以下のプリント基板です。
・RFC-5 本体
・RFC-5 用分離スイッチ基板
・MB506 使用プリスケーラ基板
・uPB1507 使用プリスケーラ基板

商用目的でない場合の基板配布については、おじさん工房さんに許可を得ています。
具体的な応募方法(制限事項)は、以下のとおりとします。(OLEDオシロスコープ基板の配布と同じ方法です。)

・この基板の不具合などについては、オリジナルの製作者「おじさん工房」さんに質問しないでください。
・素人が設計した基板です。本職の方が見ると拙い部分が沢山あると思いますが、現時点ではこれが完成品です。
・自宅のベランダで手作業で裁断しています。お送りする前に軽くヤスリ掛けはしていますが、ケガに注意してください。(ご自身でヤスリ掛けをして頂いた方が、良いと思います。)
・お1人様 1セット(4枚組)まで。
・サポート、返品には応じられません。
・普通郵便の簡易包装で送るので保証はありません。普通郵便なので日本国内限定です。
・なくなり次第(応募される方は少ないと思いますが・・・)終了します。
・この記事へのコメントの形でご連絡ください。(連絡が付くメールアドレスを忘れずに記載してください。)
・記入して頂いたコメントは公開せずに、直接メールで必要事項を連絡させて頂きます。
・普通郵便の切手代の110円をご負担ください。110円切手を送付していただき、到着次第、その住所へ基板をお送りします。

なお、今週末(11/17)は所用の為、返信が遅れる場合があります。予めご了承下さい。

次回の予定

記事が長くなりすぎたので、今回はこれで終了です。
次回は、製作したプリント基板の組み立て方と RFC-5 の使い方を記事にします。

基板で組み上げた RFC-5 周波数カウンタについては、オリジナルのアンプと追加のプリスケーラ2種類の簡単な動作確認は終了しています。
しかし、細かな測定範囲や部品点数の多い「20dB 低雑音アンプ」の動作確認は終了していません。
それらについても次回以降で行う予定です。

コメント