Arduino と「GM管【中】キット GMC-03」

※この記事は2011年6月17日のものです。

楢ノ木技研さんの「GM管【中】キット GMC-03」を入手しました。

単体でもガリガリ言うので、目安にはなるかも知れないのですが、せっかくデータが出るピンも用意されているので、Arduino でカウントするプログラムを作ってみました。

注意!正確な値が表示されるとは限りません!
・計測方法は地上からの距離や、線種・計測対象を考慮する必要があります
・CPM を μSv/h に変換する際の定数は、暫定値です

本プログラムはあくまでも CPM を μSv/h に変換して表示するための物です。実際の正しい測定方法などは、先日行われたガイガーカウンターミーティングの動画などを参考にしてくださいね。(地上からの高さ、土とコンクリートの違い、アルミカバーでガイガーカウンターを覆うかどうか、食品の放射能は測れるか?などなど・・・)また、CPM を μSv/h に変換する式も、出来れば再確認して下さい。本プログラムでは、CPM を 120 で割って算出しています。

【本プログラムの挙動】
起動後、60秒間は正常な値を出力しません。これは、他のガイガーカウンターでも同様だと思います。放射線は一定間隔で来るわけではなく、五月雨的に来ます。そのため、たった一秒間計測しただけでは、たまたまその一秒に検知が集中したのか(もしくはその一秒になにも検出がなかったのか)の判断ができません。ですので、1分間程計測をして検出した値を使う必要があります。実際、市販品のガイガーカウンターの中には、起動して1分は値が表示されない物もあるようです。本プログラムでは最初の1分間は、ある程度の予測を元に μSv/h を表示しています。具体的な仕組みとしては、1秒目には、今後も同一の検知が来ると仮定して現在のカウント(積算値)を60倍に。2秒目にはカウントを30倍に。3秒目には20倍に・・・と言った感じで μSv/h を予想表示しています。1分を過ぎると、実際に直近60秒間に検出されたカウント(CPM)から、μSv/h を計算して表示するように作っています。

また、液晶の2行目はレベルメーターとなっており、0.1μSv/h ごとに1つメーターが上がります。(0.22μSv/h ならメーターは2個点きます)

【動作させるには】
本プログラムを実際に稼働させる手順は
・Arduino に液晶をつなぐ(参考:なんでも作っちゃう、かも
・液晶が動作することを Arduino IDE サンプルの LiquidQrystal の中のどれかで確認する
・本プログラムを IDE に読み込ませて Arduino に転送する
・一度 Arduino を USB から抜く
・GMC-03 がデバッグモードになっていないことを確認する
・GMC-03 と Arduino を 5V, GND, Tx(Arduino側は Rx) の3本で接続する
・Arduino に電源をつなぐ

Arduino のシリアル通信(Rx)を使っているので、IDE から Arduino にプログラムを転送時は GMC-03 と Arduino との接続は切っておいてください。
※ SoftwareSirial を使った場合、どうも文字化けがしてしまいうまく動きませんでした。どなたか、うまくいったらフィードバックして頂けるとうれしいです。

制限事項などとしては
・余り高い値を検出させたことがないので、どこで不都合が出るか未テスト
・連続稼働をさせた場合に、50日程度でオーバーフローして誤動作する可能性がある
・GMC-03 がデバッグモードの時、Arduino は 0x00 を受信してしまうが、液晶などにエラーが表示されない

今後の展開としては
・60秒に達していないときは、液晶の右上に「?」を表示
・1分を経過したら、どれかのデジタル出力ピンを HIGH に
・既定の μSv/h を超えたら、どれかのデジタル出力ピンを HIGH に
・GMC-03 がデバッグモードの時のエラー表示
を検討しています。

もし間違いなど、お気づきの点などございましたら Twitter の @a_ono にご連絡をいただければ幸いです。

ソース GeigerCounter.pde

コメントを残す