Step 1:工具和零件
原型盒我使用的是Ferrero Rocher糖果盒。
小型面包板
16x2 LCD
220Ω电阻器
DIY盖革计数器套件
跳线
电池连接器或线束
精细钳子
小型标准螺丝刀
第2步:组装Geiger计数器
Geiger Tube有任何损坏;并且你的盖革计数器不起作用,所以使用保护性丙烯酸盖子以防止损坏你的盖革管。
这个Instructable是关于如何用Geiger管破坏修复同一个盖革计数器并安装保护装置丙烯酸覆盖,以防止将来破损。
https://www.instructables.com/id/Repairing-a-DIY-G 。..
步骤3:电气测试盖革计数器
首先使用正确的电源电压; USB线直接从您的计算机提供5伏直流电,但3节AA电池座用于1.5伏碱性电池,总电压为4.5伏。如果您使用1.2伏可充电NI-Cd或NI-MH电池,则需要一个4 AA电池座,总电压为4.8伏。如果使用的电压低于4.5伏,盖革计数器可能无法正常工作。
盖革计数器输出电路很少;所以只要扬声器发出滴答声,并且LED闪烁,就应该在VIN引脚上发出信号。
确保输出信号;通过将示波器探头的正极连接到VIN,将示波器探头的负极连接到地,将示波器连接到输出。
而不是仅仅等待背景辐射来触发盖革计数器I使用来自烟雾探测器离子室的americ -241来增加盖革计数器的反应。 Geiger计数器的输出开始于+3伏特,每次盖革管对α粒子反应时降至0伏特,片刻后返回+3伏特。这是你将用Arduino录制的信号。
第4步:布线
有两种方法可以将Geiger计数器连接到Arduino和您的计算机。
将Arduino上的GND连接到Geiger计数器上的GND。
将Arduino上的5V连接到Geiger计数器上的5V。
将Geiger计数器上的VIN连接到Arduino上的D2。
连接独立电源Geiger计数器。
将Arduino上的GND连接到Geiger计数器的GND。
将Geiger计数器上的VIN连接到Arduino上的D2。
将Arduino连接到您的计算机。
步骤5:代码
打开Arduino IDE并加载代码。
//此草图计算每分钟的脉冲数。
//将Arduino上的GND连接到Geiger计数器的GND。
//将Arduino上的5V连接到Geiger计数器上的5V。
//将盖革计数器上的VIN连接到Arduino上的D2。
无符号长计数;//GM管事件的变量
unsigned long previousMillis;//用于测量时间的变量
void impulse(){//dipanggil setiap ada sinyal FALLING di pin 2
计数++;
}
#define LOG_PERIOD 60000//计数率
void setup(){//setup
counts = 0;
Serial.begin(9600);
pinMode(2,INPUT);
attachInterrupt(digitalPinToInterrupt(2),impulse,FALLING);//定义外部中断
Serial.println(“启动计数器”);
}
void loop(){//主循环
unsigned long currentMillis = millis();
if(currentMillis - previousMillis》 LOG_PERIOD){
previousMillis = currentMillis;
Serial.println(count );
计数= 0;
}
}
在工具中选择您正在使用的Arduino或其他电路板。
上传代码。
在工具中上传代码后,选择串行监视器并观察盖革计数器的工作情况。
寻找故障。关于这段代码的唯一事情就是有点乏味,每次计数必须等待1分钟。
步骤6:Serial.println与Serial.print
这是我在代码中发现的第一个故障之一;所以在你的代码中注意它,“Serial.println(cpm);”和“Serial.print(cpm);”。
Serial.println(cpm);将在每条线上打印每个计数。
Serial.print(cpm);看起来像一个大数字打印在同一行上的每个计数使得无法分辨计数是什么。
步骤7:J305背景辐射测量
首先是背景辐射的测量,即自然存在的自然辐射。列出的数字是CPM(每分钟计数),它是每分钟测量的放射性粒子总数。
J305背景平均计数为15.6 CPM。
步骤8:J305烟雾传感器辐射的测量
Geiger计数器反复给你相同的计数并不罕见,所以检查一下辐射源。我使用来自Americium的辐射测量,来自烟雾探测器的离子室。烟雾传感器利用Americ作为α粒子的来源,使空气中的烟雾粒子电离。我取下传感器上的金属盖,这样α和β粒子就可以与伽玛粒一起进入盖革管。
如果一切正常,计数应该会改变。
来自烟雾探测器离子室的Americ -241平均计数为519 CPM。
步骤9:SBM-20
此Arduino草图是由Alex Boguslavsky编写的修改版本。
此草图在15秒内计算脉冲数,并将其转换为每分钟计数,使其不那么繁琐。
代码我添加了“Serial.println(”Start counter“);”。
代码我改变了; “Serial.print(cpm);”to“Serial.println(cpm);”。
“#define LOG_PERIOD 15000”;将计数时间设置为15秒,我将其更改为“#define LOG_PERIOD 5000”或5秒。我发现计数1分钟,或15秒和5秒之间的平均值没有明显差异。
#include
#define LOG_PERIOD 15000//记录周期(以毫秒为单位),推荐值15000-60000。
#define MAX_PERIOD 60000//不修改此草图的最长记录周期
无符号长计数;//GM管事件的变量
unsigned long cpm;//CPM的变量
unsigned int multiplier;//用于计算此草图中的CPM的变量
unsigned long previousMillis;//用于时间测量的变量
void tube_impulse(){//用于从Geiger Kit捕获事件的子程序
计数++;
}
void setup(){//setup subprocedure
counts = 0;
cpm = 0;
multiplier = MAX_PERIOD/LOG_PERIOD;//计算乘数,取决于你的日志周期
Serial.begin(9600);
attachInterrupt(0,tube_impulse,FALLING);//定义外部中断
Serial.println(“Start counter”);//我添加的代码
}
void loop(){//主循环
unsigned long currentMillis = millis();
if(currentMillis - previousMillis》 LOG_PERIOD){
previousMillis = currentMillis;
cpm = counts * multiplier;
Serial.println(cpm);//代码我改变了
计数= 0;
}
}
SBM-20背景平均计数为23.4 CPM。
步骤10:使用LCD连接盖革计数器
LCD连接:
LCD K引脚至GND
LCD A引脚至220Ω电阻至Vcc
LCD D7引脚至数字引脚3
LCD D6引脚至数字引脚5
LCD D5引脚至数字引脚6
LCD D4引脚至数字引脚7
LCD使能引脚至数字引脚8
LCD R/W引脚接地
LCD RS引脚至数字引脚9
LCD VO引脚调整10kΩ电位
LCD Vcc引脚至Vcc
LCD Vdd引脚连接到GND
电位器10kΩ可调电阻器。
Vcc,Vo,Vdd
盖革计数器
VIN转数字引脚2
5 V至+ 5V
GND接地
步骤11:带LCD的Geiger计数器
//包含库代码:
#include
#include
#define LOG_PERIOD 15000//记录周期(以毫秒为单位),建议值15000-60000。
#define MAX_PERIOD 60000//不修改此草图的最长记录周期
#define PERIOD 60000.0//(60秒)一分钟测量周期
易失性无符号长CNT ;//用于计算剂量计中断的变量
无符号长计数;//GM管事件的变量
unsigned long cpm;//CPM的变量
unsigned int multiplier;//用于计算此草图中的CPM的变量
unsigned long previousMillis;//用于时间测量的变量
unsigned long dispPeriod;//用于测量时间的变量
无符号长CPM;//用于测量CPM的变量
//使用接口引脚的编号初始化库
LiquidCrystal lcd(9,8,7,6,5,3);
void setup(){//setup
lcd.begin(16,2);
CNT = 0;
CPM = 0 ;
dispPeriod = 0;
lcd.setCursor(0,0);
lcd.print(“RH Electronics”);
lcd.setCursor(0,1);
lcd.print(“盖革计数器”);
延迟(2000);
cleanDisplay()
attachInterrupt(0,GetEvent,下降);//引脚2上的事件
}
void loop(){
lcd.setCursor(0,0);//在LCD上打印文本和CNT
lcd.print(“CPM:”);
lcd.setCursor(0,1);
lcd .print(“CNT:”);
lcd.setCursor(5,1);
lcd.print(CNT);
if(millis( )》 = dispPeriod + PERIOD){//如果一分钟结束
cleanDisplay();//清除LCD
//对累积的CNT事件做一些事情。..。..
lcd.setCursor(5,0);
CPM = CNT;
lcd.print(CPM);//显示CPM
CNT = 0;
dispPeriod = millis();
}
}
void GetEvent(){//从设备获取事件
CNT ++;
}
void cleanDisplay(){//清除LCD例程
lcd.clear();
lcd.setCursor(0,0);
lcd.setCursor(0,0);
}
步骤12:文件
将这些文件下载并安装到Arduino。
将每个.ino文件放在一个文件夹中同名。
责任编辑:wv
-
计数器
+关注
关注
32文章
2253浏览量
94349 -
Arduino
+关注
关注
187文章
6464浏览量
186636
发布评论请先 登录
相关推荐
评论