JP7FKFの備忘録

ヒトは,忘れる生き物だから.

PIC16F88を用いた周波数カウンタの作製

とりあえず一通りの測定器が欲しいわけなので,周波数カウンタを持っていなかったから作ってみた.

とはいえ自分で一から作ったわけではなく,こちら(PIC<40>)を参考にさせていただいた.
PIC16F88を用いて,直接計数方式でカウントしている.
1:1, 1:8のプリスケーラが選べて,1secと0.1secのゲートタイムが選べる.

作製したものがこちら.
外観はこんな感じ.
f:id:jp7fkf:20160905192621j:plainf:id:jp7fkf:20160905192642j:plain

頑張って小さいサイズに収めれるように,PICはICソケットで下駄を履かせずに直接ユニバーサル基板にハンダしてます.
あとは小型化のために,小型のLCD(http://akizukidenshi.com/catalog/g/gP-01797/)を用いています.
これ,超小型LCDとかいてあるけど,どっちかというと超薄型と記載したほうがいい気がする.
TFT液晶と比べるとバックライトあたりが厚くて全然超薄型でもないんだけど.
f:id:jp7fkf:20160905192702j:plainf:id:jp7fkf:20160905192731j:plain
f:id:jp7fkf:20160905192558j:plainf:id:jp7fkf:20160905192522j:plain

スプラッシュ表示と,測定画面.
f:id:jp7fkf:20160905192810j:plainf:id:jp7fkf:20160905192749j:plain

作るのは簡単でした.
しかしながら,上記の紹介されていたHPの作り方では2SC1815のベースにカップリングコンデンサ経由で信号を入れていたので,もうちょっとハイインピーダンスなもので信号を終端したい気もする.J-FETかMMICかオペアンプかなんかで.
あと50Ω終端もあると便利なのかな.

あと,基準クロックに20MHZのクリスタルオシレータを用いているのですが,これがTCXOではないため,温度の影響を受けます.
電源投入後直後からだんだんと表示周波数が上がっていき,"ハー"と息を吹きかけると一時的に周波数が上昇します.
まあ変動幅が数十Hzくらいなので,あまり気にしていません.普段使う分には〜10Hzくらいの偏差で済んでいます.

あと,1secと0.1secのゲートタイムで測定に差があります.
タイマのレジスタにセットする値と,NOP命令で調整はしてみたのですが,
1secと0.1secのどちらのモードもぴったりに合わせるということはできませんでした.
まぁif文で1secと0.1secを判別して,NOPの数を変えてしまえば済むことかもしれないのですが,時間的にクリティカルな場所にif文を置きたくないと思いました.
たぶんきちんとがんばって値を探っていくと,どっちもいいかんじになる最適値がわかる気がします.
NOP命令1つあたりの測定周波数の差と,タイマのレジスタ1ビット変えた時の測定周波数の差から計算してみようと思ったところで終わっています.たぶんこれで計算すればいけるはず.

とりあえずアマチュア用途くらいには使えそうな周波数カウンタができました.
今後改造するならば,TCXO化と,入力回路の改造(終端抵抗値の変更(1MΩと50Ωくらい?)),とレジスタの設定値,NOPの数の最適値を探ることです.
改造するかすらわかりませんが.