ガイガーカウンターの製作・ソフトウエア編 (2011/05/25〜)

(Last update:2013/03/24)


2011/08/31 に公開された
茨城汚染マップ(データ)。

このホットスポットについては
こちらの考察こちらの考察
大変興味深い。
茨城県が 2011/9/22 に
公表した土壌汚染データ

管理人が住む牛久市の
土壌は 63,000 Bq/m2 (Cs)。
茨城で 2番目の汚染度だ orz

これを換算すると
63,000 Bq / 65 = 969 Bq/Kg
(≒ 1Bq/g)

原発事故前 2009年の 137Cs 濃度
(東海村 60Bq/kg)
の 16倍になっている
2011/11/11 公開の汚染マップ

ひとたび事故が起きれば
250km 離れていても汚染される。

原発のある自治体だけに原発を
委ねてはならないことは明らかだ。


事故後3ヶ月間に全国に
降下した放射性物質
(データ元は文科省 HP のこちら

日本全土に放射性物質が
撒き散らされたことがよくわかる。
まずはブレッドボードで動作確認。

最初は GM 管を繋がず、ファンクション
ジェネレーターからパルスを注入し、
ソフトウエア単体で開発。
ある程度ソフトウエアができたので
GM 管を繋いでみたところ。
左の基板が高圧発生回路。

線源(ウランガラス)で動作確認中。
GM管は人気の SBM-20。動作電圧 400V
動作電圧が同じ 400V の
GM管 CI-1G にも当然対応。
ソフトウエア単体は 60000 CPM
(1000 CPS) でも十分追従
最も基本となる 8 x 2 LCD での実装例。

全カウント数/計測時間からの CPM値と
経過時間表示モード
起動後、サンプリング時間に
到達するまではカウントダウン表示
タイマー測定中
(定時間タイマー測定)
タイマー測定中
(定確度タイマー測定)
タイマー測定終了後。

RS-232C にはマーク番号
付きのデータが送出される
超小型 16 x 2 LCD(下)
(FMA16213-02) も対応
RS-232C 出力データ
フォーマット

T00001 はタイマー測定結果、
M00001 はマーク機能で
マーキングされたデータ。
ログファイルを KML ファイルに変換して
Google Maps に読み込ませたマップ。

車移動で 1秒毎にログを取り、
コンバーターの -c オプションで
100m毎にポイントを抜き出した例。
バックグラウンド測定例
(GM管 CTC-6、茨城南部・木造 2階、
複数回測定のうちの一例)

1分間 CPM では±50%
程度の変動が見られる。
逆にこの範囲範囲外なら有意な
変動と捉えることができそうだ。

また、定時間測定なら 5分間で
十分との感触。(バックグラウンドが
24 CPM 前後の SBM20 でも同傾向)

ついでに定確度測定 1000カウント
(誤差±3%)と10000カウント(誤差±1%)
と付き合わせてみた。
1000カウントで十分との感触。
このプログラムは LCD や
GM 管を選ばない。

最もベーシックなモデルから
GPS とロガーを搭載した
汚染マップ作成モデルまで
様々な実装が可能。

使用目的に合わせた実装で
放射線を測定しよう
実際の動作の様子。

画面モードや表示データが多くて最初は面食らうかもしれないが、
使用目的に応じて多用する画面・データは必然的に決まってくるはず。

製作の経緯:

 原発事故のせいで管理人の住む茨城は汚染されてしまった(怒)。

 ネットでは 2011/4 の段階で茨城南部〜松戸・柏〜三郷〜金町がホットスポットと言われてきたが、2011/6/14、ようやく信頼できるデータが筑波大・アイソトープセンターから公表された。もちろん茨城南部の汚染は福島ほどではないが、2011/6/15、牛久市役所の駐車場 1m 高の線量は 0.359μSv/h と原発事故前の 6〜7倍もあるのだ ・・・ orz

 (さらに 2011/08/31、文部省と茨城県が行った航空機によるモニタリング結果も発表され、茨城県南地域の汚染実態がより詳細に明らかになった。管理人宅は原発から 180Km ほど離れているが、原発から 60Km 圏のいわきや北茨城と同程度の汚染度だったのだ orz)

 当然身の回りの放射線量を調べたいのだが、原発事故の直後からガイガーカウンターは品薄となり価格も暴騰。素性の知れない怪しげな製品までが数万円以上する状態となってしまった。2011/6 現在、さすがに価格もだいぶ落ち着いてきたが、ヤフオクでは個人が出品するユニバーサル基板のキットですら 2万円前後で落札されているのが現状だ(ソフトの開発代を入れてもボロ儲けだな)@o@

 だが調べてみるとガイガーカウンターはハードもソフトも意外に簡単で、十分に自作可能であることがわかった。どうせ作るならハンディタイプから長期固定観測タイプまで、あらゆる用途に使えるものを作ってしまおう。


概要:

 こちらの画面モード一覧で機能の概要が把握できるのではないかと ^^;

 また本プログラムの具体的な活用ノウハウはこちら


測定値仕様:

 ・CPM: 0〜65535
 ・CPS: 0〜65535
 ・最大全カウント数: 99999999
 ・最大測定時間: 約4660時間(約194日)

  最大測定時間経過後でも一部データをクリアして動作は継続(エンドレス測定可)。


特徴:

 ・豊富な表示データ

   (1) 最新 CPM
   (2) 累積平均 CPM
   (3) 累積平均 CPM の統計誤差
   (4) CPM vs 基準 CPM 比
   (5) μSv/h(時間線量)もしくは μSv/y(年間線量)換算値
   (6) 過去10分 CPM と生カウント数推移グラフ
   (7) 累積平均 CPM の変動幅と過去推移グラフ
   (8) 最大 CPM、最大 CPS、最小 CPM Ver 8.30
   (9) 設定値に対する割合(数値、バーグラフ)
  (10) 起動してからの総カウント数、総測定時間
  (11) 誤差± 3%( 1,000カウント)時の CPM と到達時間
  (12) 誤差± 1%(10,000カウント)時の CPM と到達時間
  (13) 累積線量値
  (14) GPS 位置情報、時刻情報 (GPS 接続時)

 ・豊富なユーザー設定項目

   (1) GM管電圧(300V〜900V、50V 刻み)
   (2) サンプリング時間(1〜60秒)
   (3) ホットスポットスキャン用サンプリング時間設定(1〜6秒)
   (4) CPM 基準値(1〜65535 CPM)
   (5) CPM → μSv/h 換算係数(1〜9999 CPM)
   (6) バックグラウンド補正値(0〜9999 CPM)
   (7) 第1アラーム設定値(OFF, 1〜9999 CPM)
   (8) 第2アラーム設定値(1〜9999 CPM)
   (9) ブザー音(常時 ON/常時 OFF/ALARM 時)
  (10) ブザー音頻度(1/10/100/AUTO)
  (11) LCD バックライト(常時 ON/常時 OFF/AUTO)
  (12) RS-232C データ送出タイミング(1秒/10秒/1分/1時間/マーク時) Ver 8.20
  (13) タイマー設定(3〜120分、100カウント、1000カウント、10000カウント)

 ・便利な機能

   (1) 設定値を超えた場合のアラーム発動(音、LED、LCD)
   (2) GPS 対応。時刻情報、位置情報をカウントとともに RS-232C に送出
   (3) GPS 位置情報は Google Maps に便利な小数点 6位の「度」表示、時刻は日本標準時に変換済み
   (4) 応答性重視の「ホットスポットスキャンモード」搭載
   (5) 指定時間もしくは指定カウント数によるタイマー測定および自動データ送出
   (6) 必要なデータをマーク番号とともに送出する「マーク機能」
   (7) 超小型シリアルロガー「OpenLog」対応
   (8) RS-232C からコマンドを送り込むことで一部機能をコントロール可能
   (9) 2色 LED による簡易表示可能(LCD 無しの実装可)
  (10) 電池消耗時は自動電源 OFF

 ・その他

   (1) LCD を選ばない(LCD 無し、8 x 2, 16 x 2, 20 x 2, 20 x 4 LCD 対応)
   (2) 300V 〜 900V までの GM 管対応
   (3) 1 時間カウント数等、長期観測用データ対応
   (4) 表示モードも含めてほとんどのユーザー設定を EEPROM に保存〜復元
   (5) 処理が高速。パルスの取りこぼしは 65000 カウント時でも 0.1% とごく僅か。
   (6) 設定画面に入っても裏処理で測定を継続

 以上、ネットワーク接続ができない以外は大抵の機能を詰め込んである。


動作確認済み GM 管:

 ・SBM20
 ・LND712
 ・LND7317
 ・Philips 18504
 ・CI-1G (SI-1G)
 ・CI-3BG (SI-3BG)
 ・CI-22BG
 ・CTC-6 (STS-6)
 ・J306β
 ・J308βγ
 ・D3372

 なお 900V 設定は FET の耐圧ギリギリのためオススメしない。CK1026 には高圧発生回路を別途用意する方が無難。


ソフトウエア処理概要:

 (1) 割込み側での処理

  ・外部割込み(パルスの立下りエッジを検出) → 放射線検出パルス処理
  ・TMR1 + コンペア割り込み → 秒管理とキー入力スキャン
  ・TMR2 PWM → 高圧発生
  ・TMR0 割り込み → ソフトウエア PWM でブザー音発生
  ・RS-232C 受信割り込み → RS-232C 受信データのバッファリング
  ・1 秒間の測定データバッファリング

  割り込み処理は必要最低限のコードに留めているため、パルスの取りこぼしは最大でも 0.1% 程度(検証済)とごく僅か。

 (2) メインルーチン側での処理

  ・CPM などのほとんどの数値計算
  ・1 分間データのバッファリング
  ・LCD へのデータ表示
  ・アラーム値監視とアラーム発動
  ・2 色 LED による簡易表示
  ・キー操作に対応した処理
  ・RS-232C 受信データの解析(GPS、外部コマンド)
  ・RS-232C データ送信
  ・電池電圧監視
  ・ブザー音頻度設定計算


ユーザー設定項目説明:

【基準 CPM 値】

 GM 管による放射線計測は CPM の相対比較が基本なので、本プログラムでは CPM 値の相対比較がしやすいよう、通常 CPM 値および累積平均 CPM 値に対し、あらかじめ設定した基準 CPM 値との相対比(対基準値比)を自動的に計算・表示できるようになっている。

 基準 CPM 値は設定モードから設定できるのはもちろん、後述の「基準 CPM 値一発コピー機能」によっていつでも容易に変更できる。


【サンプリング時間】

 通常測定に使用されるサンプリング時間。1 〜 60秒で設定可能だが原則 60秒推奨。ホットスポット探しには専用のサンプリング時間を別途設定可能なので、通常このサンプリング時間を変更することはあまりないハズ。

 なおデータバッファにはサンプリング時間とは無関係に「生カウント数」がストアされていくので、サンプリング時間を変更しても過去データは影響を受けず、即時再計算される。


【ホットスポットスキャン用サンプリング時間設定】

 ホットスポットスキャンモード(後述)で使用されるサンプリング時間。1〜6 秒で設定可能。

 大型 GM 管なら 1 秒、SBM20 や LND712 あたりなら 2〜3 秒ぐらいが適切。


【第 1アラーム CPM 設定】

 アラームを鳴らす CPM 値を設定する。0 を設定すればアラーム機能自体が OFF になる。

 この設定値は 2色 LED による簡易表示(後述)においても比計算に用いられる。


【第 2アラーム CPM 設定】

 ホットスポットスキャンモード(後述)で表示されるバーグラフの最大値を設定する。判りづらければ最初は第 1アラームと同じ値に設定し、必要に応じて再設定を推奨。

 値は 1〜 9999 まで設定可能。


【ブザー音設定】

 SW3 操作もしくは RS-232C 経由のコマンド(後述)で順次下記モードに切り替わる。

 ・常時 OFF
 ・常時 ON
 ・アラーム時のみ ON


【ブザー音頻度設定】

 高線量地域では 1カウント毎にブザーを鳴らすとうるさいので、ブザー音の鳴る「頻度」を下記から選択可能。

 ・1 カウント毎
 ・10 カウント毎
 ・100 カウント毎
 ・自動

 自動に設定すると、直近 5秒間のカウント数を監視し(=5秒間同一レンジに留まる)、最適なレンジに自動変更する。


【 LCD バックライト設定】

 ・常時 OFF
 ・常時 ON
 ・自動

  自動に設定にすると、スイッチ操作後 5秒間バックライトが点灯する。


【RS-232C 設定】

 送信タイミングを

 ・1秒毎
 ・10秒毎 Ver 8.20
 ・1分毎
 ・1時間毎
 ・MK(マーク操作時)

 から選択可能。「MK(マーク操作時)」については後述。


【タイマー設定】

 ・ 3分 〜 120分(定時間測定)
 ・ 100カウント(誤差±10% の定カウント測定)
 ・ 1000カウント(誤差± 3% の定カウント測定)
 ・10000カウント(誤差± 1% の定カウント測定)

 から選べる。


表示データ、機能説明:

 表示画面の一覧はこちらをご参照。


【最新 CPM 値】 (Latest CPM、L表示)

 サンプリング時間で指定した秒数ぶん直近の CPS から計算した単純移動平均値。60秒未満のサンプリング値を指定した場合は 1分あたりの換算値に自動的に変換する。

 第 1アラームを設定している場合はこの CPM 値でアラーム発動が判断される。


【対基準値比】

 あらかじめ設定した CPM 値(基準値)に対する比を表示する。最新 CPM 値、累積平均 CPM 値(タイマー測定結果を含む)に対してこの値を表示可能。

表示形式は多くの場合「x」が付いた数値表示になる。


【累積平均 CPM 値】 (Averaged CPM、A表示)

 測定開始からの総カウント数 / 測定開始からの総分数、で計算した値。十分な時間計測すればより正確な CPM 値が出る。


【累積平均 CPM の統計誤差】 (Error Rate、E表示)

 そもそも放射性物質の崩壊はランダムに起こる現象であり「ポアソン分布」になる、と教科書に書いてある。実は管理人は高校・大学ともに数学が赤点スレスレという輝かしい経歴の持ち主のため(ホントだよ)、リクツは理解不能だが結論はなんとか理解できた・・・つもり。

 管理人の理解では、

 ・カウント数が増えれば増えるほど CPM 分布は正規分布に近づく。
 ・正規分布の真ん中が採用すべき CPM 値。
 ・どれだけ綺麗な正規分布になったかの指標を 1/√(カウント数)で計算できる。
 ・この指標が小さければ小さいほど CPM 値の誤差が小さくなる。
 ・この「指標」は、確度相対誤差歪度、標準偏差を誤差表記したもの、などサイトによって表記が様々

 いずれにしろ、測定カウント数から CPM 値に対して統計学的に一定の裏づけを与えることができるわけだ。

 そこで誤差表示を実装してみた。もちろん、測定カウント数が増えれば増えるほど誤差は小さくなるのだが、下記のバックグラウンド測定例からも判るとおり、現実に測定できる時間内では(←ここ重要)理論上の計算値よりも実際のデータの収束(安定)具合をグラフで確認した方が納得感が得られる場合もあるので、誤差表記は目安程度にする程度が良いと思われる。

 ちなみに平方根計算は近似法で実装したが 64 bit のアセンブラ演算に収める都合上、小数点 2位までしか計算していない。したがってパソコンで計算した値とは微妙に異なるのだが、そこらへんのツッコミは無し方向でどうかひとつ。あくまでも目安なのだから ^^;


【過去データ推移グラフ】

 以下の 2つのデータを SW2 + SW3 同時押しで切り替えて表示する。

 (1) 生カウント数変動グラフ表示モード

   過去の生カウント数変動を確認するための表示モード。表示されるデータは、

   ・過去10分間の平均 CPM(10分間の生カウント数平均)
   ・カウント開始〜現在までの生カウント数の最小値、最大値
   ・生カウント数の過去 60分間の推移グラフ

    特に 10分間 CPM 値はそこそこの精度が得られ、最大カウント数や最大測定時間をオーバーしても値がクリアされない「エンドレス仕様」。RS-232C にも毎分毎に送出されるため長期観測にオススメ。

    また生カウント数の最小値・最大値をあらかじめ測っておくことで CPM 値の変動幅を把握するのに便利。

    また市販のガイガーカウンターにはカウント数変動を監視して、大きな変動があった場合は自動的にデータをリセットして再測定を開始するものがある。本プログラムでは自動リセットは行わないが、この過去データ推移グラフでデータリセットが必要かどうかは判断できる。


 (2) 累積平均値変動グラフ表示モード

   累積平均 CPM 値の変動幅と推移から、値が十分に「収束したか」を確認するためのモード。表示されるデータは、

   ・過去40秒間の累積平均 CPM 値の変動幅 (Deviation: Dev 表示)
   ・累積平均 CPM の統計誤差 (E 表示)
   ・累積平均 CPM 値の40秒間の推移グラフ
   ・カウント開始時〜現在までの累積平均 CPM 値の最大値、最小値

   一般的には累積平均 CPM 値の変動幅が小さければ小さいほどデータの信頼度が上がる。この変動値と統計誤差から十分な時間測定したかの目安が得られる・・・ハズ。

  ちなみに累積平均値が過去 40秒ぶんと中途半端なのはメモリが足りずに 40秒ぶんのバッファしか確保できなかったから ^^;


【累積線量値】 (Dose、D表示)

 オマケ機能その1。

 カウント開始からの総線量を表示する。計算にあたってはバックグラウンド設定値(後述)を引いて計算される。

 表示は Sv, mSv, μSv から最適な単位を選んで表示する(オートレンジ)。

 この値は、電源 OFF 時、再測定開始時、タイマー測定開始時に次項の「総累積線量」に自動的に加算され、EEPROM に保存される。


【総累積線量】 (Total Dose、T表示)

 オマケ機能その2(汗)

 前回測定までの全ての積算線量を加算した値を表示する。

 値はマニュアルでリセット可能。


【最大測定時間】

 RS-232C 接続で長時間モニタリングする場合を想定し、総カウント数が 99999999 を超えるか約4660時間(約194日)までは連続測定できる。これを超えた場合は RS-232C にオーバーフローした旨のメッセージを送出し、総測定時間、総カウント数、累積平均 CPM を初期化するが、動作自体は継続する。


【測定最大カウント数】

 ソフトウエアの仕様上、CPS、CPM ともに 16bit(=65,536)としてプログラムを作成したのだが、実際にどの程度のカウント数まで追従できるかを検証してみた。方法は GPS 接続あり、1秒毎のデータ送出、という一番処理が重い状況で、ファンクションジェネレーターから 1KHz (= 1000cps = 60000cpm)の正弦波を注入。

 その結果、60000 カウントでも追従することが確認できた(写真参照)。まぁ 100% アセンブラでプログラミングしているので、割り込み処理も極めて短時間に済ませられるメリットがこのあたりで活きている。もちろん取りこぼしは完全に 0 ではないが、ドロップ率は 0.1%(=1000カウントに1回)程度と十分無視できる値。1秒毎にやや重い割り込み処理(60秒ぶんのバッファデータ更新)が入ることを考えれば管理人的には納得できる結果だ。

 もちろんこれはソフトウエア単体としてのポテンシャルであり、「システム全体」として 60000 CPM まで測れることを保障するものではない。例えば実際の放射線は等間隔ではなくランダムにやって来るので「実質的な打ち止め」はもっと低カウントで起こるはずだし、ハードウエアの要因も大きいだろう。

 具体的には、

 ・高圧発生回路のスタミナ(頻繁に放電しても安定に高圧を維持できるか)
 ・パルス検出回路(応答性、変に波形をなまらせたり延ばしたりしていないか)
 ・GM 管の dead time

 等が考えられる。ここらへんはいずれハードウエア編で考察してみたい。

 ちなみに LND712 の場合、60000 CPM ≒ 0.48 mSv/h = 4.27 Sv/y。原子炉建屋内ではスペック不足で使えません ^^;


【バックグラウンド補正機能】

 GM 管自体のバックグラウンド(放射線が検出されなくても勝手にカウントしてしまう数)を引く機能。20cm 以上の大型管はバックグラウンドが大きいので、この機能でカウントの純粋な増分だけを浮かび上がらせるのに使う。0〜9999 まで設定可能。

 この値を 0 以外に設定すると多くの計算(アラーム値チェックやμSv/h 換算を含む)がこの値を引いた後に行われる。この値は GM 管の種類や個体差、高圧回路の出来栄えによって変わってくるので、最初のうちは 0 にしておき、必要に応じて設定するのを推奨。自然放射線をシャットアウトできる環境(鉛箱や厚手のコンクリ箱)が用意できるなら積極的に利用したい。(参考

 なお過去データバッファにはこのバックグラウンドを引く前の「生カウント数」が保存されるので、この値はいつ変更しても過去データ(過去 10分間平均 CPM や総カウント数)には影響が出ない。

 ここらへんの関係はわかりづらいので、ここで設定した値が影響を与える範囲をまとめておく。

バックグラウンド設定値により影響を受ける ・通常 CPM とその最小値、最大値
・累積平均 CPM とその最小値、最大値
・ホットスポットスキャンモードのバーグラフ
・上記各 CPM から計算される基準値比・μSv/h 値・年間線量値、統計誤差
・累積線量値、総累積線量値
・2色 LED 簡易表示の色(アラーム 1 設定値に対する比率)
バックグラウンド設定値には影響されない ・最大 CPS
・過去 10分 CPM
・過去生カウント値(推移グラフ)
・過去 1時間カウント数
・タイマー測定でのカウント数


【基準 CPM 値コピー機能】

 いろんな場所・検体の CPM 比を次々に測っていく際に便利な機能。画面に表示している CPM 値を 基準 CPM 値へ一発でコピーしてくれる。

 コピーされる値は表示モードによって異なるので、どの CPM 値がコピーされるかは下記画面およびキー操作仕様表を参照。


【タイマー測定機能】

 データをリセットし、指定時間もしくは指定カウント数を計測後、累積平均 CPM 値を表示すると同時に自動的に RS-232C へデータを送信する。この際、後述のマーク機能と同様、T00001 と番号を振ったデータが送信される。

 測定終了後はキー入力待ちになるので、タイマースタート後は放置しておいても結果を確認できる。また 8 x 2 LCD でも必要なデータが確認できるよう、キー操作で表示データのレイアウトを変更することができる。

 また SW3 を長押しすることで測定結果を基準値に一発コピーすることも可能。ここらへんの使い方は測定編も参照。


【定カウント測定機能】

 一定時間ではなく一定カウント数の測定を行い、CPM を計算する測定法。統計的な誤差を指標にした測定を行う際に利用すると便利。

 具体的には、カウント開始後、誤差 3%(1000 カウント)、誤差 1%(10000カウント)に到達した際の CPM 値と到達時間を自動的に保存・表示する(事前設定不要)。

 また誤差 10%, 3%, 1% を選んでタイマー測定することもできる。ただし前述のバックグラウンド補正機能には対応しておらず、あくまで生カウント数ベースで測定される点には注意。

 ちなみに定カウント未到達の場合は「-----cpm ----:--:--」表示となる。


【マーク機能】

 例えば車での移動測定のように長時間ログを取る場合は測定ポイント数が膨大になり、本当に必要なポイントが埋もれてしまいがち。エクセルやエディタで絞り込むにしろ Google Maps/Earth に読み込ませて編集するにしろ面倒極まりない。

 そこでこのマーク機能の出番。SW2 を押すと RS-232C から送出されるデータの末尾にポイント番号が付加され、後から必要なデータだけを容易に絞り込むことができる。またおまけのログデータ変換プログラム make_kml.pl ではこのマークが付いたポイントだけを Google Maps 用 kml データにコンバートすることも可能。

 またさらに一歩進んだ機能として、RS-232C 送出設定を「MK」(マーク時)にしておくと、SW2 を押した時だけポイント番号が付加されたデータが RS-232C に送出される。これなら余計なログデータを溜め込むことなく、狙った場所のデータだけをロギングすることができる ^^v

 マーク番号は M00000 〜 M65535 まで。使用済みのマーク番号は EEPROM に記憶されるので、ひと回りするかマニュアル操作でリセットしない限りは番号がカブったりすることはない。また後述のおまけプログラム(kml コンバーター)ではこの値が自動的にポイント名として採用される。

 なおマーク機能自体は GPS が接続されていなくても動作する。OpenLog やパソコンを接続しておけばメモ感覚で使用できる。


【マーク番号リセット】

 EEPROM に保存されているマーク番号をリセット(00000 に戻す)する。


【総累積線量(Total Dose)リセット】

 EEPROM に保存されている総累積線量を 0 に戻す。


【アラーム機能】

 アラーム設定値以上の値が連続 5秒間続くと以下の状態になる。

 ・LED(赤)連続点灯
 ・画面上に「ALERT !」を点滅表示
 ・ブザーを連続で鳴らす(ブザー常時 OFF 設定時を除く)

 ただしサンプリング時間に到達するまでの値はアラームは発動しない。


【ホットスポットスキャンモード】

 値の正確さよりも応答性を重視した「ホットスポット探し」の専用モード。

 ポイントはサンプリング時間を短くしてあること(参考)。具体的にはホットスポットスキャン用サンプリング時間(1〜6秒設定可)で計算した CPM 値(バックグラウンド設定値による補正あり)から、第 2アラーム設定値に対する比を計算し、バーグラフとサンプリング時間中のカウント数を表示する。これに加えて 2行目には過去 20秒ぶんの生カウント数 (CPS) 推移をグラフ表示し、より反応を確認しやすくする。

 応答性はスキャン用サンプリング時間に左右される。LND712 や SBM20 なら 2〜3 秒推奨。

 なにぶんサンプリング時間が短いのでバーグラフは素早く反応する。もちろん敏感になっているぶん「偽ホットスポット」を検出する可能性も高くなるが、反応に再現性がなければ無視し、逆に再現性があるなら正確さ重視の通常モードでじっくりと測定すれば良い(例えばそのままタイマー測定を開始するとか)。

 またこのモードでも通常 CPM(L 表示)と通常の累積平均 CPM(小数点表示)が表示されるし、RS-232C には通常通りのサンプリング時間で計算された CPM 値が送出されるので、ホットスポット探しをしつつ、裏で通常測定も可能になっている。

 で、早速線源(ラジウムを含む放射性セラミック:β崩壊メイン、LND712 で 1000 CPM 程度)を使って試してみた。実装(β線の遮蔽状態)にもよるが、LND712 や SBM20 だとかなりゆっくりめに GM 管を動かさないと反応を検出できない印象。逆にバックグラウンドが 80 CPM 程度ある大型管(CTC-6、β線検出可、ケーシングしていない GM 管剥き出し状態)ではかなり効果的だった。LND7317 のようなパンケーキ型 GM 管を使えばハンディさと感度が両立した面白い実装が可能だろう。

 ところでブザー音があればわざわざこんな機能は不要、と思う御仁も多かろう。だが実際の測定では音を消したい場合がある(人目が気になる場合)のと、CPS 推移によって偽ホットスポットをある程度見分けられそうなので(検証中)実装している。


【2色 LED による簡易表示】

 このプログラムでは LCD は必須ではない。最初に LCD とスイッチを繋いで初期設定を済ませた後は、ブザー音と 2色 LED による簡易的な表示にしてしまうこともできる(実装例)。

 2色 LED は下記の状態を表す。緑 LED 点滅で正常動作を確認できるので LCD が無くても意外に使える。

最新 CPM 値 / 第 1 アラーム CPM 設定値 LED 点灯状況
24% 以下 点滅
25-49%
50-74%
75% 以上


 なお、サンプリング時間経過前もしくは ALM1 が OFF 設定の場合は緑点滅となる。


【データの表示桁数】

 8 x 2 LCD に対応するため表示桁数(や小数点表示)は適宜自動的に変更される(オートレンジ)。

 例えば累積平均 CPM は 100 CPM 未満なら小数点 1位まで表示、100 CPM 以上は整数表示となる。また総測定時間も 24時間未満なら時:分:秒の表示(23:59:59)、24時間を超えたら日:時表示(1D00H)になる。


【電池電圧監視機能】

 電池仕様向けの機能。Active 時 L になるリセット IC の接続を想定。

 PORTE3 が L で 5 秒間続くと下記状態となる。

 ・画面に「Low Bat.」を点滅表示
 ・10秒毎にブザー音を鳴らす(ブザー設定が常時 OFF でも鳴る)
 ・アラーム LED (赤)を点滅
 ・2分後、自動的に電源 OFF


【RS-232C コマンド】

 RS-232C 経由で下記コマンドを送ることができる。こちらのような外部機器やパソコンからガイガーカウンターをコントロールすることが可能。

 (1) /R :データリクエスト。その時点のデータを返す
 (2) /C :全データクリア〜カウントリスタート
 (3) /B :ブザーモード切り替え

 上記コマンドはデータ送出タイミングの設定状態に関わらず、常時受け付ける。

 /R コマンドは長時間観測に便利なコマンド。いくらクリスタルをクロック源にしたところで長時間動作させればいずれは時刻誤差が出てしまう。そこでデータ吸い上げ側(NTP 接続されたパソコン等)から /R コマンドを送ることで正確な時刻にシンクロしたデータを拾えるようにしている。この場合、ガイガーカウンター側のデータ送出タイミング設定は「MK」設定にしておくと無駄にログが溜まらずに済む。


 コマンド使用時の注意点:

 ・本プログラムは受信文字をエコーバックしないので必要なら通信ソフト側でローカルエコー設定すること。
 ・本プログラムにコマンドを送る際は、必ず SHIFT-JIS 改行コード (&H0D, &H0A)が送信されるよう設定すること。
 ・本プログラムはバックスペースコード非対応。コマンドをタイプミスしたら一度改行して再度コマンドを送出すること。


【RS-232C 出力】

 プロトコルは 9600bps, 8bit, Stop bit 1、パリティ無し、フロー制御無し。あらかじめ指定されたタイミングで下記フォーマットで送出する。

送出データ:

 ・総測定時間(時:分:秒)
 ・CPS(5桁)
 ・CPM(5桁)
 ・累積平均 CPM 100倍値(7桁)
 ・過去10分間平均 CPM 値(5桁)
 ・過去 1時間カウント数(8桁)
 ・総カウント数(8桁)
 ・CPM の対基準値比 100倍値(6桁)
 ・CPM のμSv/h 換算 100倍値(10桁)
 ・GPS 日付 (JST) Ver 8.10
 ・GPS 時刻 (JST)
 ・緯度
 ・南北方位
 ・経度
 ・東西方位
 ・GPS データ品質
 ・マーク番号もしくはタイマー番号もしくは何らかのエラーメッセージ
 ・改行コード(&H0D &H0A)

 データ区切りは ','(カンマ)。桁数が余っている部分にはスペースが入る。また GPS 未接続時は GPS 関連データ部分にスペースが入る。

出力例 12345:67:89,65536,65536,6553500,65535,999999999,99999999,123456,1234567890,2012/01/01,23:59:59,+35.000000,N,+140.000000,E,1,M00001(改行)


 ほとんどのデータは毎秒毎に再計算されるが、10分間平均 CPM と過去 1時間カウント数は 1分毎更新なので注意。

 なおデータの出力フォーマットを特定ソフト用に合わせていないのは将来を考えてのこと。放射線との戦いはこれから数十年続くわけで(逝)、将来のパソコン・OS・ソフト環境がどう変わっても間違いなくデータを読めるよう、ベタのテキストフォーマットにしている。


【GPS】 Ver 8.10

 NMEA-0183 フォーマットでデータ長固定のもの限定。動作確認が取れているのは秋月で売っている GT-723F

 GT-723F は購入直後の状態で、$GPGGA、$GPVTG、$GPRMC の 3種類のデータを送ってくる。

「GPS Viewer」なるツールを使えば吐き出すデータの設定を変更できそうだったので、日付データを含む $GPZDA を出力するよう設定変更を試みたのだが、結論としてはどうやっても $GPZDA データを出力させることはできなかった。そのため止む無く GPS 日付データ非対応としていたのだが、開発元のダウンロードサイトから「ZDA output.rar」をダウンロードして GT-723F のファームウエアを更新すれば $GPZDA データを無事取得できることが確認できたので、Ver 8.10 以降でこの日付データに対応することにした。

 GT-723F の具体的なファームウエア更新手順は「ZDA output.rar」内の PDF ファイルに記載されているのでそれに従えば OK。ファームウエア更新後はデフォルトで $GPZDA データが出力されるようになる。なお、GT-723F のファームウエア更新をしなくても GPS 日付データが空状態になるだけでその他の動作に支障は無い・・・ハズ。


 $GPRMC データに日付データが含まれていることに遅まきながら気付いたので(汗)、Ver 8.10 以降は日付データにも対応した。


【GPS 接続時の送出データ】

 GPS を接続すると送出データに日付・時刻・位置情報が付加される(下記参照)。

 時刻データは日本標準時(JST)に、位置情報は Google Maps でそのまま読み込めるフォーマット(小数点 6位までの「度」表記)に変換されて送出される。


【OpenLog へのロギング】

 このプログラム自体は設定された間隔で RS-232C へデータを送出するだけでロギング機能を有していない。そこで超小型、低価格の「OpenLog」に対応することにした。

 OpenLog は超小型でたったの 2500円ポッキリ。自分でゼロから作るよりも手っ取り早い(汗)。この製品を見つけた時、速攻で 3個もポチっとな、していた(爆)。国内ではスイッチサイエンスや千石電商から入手可能。

 ただ、問題点もあった。OpenLog は電源 ON で自動的にロギングを開始してくれるのはいいのだが、電源断時の挙動がマニュアルに記載されていない。常識的に考えるなら OpenLog が SD カードの FAT を書き換えている時に電源を OFF にすると最悪 SD カード内の全データをスッ飛ばしかねない。

 OpenLog のマニュアルによると、SD カードへの書き込みタイミングは、

 ・512バイトの受信バッファが満タンになった
 ・満タンでなくても受信バッファ内にデータがあるなら 5 秒毎

 となっている。ガイガーカウンター側のデータ送出タイミングを長めに設定することでクラッシュ確率を大幅に下げることができるが、100% 防げる保障は無い。手間隙かけて測定しに行った挙句にデータロストしては泣くに泣けないので、何らかの対策が必要なのは明らかだ。

 そこでいろいろと試した挙句、結局は所定のデータ(Ctrl-Z x 3)を送って OpenLog をコマンドモードに落とすことにした。ガイガーカウンターの電源を OFF する際に自動的にこの処理を行うので、データをロストする心配は無い・・・・ハズ・・・タブン。(実際、管理人的にもデータロストの経験は未だ無い)


【電源処理】

 OpenLog のファイル保護のため、ソフトウエアで電源を ON/OFF する。

 電源 OFF 時に PIC は SLEEP モードに入る。電池仕様の場合は DC/DC コンバーターが動作したままになるので回路図どおり別途ハードウエア電源スイッチを設けるのもアリ。


【致命的エラー発生時の処理】

 1. 致命的タイムアウト

 本プログラムでは必ず 1秒以内に終えなければならない処理(過去データバッファの更新とか)がある。何らかの原因でこの処理が間に合わなくなると計算処理が破綻するので、このような「致命的タイムアウト」を自動的に検出し、

 ・画面に「TIME OUT (FATAL). PUSH SW4」とエラー表示
 ・アラーム LED 連続点灯
 ・RS-232C にエラーメッセージを送出
 ・SW4 の長押しを待って完全リセット

 となるようプログラムした。

 とはいえ、実は一番処理が重い状態においても 65,000 CPM を処理可能(実測検証済み)なので、このエラーが出ることは基本的に無い・・・・ハズ。


 2. GM 管飽和

 とある電子工作の集まりで、極めて高線量になると GM 管がほぼ連続放電してパルスが発生しなくなり、実際は超高カウントなのにカウントが進まなくなった、という話を聞いた(その方はガイガーカウンターに X線検査装置で X 線を照射してそのような結論に至ったそうである)。

 さすがに管理人は X 線検査装置が使える環境には無いので真偽を確認できないのだが( X線による CMOS 誤動作の可能性もある)、しかしながら少なくともそのような状況が発生したとすれば測定者にとって極めて危険であることは間違いない。

 そこで本プログラムではパルス検出ポートを監視し、パルス検出状態が異常に長い(連続 5秒間ずっとポートが L 状態)場合は致命的エラーとみなすことにした。

 この場合、

 ・画面に「GM TUBE SATURATED」とエラー表示
 ・アラーム LED 連続点灯
 ・RS-232C にエラーメッセージを送出
 ・SW4 の長押しを待って完全リセット

 となるようプログラムした。

 もちろん、上記2つの致命的エラーが発生することはまずないと思う(管理人もこのような状態を見たことが無い)。本来なら「想定外」として実装する必要は無かったかもしれない機能だ。だが「想定外」とすることがいかに危険なことか、が今回の原発事故から多大な犠牲を払って我々が得た最大の教訓のはず。我々はこれを真摯に受け止めなければならない・・・。そんな自戒の念を込めて実装してみた。

 ま、エラソーなことを書いたが、実際問題、不測の事態に対する備えがあれば精神衛生上だいぶ気が楽なのではないかと ^^;


画面モードおよびスイッチ操作仕様:

通常押し:0.5秒、長押し:通常 1.5秒、電源 OFF のみ 2秒

画面表示 表示データ SW1 SW2 SW3 SW4 SW2 + SW3
同時押し
通常押し 長押し 通常押し 長押し 通常押し 長押し 通常押し 長押し
1行目:累積平均 CPM、対基準値比 or 時間線量 or 年間線量

2行目:総測定時間、エラーレート
画面表示切替 設定モードへ データマーク タイマー測定開始 ブザーモード切替 累積平均 CPM を基準値コピー 全データクリア
〜再測定開始
電源
ON/OFF
比・μSv/h・μSv/y
表示切替
1行目:最新 CPM、累積平均 CPM

2行目:対基準値比 or 時間線量 or 年間線量、総測定時間
最新 CPM を基準値にコピー

20 x 4 LCD 用レイアウト


16 x 2 LCD 用レイアウト
ホットスポットスキャンモード

20 x 4 LCD 用レイアウト時:

1行目:リアルタイムバーグラフ、サンプリング時間内カウント数、サンプリング時間設定値

2行目:20秒間 CPS 推移グラフ

3行目:通常 CPM 値とバーグラフ、データ送出設定状態

4行目:累積平均 CPM 値とバーグラフ、GPS 状態


16 x 2 LCD 用レイアウト時:

1行目:リアルタイムバーグラフ、通常 CPM 値

2行目:8秒間 CPS 推移グラフ、累積平均 CPM 値
RS-232C データ送出
設定ワンタッチ切り替え
(1秒毎⇔MK時)
表示レイアウト切り替え

(モード1:生カウント数推移グラフモード )


(モード2:累積平均 CPM 変動幅推移グラフモード)
モード1:
10分間 CPM、最小 CPM、最大 CPM、
1分間生カウント数推移グラフ

モード2:
累積平均 CPM 変動幅、エラーレート

過去40秒累積平均 CPM グラフ

最小累積平均 CPM、最大累積平均 CPM
10分間 CPM を基準値にコピー 表示モード切り替え
1行目左:最大 CPM、右:最小 CPM Ver 8.20
2行目:最大 CPS
最大 CPM を基準値にコピー (無効)

総カウント数モード


エラーレートモード
1行目:総カウント数 or エラーレート

2行目:総経過時間
(無効) 総カウント数⇔エラーレート
表示切替
1行目:累積線量値

2行目:総累積線量値
(無効)
誤差 3% CPM と到達時間、
誤差 1% CPM と到達時間

(10分間平均 CPM 表示モード)

(累積平均 CPM 変動幅表示モード)
累積平均 CPM、最新 CPM、
総測定時間、全カウント数
10分間平均 CPM、生カウント数推移グラフ

または

累積平均 CPM 変動幅、累積平均 CPM 推移グラフ
最新 CPM を基準値にコピー 比・μSv/h・μSv/y
表示切替
GPS 位置情報、GPS 年月日 Ver 8.10、GPS 時刻、
累積平均 CPM、
最新 CPM
総測定時間、
総カウント数
(無効)

表示レイアウト1


表示レイアウト2


表示レイアウト3


表示レイアウト4
タイマー測定結果表示モード

マーク番号、累積平均 CPM、対基準値比、時間線量または年間線量、カウント数
測定画面に戻る (無効) タイマー測定結果を基準値にコピー (無効) 電源 OFF 画面レイアウト変更
基準 CPM 値設定 画面表示切替 データ表示モードへ 値↑ (無効) 値↓ (無効) 設定実行 電源
ON/OFF
(無効)
バックグラウンド値設定
通常測定用
サンプリング時間設定
ホットスポットスキャン用
サンプリング時間設定
アラーム 1 設定
アラーム 2 設定
CPM → μSv/h 変換係数設定
GM管電圧設定
RS-232C 送信間隔設定
バックライト設定
ブザー頻度設定
タイマー設定
マーク番号リセット (無効) (無効)
総累積線量リセット


重要:μSv/h 換算について

 μSv/h 値、年間線量(μSv/y 値)、累積線量(Sv 値)はあくまでオマケの機能。使用にあたっては要注意。

 まずアタマに入れておくべきこと:

 ・そもそも GM 管が検出できるのは入射した放射線の「数」であって「強さ」ではない
 ・放射線の持つエネルギーは核種(134Cs とか 137Cs とか)毎に異なる。すなわち 60Co での換算値は 137Cs では使えない。
 ・放射性物質が放つ放射線のエネルギー分布に対して GM 管の感度は一定ではない。例えば SBM20 は 40K のγ線エネルギー分布と GM 管の感度分布がよく適合しており高感度に 40K γ線を検出できるが、137Cs のγ線エネルギー分布とはかなりのズレがあり、137Cs に対しては感度が低い。(情報元
 ・吸収線量はγ線のみで測らねばならない。測定にあたっては適切な遮蔽が必要。(参考サイト:こちらこちらこちら
 ・放射線の強さが同じあっても組織毎に吸収線量は異なる

 以上より、GM 管による計測の結果はあくまで「CPM の相対比」で考えるべきで、μSv/h の「絶対値」で考えるべきではない(他の製作例やオークション出品のキット、あるいはネットでの個人作成汚染マップを見ていると、安易に μSv/h 表示している例が非常に多い・・・)。


 どうしても μSv/h 値が知りたいなら最低限、エネルギー補償機能付きで、かつキチンとキャリブレーション(校正)された線量計を買うべき。

 ただし、

 1. 137Cs でキャリブレーションができている、もしくは GM 管の 137Cs での CPM → Sv/h 変換値がデータシート等で判っている
 2. 環境放射線が主として 137Cs(と 134Cs)由来
 3. ちゃんとβ線を遮蔽して測定する

 これらの条件が満たされるなら GM 管でも μSv/h 換算値はある程度の目安にはなるかもしれない。

 なお、ホットスポット探しに関してはこちらこちら(時定数について)が参考になるだろう。また各 GM 管の CPM 値 → μSv/h 値への換算値についてはこちらにまとめておいた。

 ちなみに管理人的は(シンチレーター式も含めて)自作品で正確な線量を求めるのは無理だと思っている(137Cs の標準線源にアクセスできる人は稀だろう)。それに現在(2011/12 時点)では自治体がそれなりの高級機で線量測定をしているので、あえて自作品に正確性を求める必要はもはや無いと考えている。

 むしろ我々が留意しなければならないのは、原発事故のように様々な核種がバラ撒かれた可能性がある場所でγ線だけを測ってどれだけ意味があるのかという点。またホットスポットに住み続ける場合に受ける放射線は、空間からのγ線による外部被曝に加えて、風で舞い上がった土埃を吸い込むことによる内部被曝なども考慮しなければならない。ここらへん、完全防備状態でごく短時間だけ測定を行う「お客さん的な測定」とは事情がまったく異なるわけで、いくら空間のγ線エネルギーを正確に測ったところで、所詮正確な被曝線量は判らない。

 それならばむしろ GM 管でα線やβ線も積極的に拾い、マイクロ・ホットスポット探しに使うのが自作ガイガーカウンターの正しい使い方ではなかろうか。

 あと、最近流行りつつある自作シンチレーター式線量計だが、エネルギースペクトル分析〜核種同定できるまでに仕上げないと魅力が無い。定量分析はムリとしても、定性分析さえできれば利用価値は極めて大きいし、同様の市販品が高価なだけにコスト的にも十分旨味がある。


おまけ:Google Mapas 連携用 kml ファイルコンバータープログラム「make_kml.pl」

 本プログラムが吐き出したデータを Google Maps で読める kml ファイルへ変換するプログラム(perl スクリプト)を zip ファイルに入れておく。

 ガイガーカウンター Ver 8.10 以降は GPS 日付データに対応したため、 make_kml.pl も ver 1.3 以降で対応している。


【使い方】

 Windows ならコマンド窓で

perl make_kml.pl (オプション)

 とする。引数はいずれもオプション。ログデータはカレントディレクトリの下の Log ディレクトリに入れておく。(もちろん、このディレクトリは適宜自分の動作環境に合わせて変更しても構わない)

 このスクリプトは Log ディレクトリにある .txt ファイル(複数ファイル OK)から有効なデータを抽出・変換し、1つの kml ファイルにまとめて標準出力に吐き出してくれる。

 ファイルに落としたい場合は、

 perl make_kml.pl > test.kml

 といった具合に適宜リダイレクトするべし。


 使用例: perl make_kml.pl -c:100 -m -t:2.0 -a > drive.kml

 (↑= 100m以上離れていて、マークされていて、対基準値比が 2.0 以上のポイントから累積平均 CPM を抜き出して kml 変換し drive.kml に吐き出す)


コマンドオプション(いずれも省略可)

-c:distance distance で指定した距離(メートル、1以上)以内のポイントを無視する。
データを一定距離毎に間引きするのに便利。
ただしマークが打たれたポイントはこの設定の影響を受けず常に変換される。
-a 累積平均 CPM でデータを作成する。
タイマー測定などで累積平均測定をした場合はこのオプションを使用すると便利。
-10min 10分間 CPM でデータを作成する。
-m マーク機能で印を付けたポイントだけ変換する
-t:ratio ratio で指定した対基準値比を閾値として、その値(閾値、threshold)以上のポイントだけ変換する
-u Unified points ファイルを変換する
-r:reference reference で指定した値 (CPM) で比を計算しなおす
-v ポイントを無視した場合にその理由を表示する
-h or -? or ? ヘルプ


 作成された kml ファイルを Google Maps のマイプレイスにインポートすれば汚染マップのできあがり。


【変換処理概要】

 所定の緯度、経度上に CPM 値、対基準値比、測定日とマーク番号を埋め込んだバルーンを設置する(スクリーンショット参照)。前述の通り Google Maps に μSv/h 値をインポートするのは禁じ手とし、本変換プログラムではあくまで CPM 値と対基準値比のみをコンバートしている。なお、読み込んだデータ中、GPS データが無い(座標データが無い、受信品質が悪い)ものはスキップされる点に注意。

 抽出・変換されたポイントは、kml ファイルとは別にカレントディレクトリの Unified_points.txt にまとめられる。これをエクセルで読み込んで編集し -u オプションで kml に変換すると作業効率が上がる。

 各ポイントのバルーンは、対基準値比により Google Maps 標準の 7色バルーンに振り分けられる。ポイント名はマーク番号のカラムから取得するので、変換前にあらかじめエクセルで適切なポイント名を書いておくと便利。

 ここらへんの処理にご不満がある御仁、あるいはもっと高度な可視化をしてやるぜ、というアグレッシブな御仁はプログラムを改変するなり、cgi に流用するなり、別アプリを開発するなりして楽しんでいただきたい。どのみちガイガーカウンターからは生カウント値が送られてくるので、パソコン側でデータ処理するならどのような計算でもやりたい放題である。


【Google Maps の仕様制限】

 マイプレイスに登録できるのは最大 1000ポイントのようなので、変換後のポイント数が 1000 を超える場合はワーニングを出すようにしている。また画面に一度に表示できるのは 200ポイントまでの模様。使い勝手を考えると 200 ポイント以内に納めるのがオススメ。

 どうしても 1000 以上のポイント数を扱いたい場合はまっとうに Google API を使う必要があるようだ。


【Tips:車移動測定】

 測定編をご参照。


プログラム:

 ヤフオクを見ていると(管理人の設計物ではないが)他人の作品を勝手にキット化して儲けている輩がいるようだ(2011/06 現在)。管理人はフトドキ者を儲けさせるのは本意ではないので、プログラムは残念ながらしばらく非公開とする。ただしいずれは公開する予定。

 2011/08、オークション方面もだいぶ落ち着き、マトモなキットも多数発売されるようになったので、HEX ファイルを公開する。もちろん、いかなる商用利用も一切禁止

プログラム

ファームウエア
(PIC16F1938 用 HEX ファイル)

(初期設定値: GM 管 = SBM20)

v8.30→v8.32 変更点:

/R, /C, /B コマンドをちゃんと受け付けるよう修正
Ver 8.32 2013/03/24
Version Up !
GC_v8.32.zip

(外部プルアップ版のみ)

KML コンバーター perl スクリプト

make_kml.pl

ノンサポート

動作環境を自分で
整えられる上級者向け
Ver 1.6 2012/02/05

パソコンでシリアル入力をロギングする perl スクリプト
(For Windows Active State Perl)

GC_logger.pl

Ver 2.0 2012/02/12
パソコン側データ処理プログラム群
perl 共通サブルーチン

GC_sub.pl

Ver 2.0 2012/02/12
おまけ:

内部プルアップをサポートした最終版
ファームウエア
Ver 7.21 2011/12/30
GC_v7.21.zip


 100% アセンブラで書いたおかげで、これだけの機能を盛り込んでもプログラムメモリは 10 Kバイト強に収まっている。だがファイルレジスタはほとんど使いきった。そもそも PIC で 16bit や 24bit データを盛大にバッファリングすること自体が間違いなのか・・・(汗)


最後に:

 原発事故以来、多くのガイガーカウンターが出回るようになった。だが安価なものはシンプルで判り易い反面、機能不足でいずれ買い替えを迫られるものが多い。

 対して本プログラムはかなりの機能を詰め込んであり、画面モードや設定項目の多さに最初はたぶん戸惑うはずである(ってぉぃ)。

 ただ実装の形態(ハンディ器か固定器か)や LCD の文字数、使用目的(空間線量測定か、ホットスポット探しか、etc)によってメインで使用する画面モードやパラメーターは自ずと決まってくる。

 そして「次はこういう測定がしてみたい」と思った時に、同じ装置・ソフトウエア(=余計なコストをかけずに)が使える・・・、これが本ソフトウエアの目指すところ(設計思想)。今後百年はイヤでも放射線と向き合わなければならないのだから、余計なコスト負担は勘弁である ^^;


謝辞:

 数値演算はこちらを、RS-232C 回りのコードはこちらを参考にさせていただきました。開発者様各位にお礼申し上げます。


2011/08/27 追記:

 とうとう秋月でもガイガーカウンター(完成品)が発売されるようになった。いずれ今時の GM 管を使ったキットが再発売されることを期待したい。


 [電子工作のページへ]