PIC16F84を応用した汎用のカウンタで、液晶表示です。
最大8桁、単体では最高カウント18MHzまでです。
これにプリスケーラを外付けすれば、1GHzまで
測定可能な8桁表示周波数カウンタが出来上がります。
1.概要
PIC16F84を応用した汎用のカウンタです。 液晶表示器を使って表示
をしています。単体で最高18MHzまでのカウントが出来ますので、周波
数カウンタなどに使えます。1GHzまで使える1/1000のプリスケーラ
を追加すれば、さらに使用範囲が拡大します。
液晶表示器の制御方法の参考にもなると思います。汎用の制御プログラ
ムとなっていますので、他の用途にも使えます。
2.機能/仕様
入力仕様
TTL直接入力、高周波アンプ付き入力いずれか一方
(入力両方有り、接続した方でカウントする)
(外付けのスイッチで片方をGNDに接続して余計な入力を無くす)
プリスケーラ有/無指定可
(別に1/1000のプリスケーラが必要)
周波数帯域LOW/HIGH切替え
(1倍(最高2MHz)/8倍(最高18MHz)の切替え)
ゲート時間
0.1秒、1秒切替え
測定可能周波数
周波数帯域LOWの時 :約 2MHzまで1Hz単位
周波数帯域HIGHの時:約18MHzまで8Hz単位
測定精度
水晶発振子(10MHz)に依存
従って絶対精度は5〜6桁程度である。表示は8桁出るが。
表示方法
2行液晶表示器 8桁数値表示
0.1秒、LOWの時 : 199999oHz
0.1秒、HIGHの時 : 1599999oHz
1秒 、LOWの時 : 1999999Hz
1秒 、HIGHの時 : 15999999Hz
(プリスケーラ付きの時は単位がkHzとなる)
電源
5.2V〜9VDC 最大30mA(常時25mA程度)
4.構成
回路構成は至って簡単で、PICと液晶表示で基本を構成し、それに
高周波アンプが追加されています。 プリスケーラは別ユニットにし
ています。
動作は、0.1秒か1秒のゲート時間の間、ゲートICを開き入力信号
をPICのTMR0に入力しカウントを開始します。
このゲート信号はPICのプログラムループで作り出しています。
その精度を出すため、このループプログラムの総ステップ数を正確に
決めています。
つまり0.1秒なら250000ステップ、1秒なら2500000ステップと
します。
(250000 x 0.4usec = 100msec 2500000 x 0.4usec = 1sec )
つまり、PICのクロック用クリスタル発振子の精度でゲート時間を作っ
ていることになります。 ここで、基準となるクリスタル発振子の発振周
波数は、ただ単純に接続したのでは、一般に正確に10MHzとはなり
ません。 そこで、クリスタル発振子の一方の端子にトリマーコンデン
サを接続して、これを調整することで、わずかに周波数を調整すること
が出来る様にして校正を可能としています。
5.回路図/パターン図
回路図の詳細は下図となります。特別な物は有りませんので至って単純
です。 液晶の制御は4ビットインタフェースで行うことにし、PICの使用ポー
トを節約しています。 高周波アンプは簡単なトランジスタ回路で作成し
ました。簡単といっても、扱う最高周波数が20MHz程度ですから、結構
広帯域の回路とすることが必要で、 このためには高周波用の性能の良い
トランジスタを、負荷抵抗を小さ目にして使うのがコツです。
原回路図は、CADの「HiWIREU」で描いているのでダウンロードして
使って下さい。
★汎用カウンタ回路図(ダウンロードしてご覧下さい)
★汎用カウンタパターン図(ダウンロードしてご覧下さい)
6.プログラム概要
PICのプログラム構成を簡単に説明します。
プログラムは単純な1本の流れだけで出来ています。
初期化 ポートの条件設定、液晶表示器の初期化
↓
スイッチ状態の入力 ゲート時間、プリスケーラ有無、帯域指定
↓
周波数測定 一定のゲート時間の間TMR0でカウント
↓
バイナリからBCDに変換 3バイトを10進8桁に変換
↓
液晶に表示 8桁 ゼロサプレスも同時に実行
↓
繰り返し
ここで難しいのは、ゲート時間を作りだすため、正確なステップを守りながら
カウンタのカウントアップをする所です。
カウンタはPIC内部のTMR0のハードと2バイトのレジスターで実行します。
このレジスターのカウントアップ処理をソフトウェアで行うことになりますが、
どのルートも同じステップ数になるように工夫して一定のゲート時間を作り
出しています。
またもう一つ難しいのが、3バイトバイナリデータを8桁の10進数に変換する
ところで、これには Microchip Technology の Appliction Notes にある
Math Liblary を参考にして作ったものを使用しています。
液晶表示器の制御方法についても、Application Noteを参考にしました。
特に表示器の初期化方法や4ビットバスによる制御の方法が参考になり
ました。
★汎用カウンタプログラムリスト
素子は少ないので、実装は簡単ですが、小さくするため、液晶表示器の
真下にICなどの他の部品を実装しています。液晶表示器の大きさより
一回り大きい程度で納まっています。
これにプリスケーラを外付けすれば、立派に1GHzまでカウント可能な
8桁表示の周波数カウンタとすることが出来ます。汎用カウンタの全体外観
液晶表示器の下側に
大部分の部品を実装した。
上部の液晶表示器をはずしたところ。
コネクタ接続としたので簡単にはずせる。
実装には高さの制限があるが電解コンデンサ、
水晶発振子ぐらいで他は問題なし。