MQ-7一氧化碳传感器设计原理图及pcb图程序(共10页).doc
精选优质文档-倾情为你奉上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、模拟量输出05V电压,浓度越高电压越高。5、对一氧化碳具有很高的灵敏度和良好的选择性。6、具有长期的使用寿命和可靠的稳定性五、应用:用于家庭、环境的一氧化碳探测装置。适宜于一氧化碳、煤气等的探测。【标注说明】【原理图】【测试方式】1、传感器先预热20秒左右。2、将传感器放在无被测气体的地方,顺时针调节电位器,调节到指示灯亮,然后逆时针转半圈,调到指示灯不亮,然后接近被测气体,指示灯亮,离开被测气体,指示灯熄灭,就证明传感器是好的!【测试程序】实现功能:1、 当测量浓度大于设定浓度时,单片机IO口输出低电平/* 实现功能:此版配套测试程序使用芯片:AT89S52晶振:11.0592MHZ波特率:9600编译环境:Keil作者:zhangxinchun淘宝店:汇诚科技【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! */*说明:1、当测量浓度大于设定浓度时,单片机IO口输出低电平*/#include<reg52.h> /库文件#define uchar unsigned char/宏定义无符号字符型#define uint unsigned int /宏定义无符号整型/* I/O定义*/sbit LED=P10; /定义单片机P1口的第1位 (即P1.0)为指示端sbit DOUT=P20; /定义单片机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 <reg52.h> /头文件#define uchar unsigned char /宏定义无符号字符型#define uint unsigned int /宏定义无符号整型code uchar seg7code10= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /显示段码 数码管字跟uchar wei4=0XEf,0XDf,0XBf,0X7f; /位的控制端 /位控制码sbit ST=P30; /A/D启动转换信号sbit OE=P31; /数据输出允许信号sbit EOC=P32; /A/D转换结束信号sbit CLK=P33; /时钟脉冲 uint z,x,c,v,AD0809, date;/定义数据类型/*延时函数*/void delay(uchar t) uchar i,j; for(i=0;i<t;i+) for(j=13;j>0;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=seg7codez&0x7f; P2=wei0; delay(80); P2=0XFF; P0=seg7codex; P2=wei1; delay(80); P2=0XFF; P0=seg7codec; P2=wei2; delay(80); P2=0XFF; P0=seg7codev; P2=wei3; delay(80); P2=0XFF; /* CLK振荡信号*/void timer0( ) interrupt 1 /定时器0工作方式1TH0=(65536-2)/256; /重装计数初值TL0=(65536-2)%256; /重装计数初值CLK=!CLK; /取反 /* 主函数*/ void main() TMOD=0X01; /定时器中断0CLK=0; /脉冲信号初始值为0TH0=(65536-2)/256; /定时时间高八位初值TL0=(65536-2)%256; /定时时间低八位初值EA=1; /开CPU中断ET0=1; /开T/C0中断TR0=1; while(1) /无限循环ST=0;/使采集信号为低ST=1;/开始数据转换ST=0;/停止数据转换while(!EOC);/等待数据转换完毕OE=1;/允许数据输出信号AD0809=P1; /读取数据OE=0;/关闭数据输出允许信号if(AD0809>=251)/电压显示不能超过5VAD0809=250;date=AD0809*20;/数码管显示的数据值,其中20为采集数据的毫安值xianshi();/数码管显示函数 专心-专注-专业