MQ9的应用Word文档下载推荐.docx
《MQ9的应用Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MQ9的应用Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。
(2)应用
用于家庭、环境的一氧化碳探测装置。
适宜于一氧化碳、煤气,液化石油气等的探测。
(3)规格
符号
参数名称
技术条件
备注
Vc
回路电压
≤10V
AcorDc
VH(H)
加热电压(高)
5.0V±
0.2V
VH(L)
加热电压(低)
1.5V±
0.1V
RL
负载电阻
可调
RH
加热电阻
31Ω±
3Ω
室温
TH(H)
加热时间(高)
60±
1seconds
TH(L)
加热时间(低)
90±
PH
加热功耗
约350mw
A.标准工作条件
B.环境条件
Tao
使用温度
-10℃-50℃
Tas
储存温度
-20℃-70℃
建议使用范围
Rh
相对湿度
小于95%RH
O2
氧气浓度
21%(标准条件)
最小值大于2%
C.灵敏度特性
参数名称
技术参数
Rs
敏感体电阻
2-20k
在100ppmCO中
а(300/100ppm)
浓度斜率
小于0.5
Rs(300ppm)/Rs(100ppm)
标准
工作条件
温度:
-20℃±
2℃相对湿度:
65%±
5%
Vc:
0.1VVH(高):
0.1VVH(低):
预热
时间
≥48hours
探测范围:
10-1000ppm一氧化碳
100-1000ppm可燃气体
D.结构、外形、测试电路
MQ-9气敏元件的结构和外形如图1所示(结构A或B),由微型AL2O3陶瓷管、SnO2敏感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内,加热器为气敏元件提供了必要的工作条件。
封装好的气敏元件有6只针状管脚,其中4个用于信号取出,2个用于提供加热电流。
测试电路如图2所示。
标准测试电路:
如图2,MQ-9气敏元件测试电路由两部分组成,一为加热回路,具有时间控制功能(高电压和低电压循环工作)。
第二为测试回路,它可反映气敏元件表面电阻的变化。
E.灵敏度特性曲线:
图3给出了MQ-9元件对不同气体的灵敏度特性
其中:
20℃、
湿度:
65%、
氧气浓度:
21%
RL=10kΩ
Ro:
1000ppmLPG中气敏元件电阻
Rs:
不同气体不同浓度下气敏元件电阻。
图4示出了MQ-9气敏元件的温湿度特性。
1000ppmLPG中,33%RH,20℃下元件电阻。
1000ppmLPG中不同温度和湿度下元件的电阻。
F.工作原理
传感器的表面电阻Rs,是通过与其串联的负载电阻RL上的有效电压信号VRL输出而获得的。
二者之间的关系为:
Rs/RL=(Vc-VRL)/VRL
图5为利用图2回路测得在传感器由洁净空气转移至一氧化碳或甲烷气氛中时,RL上的信号输出变化情况,输出信号的测定是在一个完整的加热周期(由高电压至低电压2.5分钟)或在两个完整的加热周期内测得。
MQ-9型气敏元件的敏感层是用非常稳定的二氧化锡制成的。
因此,它具有优秀的长期稳定性,在正常使用条件下,其使用寿命可达5年。
MG811为CO2传感器,其主要技术指标如下:
(1)特点
对CO2有良好的灵敏度和选择性,受温湿度的变化影响较小,良好的稳定性、再现性。
空气质量控制系统,发酵过程控制,温室CO2浓度检测。
(3)结构及测试电路
元件结构及测试电路如下图。
传感器由固体电解质层
(1),金电极
(2),铂引线(3),加热器(4),陶瓷管(5),100目双层不锈钢网(6),镀镍铜卡环(7),胶木基座(8),针状镀镍铜管脚(9)组成。
(4)工作原理
本传感器采用固体电解质电池原理,由下列固体电池构成:
空气,Au|NASICON||碳酸盐|Au,空气,CO2.当传感器置于CO2气氛中时,将发生以下电极反应:
负极:
正极:
总电极反应:
传感器敏感电极与参考电极间的电势差(EMF)符合能斯特方程:
EMF=Ec-(RxT)/(2F)ln(P(CO2))
上式中:
P(CO2)—CO2分压Ec—常量R—气体常量
T—绝对温度(K)F—法拉第常量
在检测电路中,元件加热电压由外电路提供,当其表面温度足够高时,元件相当于一个电池,其两端会输出一电压信号,其值与能斯特方程符合得较好。
元件测量时放大器的阻抗须在100—1000GΩ之间,其测试电流应控制在1pA以下。
(5)规格
加热电压
6.0±
AC或DC
30.0±
5%Ω
加热电流
约200mA
约1200mW
-20—50
-20—70
ΔEMF
输出信号
30—50mV
350—10000ppm
(6)特性
①灵敏度特性
上图给出了传感器的灵敏度特性曲线。
28℃
相对湿度:
65%
21%
EMF:
元件在不同气体,不同浓度下的输出电压。
②响应恢复特性:
从上图中可以看出:
固体电解质元件具有较好的响应恢复特性。
③温度特性
从图中可看出温度对输出电压比较大。
④湿度特性
从图中可看出湿度对输出电压很小,可以忽略。
在检测电路中用单臂电桥的形式对MQ-9进行测量,由于MG811输出的电压信号,所以可以直接测量。
两者都采用仪表放大器AD620进行放大及信号调理,AD620具有很高的精度,且漂移小、噪声低,可应用于精确的数据采集及各种微弱信号的前置调理器。
3.数字电路
数字电路中以89C52为核心进行数据处理。
ADC0809为A/D转换芯片,ADC0809为8通道8位A/D转换芯片,其线性误差为±
15.7mV,但可满足本传感器的精度要求。
SD18B20用于测量传感器运行的环境温度,DSl820的测量范围从-55到+125增量值为0.5℃。
LCD12864显示各气体浓度,当浓度超标时用发光二极管,蜂鸣器报警,LCD中的相应项也会闪烁。
(二)软件设计
软件流程图如下图
由于实验条件的限制,无法标定传感器,在数据处理部分还不够完善。
其源程序如下:
#include<
stdio.h>
math.h>
reg52.h>
string.h>
absacc.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitSPK=P2^0;
//定义蜂鸣器端口
sbitDQ=P2^1;
//定义温度传感器端口
sbitPSB=P2^2;
//定义LCD控制端口
sbitRES=P2^3;
sbitRS=P2^4;
sbitWRD=P2^5;
sbitE=P2^6;
sbitEOC=P2^7;
//定义ADC0809控制端口
sbitADDCS1=P3^0;
sbitADDCS2=P3^1;
sbitCO=P3^2;
sbitCO2=P3^3;
sbitSO2=P3^4;
sbitNOx=P3^5;
sbitST=P3^6;
sbitOE=P3^7;
floatT;
//温度
ucharf=1;
//用于标记是否进行过AD转换
floatAD_DAT[4];
//AD_DAT[0]为CO,AD_DAT[1]为SO2,AD_DAT[2]为CO2,AD_DAT[3]为NOx
floatDAT[4]=0;
//用于存储各气体的浓度以方便数据处理ucharcodeDAT_IC[64]={
"
CO:
ppm"
SO2:
CO2:
NOx:
};
voidADC_0809();
//AD转换程序
voidinit_ADC(void);
//ADC0809系统初始化程序
voidchannels(uchari);
//ADC通道选择程序
floatTemperature(void);
//DS18B20测温程序
voidInit_DS18B20(void);
//DS18B20初始化程序
ucharReadOneChar(void);
//读一个字节
voidWriteOneChar(uchardat);
//写一个字节
voidDP(void);
//数据处理程序(线性化、温漂处理、抗干扰)
voidlineariz(void);
//线性化程序
voidbate(void);
//温漂处理程序
voidfilter(void);
//数字滤波程序
voidlcd_display();
//LCD12684显示程序
voidinit_LCD(void);
//LCD12684初始化程序
voidTransferData(chardata1,bitDI);
//12864数据、命令选择传送
voidlcd_mesg(ucharcode*adder1);
//显示字符
voidlcd_mesg2(uchar*adder2,n);
//显示数字
uchar*separat(floatn);
//数字分离程序
voidjudge(void);
//浓度超标判断
voidwarning();
//报警程序
voiddelayms(uintn);
//n*10ms延时程序
voiddelay(uintm);
//m*10us延时程序
/***************************************************************/
/*********************主程序*************************/
/***************************************************************/voidmain(void)
{
ST=0;
//ADC系统初始化
OE=0;
init_LCD();
//LCD字库初始化
lcd_mesg(DAT_IC);
//显示字符
while
(1)
{
ADC_0809();
//AD转换
T=Temperature();
//温度测量
DP();
//数据处理
lcd_display();
//LCD显示、报警
}
}
/*******************AD转换程序**************************/
/**************************************************************/
voidADC_0809(void)
{uchari;
for(i=0;
i<
4;
i++)
{
ST=0;
channels(i);
//选择通道i
delay(100);
ST=1;
//启动AD转换
delayms(5);
while(EOC==0);
OE=1;
AD_DAT[i]=P1*(5.0/256);
}
}
//***********************ADC通道选择程序****************//
voidchannels(uchari)
{
if(i==0)//选择通道IN0:
CO
ADDCS1=0;
ADDCS2=0;
}
if(i==1)//选择通道IN1:
SO2
ADDCS1=1;
}
if(i==2)//选择通道IN2:
CO2
ADDCS1=0;
ADDCS2=1;
if(i==3)//选择通道IN3:
ADDCS1=1;
}
/****************DS18B20测温程序***************************//**************************************************************/
floatTemperature(void)
{
uchara=0;
ucharb=0;
uchart=0;
Init_DS18B20();
WriteOneChar(0xCC);
//跳过读序号列号的操作
WriteOneChar(0x44);
//启动温度转换
delay(20);
Init_DS18B20();
//初始化
//跳过读序号列号的操作
WriteOneChar(0xBE);
//读取温度寄存器等(共可读9个寄存器)前两个就是温度
a=ReadOneChar();
b=ReadOneChar();
b<
<
=4;
b+=(a&
0xf0)>
>
t=b;
return(t);
}
//********************DS18B20初始化程序**********************//
voidInit_DS18B20(void)
unsignedcharx=0;
DQ=1;
//DQ复位
delay
(1);
//稍做延时
DQ=0;
//单片机将DQ拉低
delay(8);
//精确延时大于480us
//拉高总线
x=DQ;
//稍做延时后如果x=0则初始化成功x=1则初始化失败
//***************读一个字节***********************************//
unsignedcharReadOneChar(void)
unsignedchari=0;
unsignedchardat=0;
for(i=8;
i>
0;
i--)
{
//给脉冲信号
dat>
=1;
if(DQ)
dat|=0x80;
}
return(dat);
//************************写一个字节***************************//
voidWriteOneChar(uchardat)
unsignedchari=0;
for(i=8;
i>
i--)
DQ=dat&
0x01;
delay
(1);
/****************数据处理程序******************************/
voidDP(void)
AD_DAT[1]=0;
AD_DAT[3]=0;
//无SO2、NOx传感器,此两个端口预留
AD_DAT[0]=10000.0-1940.4*AD_DAT[0];
//CO输入信号到浓度大小的转换
AD_DAT[2]=8060.0-2286.7*AD_DAT[0];
//CO2输入信号到浓度大小的转换
lineariz();
//线性化
bate();
//温漂处理
filter();
//数字滤波
}//**************************线性化程序************************//
voidlineariz(void)
//*********************温漂处理