PIC16F1827を使ったガイガーカウンター
ガイガーミュラー管の出力をカウントするための試作回路を、
最近出たPIC16F1827を使って作ってみました。
#ガイガーミュラー管の部分の回路には、
昔作った秋月電商さんのD3372のキットを使用しています。
特徴
時計用の水晶を使っています(メインクロック32.768kHz)。
I2CのキャラクタLCDで測定値を表示します。
数値表示モードとグラフ表示モードの二つの表示モードがあり、
数値表示の場合は、過去4時間の測定結果(count/hour)と現在のカウント状況、
グラフ表示の場合は過去16時間の測定結果をグラフで表示します。
消費電流は、LCD、ガイガーカウンター部をあわせて1mA程度でした。
#接続できるLCDは、ストロベリーリナックスさんの
「I2C低電圧キャラクタ液晶モジュール(16x2行)」です。
数値表示モード
上の行が、過去4時間の測定値(カウント/時間)、
下の行左から現在のカウント値/カウント時間、
連続使用時間(この表示では90時間目になります)、
電源電圧、となっています。
グラフ表示モード
上の行で過去16時間の測定結果を表しています。
1文字1時間相当です。
下の行は、左から、現在のカウント値/分、
過去16時間における測定値の最大値(112)を
あらわしています。
#090と表示されているのは写真を撮った時点でのバグです。
アップしているプログラムでは修正しています。
#表示は2011.4/19.PM3:00の時点でのものです。
※LCDに保護シートがついたまま写真を撮っているので、
多少見づらいかも…シートを取るともっときれいになります(^^;
回路
※クリックすると拡大表示します。
※カウント入力のレベルにご注意ください。
この回路図では、カウント入力のレベル変換部分は省略しています。
ソース
HEXファイル
プログラム解説
・動的クロック変更
起動時は、初期化処理に時間がかかるので、内部クロックにて
動作するようにしています。
初期化終了した時点で、32kHzの水晶をメインクロックとして
動作するようにしています。
(省電力ですが、動作は遅くなります。)
・I2Cモジュール使用
LCDとのインターフェースはI2Cを使用しています。ただし、
LCDへの送信しかしていません。
・LCDグラフ表示
LCDのキャラクター定義により、過去のカウント値を
棒グラフで表示します。
・ADコンバータ&内臓リファレンス使用
ADコンバータで電源電圧を基準として内臓リファレンスの電圧を
計ることにより、電源電圧を逆算しています。
・LCDの輝度の自動調整
このLCDは、輝度が電源電圧に左右されます。
電源電圧をチェックして、見やすい濃さになるように自動調整します。
・電池残量表示
LCDのバッテリーマークで、電池残量(のめやす)を表示します。
・タイマー割り込み
タイマー2で、0.5秒間隔で割り込みをかけています。
※0.5秒に特に意味はありません。本当は1秒間隔でいいんですが…(^^;
・タイマー1によるカウント
タイマー1を外部入力カウント用に使用しています。
・EEPROM書き込み
測定結果はEEPROMに書き込んでいます。
・カウントは最大255まで
カウント値を1バイトで扱っているため、最大カウントは255
までとなります。それ以上カウントさせたい場合は、プログラムを
変更してください。(D3372では、札幌では一時間あたり70〜100程
度のカウントでした。ただし、温泉地では倍くらいの数値になるよ
うです。)
・低消費電力
電源は3V(電池2本)を想定しています。
(5Vでも動くと思います)
消費電流はかなり小さい(1mA以下)ですが、電源を3Vとして、
PIC16LF1827を使用すると、さらに省電力になるかもしれません。
・シリアル出力(予定)
すみません、シリアル入出力は未実装です。
補足
PIC16F1827のサンプルプログラムがあまり見当たらなかったので、
ソースを公開します。少しでも参考になれば幸いです。
ただし、もしかしたらバグ等あるかもしれません。
自己責任でご利用ください。
追記(2011.5/17)
最近入手したガイガーミュラー管をテストしてみました。
D3372と比べると、かなり感度はいいようです。
腕に自身のある人向けに、近いうちにキットとして提供することを計画しています。
products@cwork.co.jp