可定制的盖革穆勒计数器
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要的工具和机器
| ||||
|
关于这个项目
正如 ADNOVEA 的工作所指出的,该设备使用危险的高电压 (400 V)。虽然电流很低,但引入人体的任何电流或电压都会导致心脏出现心律失常,从而导致心脏停止跳动并导致死亡。制造此产品的人员应具有一定的电子产品经验,并在使用电路的高压方面时要格外注意适当的安全预防措施。
我的目标是采用 AdNovea 的工作并创建一个 Geiger Muller 计数器,我可以根据需要更自由地对其进行编程(AdNovea 工作使用的脚本我无法找到合适的程序进行修改)。这将使用户既可以更好地了解管的物理特性,又可以创建满足其项目愿望/需要的设备。
对于该项目,我简化了 AdNovea 的电路图,为我正在寻找的东西做更多的事情:一个显示计数的个人计数器,但不会因为以太网连接和与国家网络的连接而变得太复杂。我尝试了蓝牙模块和蜂鸣器,这些都可以使用,但我选择不使用它们,因为我想要更多的背景辐射计数器,我可以在需要时参考。
结构非常简单(参见电路图)。该项目唯一困难的方面是获得一些零件(GM 管和高压转换器)。我在 Ebay 上以很少的钱购买了这两种物品,但它们都是从很远的地方(分别是乌克兰和中国)出售的,所以需要 3-4 周才能收到这些物品。
我开始在面包板上组装电路,以最好地评估电路以及我可以根据自己的意愿操纵它的地方。我按照 AdNovea 的图表进行了组装,但省略了通向 GM 管的蜂鸣器、以太网模块和电阻器(由于该电路设计,我没有为管提供足够的电流,导致其无法工作)。然后我将它全部焊接到电路板上。
我在这里引用了一个 Arduino uno 作为我使用的东西,但是您可能可以通过使用 nano 来节省容器中的空间。我使用电工胶带将 GM 管连接到电路板上以节省空间并覆盖电压互感器上的端子以提高安全性。由于我的设备有限,可以用塑料容器钻孔来制作与 AdNovea 非常相似的东西,所以我使用了我第一次购买 Arduino 电路套件时收到的纸板箱。
我确实在盒子的顶部切了一个洞,这样 LED 显示屏就可以紧贴在那里(我用胶带进一步加固了它)。
我还在盒子的侧面切了一个洞,以允许 USB 线进入并为设备供电。
我尝试使用 9V 电池启动,但正如预期的那样,电池持续时间不长。最后,我根据需要在盒子/电路板周围贴上额外的电工胶带,在电路可能与纸板接触的地方,以防止火灾和信号丢失。
我为我的项目设计的程序将 GM 管每 30 秒收集的计数乘以 2,以提供每分钟的估计计数(GM 管的测量单位)。然后我使用公制转换来报告 uSv/hr,这是一种更广泛使用的参考测量。随着设备继续运行此代码,我让它报告了逐渐收集的测量值的平均值以及标准误差 (SD / sqrt(n))。从统计上讲,我选择了标准误差,因为最终收集的是来自平均背景辐射水平的样本,这使得 SE 成为更合适的衡量标准。不幸的是,由于 Arduino 的内存限制,我只能创建 100 个项目的测量数组(如果我玩得更多,也许不止于此)。因此,试管只能准确显示 50 分钟的值,这仍然是一个很好的样本量。
因为我想进入我的下一个项目(因为我是一名医学专业人士而构建一个静脉探测器类型的设备),所以我没有对我可以为该设备进行的一些较小的更改(放置蜂鸣器,因此如果 CPM 超过背景辐射它会发出带有警告文本的警报,使用我的“日志周期”变量来正式评估更短周期的准确性,以提供更合理的更快速测量),但其他想要在此设备上工作更多的人应该完全玩弄随心所欲地使用它并使其变得更好。
代码
- 代码
代码Arduino
#include#include unsigned long 计数; // GM Tube 事件的变量unsigned long previousMillis; //用于测量时间的变量float averageCPM;float sdCPM;int currentCPM;float calcCPM;LiquidCrystal_I2C lcd(0x27, 20, 4);float CPMArray[100];#define LOG_PERIOD 30000 // 计数率(以毫秒为单位)void setup() { //设置计数=0;当前每千次展示费用 =0;平均每千次展示费用 =0;标准每千次展示费用 =0;计算每千次展示费用 =0;液晶显示器.init();液晶背光(); Serial.begin(9600); pinMode(2, 输入); attachInterrupt(digitalPinToInterrupt(2),脉冲,下降); //定义外部中断}void loop() { //主循环lcd.setCursor(0,2); lcd.print("每千次展示费用计数:");液晶显示(计数); unsigned long currentMillis =millis(); if (currentMillis - previousMillis> LOG_PERIOD) { previousMillis =currentMillis; CPMArray[currentCPM] =计数 * 2;液晶显示器(); lcd.setCursor(0,0); lcd.print("uSv/hr:"); lcd.print(outputSieverts(CPMArray[currentCPM]));计数 =0;平均每千次展示费用 =0;标准每千次展示费用 =0; //calc avg and sd for (int x=0;x
示意图
原理图很奇怪,所以当你用 Fritzing 打开时,东西会因为某种原因移动。 geiger_counter_4LAnJvZEpC.fzz制造工艺