周波数カウンタを作る 2

前回は、siliconvalley4066 さんが製作した、STM32F103C8T6 を使用して(TTL レベルの信号ならば)200 MHz 位まで計測できる周波数カウンタをブレッドボードで組み立てるところまで紹介しました。

前回の記事を要約すると・・・
1 同じく siliconvalley4066 さんが製作した 「Raspberry Pi Pico オシロスコープ」の Pulse Generator 信号出力機能を使用して、この周波数カウンタで 66 MHz までのカウントを確認しました。
2 手持ちの STM32F103C8T6 互換機4個で周波数カウンタを作ってみましたが、4個中2個が2 ~ 40 MHz までしかカウントしませんでした。
3 周波数カウンタの製作記事には直接関係ありませんが、siliconvalley4066 さんの TFT 版 Pi Pico オシロを組み立ててみたら、液晶表示が正しく行えませんでした。
(前回の記事は、下のリンクから確認してください。)

今回は、前回の不具合を解消しつつ、この周波数カウンタにプリアンプを付けて RF 信号の検出上限を確認してみます。

なお、この「周波数カウンタを作ってみる」企画の最終目標は、ずっと前に製作した PIC16F84 を使用した周波数カウンタと同等性能の
・通常入力で周波数上限:60 MHz
・プリスケラを付けて周波数上限:2.4 GHz
・ 周波数安定度を保つために TCXO 内蔵
を目指します。(今の私のスキルで、本当に出来るのか心配ですが。)

(前世紀に組み立てた PIC16F84 を使用した周波数カウンタ)

高周波用のプリアンプ

書店に並ぶ電子工作の書籍やネットの国内外の情報を探すと、沢山の周波数カウンタの製作記事を見つけることが出来ます。
主な周波数カウンタの製作例では、入力した高周波信号は MCU に入る前に適切な高周波プリアンプを通して増幅されています。
市販品の周波数カウンタでは、アンプの後に「波形整形」を行った後にデジタル処理に送ります。

ブレッドボード上で高周波回路を設計どおりの性能で簡単に再現できるとは思わないので、市販品のアンプを接続して STM32 周波数カウンタの最高測定周波数を確認します。

AMC-138

使用する高周波アンプは「anzac」社の「AMC-138」です。
(他にも色々なジャンク部品が部品箱に入っていますが、今回の用途にはこれが良さそうです。)

anzac 社とはあまり聞かない名前かもしれませんが、有名な M/A-COM に吸収された会社です。その後 AMP が買収しましたが、その AMP は Tyco に買収されてしまい、Tyco は M/A-COM を Cobham に売却しました。
しかし、現在でもネットで探すと「AMC-138」は「M/A-COM」社の商品としてデータシートが入手できます。

AMC-138 RF Amplifier の主な性能
・周波数帯域:5-200 MHz
・最高増幅:25 dB
・VSWR:2.5
・電源:24 VDC で 250 mA
・インピーダンス:50 ohms.

このアンプを STM32 周波数カウンタにつないでみます。

信号源の準備

前回の記事では信号源として siliconvalley4066 さんが製作した 「Raspberry Pi Pico オシロスコープ」の Pulse Generator 信号出力機能を使用しました。
しかし、この出力信号は TTL レベルのデジタル信号なので、今回の用途には使用できません。

持っていたジャン測の信号発生器は処分してしまいました。
簡易信号源として、このブログでも紹介した自作器材の「信号発生器(Pa-Lab2号機)」がありますが中身は秋月電子の「広帯域精密波形オシレータキット」です。
MAXIM 社(現在のANALOG DEVICES社)の MAX038 という信号発生チップを使っているので、発生できる上限周波数は 20 MHz 程度なので製作予定の 60 MHz には全然届きません。

FRMS2 と FREX

何かないかな?
AliExpress あたりで簡単な信号発生器でも買うしかないのかなぁ。と考えながら作業部屋をかき回していたら、これを発掘しました。
「FRMS2 + FREX」です。

「FRMS2 + FREX」とは、Easy FC(周波数安定度測定装置)でも紹介した CYTEC さんで製作データを公開しているスペアナ的なパソコン用のアダプタです。
(Easy FC については、以下のリンクをご覧ください。)

現在では単体で動作する高機能な tinySA などの簡易スペアナが安価に手に入りますが、当時は高価で1人では動かすのが大変な大きく重たいジャンクのスペアナを購入する以外に高周波を目視する方法は(多分)ありませんでした。

JF3HZB/上保さんとJE1AHW/内田さんが開発された「FRMS2」は、20 MHz まで使用できる簡易スペアナ・アダプタで、専用拡張機能の「FREX」を使用すると上限周波数が 200 MHz まで上昇します。

どちらも(当時の私の様な)素人がエッチングして作った基板と秋月電子などから通販で入手できる部品で動作するように設計された、素晴らしい器材です。
その性能の高さは、当時の雑誌(CQ 誌の 2003年1月号)に特別企画として製作記事が取り上げられたほどです。
また、「icom」社の「エレクトロニクス工作室」で No.6 から数回に分けてその機能を解説している記事は今でも見ることが出来ます。

私は、「FRMS2 + FREX」をハードオフで入手した有線放送のチューナのケースに電源と共に組み込みました。(銀色ではないケースを探すのに苦労した記憶が・・・)
この FRMS はフィルタの特性試験などで使う指定周波数スイープ以外にも、固定周波数を出力するゼロスパン機能も持っているので、この機能を信号発生器替わりに使用します。

出力周波数の下限は数百 Hz から、拡張機能の FREX を使えば 200 MHz まで行けるので今回の用途には十分です。

動作確認

FRMS のソフトウエアは、CYTEC さんで今でも入手できます。
OS は Windows10 まで対応しているので安心です。
それでは、「FRMS2 + FREX」と「AMC-138」を使って RF 信号がどこまで計測できるか確認します。

最初は FREX は使わずに FRMS2 単体で確認します。
FRMS2 の信号出力を AMC-138 に接続します。
出力は T コネクタで分岐して STM32 周波数カウンタの入力とオシロスコープにつなぎました。

信号出力の確認

増幅したテスト信号の大きさも確認しておきたかったのですが、パワーメータのジャンクも処分してしまいました。(HP 435B などです。処分する時に、パワーメータのテスト信号出力部分だけは保管してあります。)

今、作業部屋にある信号出力を計れる器材は AD8307 というログアンプ IC を使った自作のワットメータです。
これもすごく前に製作したものですが、オランダの「oz2cpu」さんが設計された「Digital Wattmeter with AD8307」を改造して作った物を引っ張り出しました。
このワットメータの MCU は当時の定番の PIC16F876 が使われています。
久しぶりに使うので、BNC 端子を磨いて電源を入れると問題なく液晶画面に表示が出ました。

FRMS2 の出力が最大で 10 dBm、アンプの増幅が最大で +25 dBm なので、そのまま STM32 の入力端子には入れられませんね。
このワットメータを使って、周波数カウンタに入力する信号は +20 dBm 程度になるようにステップアッテネータで減衰します。

測定周波数の上限を確認

Windows10 が入ったノートパソコンで FRMS2 のソフトを立ち上げます。
(FRMS2 のソフトは、立ち上げる前に設定ファイル1行目の COM 番号を手動で書き換えないと動作しません。)
「FREQUENCY」欄を「Zero Span」に設定して出力周波数は 5 MHz にしてみました。

最初は動作確認のために、FRMS2 の出力をアンプを使わずに STM32 周波数カウンタの入力につないで見てみます。(出力は説明書によると最大で 10 dBm 程度です。)
オシロスコープで確認はしていませんが、振幅が 0.5 V 程度ではカウントしなくて当然ですね。
もちろん、アンプなしでは周波数カウンタの表示はゼロのままです。

では、アンプをつないで電源を入れてみます。(一応、途中にアッテネータを入れています。)
周波数カウンタに使用した STM32 に搭載されたオシレータの誤差だと思いますが、500 Hz 程ズレていますが、しっかりと周波数が計測出来ました。

次に出力周波数を 10 MHz に設定します。(5 MHz と 10 MHz に設定した時の画面のコピーを取り忘れました。画像は 9 MHz の時の物です。)

この程度では問題なく計測しますね。

最終的には 20 MHz 以上の周波数は FREX を使って 53 MHz まで測定できました。

周波数カウンタの状態です。
この周波数までは、しっかりと計測出来ました。
(周波数を 54 MHz にすると、信号の振幅を多少上げ下げしてもカウンタの表示は停止しませんでした。)

周波数カウンタの上限周波数のまとめ

現在のところ組み立てた STM32 を使った周波数カウンタで計測できた上限周波数は、
・TTL レベル:66 MHz
・信号発生器の出力信号を 20 dBm 程度にアンプで増幅:53 Mhz

となりました。
検証は出来ていませんが、本来の性能的には TTL レベルなら 200 MHz 程度までは計測できるようです。

ブレッドボード上に作った STM32 互換ボード以外の部品は使用していない簡易的な周波数カウンタですが、通常の信号も目標の 60 MHz に迫る 53 MHz まで測定できることが分かりました。

とは言っても、市販品の高周波用アンプを使用した結果です。
このままではケースに組み込めませんから、基板上に RF 用の部品を使ったアンプを組み立てて再検証が必要ですね。

特定の STM32 で上限周波数が低下する件

前回の機能確認では、部品箱にあった4個の STM32F103C8T6(互換機)のうち半分の2個は測定上限の周波数がとても低い状態(10 MHz ~ 40 MHz 程度までしかカウントしない。)でした。

これを解消します。
実は、この周波数カウンタのオリジナルはロシア製の「信号発生・波形観測装置」なのですが、色々な機能を備えた器材から周波数計測部分を抜き出したものでした。
詳細は、こちらのフォーラムの書き込みをご覧ください。(ロシア語です。)

このフォーラムで製作されている STM32 を使用した「信号発生・波形観測装置」は、A0 ~ A7 端子を DDS の出力に、A8 を PWM の出力に、B 列の端子は TFT ディスプレイやスイッチ・エンコーダに使用しているために、周波数を測定する端子を A15 に変更しています。

オリジナルの周波数測定機能を改良した siliconvalley4066 さんの周波数カウンタは、オリジナルのハードウエアは変更せずにソフトウエアで機能拡張をしているために、周波数計測の端子は STM32 の「A15」を使用しています。
これを入力端子として定番の「A0」に変更します。(変更方法は siliconvalley4066 さんに教わりました。)

具体的には「PeriodCount_STM.cpp」の
afio_remap(AFIO_REMAP_TIM2_PARTIAL_1);
(バージョンによって記載箇所が1~2か所あり)
をコメントアウトします。

すると、STM32 の周波数入力端子が A0 になりました。
この状態で TTL 信号を測定すると、上限が低かったチップも Pi Pico オシロで出力できる上限の 66 MHz までしっかりと測定できました。

もちろん、通常の RF 波形の計測も4つの STM32 で A0 を入力とすることで、同じ値(今回のアンプ利用で 53 MHz )まで計ることが出来ました。

オシロスコープの故障

前の項目でテスト信号を T コネクタでオシロスコープにつないでいたのに、波形の写真が出てこないな。と思ったあなたは勘が鋭いですね。

先日、日付データなどを格納するバックアップ・メモリの電池を交換して快調に使えていたオシロスコープが動かなくなりました。
スプラッシュ・スクリーン(起動画面)は表示されるのですが、本来は数秒後にリレー音がして計測画面に切り替わるはずが、リレーが作動した後も画面が切り替わりません。
下の写真の画面のままで先に進みません。

このオシロスコープ(TDS3000 シリーズ)は、内部で起動処理を行っている間は画像処理専用の IC が起動画面を表示して、準備が出来たらオシロの計測画面に切り替わるそうです。
内部では懐かしい「PowerPC」を CPU として使用しているようです。(XPC860 ?)

しかし、HP 社と違って Tektronix 社は販売した計測器の回路図などを公開していないために、実際の不具合個所の切り分けは容易ではありません。
どうやって直そうかな?

おまけ

前回の周波数カウンタの記事で siliconvalley4066 さんが製作された Pi Pico オシロスコープの TFT ディスプレイ版(タッチ操作対応)をブレッドボード上に手持ちの部品で再現してみましたが、画面が90度回転しています。

この表示異常を siliconvalley4066 さんに報告したら、「display.setRotation(3)の3を2に変えてみたらどうでしょうか。」とアドバイスを頂いたので、やってみました。

処置後がこの画面です。
画面が90度回転していたのは改善されましたが、画面の1/4程が「灰色ノイズ」画面になっています。

続いて siliconvalley4066 さんから
「Setup60a_RP2040_ILI9341.h」の
#define ILI9341_DRIVER を
#define ILI9342_DRIVER に
変更する事と
(灰色部分の修正)

「Setup60a_RP2040_ILI9341.h」にある
//#define TFT_RGB_ORDER TFT_RGB の
「//」を外す。
(表示色の修正)

という表示改善のための対応を教わりました。
どうやら AliExpress で購入した安価な TFT ディスプレイは「ILI9341」のドライバでは正常に表示できないようです。(「ILI9341」という名前で購入したのですが・・・)

変更後は正常に表示できました。
もちろんタッチセンサによる操作も問題なく行えます。
同じように「ILI9341」型ディスプレイの表示不良で悩んでいる方は、是非お試しください。

そのうち、この Pi Pico オシロスコープの組み立て記事もブログにまとめますね。

次回の予定

次回は、次の2つのどちらかを試してみます。

1 プリアンプの製作
ブレッドボードでの試験になりますが、高周波用の FET やトランジスタを使って実際に組み込み出来るプリアンプを作ってみます。

2 プリスケラ
現在も 24 MHz 以上の周波数の測定には STM32 の内蔵プリスケラ機能を使用して計測を行っていますが、さらに上の周波数を分解能を下げずに測定できるように専用 IC を使用したプリスケラを作ります。

コメント