結局、周波数カウンタを仕立て中・・・
2018-09-22
先週の3連休で逡巡した挙げ句、GPSモジュールからの1PPSをゲートにした周波数カウンタをこしらえれば、どよよん無線技士が「まぁ、この程度で良かろうぞ
」と思える”0.1Hz保証”は達成できそうなことから、ブレボにPICを乗せた簡単な環境でソフト作りに精を出し、漸く目途が立ったんで記事にしておきます。
今回仕立てようとしている周波数カウンタは、PIC内蔵の16ビットタイマ2つを交互に動くようにして、GPSモジュールからの1PPSを連続で有効に利用できるように工夫しています。即ち、PICのタイマ1を2つ起動し、それぞれ1秒間を交互に測定するようにしています。これは、タイマ1を非同期モード、かつトグルモードとシングルパルスモードを併用して実現します。

今回使用したPIC16F1769はタイマ1を3つ持っていて、それぞれ上記のモードで動作させることができます。外部から与えるゲートはトグルモードで扱うと、1秒刻みでON-OFFする信号をそのままゲートにできます(t1g_in)。
その上、シングルパルスモードでソフト制御を上手く起動(T1GGOの制御)してやれば、1秒毎に2つのタイマーを交互に動かすことができます。これは、始めに起動したタイマが動き出したことを確認してから次のタイマを起動するだけでよく、16ビットタイマが複数内蔵されている全てのPICで実現できます。
2つのタイマで交互にカウントされる周波数データは何れも1Hz刻みであるため、これを連続的に加算してその測定数で割ってやれば1Hz以下の計測が可能になります。今回は100回のデータを取って加算し、それを100で割って10mHzオーダーの計測をしています。
この方式では、100回のデータ取得に達していない間は1Hz単位で、100回に到達したら100回前のデータを減算してからその回のデータを加算した上で平均値を求めています。
こんな感じで組み上がったブレボのバラックの様子をスナップショット

LCDの下段は、100回のデータ取得に達するまでのカウントです。これが100に達するまでは小数点以下は0で固定ですが、100回を超えたら過去100回分のデータの平均を表示するように仕込んであります。
本当は1000回分を蓄積できると1mHzの分解能になりますが、1000個分のデータを取っておくためのSRAMを背負った市販のPICは少なく、無駄に28ピンのものを選択しなければなりません。まぁ、そもそも今回の仕組みで10mHzオーダーの精度が精一杯なんで、この仕掛けで十分でしょう。
周波数カウンタとして形にするためには、GPSモジュールに頼らないで自走できるようにもしたいんで、もう少し検討を深める必要があります。この辺りが、次回の記事になっていくといいんですが・・・。

今回仕立てようとしている周波数カウンタは、PIC内蔵の16ビットタイマ2つを交互に動くようにして、GPSモジュールからの1PPSを連続で有効に利用できるように工夫しています。即ち、PICのタイマ1を2つ起動し、それぞれ1秒間を交互に測定するようにしています。これは、タイマ1を非同期モード、かつトグルモードとシングルパルスモードを併用して実現します。

今回使用したPIC16F1769はタイマ1を3つ持っていて、それぞれ上記のモードで動作させることができます。外部から与えるゲートはトグルモードで扱うと、1秒刻みでON-OFFする信号をそのままゲートにできます(t1g_in)。
その上、シングルパルスモードでソフト制御を上手く起動(T1GGOの制御)してやれば、1秒毎に2つのタイマーを交互に動かすことができます。これは、始めに起動したタイマが動き出したことを確認してから次のタイマを起動するだけでよく、16ビットタイマが複数内蔵されている全てのPICで実現できます。
2つのタイマで交互にカウントされる周波数データは何れも1Hz刻みであるため、これを連続的に加算してその測定数で割ってやれば1Hz以下の計測が可能になります。今回は100回のデータを取って加算し、それを100で割って10mHzオーダーの計測をしています。
この方式では、100回のデータ取得に達していない間は1Hz単位で、100回に到達したら100回前のデータを減算してからその回のデータを加算した上で平均値を求めています。
こんな感じで組み上がったブレボのバラックの様子をスナップショット


LCDの下段は、100回のデータ取得に達するまでのカウントです。これが100に達するまでは小数点以下は0で固定ですが、100回を超えたら過去100回分のデータの平均を表示するように仕込んであります。
本当は1000回分を蓄積できると1mHzの分解能になりますが、1000個分のデータを取っておくためのSRAMを背負った市販のPICは少なく、無駄に28ピンのものを選択しなければなりません。まぁ、そもそも今回の仕組みで10mHzオーダーの精度が精一杯なんで、この仕掛けで十分でしょう。
周波数カウンタとして形にするためには、GPSモジュールに頼らないで自走できるようにもしたいんで、もう少し検討を深める必要があります。この辺りが、次回の記事になっていくといいんですが・・・。
- 関連記事
-
- 1/10,000,000分周の解決と周波数カウンタの仮組み
- クロックモジュールの換装
- 結局、周波数カウンタを仕立て中・・・
- デバッグ中のLCDの不可解な動き
- バラックで組んだ周波数カウンタの周波数特性評価