周波数カウンタ(AVR使用)


周波数カウンタを作ってみました。 AVRマイコン「ATmega328P」を使用します。 原理は1秒間のカウント数をLCDに表示します。 (実際は[1.024秒間のカウント数 / 1.024]をLCDに表示します)

@8ビットタイマ(タイマ0)は1.024mSの割り込みにし、スタートする。
A16ビットタイマ(タイマ1)は外部クロックT1端子入力をカウントし、 オーバフロー割り込みで16ビットメモリucountをインクリメントするようにし、スタートする。
B@の1000回目の割り込みで
 T 1000回目を0にリセットする。
 U Aのカウンタをストップする。
 V ucount、Aのカウント値 (TCNT1) をコピーする。
 W ucount、Aのカウント値 (TCNT1) をクリアする。
 X Aのカウンタをスタートする。
C以後Bを繰り返す。
DメインルーチンではBVのコピー値を1.024で割り、LCDに表示し続ける。

9MHz以上を計るにときは、分周器を一段(0〜18MHz)あるいは二段(0〜約30MHz)、 入れることにより約30MHz(74HC74の規格)まで計れます。

プログラム

特徴
測定範囲 0Hz〜9MHz 分周なし
0Hz〜18MHz 2分周
0Hz〜約30MHz 4分周
入力電圧 約0.1Vp-p以上 @1000Hz
約0.1Vp-p以上 @455KHz
約0.1Vp-p以上 @2MHz
入力インピーダンス1MΩ
電源DC 5V

測定
測定物測定結果
8MHz (SG-8002DC EPSON)7.999974MHz
本機の20MHz (SG-8002DC EPSON)19.999984MHz


f_counter_avr.gif

回路図


f_counter_avr_bb.JPG

実験風景


真空管
戻る