MQ-2烟雾传感器

一、MQ-2烟雾传感器简介

MQ-2特点: 广泛的探测范围、高灵敏度、快速响应恢复、优异的稳定性、寿命长、简单的驱动电路
MQ-2应用: 可用于家庭和工厂的气体泄漏监测装置, 适宜于液化气、丁烷、丙烷、甲烷、酒精、氢气、烟雾等的探测。
MQ-2适用气体:可燃气体、烟雾
MQ-2探测范围: 300 to 10000ppm
MQ-2特征气体: 1000ppm异丁烷
灵敏度 R in air/R in typical gas≥5
敏感体电阻 1KΩ to 20KΩ in 50ppm甲苯
响应时间 ≤10s
恢复时间 ≤30s
加热电阻 31Ω±3Ω
加热电流 ≤180mA
加热电压 5.0V±0.2V
加热功率 ≤900mW
测量电压 ≤24V
MQ-2工作条件:环境温度:-20℃~+55℃
湿度:≤95%RH
环境含氧量:21%
MQ-2贮存条件
温度: -20℃~+70℃
湿度:≤70%RH

MQ-2常用于家庭和工厂的气体泄漏监测装置,适宜于液化气、苯、烷、酒精、氢气、烟雾等的探测。故因此,MQ-2可以准确来说是一个多种气体探测器。

MQ-2的探测范围极其的广泛。它的优点:灵敏度高、响应快、稳定性好、寿命长、驱动电路简单。

二、MQ-2的工作原理

MQ-2型烟雾传感器属于二氧化锡半导体气敏材料,属于表面离子式N型半导体。处于200~300摄氏度时,二氧化锡吸附空气中的氧,形成氧的负离子吸附,使半导体中的电子密度减少,从而使其电阻值增加。当与烟雾接触时,如果晶粒间界处的势垒收到烟雾的浓度而变化,就会引起表面导电率的变化。利用这一点就可以获得这种烟雾存在的信息,烟雾的浓度越大,导电率越大,输出电阻越低,则输出的模拟信号就越大

三、MQ-2的特性

  • MQ-2型传感器对天然气、液化石油气等烟雾有很高的灵敏度,尤其对烷类烟雾更为敏感,具有良好的抗干扰性,可准确排除有刺激性非可燃性烟雾的干扰信息。

  • MQ-2型传感器具有良好的重复性和长期的稳定性。初始稳定,响应时间短,长时间工作性能好。需要注意的是:在使用之前必须加热一段时间,否则其输出的电阻和电压不准确。

  • 其检测可燃气体与烟雾的范围是100~10000ppm

  • (ppm为体积浓度。1ppm=1立方厘米/1立方米)

  • 电路设计电压范围宽,24V以下均可,加热电压5±0.2V

注意:如果加热电压过高,会导致输入电流过大,将内部的信号线熔断,从而器件报废。

四、MQ-2应用电路

MQ-2常用的电路有两种,一种使用采用比较器电路监控,另一种为ADC电路检测。

1. 比较器电路

MQ-2的引脚4输出随烟雾浓度变化的直流信号,被加到比较器U1A的2脚,Rp构成比较器的门槛电压。当烟雾浓度较高输出电压高于门槛电压时,比较器输出低电平(0v),此时LED亮报警;当浓度降低传感器的输出电压低于门槛电压时,比较器翻转输出高电平(Vcc),LED熄灭。调节Rp,可以调节比较器的门槛电压,从而调节报警输出的灵敏度。R1串入传感器的加热回路,可以保护加热丝免受冷上电时的冲击。

2. ADC转换电路

MQ-2传感器另外一个采集方法为AD信号采集,即将电压信号转化为数字信号,进而转化为精确的烟雾浓度值。

MQ-2传感器的4脚、6脚的电压为输出信号,Rs为传感器的本体电阻。其中若气体浓度上升,必导致Rs下降。而Rs的下降则会导致MQ-2的4脚、6脚对地输出的电压增大。所以气体浓度增大,其输出的电压也会增大,最终通过ADC0832转换后数值增大。

五.控制程序

1. 因为比较器电路处理的检测信号只有高和低两种状态;当浓度低于阈值时,信号为高电平;浓度高于阈值时,信号为低电平。所以单片机只需要将引脚配置为输入模式,监控该信号的高低电平即可。

2. AD信号采集程序

实现对MQ-2烟雾浓度的采集,只需实现ADC0832采集函数便可完成信号的采集。但通过ADC0832采集到的信号只为原始信号,要转换为实际的烟雾浓度,还需要根据MQ-2的特性进行校正和公式转换,最终得到实际的浓度值。

/****************************************************************************函数功能:AD转换子程序入口参数:channel出口参数:dat****************************************************************************/unsigned char adc0832(unsigned char channel ){unsigned char i,test,adval,dat;adval = 0x00;test = 0x00;Clk = 0;       //初始化DATI = 1;_nop_();CS = 0;_nop_();Clk = 1;_nop_();if (channel == 0x00 )      //通道选择{Clk = 0;DATI = 1;      //通道0的第一位_nop_();Clk = 1;_nop_();Clk = 0;DATI = 0;      //通道0的第二位_nop_();Clk = 1;_nop_();}else{Clk = 0;DATI = 1;      //通道1的第一位_nop_();Clk = 1;_nop_();Clk = 0;DATI = 1;      //通道1的第二位_nop_();Clk = 1;_nop_();}Clk = 0;DATI = 1;for( i = 0;i < 8;i++ )      //读取前8位的值{_nop_();adval <<= 1;Clk = 1;_nop_();Clk = 0;if (DATO)adval |= 0x01;elseadval |= 0x00;}for (i = 0; i < 8; i++)      //读取后8位的值{test >>= 1;if (DATO)test |= 0x80;elsetest |= 0x00;_nop_();Clk = 1;_nop_();Clk = 0;}if (adval == test)      //比较前8位与后8位的值,如果不相同舍去。若一直出现显示为零,请将该行去掉dat = test;nop_();CS = 1;        //释放ADC0832DATO = 1;Clk = 1;return dat;}/****************************************************************************函数功能:获取烟雾浓度入口参数:无出口参数:dat****************************************************************************/unsigned char GetYanWuValue(void){unsigned int sum=0;unsigned char m,value=0;for(m=0;m<20;m++)      //读50次AD值sum = adc0832(0)+sum;    //读到的AD值,将读到的数据累加到sumvalue=(unsigned char)(sum/20);        //跳出上面的for循环后,将累加的总数除以50得到平均值valueif(value > ADC_Zero)value = value - ADC_Zero;              //首先减去零点漂移elsevalue = 0;return value;}
(0)

相关推荐