液晶表示汎用カウンタ

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ビットバスによる制御の方法が参考になり
ました。

      ★
汎用カウンタプログラムリスト


7.実装方法

素子は少ないので、実装は簡単ですが、小さくするため、液晶表示器の
真下にICなどの他の部品を実装しています。液晶表示器の大きさより
一回り大きい程度で納まっています。
これにプリスケーラを外付けすれば、立派に1GHzまでカウント可能な
8桁表示の周波数カウンタとすることが出来ます。

汎用カウンタの全体外観
液晶表示器の下側に
大部分の部品を実装した。

上部の液晶表示器をはずしたところ。
コネクタ接続としたので簡単にはずせる。
実装には高さの制限があるが電解コンデンサ、
水晶発振子ぐらいで他は問題なし。

液晶表示器の取り付け詳細を横側から見る。
丁度良い高さになっている。

  


目次ページへ