MQ-7一氧化碳传感器模块设计原理图及其程序
一氧化碳中毒的概述
CO为无色、无味、无臭的气体,凡是碳或含碳物质在氧不充分时燃烧,均可产生CO。在使用柴炉、煤炉时,如通风系统不畅通,尤其是近年来煤气取暖器和煤气热水器使用不当使CO中毒大为增加。因为CO是无色、无味的气体,所以称之为“沉默的杀手”。人体吸入CO后,往往毫无知觉,甚至出现严重的症状后仍不知何故,从而继续处在高浓度的CO环境中,直至死亡。
CO进入体内后,一部分与血红蛋白结合,引起血红蛋白氧运输量明显减少;另一部分直接与细胞线粒体内的细胞色素a3结合,抑制组织细胞内呼吸。故CO中毒时临床表现与血中HbCO水平可能不一致。
简要说明:
一、 尺寸:32mm X22mm X27mm 长X宽X高
二、 主要芯片:LM393、MQ-7气体传感器
三、 工作电压:直流5伏
四、 特点:
1、具有信号输出指示。
2、双路信号输出(模拟量输出及TTL电平输出)
3、TTL输出有效信号为低电平。(当输出低电平时信号灯亮,可直接接单片机)
4、模拟量输出0~5V电压,浓度越高电压越高。
5、对一氧化碳具有很高的灵敏度和良好的选择性。
6、具有长期的使用寿命和可靠的稳定性
五、应用:
用于家庭、环境的一氧化碳探测装置。适宜于一氧化碳、煤气等的探测。
【标注说明】
【原理图】
【测试方式】
1、传感器先预热20秒左右。
2、将传感器放在无被测气体的地方,顺时针调节电位器,调节到指示灯亮,然后逆时针转半圈,调到指示灯不亮,然后接近被测气体,指示灯亮,离开被测气体,指示灯熄灭,就证明传感器是好的!
【测试程序】
实现功能:
1、 当测量浓度大于设定浓度时,单片机IO口输出低电平
/********************************************************************
实现功能:此版配套测试程序
使用芯片:AT89S52
晶振:11.0592MHZ
波特率:9600
编译环境:Keil
作者:zhangxinchun
淘宝店:汇诚科技
【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
*********************************************************************/
/********************************************************************
说明:1、 当测量浓度大于设定浓度时,单片机IO口输出低电平
*********************************************************************/
#include //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int //宏定义无符号整型
/********************************************************************
I/O定义
*********************************************************************/
sbit LED=P1^0; //定义单片机P1口的第1位 (即P1.0)为指示端
sbit DOUT=P2^0; //定义单片机P2口的第1位 (即P2.0)为传感器的输入端
/********************************************************************
延时函数
*********************************************************************/
void delay()//延时程序
{
uchar m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
/********************************************************************
主函数
*********************************************************************/
void main()
{
while(1) //无限循环
{
LED=1; //熄灭P1.0口灯
if(DOUT==0)//当浓度高于设定值时 ,执行条件函数
{
delay();//延时抗干扰
if(DOUT==0)//确定 浓度高于设定值时 ,执行条件函数
{
LED=0; //点亮P1.0口灯
}
}
}
}
/********************************************************************
结束
*********************************************************************/
【测试程序】
*********************************************************************/
#include //头文件
#define uchar unsigned char //宏定义无符号字符型
#define uint unsigned int //宏定义无符号整型
code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //显示段码 数码管字跟
uchar wei[4]={0XEf,0XDf,0XBf,0X7f}; //位的控制端 //位控制码
sbit ST=P3^0; //A/D启动转换信号
sbit OE=P3^1; //数据输出允许信号
sbit EOC=P3^2; //A/D转换结束信号
sbit CLK=P3^3; //时钟脉冲
uint z,x,c,v,AD0809, date; //定义数据类型
/******************************************************************
延时函数
******************************************************************/
void delay(uchar t)
{
uchar i,j;
for(i=0;i0;j--);
{ ;
}
}
}
/**********************************************************************
数码管动态扫描
*********************************************************************/
void xianshi() //显示函数
{
uint z,x,c,v;
z=date/1000; //求千位
x=date%1000/100; //求百位
c=date%100/10; //求十位
v=date%10; //求个位
P2=0XFF;
P0=seg7code[z]&0x7f;
P2=wei[0];
delay(80);
P2=0XFF;
P0=seg7code[x];
P2=wei[1];
delay(80);
P2=0XFF;
P0=seg7code[c];
P2=wei[2];
delay(80);
P2=0XFF;
P0=seg7code[v];
P2=wei[3];
delay(80);
P2=0XFF;
}
/*************************************************************************
CLK振荡信号
**************************************************************************/
void timer0( ) interrupt 1 //定时器0工作方式1
{
TH0=(65536-2)/256; //重装计数初值
TL0=(65536-2)%256; //重装计数初值
CLK=!CLK; //取反
}
/*************************************************************************
主函数
**************************************************************************/
void main()
{
TMOD=0X01; //定时器中断0
CLK=0; //脉冲信号初始值为0
继续阅读