SSブログ

PIC16F18325による周波数カウンタ [電子工作]

PIC16F18325による周波数カウンタ 2種

秋月で、PIC16F18325が100円で売られていたので、事例を参考に安価な周波数カウンタを作った。
15ct1P83.jpg18ct1P582.jpg

mcc(MPLAB Code Configurator)を使ってCLCやタイマーの設定を行った
構成
TMR2:基準時間発生に使用。mccで作られた"tmr2.c"の割り込み処理にユーザ処理を記述する。
TMR3,TMR5:2個の16ビットカウンタをCLCを使って連結し32ビットカウンタとする。
TMR3がオーバフローするとTMR5をカウントアップする。オーバフローで割り込みは使わない。TMR3,TMR5のon/off機能を使って基準時間だけT3CKI(RC5)のパルスをカウントする。計数が終わるとTMR3とTMR5を読み出して表示する。

CLCの設定:TMR3のオーバフローをピンに出す。
30cl53.JPG
35pinmng52.JPG

ブロッグ図的イメージ
40TMR3-5.JPG

TMR3オーバーフロー信号。T3CKIの1サイクル分出る様だ。
50M12Movfl48.jpg
55M35ovfl49.jpg

MPLABX,コンパイラは以下を使った。
MPLABX v3.51
xc8 v1.44


カウンタ入力:T3CKI(RC5)
OVFL:CLC1(RC1)
2段目カウンタ入力:T5CKI(RC0)
RC1とRC0をピンで接続する。LCDはどちらか一方を接続し、LCDに対応したHEXを書き込む。
60PIC16F18325.JPG

カウンタ1:外部発振器、シリアル化したLCD1602、8桁表示
カウンタ2:水晶発信器、TS174 6桁表示 0.1k単位

カウンタ2は組み込みとして使う為、基板カットしてTS174のサイズに近づけた
20ct2P80.jpg

LCDを外した所
22ct2P81.jpg

LCD1602SPI回路図再掲。E信号を遅らせるために1G32の出力に220Pを接続した。効果は未評価。
70LCDSPI41.JPG

16F18325は14ピンなので使えるピンが少ない。LCDにはシリアル化したLCD1602をを使った。
カウンタ2のLCDにはAitendoのTS174を使った。TS119、TS174、TS5173は同じライブラリで使える。こちらも3ピンで制御できる。単位がKHz表示で無いのが残念。小数点表示はKの位置表示として使った。
水晶には手持ちの12.8MHzを使ったが精度がイマイチ信用できない。カウンタ1は、将来高精度発振器を入手したときの為に外部入力モードにしている。カウンタ2は安価にするため、12.8MHz水晶をPICで発信させた(HSモード)。

LCDのライブラリ内で、制御に使うピンを定義する。当初LCDの書き込み信号をWRとしていたが、EEPROMの処理の中のWRと競合していたのでLCDライブラリ側の信号名をWRTとした。

lcd_SPIlib2.h
#define RCK LATAbits.LATA0
#define WRT LATAbits.LATA1
#define DT LATAbits.LATA2

TS174
HTLCD_lib2.h
#define CS LATAbits.LATA2
#define WRT LATAbits.LATA1
#define DT LATAbits.LATA0

高精度の発振器を持っていないので、校正出来ていない。
PIC16F18325 カウンタ ソース&HEX。mccで生成したファイルを後から修正したので、コメントは違っているかも。試行錯誤した痕跡が残っているが公開。


回路図

-------------------------------------------------------------------
参考
はじめてのPIC
18f14K50カウンタ
http://sky.geocities.jp/home_iwamoto/page/P14K50/P14_B03.htm
電子工作のための PIC16F1ファミリ活用ガイドブック  技術評論社
--------------------------------------------------------------------

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。