戻るPIC12F628A使用プリスケーラ読出しカウンタの試作

2010.12.20(2014.5.7修正追記)
1. はじめに 
  マイクロチップ社のアプリケーションノート(AN592)のアイデアを使わせていただき、プリスケーラの値を読出し、カウント精度を上げた周波数カウンタについて説明します。

2. 試作機の仕様は 

 プリスケラー値読出し式周波数カウンタの仕様は次になります。
項番 項目 詳細説明
 1 クロック外部発振12.8MHzです TCXOを使用し精度を上げます。
 2 16ビットカウンタからなるタイマー1(TMR1)を使用してゲートタイム10mSを作る 12.8MHzを基準にします。(0.3125μS*32000カウント=10mS))RA4/T0CKI端子とRB7を結び、RB7でタイムゲート制御します。
 3 8ビットカウンタのタイマー0で入力周波数をカウントして256カウントでオーバーフローしたら変数をソフトで加算していく TMR0入力の周波数応答を良くするためTMR0のプリスケーラを1:64に設定して使います。
 4 処理は割り込みで行います TMR0,TMR1の割り込みを監視してTMR0のときは変数のカウントアップ、TMR1の時はゲート時間終了でカウント値計算表示を行う
 5 MAPLAB+PICKIT2+HiTEC C MPLABV8.46 HiTECH C V9.71a
 6 表示は0802コンパチLCD(8文字2行) バックライト付白黒反転液晶を使用してみました。SC1602とは電源グランドのピン番が逆なのでパタンカットジャンパ線。
 7 LCDインタフェイスは4ビット 4ビットデータ+RS+ENで接続します。LCDモジュール内のレジスタは読まないのでR/Wはグランドに。
 8

プリスケーラ値を読出し

RB7で10mSのタイムゲート制御し、カウント終了後プリスケーラをカウントアップさせ、追加したパルス数からプリスケーラの値を読み取ります。

 

 

3. 回路図 

 回路ですが次のようになっています。

 1 入力インピーダンスの高いFET(2SK439)でプリアンプを付ける。アンプ出力をTMR0入力であるRA4にR3 470オームを介しつなぐ。R3は入力をRB7でゲートタイム制御を行うために必要です。

 2. RA4/T0CKI端子は入力ゲートタイム制御を行うRB7ともつなぐ。

 3.液晶モジュールはデータ4ビット、RS、ENで接続する。R/WはWだけなのでグラウンドにつなぐ。

 4. クロックは12.8MHzのTCXOを使用する。コンフィギュレーションはHSとして、CKI-CLKO間を1MΩでつな ぎ、CKIはコンデンサーを経由しTCXO出力をつなぐ。(TCXOの出力レベルがCMOSではないため、レベル合わせします。JR3TGS稲田OMさんのブログ情報:http://www.eonet.ne.jp/~jr3tgs/tcxo.htmを参考にしました。)

 5. 電源は8〜12V入力として3端子レギュレータにより5Vを供給する。

回路図は水魚堂さんのBSchを使いました。また関連記号類も利用させていただきます。公開された作者さん達のご努力に感謝いたします。http://www.suigyodo.com/online/schsoft.htm

4 実装 

  PasSを利用してユニバーサル基板に実装します。

ユニバーサル基板配線CADのPasSを利用させていただきました

 http://www.geocities.jp/uaubn/pass/

 

 部品

部品記号 内容 説明
U1 PIC16F628A  
U2 LM7805 5V3端子レギュレータであれば可
U3 18S-03A4 12.8MHzのTCXO、あるいは水晶発振器など
Q1 2SK439  
D LED モニター用表示灯
SC1602 SC1602液晶 14P-DIL接続のLCDモジュール。#1がVdd
VR1 502 5kΩ程度の半固定抵抗
R1-R6 330、470、10k×2、100k、1M 1/8W抵抗
C1-C5 0.01μ、0.1μ、0.22μ×2,、10μ 10μはアルミ電解、それ以外はセラミック
同軸コネクタ 同軸コネクタ付のケーブル SMBを利用した
電源コネクタ DCパック接続用のφ2.5 DCジャック
14ピンDILコネクタ(オス、メス) HIF3-14P、14S 液晶接続用
基板 ユニバーサル基板  

5 プログラム 

 プログラムはMAIN部LCD表示部に分けて書いております。_lcd_.hを引きこみ必要です。delayは不要。LCDモジュールは8文字2行を前提に表示を出しております。16文字2行など表示文字が多い場合は不要な表示が出てしまいます。

 コンフィグ設定はBORDIS & UNPROTECT & PWRTEN & WDTDIS  & MCLREN & HSです。ブラウンアウト無し、プログラム内容プロテクトせず、パワーオン時タイマー待ちスタート、クリア有、外部発振、ということにします。

 HEXも用意しました。

(TMR1がカウントアップし、ゲートを占めたときにTMR0のキャリーが重なると255カウント狂うというがバグが見つかりました。近日中バグフィックス予定につき、今しばらくお待ちください。)

6. 実験 

 手元にあった水晶発振器ユニットやTCXOなどを発振させつないで見て応答性能などを探ります。

 まずは12.8MHzTCXOを測ってみました。この時は白黒反転表示の8文字、2行の液晶を用いました。16文字2行でも同じ表示です。

  

 次に最高周波数50MHzで動作させました。

 

 

ソフトのバグフィックス、外付けプリスケーラ、高速化対応などの続編を検討中です。

「ご注意」 このWEBに掲載された内容(文面・回路・写真・プログラムなど)に著作権があります。無断転載やコピーは法律に抵触する場合があります。何か 疑義ある場合はお問い合わせください。また本WEBに掲載された実験や試作はnobcha個人の趣味で行っております。ここに示す結果の再現性や正確性は 保証するものではありません。あくまでも個人の趣味の範囲で参考にしてください。
PIC16FのTOPへ戻る       WEB目次へ 戻る 

アイコンは「牛飼いとアイコンの部屋」から提供いただきました  http://www.ushikai.com/

 

inserted by FC2 system