ガイガーカウンター

はじめに

福島原発の事故による放射能漏れが続いています。目に見えない放射線を見るためには放射線検出器が必要です。そこで、ガイガーカウンターを自作しようと思っていたところ、秋月電子で保守在庫のGM管 D3372が放出されたため、タイミング良く入手することができました。

特徴

Geiger Counter

毎秒のカウント値をUSB接続したPCを使用して記録することができます。 ATTiny2313のUSARTから出力し、FT232RLの搭載されたUSB serial変換基板にUSBに変換しています。このとき電源をPCから取ることもできます。

CPM値は毎分のカウント値ですが、一分毎の更新では使いにくいので過去60秒間のカウント値とし、2秒ごとに表示を更新しています。

ハードウェア

GM管には600V程度の電圧をかける必要があります。この電圧を得るため、例陰極管用のインバータを使用しています。出力は5V入力時に650Vrmsということなので、入力電圧を3.3Vにさげ、429Vrms程度としています。これを倍電圧整流してDC 600v程度としています。

放射線を検出すると、GM管のカソード抵抗にはかなり大きな電圧が現れます。

GM pulse

(これは単体で見たとき。実際の回路ではトランジスタのベースに流れて0.6vでクリップされます)

回路図(まだ清書してません)

circuit

ソフトウェア

ATTiny2313はRAM 128バイト、ROM 2Kバイトしかないのですが、ほぼ全容量使い切ってしまいました。 もう少し機能を絞り込んだ方がいいかもしれません。

文字列の出力には ChaNさん 「AVR用組み込みprintfモジュール」 を使用しています。

割り込み

タイマー割り込み

16bit timerをCTCモードで10ms毎に割り込みをかけます。
1秒経過毎にCPS値を保存し、一秒経過をメイン処理に通知します。
ビープ音を100msとなるように停止します。
スイッチの押し下げ時間を測り。短時間の押し下げ、長時間の押し下げをメイン処理に通知します。

立ち下がりエッジ割り込み

CPS値に1追加し、ビープ音慣らします。圧電サウンダの発振には8bit timerを使っています。CTCモードで4KHzを発信させ、OC0B出力をトグルモードに設定して自動的に2KHzの方形波が出るようにしています。

メイン処理

1秒経過、スイッチの通知を待ちます。

1秒経過処理

1秒毎に以下の処理を行います

スイッチ

表示モードを切り替えます。2秒以上押し下げられた場合、カウント値、時刻をリセットします。

LCD表示

カウント値、経過時間表示モード

total mode

上段にCPS, CPM
下段に累積カウント、経過秒数を表示します

最大値表示モード

max mode

上段にCPS, CPM
下段に累積カウント、経過秒数を表示します

レントゲンモード

roentgen mode

上段にCPS, CPM
下段に累積カウント、経過秒数を表示します

シーベルトモード

Sv/h mode

上段にCPS, CPM
下段にuSv/h、nSv/hを表示します。
uSv/hはCPSの2秒移動平均値から計算しています。 nSv/hはCPM値から計算しており60秒移動平均の値となります。 表示では"/h"を省略しています。

UART出力

以下の形式でデータを出力します。 区切り文字はスペースです。

秒 CPS値 CPM値 totalカウント

56198 0 4 2875
56199 0 4 2875
56200 0 4 2875
56201 0 4 2875
56202 0 3 2875
56203 0 3 2875
56204 0 3 2875
56205 0 3 2875
56206 0 3 2875
56207 0 3 2875

単位換算

ネットで見つけた データシート にCo60を放射線源としたときのカウントレートのグラフがあったので、そこから読み取とると、
R/h=cps^1.0332/1751.73
となりました。
グラフには小さい方( 10^-3R/h 未満)のプロットが無いし、線が太い上にスケールが微妙にゆがんでいるので、誤差がありますが、2倍以内には収まっていると思っています。

1.0332乗の計算はcpsの大きさに合わせて以下のように近似します。

100cps付近1.165*cps
10cps付近1.0794*cps
1cps付近1.000*cps
0.1cps付近0.9264*cps

以上から、R/h、Sv/hの換算式を以下のように決めました。

R/h(レントゲン毎時)

大きいとき(100cps付近)、表示はmR/hとする。
mR/h=1.165*cps/1751.73*10^3=cps*0.665=cps*85/128
小さいとき(0.1cps付近)、計算にcpmを使用。表示はuR/hとする。
uR/h=(cpm/60)*0.9264/1751.73*10^6=cpm*8.814=cpm*35/4

Sv/h(シーベルト毎時)

まず、
mSv=mGy=8.772*R
とします。

大きいとき(10cps付近)、表示はuSv/hとする。
uSv/h=uGy/h=10^3*cps*1.0794/1751.73*8.772=cps*5.4=cps*43/8
小さいとき(0.1cps付近)、計算にcpmを使用、表示はnSv/hとする
nSv/h=nGy/h=10^6*(cpm/60)*0.9264/1751.73*8.772=cpm*77.3=cpm*77

整数演算のみとし、且つ、割り算を省くため、分母を2の累乗にしています。

テスト

スタンドアロン

屋外でも屋内でも2〜6cpm程度です。屋内の方が低いのですが、なんとなくそんな気がするという程度です。長時間計測しないとわかりません。

放射性物質であるトリウムを含有するレンズがあります。SMC Takumar 55mm F1.8の後ろ側のレンズから大量の放射線が出ていることが確認できました。
SMC takumar 55mm/F1.8 atomic lense 8uSv atomic lense 1.2uSv
ちょっと離せば大幅に減少します。

UART出力を記録して解析すると

一日の変化
daily log 20110508

一週間の変化
weekly log 20110508

長期的な変化や、大きな放射線量の検知には使えるけど、近所を持ち歩いて素早く確認するような用途には使えません。 もっと検出率の高い管ともっとパワーのあるマイコンで作りなおしたくなりました。 SBM-20とATTINY861かATmega88かな。グラフ表示も欲しい。となるとATmega1284かな。

ソースコード

参考にしたページ

  1. Cyber Laboratory 電脳実験室 geiger counter
  2. 放射能レンズ
  3. えるむ/ChaN

履歴


FENIX/ MEMBERS/ thomas's HOME/ products/ geiger

佐藤益弘 thomas@fenix.ne.jp