左邊的是PocketGeiger,拿來和Arduino蓋格計數器做比較
蓋革管是一種可以檢測輻射線的管子,通一個高壓電之後,如果有輻射線(看管子可以檢測哪幾種)進到管中,會電離內部的氣體,造成瞬間的導通,在另一端產生脈衝的信號,
蓋格計數器就是紀錄這些事件的次數,算出來當下的Count per minute (CPM)每分鐘事件數,就可以利用簡單的式子換算成輻射強度(uSv/h)
現在用的是SBM-20,還算滿普遍的蓋革管,便宜好用XD,可以檢測Beta和Gamma射線
我用http://brohogan.blogspot.tw/2010/02/geiger-counter.html這個人的電路圖,Layout出蓋革計數器最主要的電路板,重點就是,記得用CMOS的555(LM555 or TLC555),NE555是不能用的..Orz
我去光華買的時候到處都找不到QQ,有一家問完LM555拿NE555給我,最後乾脆去RS買TLC555,一個13塊還可以免運費,超棒的
另外就是校正的問題了,基本上這個電路板會產生400v的高壓,但是電流非常非常少,我被電到的感覺沒有Nixie的200v升壓板來的麻.但這也造成再測量電壓的時候需要考慮電表的內電阻,
首先就是先查出來或是量出來電表的內電阻是多少,我自己的電表是10M,
然後量輸出的電壓,量完之後,因為上圖的電路在末端還有兩個共5.7M的電阻,電路圖如下:
Vin是電路板的供應電壓,Vout是電表的電壓,Ra是5.7M歐姆,Rb是電表的內電阻,由此就可以算出來實際的Vin是多少了,蓋革管的電壓太高的話一下子就會故障的
這支SBM-20的建議電壓是400V,調整電路圖的R7就可以了
我自己送洗的電路板長的如下XD,對了,蓋革管千萬別用焊接的,這樣會讓他損壞,用兩個保險絲的Holder剛剛好(我買的是20mm直徑)
接下來就是利用Arduino的外部中斷(INT),當蓋革管有事件時,電路會輸出一的低電壓的脈衝,需要注意的是這張電路板的INT接上Arduino之後,需要一個Pullup才能正常運作
程式就簡單了,架構就是讓每一次INT腳的電壓下降的時候,讓計數器+1
等到一段時間之後計算輸出CPM,再利用下圖的公式計算uSv/h,需要注意的是每一種管子的常數都不一樣,SBM-20的話就用175
程式如下:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
const int alpha = 175;
long count = 0;
long countPerMinute = 0;
void setup() {
lcd.init();
lcd.backlight();
lcd.print("Sbm-20");
digitalWrite(2,HIGH);
attachInterrupt(0,countPulse,FALLING);
Serial.begin(9600);
}
void loop() {
delay(15000);
countPerMinute = 4*count;
float uSv = float(countPerMinute) / float(alpha);
char charBuf[15];
String uSvv = dtostrf(uSv, 5, 3, charBuf);
Serial.println(countPerMinute,DEC);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("CPM:");
lcd.print(countPerMinute,DEC);
lcd.setCursor(0,1);
lcd.print("uSv/h:");
lcd.print(uSvv);
count=0;
}
void countPulse(){
detachInterrupt(0);
count++;
digitalWrite(13, HIGH);
while(digitalRead(2)==0){
}
digitalWrite(13, LOW);
attachInterrupt(0,countPulse,FALLING);
}
不知道為甚麼,這電路做出來有種老儀器老電路的感覺,不知道是不是因為電阻直立看起來滿密集的關係.
沒有留言:
張貼留言