工控网首页
>

应用设计

>

用单片机实现瓦斯探测器

用单片机实现瓦斯探测器

2007/10/17 15:08:00
1 引言: 随着我国经济发展,对能源的需求量大增,刺激了煤炭产业的发展。由于井下环境恶劣,我国煤矿瓦斯爆炸事件频繁发生,给人民生活和国家经济建设带来巨大影响,本文针对目前情况设计一种井下便携式瓦斯探测器,当瓦斯气体浓度接近危险值时,自动发出报警,提醒井下人员立刻离开。该设备同时还具备灵敏度调节和检测强度调节开关,有简单、方便、准确、实用等特点。 2 硬件设计 2.1 系统设计 系统由单片机,瓦斯气体检测电路,LED报警灯,蜂鸣报警,及晶震电路组成。如图1所示,单片机选用AT89C51,LED灯由一个红灯一个绿灯组成,正常工作时,绿灯亮,表示系统开机且正常工作;当空气中的瓦斯气体浓度到达危险值时,检测电路向单片机发送信号,单片机控制LED红灯亮,同时控制蜂鸣电路工作,以此来确保井下人员能立即得到警报。
图1 硬件电路示意图 2.2 瓦斯检测电路 瓦斯检测采用气敏传感器作为检测元件,其体电阻随可燃性气体或烟雾浓度的改变而改变。电路图如图2所示。平时,可燃性气体或烟雾浓度在允许范围内,气敏传感器A、B间电阻值较大,从B端输出低电平。当可燃性气体或烟雾浓度达到一定值后,气敏传感器A、B间电阻值迅速减小,从B端输出高电平。AT89C51单片机从输人端口来检测是否漏气并作相应的处理,即作报警处理。
图2 瓦斯检测传感器电路 2.3 LED灯显示 显示部分采用两个LED,如图3,工作正常时,控制绿灯(D1)亮,当探测器检测到瓦斯气体浓度超过正常值时,发送信号,控制红灯(D2)亮。
图3 LED 指示灯电路 2.4 蜂鸣器 蜂鸣器的设计主要是考虑当报警时确保井下人员能及时得知,未看到红灯时能听到声音。在正常时,蜂鸣器不工作,当瓦斯浓度超过临界值时,蜂鸣器开始发出的鸣叫,以保证井下人员及时得到报警信息。
图4 蜂鸣器电路 2.5 时钟电路
图5 时钟电路 采用内部方式如上图5,在XTAL1和XTAL2端外接时英晶体作定时元件,内部反相放大器自激振荡,产生时钟。 3 软件设计: 3.1 设计要求: 井下环境复杂,对井下瓦斯浓度准确预测十分困难,容易发生误判,所以设备的灵敏度和报警的准确度十分关键。为方便控制,设计了两个开关,每个开关四种选择,对应于I/0口P1.6—P1.7、P1.4—P1.5。分别用来调节采样的时间的长短和报警的门阈值的高低。通过一段时间的抽样结果可更准确测定瓦斯浓度。报警门阈值的选择可控制报警的级别。通过两个开关的调节,给使用人员带来更大方便。 软件流程图如6所示,设计要求如下: 1、查询抽样时间设置开关,设置抽样时间; 2、查询报警阈值设置开关,设置相应的报警阈值; 3、机器开始计数,按采样时间设置值进行,并计算出单位时间瓦斯浓度抽样值超标次数rate(计数/秒)。 4、比较rate与state大小,当rate≥state时发出警报信号,直到rate<state-1时撤销报警信号。 3.2 软件流程和源程序
图6 软件流程图 编写的部分C程序如下: #include #define unit unsigned int #define uchar unsigned char uchar bdata FLAG; sbit FLAG1=FLAG^1; sbit FLAG2=FLAG^2; sbit P1_1=P1^1; sbit P3_2=P3^2; sbit P3_0=P3^0; uchar data time,Dtime,Btime; unit fetch_rate(void); main(){ char bdata JFLAG; unit data state,Astate,rate; do{ P1=0xFF; FLAG=P1; TXD=1; P3_2=1;P3_0=0; JFLAG=FLAG>>6;JFLAG=JFLAG&0x03; swich(JFLAG){ /*采样时间设定*/ case 0: time=2;Dtime=20;break; case 1: time=4;Dtime=40;break; case 2: time=6;Dtime=60;break; case 3: time=8;Dtime=80;break; } Btime=Dtime; JFLAG=FLAG>>4;JFLAG=JFLAG&0x03; swich(JFLAG){ /*门阈值数设定*/ case 0: state=2;break; case 1: state=4;break; case 2: state=6;break; case 3: state=8;break; } FLAG1=0; TM0D=0x01; TH0=0x3C;TL0=0xB0; TR0=1;ET0=1;EA=1; rate=fetch_rate(); Astate=state-1; if(rate>=state){ TXD=0;P3_2=0;P3_0=1 /*设置报警*/ do{ rate=fetch_rate(); }while(rate>=Bstate); TXD=1;P3_2=1;P3_0=0 /*撤报警*/ } }while(1); } usigned int fetch_rate()/*计算rate*/ { unit count=0; do{}while(!FLAG1); Dtime=Btime; return(count/time); } timer0 () interrupt 1 using 1 { TH0=0x3C;TL0=0xB0; if(P2_1==0){count=count+1;}/*计数*/ if(Dtime==0){FLAG1=1;} } 其中,reg51.h文件定义了所有8051的特殊功能及中断。使用6MHz晶振,每100ms中断一次,采样时间time秒,Dtime为采样时间内的采样次数。中断服务程序判断采样时间到时设置标志位FLAG1,fetch_rate()在采样时间到后取出的计数值count,返回rate值。然后进行判断及报警操作。程序循环到选择开关前,方便判断开关变化。 4 总结: 该系统设计简单,通过多次采样能更准确报警,通过门阈开关可调节报警强度。实验证明系统性能良好。 参考文献 [1]张毅坤 单片机微型计算机原理及应用 西安:西安电子科技大学出版社,1998 [2]李光第 单片机基础[M] 北京:北京航空航天大学出版社,1994 [3]吴玉锋 气体传感器研究进展与发展方向[J],计算机测量与控制2003,11:732.
投诉建议

提交

查看更多评论
其他资讯

查看更多

助力企业恢复“战斗状态”:MyMRO我的万物集·固安捷升级开工场景方案

车规MOSFET技术确保功率开关管的可靠性和强电流处理能力

未来十年, 化工企业应如何提高资源效率及减少运营中的碳足迹?

2023年制造业“开门红”,抢滩大湾区市场锁定DMP工博会

2023钢铁展洽会4月全新起航 将在日照触发更多商机