站内搜索
发作品签到
专业版

立创·梁山派-盖革计数器-辐射检测仪

工程标签

3.0w
0
0
54

简介

辐射检测在核能、医疗和环境保护等领域扮演着重要角色。基于盖革管的辐射检测仪是一种常见的辐射检测设备,其优势在于可检测多种辐射类型与简单的结构并具有高灵敏度。

简介:辐射检测在核能、医疗和环境保护等领域扮演着重要角色。基于盖革管的辐射检测仪是一种常见的辐射检测设备,其优势在于可检测多种辐射类型与简单的结构并具有高灵敏度。

开源协议

CC BY-SA 4.0

创建时间:2023-08-25 13:55:26更新时间:2026-03-20 15:50:38

描述

盖革管的检测原理

盖革管(Geiger-Muller管),又称GM管,是一种常用的辐射探测器,主要用于检测和测量各种类型的辐射,如α粒子、β粒子和γ射线。它的结构简单,由一个金属外壳(现在的盖革管使用镀有金属膜的玻璃管制作而成)和内部填充气体的管道组成。通常,金属外壳是圆筒形的,通常由金属或合金制成,具有较好的导电性和屏蔽性能,以防止外界干扰。管内填充的气体通常是一种低压惰性气体,如氮气和氩气的混合物。这种气体具有良好的电离特性和能量传递特性,可以产生有效的电离效应。
image.png

盖革管的工作原理是基于气体电离效应
盖革管结构简单,通常是在金属圆筒中间固定一根细金属丝。在金属丝和外壁之间施加有直流电压,大多是要求大于300V。容器内充有用于产生电离的气体(比如氩气)和用于淬火的气体(比如丁烷)。
image.png
当有离子经过盖革管激发了某一气体原子产生电离。激发出的电子被金属丝正电压吸引运动过程中又会撞击其它气体分子产生雪崩电离,此过程也会通过激发出的紫外线光子引发更大范围的电离雪崩,最终形成一股多大100亿个电子组成的电流脉冲。电离后的正电粒子由于质量比较大,运动比较慢,电子雪崩后它们停留在Geiger管中间形成正电电子云,扰乱了管内的电场,会阻碍电子雪崩进一步加大。再通过限流电阻和淬火气体的共同作用,雪崩电流很快终止。一般经过100~500微妙的恢复死区时间,盖革管会恢复正常,为下一次粒子检测做好准备。简单来说,就是当检测到离子经过盖革管时,就会产生一个脉冲。

主要电路设计

要实现的基本功能有

  • 手持便携;
  • 蜂鸣提醒;
  • 辐射检测显示;

充电升压二合一电路

手持便携,那么就需要电池供电;
正常情况下通过电池电压BAT+进行供电;当type-c接入后VCCIN有电,则给电池充电,RED充电指示灯亮起;VOUT为输出电池电压升压后的5V电压;具体请参考TP5400数据手册。
image.png

盖革管工作电路

通过盖革管检测辐射,就要有使盖革管可以正常工作的升压电路。根据购买的盖格管说明书,知道工作电压至少在280V以上,推荐的380V的工作电压;
img_v2_7b7d2948-752e-4dbb-a051-cfa37154273g.jpg
原理图中Q2/Q4需要使用耐压高的型号,R60采用3296封装的电位器进行输出电压调整;
image.png

蜂鸣提醒与显示

蜂鸣器采用4000Hz的无源蜂鸣器;屏幕采用1.69寸SPI16位彩屏,屏幕购买链接:1.69寸TFT显示屏彩色高清IPS LCD裸屏240*280 SPI接口ST7789驱动(选择焊接型)
image.png

说明

原理图中还预留有NBIOT部分和2.4G无线通信部分,这两个模块不是必须品,可以不焊接或者直接删除即可;

主要软件设计

代码中最重要的部分是秒判断与中断函数。将盖格管检测引脚PE6设置为外部中断下降沿触发方式(当测量到盖格管上的脉冲时,Q3导通使PE6为低电平)。

//获取计数值
uint32_t get_Geiger_count(void)
{
	return Geiger_count;
}
//清除计数值
void set_Geiger_count(uint32_t count)
{
	Geiger_count = count;
}
//外部中断服务函数
void EXTI5_9_IRQHandler(void)
{
	//检测到下降沿
	if(exti_interrupt_flag_get(EXTI_6) == SET)
	{
		//确定PE6为低电平
		if( gpio_input_bit_get(GEIGER_GPIO_PORT, GEIGER_GPIO_PIN) == RESET )
		{
			//蜂鸣器响
			beep(100);
			//计数值累加
			Geiger_count++;
		}
		//清除中断标志位
		exti_interrupt_flag_clear(EXTI_6);

	}
}

每隔一秒判断一次当前计数值与之前计数值的变化,如有不同,则记录它们之间的差,这个差就是一秒内的计数值;将差保存到数组 COUNTS_buff 中,累加10次,那么COUNTS_buff里存放的就是过去10秒的测量10个结果,将数组 COUNTS_buff 中的所有数字相加并乘以 6 以在显示屏上显示 CPM 值(CPM=每分钟计数率)。
而以 µSv/hr 表示的剂量当量是通过 CPM 值除以 210(K) 计算得出的(该值可在文献中找到)。

		//一秒时间到
		if( get_sec_timer_flag() == 1 )
		{
			//清除秒标志
			set_sec_timer_flag(0);
			//关闭定时器
			timer_disable(BSP_TIMER);
			//获取当前盖格管计数值
			new_geiger = get_Geiger_count();
			//如果当前计数值和之前计数值不一样
			if( new_geiger != again_geiger )
			{
				//保存当前与之前的计数差
				COUNTS_buff[t] = new_geiger - again_geiger;
				//更新之前计数值
				again_geiger = new_geiger;
			}
			else
			{
				//如果没有计数变化
				COUNTS_buff[t] = 0;
			}

			//累加10次
			for( i = 0; i < 10; i++ )
			{
				TenSecCPS = TenSecCPS + COUNTS_buff[i];
			}
			//*6得到CPM
			CPM = 6 * TenSecCPS;
			//计算瞬时值
			CPM = CPM / K;
			//清除CPS
			TenSecCPS = 0;
			//累加数组限制
			t++ ;
			if (t > 9) { t = 0 ;}

			//保存瞬时值
			CPM_buff[AVGCPM_num] = CPM;
			//累加60次
			for( i = 0; i < 60; i++ )
			{
				AVGCPM = AVGCPM + CPM_buff[i];
			}
			//换算平均值
			AVGCPM = AVGCPM/60.0;
			//平均值累加数组限制
			AVGCPM_num++;
			if( AVGCPM_num >= 60 ) AVGCPM_num = 0;


			//显示瞬时危险程度
            //警告
			if( CPM >= 0.5 && CPM < 1.0 )
			{
				new_level=1;
				beep_open(50);//控制蜂鸣器鸣叫频率一般
			}	
			//危险
			else if( CPM >= 1.0 )
			{
				new_level=2;
				beep_open(100);//控制蜂鸣器鸣叫频率加快
			}
			else//正常
			{
				new_level=0;
				beep_close();//关闭蜂鸣器
			}

			//如果危险等级与之前不一样
			if( new_level != again_level )
			{
				//更新之前的危险等级
				again_level = new_level;
				//更新瞬时值背景色参数
				widget_moment_frame.color = color_buf[new_level];
				widget_moment_value.color = color_buf[new_level];
				widget_moment_units.color = color_buf[new_level];
				widget_moment_slogan.color = color_buf[new_level];
				tli_show_button(widget_moment_frame.x,widget_moment_frame.y,widget_moment_frame.w,widget_moment_frame.h,widget_moment_frame.value,widget_moment_frame.color);
				LCD_ShowChinese(widget_moment_slogan.x,widget_moment_slogan.y,widget_moment_slogan.string,WHITE,widget_moment_slogan.color,widget_moment_slogan.value,0);						
				LCD_ShowString(widget_moment_units.x,widget_moment_units.y,(const uint8_t*)widget_moment_units.string,WHITE,widget_moment_units.color,widget_moment_units.value,0);
			}

			//显示瞬时值
			sprintf((char*)widget_moment_value.string,"%.4f", CPM );		
			LCD_ShowString(widget_moment_value.x,widget_moment_value.y,(const uint8_t*)widget_moment_value.string,WHITE,widget_moment_value.color,widget_moment_value.value,0);			

			//显示平均值
			sprintf((char*)widget_average_value.string,"%.4f", AVGCPM );		
			LCD_ShowString(widget_average_value.x,widget_average_value.y,(const uint8_t*)widget_average_value.string,WHITE,widget_average_value.color,widget_average_value.value,0);			

			//显示累计值
			sprintf((char*)widget_aggregate_value.string,"%d", new_geiger );		
			LCD_ShowString(280/2-(strlen((const char*)widget_aggregate_value.string)*(3*8)/2),widget_aggregate_value.y,(const uint8_t*)widget_aggregate_value.string,WHITE,widget_aggregate_value.color,widget_aggregate_value.value,0);			

			//开启定时器
    		timer_counter_value_config(BSP_TIMER,0);
			timer_enable(BSP_TIMER);			
		}

<iframe src="//player.bilibili.com/player.html?aid=533111091&bvid=BV1iu411P7Uz&cid=1257221641&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
盖格计数器-软件部分.zip
751
2
辐射检测仪验证视频.mp4
1699
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航