- 1分あたりのカウント数(cpm)をPCへ送る(9600bps)こと
- カウント数を液晶に表示すること
- 検出時にブザーを鳴らし、LEDと液晶の右上に*の表示を点滅すること
ほかのガイガーミュラー管の検出回路にも使えますが、正論理用になっているので、負論理(検出時に電圧が下がる)場合には
while(digitalRead(GM) == 0) {}
を
while(digitalRead(GM) != 0) {}
としてください。回路図とスケッチは以下です。
#include <LiquidCrystal.h> const int GM = 6; const int Speaker = 7; const int LED = 13; LiquidCrystal lcd(12, 11, 5, 4, 3, 2); int count = 0; int cpm = 0; unsigned long t = 0; void setup() { pinMode(GM, INPUT); pinMode(Speaker, OUTPUT); pinMode(LED,OUTPUT); lcd.begin(16, 2); Serial.begin(9600); lcd.print("Geiger Counter"); } void loop() { while(digitalRead(GM) == 0) {} count ++; digitalWrite(LED, HIGH); lcd.setCursor(15, 0); lcd.print("*"); tone(Speaker, 1000, 100); if ((millis() - t) > 60000) { cpm = count - 1; count = 1; t += 60000; lcd.clear(); lcd.print(cpm); lcd.print("cpm "); Serial.println(cpm); } lcd.setCursor(0, 1); lcd.print(count); delay(100); lcd.setCursor(15, 0); lcd.print(" "); digitalWrite(LED, LO); }
正常な動作のはずですが、測定してみると、ばらついてるようにみえてしまいます(測定条件は鉄筋コンクリートの建物の室内、キット附属の赤い蓋をつけたまま)。グラフの縦軸の単位はCPM、横軸の単位は分です。測定値の平均は17[cpm]、分散16で、108カウント=1μSv/hで換算すると0.15[μSv/h]ぐらいになります。
10分間で移動平均を取るとこんな感じです。
0 件のコメント:
コメントを投稿