PIC周波数カウンターの製作2


 今月はPICマイコンについて私が疑問だった点ついてもう少し詳しく見ていくことによって、皆さんにも”やってみよう かな”という気になっていただければ幸いです。
 
PICカウンター なんでマイコンで周波数カウンターが出来るの?
   まず最初に解からなかったのが、なんでPICマイコンで周波数カウンターが出来るの? でした。
 理屈は意外と簡単、PICの内部には8ビットカウンターとプリスケーラーがあります。このカウンターは8ビットなので外部からパ ルス信号を入力すれば00からFFまでカウントできます。
例えば一秒間だけカウンターにパルスが入力されるようにしておけば、200回のパルスがカウンターに入ってくれば、カウンター は200をカウントします。次に一秒後にカウンターの数値をみて、LEDなどに表示、次のカウントにそなえてカウンターをクリアー するという一連の作業をプログラムで実行させてやれば、基本的な最大測定周波数256Hzの周波数カウンターができます。  但し、この内部カウンターは最高周波数2MHz程度しかないのと、8ビットしかないので桁数が足りません。
 このままでは7MHzの信号はカウントできないので、次のようにします。
 1.カウンターの前段にプリスケーラーをおいて、入力信号を1/2、1/4というように分周してやる。
 2.カウンターからのオーバーフロー信号が出るたびに、別のレジスターに+1づつ加算していく。
フロー   今までのカウンターとの違い
   今までの周波数カウンターの考え方では、ゲート時間をWaitルーチンなどで作って、その時間内に入力されたパルス数をカウン ト、表示、でしたがWaitルーチンの間にカウンターはどんどんオーバーフローしていきます。
 そこでマイコンの周波数カウンターでは、左のフローのようにカウンターのオーバーフロー信号を繰り返しチェックし、オーバ ーフローすればレジスタに+1加算するという作業をゲート時間相当繰り返すというプログラムになります。
 入力周波数がどんどん高くなって、プログラムでのオーバーフローが検出できなくなるので、このプログラムは出来るだけ少な いステップ数で実現する必要があります。
 レジスターはカウント数分準備しますがここではレジスター1と2を用意しています。これでカウンターの8ビット分と合わせて、 256*256*256=16777216までカウントでき、10MHz(10,000,000)がカウント出来るようになります。
 後は、このフローを基本として、LED表示プログラムを追加していけばOKです。
 プログラムの作成は全部一気に作らず、必要な機能をモジュール化にして少しずつ練習のつもりで作っていけば楽しみながら、 続けられます。
 LEDのON/OFFが出来たら、次はWaitルーチンを作ってみる、次に7segLEDを表示してみる、というふうに機能毎にプログラムを 練習していきました
 今までと違って、漠然と練習プログラムを作るのではなく、周波数カウンターを作っているという目標があれば続けられますよ。
Top Menu
PIC周波数カウンター製作3へ