周波数カウンタの実装機能まとめ
2018-10-21
先週の木・金曜日は、毎年恒例の研修合宿でした。講師&引率者として参加するんですが、直前には相変わらずその準備にバタバタし、かつ残務を翌週に丸投げするのも恒例になってしまっています
2年目社員の啓蒙教育ですから、フレッシュな意見を聞くに付けハッとしたり、夜の懇親会でアニメヲタクっぷりを発揮して盛り上がったりで、案外自分自身が楽しめるものでもあります
ただ、気付かぬうちに結構疲れていることが多く、昨日は午前中に”二度寝”してしまいました。気付けば13時近く・・・遅い昼飯を済ませてから、周波数カウンタ製作作業へ。
昨日中には周波数カウンタに具備するロータリーエンコーダとスイッチのチャタ防止を施し、動作確認を済ませました。後は2.4GHzのプリスケーラ、クロックの直ぐ横に配置した温度センサ、クロック発振周波数の微調整に使うポテンショメータ、シリアル出力への結線が残っていますし、ケース加工もまだ・・・先はまだ長いです。今日のところは、実装する機能を先にまとめておきたいと思います。
そうそう、機能のまとめの前に・・・この周波数カウンタの周波数特性をバラックの状態で測定してみたんで、その結果を掲載。アンプ部の回路は、先の記事で既に度々登場しているものです。

今回の周波数カウンタはPICのタイマ1で測定していますが、カウント限界が110MHzを少し超えた辺りまで伸びています。ただ、上限辺りでは+7dBm程の入力が必要(これ以上になるとアンプが飽和してまともに測定できない)になるため、このカウンタの測定上限は100MHz、プリスケーラ入力でそれ以上の部分を測定することにします。まぁ、HF帯はそこそこ高感度に測定できそうで満足、満足
では、実装したい機能をまとめましょう。
① 普通のカウント
製作中の周波数カウンタのゲート処理には特徴があり、2つの1秒ゲートを連続・交互に動作させて1秒刻みで周波数を読み取っています。
交互に得られる周波数データを順に表示させると1Hzゲートのカウント表示となりますが、例えば0.1Hzゲート(10秒ゲート)を作る場合には、10回分の周波数データを加算して表示することになります。
このように、ゲート時間を10秒、100秒・・・として、mHz単位まで具備してもいいんですが、リアルタイムで測定するのは精々10秒ゲートまでで十分かと思われます。ひとまず、1秒と10秒ゲートの周波数表示を実装します。
② プリスケーラを使ったカウント
2.4GHzまでの測定を実現したいというよりハンディ機の周波数確認で430MHzの測定を希にやりたくなるんで、ひとまず付けておいた感じです。1/64分周のプリスケ出力をゲート時間1.5625秒で受けるため、1回の測定で100Hz単位の測定ができます。10Hzまでなら10回分を加算して表示すればいいんで、この2つのゲート時間による周波数表示を実装します。
③ 平均値による10mHzオーダのカウント
実験途上では、1秒ゲートで100回サンプリングしたデータを加算し、それを100で割って10mHz単位での表示を実現しました。1つのサンプリングバッファは32ビットにしていますから、この方法で理論的に430MHz弱まで同じようなカウントができます。つまり、100MHz(16進数で5F5E100)までは余裕の設計。
1mHz単位にするためにはサンプリング数を1000(バッファ数を1000)にすればいいんですが、今回採用したPICではメモリ不足のためこの方法は使えません。そこで、10秒ゲートにして100回サンプリングにすると、32ビットバッファでは43MHz辺りでオーバフローするためこれもNG。詰まるところ、10秒ゲートでバッファを48ビットx100個にして解決・・・なんですが、果たしてここまでの測定は必要なのか
そもそも、内蔵クロックである”LFTVXO009900”の安定度や10MHzに対する確度がしっかりしていないと意味が無いし、特に1mHzなどの測定はシリアルに逃げてPCで行う方が長時間測定にも有利ですから、実験済みの10mHz測定までを”本体機能”として具備することにします。
④ 内蔵クロックの調整
”LFTVXO009900”は外部からの電圧で発振周波数が可変できるため、確度の高い10MHzに調整できるよう、GPSモジュールからの正確な1Hzクロックを供給した状態で発振周波数を測定できるように回路を組んでいます。これで時折調整すれば、必要な程度の正確なクロック周波数の発振は担保できるでしょう。
⑤ 外部クロックによる周波数測定
上記内蔵クロック調整の機能が具備できれば、GPSモジュールからの正確な1Hzクロックを使った周波数測定もできるはず・・・ですね。
⑥ 温度測定と周波数補正
内蔵クロックの周辺温度は、温度センサーで常時測定できます。これを利用して周波数の偏差を表示できるようにしたいと考えています。もう一歩進めて”周波数補正”まで持って行けるとカッコいいんですが、この辺りは実験しながら考えたいと思います。
⑦ 周波数カウント値のシリアル出力
カウントした周波数をシリアル出力する機能は、今回特に具備したい機能です。③の機能補完を含め、長時間の連続測定による測定対象の安定度観察など、これまで自分で手間を掛けて行ってきた部分を自動化できて便利になりそう・・・ただ、PC側のソフトも作る必要がありますね。これは、VB辺りでチャチャッと組んじゃいたいと思います。
列挙すると結構なボリューム・・・当面はこれらを順に作り込んでいきたいと思います。


ただ、気付かぬうちに結構疲れていることが多く、昨日は午前中に”二度寝”してしまいました。気付けば13時近く・・・遅い昼飯を済ませてから、周波数カウンタ製作作業へ。
昨日中には周波数カウンタに具備するロータリーエンコーダとスイッチのチャタ防止を施し、動作確認を済ませました。後は2.4GHzのプリスケーラ、クロックの直ぐ横に配置した温度センサ、クロック発振周波数の微調整に使うポテンショメータ、シリアル出力への結線が残っていますし、ケース加工もまだ・・・先はまだ長いです。今日のところは、実装する機能を先にまとめておきたいと思います。
そうそう、機能のまとめの前に・・・この周波数カウンタの周波数特性をバラックの状態で測定してみたんで、その結果を掲載。アンプ部の回路は、先の記事で既に度々登場しているものです。

今回の周波数カウンタはPICのタイマ1で測定していますが、カウント限界が110MHzを少し超えた辺りまで伸びています。ただ、上限辺りでは+7dBm程の入力が必要(これ以上になるとアンプが飽和してまともに測定できない)になるため、このカウンタの測定上限は100MHz、プリスケーラ入力でそれ以上の部分を測定することにします。まぁ、HF帯はそこそこ高感度に測定できそうで満足、満足

では、実装したい機能をまとめましょう。
① 普通のカウント
製作中の周波数カウンタのゲート処理には特徴があり、2つの1秒ゲートを連続・交互に動作させて1秒刻みで周波数を読み取っています。
交互に得られる周波数データを順に表示させると1Hzゲートのカウント表示となりますが、例えば0.1Hzゲート(10秒ゲート)を作る場合には、10回分の周波数データを加算して表示することになります。
このように、ゲート時間を10秒、100秒・・・として、mHz単位まで具備してもいいんですが、リアルタイムで測定するのは精々10秒ゲートまでで十分かと思われます。ひとまず、1秒と10秒ゲートの周波数表示を実装します。
② プリスケーラを使ったカウント
2.4GHzまでの測定を実現したいというよりハンディ機の周波数確認で430MHzの測定を希にやりたくなるんで、ひとまず付けておいた感じです。1/64分周のプリスケ出力をゲート時間1.5625秒で受けるため、1回の測定で100Hz単位の測定ができます。10Hzまでなら10回分を加算して表示すればいいんで、この2つのゲート時間による周波数表示を実装します。
③ 平均値による10mHzオーダのカウント
実験途上では、1秒ゲートで100回サンプリングしたデータを加算し、それを100で割って10mHz単位での表示を実現しました。1つのサンプリングバッファは32ビットにしていますから、この方法で理論的に430MHz弱まで同じようなカウントができます。つまり、100MHz(16進数で5F5E100)までは余裕の設計。
1mHz単位にするためにはサンプリング数を1000(バッファ数を1000)にすればいいんですが、今回採用したPICではメモリ不足のためこの方法は使えません。そこで、10秒ゲートにして100回サンプリングにすると、32ビットバッファでは43MHz辺りでオーバフローするためこれもNG。詰まるところ、10秒ゲートでバッファを48ビットx100個にして解決・・・なんですが、果たしてここまでの測定は必要なのか

そもそも、内蔵クロックである”LFTVXO009900”の安定度や10MHzに対する確度がしっかりしていないと意味が無いし、特に1mHzなどの測定はシリアルに逃げてPCで行う方が長時間測定にも有利ですから、実験済みの10mHz測定までを”本体機能”として具備することにします。
④ 内蔵クロックの調整
”LFTVXO009900”は外部からの電圧で発振周波数が可変できるため、確度の高い10MHzに調整できるよう、GPSモジュールからの正確な1Hzクロックを供給した状態で発振周波数を測定できるように回路を組んでいます。これで時折調整すれば、必要な程度の正確なクロック周波数の発振は担保できるでしょう。
⑤ 外部クロックによる周波数測定
上記内蔵クロック調整の機能が具備できれば、GPSモジュールからの正確な1Hzクロックを使った周波数測定もできるはず・・・ですね。
⑥ 温度測定と周波数補正
内蔵クロックの周辺温度は、温度センサーで常時測定できます。これを利用して周波数の偏差を表示できるようにしたいと考えています。もう一歩進めて”周波数補正”まで持って行けるとカッコいいんですが、この辺りは実験しながら考えたいと思います。
⑦ 周波数カウント値のシリアル出力
カウントした周波数をシリアル出力する機能は、今回特に具備したい機能です。③の機能補完を含め、長時間の連続測定による測定対象の安定度観察など、これまで自分で手間を掛けて行ってきた部分を自動化できて便利になりそう・・・ただ、PC側のソフトも作る必要がありますね。これは、VB辺りでチャチャッと組んじゃいたいと思います。
列挙すると結構なボリューム・・・当面はこれらを順に作り込んでいきたいと思います。
- 関連記事