基于单片机的可燃气体报警器Word文档格式.docx
《基于单片机的可燃气体报警器Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的可燃气体报警器Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
6
3
系统硬件设计
***********************************
8
3.1
硬件设计原理
*********************************8
3.2
硬件设计外围电路******************************9
3.2.1
晶振电路、复位电路设计
*********************
9
3.2.2
报警电路设计
*******************************
11
3.2.3
电源电路设计
4
系统软件设计
15
4.1
主程序流程图
5
本设计总结与展望
18
参考文献
********************************************
20
致
谢
**********************************************
21
1.1可燃性气特浓度检测仪的背景
对气体中可燃气体含量进行检测的设备有五种基本类型,即:
燃料电池型(电化学)、半导体型、气体色谱分析型、红外线型、比色型。
但由于价格和使用方便的原因,常用的只有燃料电池型和半导体型两种。
燃料电池作为一种发电装置,它的原理是将存在于燃料与氧化剂中的化学能直接转化为电能。
当前各国家都在广泛研究环保型能源,因为它直接可以把可燃气体转变成电能,并且不产生污染,烟雾传感器只是燃料电池的一方面应用。
与半导体型的相比,燃料电池型呼气酒精检测仪有很多优势,即稳定性好,精度高,抗干扰性好。
但是燃料电池烟雾传感器的结构要求非常精密,制造难度相当大,并且材料成本高,价格昂贵。
1.2
可燃性气体浓度检测仪现状及发展趋势
如今的酒精浓度检测仪都是用于各个专业领域,而利用传感器和单片机核心技术的家庭可燃气体浓度检测仪在市面上是一个空缺,我们弥补了这一块的空缺,同时社会公共安全系数也大大的提高。
但是现在大部分各个专业领域的可燃气体检测仪的售价比较昂贵,并且大多只是对结果进行预警、低报、高报三限报警点设置。
并不适用于家庭,在LCD
显示可燃气体浓度数值上应实现普及。
同时可检测到多种危险气体。
1.3
本课题实现目标
本课题进行硬件部分和软件部分设计,硬件部分是利用烟雾敏传感器检测
空气中的可燃气体浓度并转为电压信号,经A/D
转换器程序转换成数字信号传给单片机系统,并经单片机及其外围电路信号处理,显示可燃气体浓度值以及超阈值声光报警,打开保护系统。
硬件设计部分主要包括:
MCU、A/D、LCD、外围扩展数据
RAM
等芯片的选择。
设计方案和元器件选择
因为设计时考虑酒精浓度是由传感器把非电量转换为电量,传感器输出的是0-5伏电压值且电压值稳定,外部干扰小等,所以可以把传感器输出电压值经过A/D转换得到数据交给单片机进行处理。
因此要求系统配备完善的模拟量和数字量输入输出通道和完善的中断系统和处理功能。
单片机采集烟雾传感器的响应信号,并且进行转换。
进行气体检测的基本步骤是信号采集处理、声光报警电路以及显示、保护电路测试。
模数转换就是用于快速、高精度的对输入信号采样编码,然后转化成数字量储存在数据储存器中,然后单片机通过特定的算法进行气体浓度的识别,同时和所设值进行对比,超出则报警同时显示浓度数值,没超出只显示浓度数并且将结果输出到LCD显示屏幕上。
我们选择单片机16F877A为控制核心,主要基于考虑16F877A具有低价高速,高可靠强抗静电,强抗干扰的特点。
16F877A
有40个引脚,32个外部双向输入/输出(I/O)端口,并且有2个外中断口,
2个全双工串行通信口,32个读写口线,片内振荡器及时钟电路,3个16位可编程定时计数器。
能够按照常规方法进行编程,也能够在线编程。
同时16F877A可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位,其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发本。
PIC
单片机有
PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。
单片机单片机引脚功能,引脚如图
2-2所示:
传感器
本系统直接测量的是空气中的可燃气体浓度。
在选择传感器的时候,一定要考虑到稳定性、灵敏度、选择性和抗腐蚀性。
本系统选择MQ6可燃性气体传感器,MQ6可燃气体传感器是气敏传感器,其具有很高的灵敏度、可检测多种可燃性气体、良好的选择性、长久的使用时间和可靠的稳定性的特点。
传感器的标准回路有加热回路和信号输出回路两部分。
其中信号输出回路能比较精准的检测出传感器表面电阻值的变化。
传感器表面电阻
RS
的变化,是通过与其串联的负载电阻RL
上的有效电压信号VRL输出面获得的。
二者之间的关系表述为:
RS/RL=(VC-VRL)/VRL,其中VC为回路电压,10V负载电阻
RL可调为
0.5~200K,加热电压
Uh为5V。
上述这些参数使得传感器输出电压为
0~
5V,MQ6
可燃性气体传感器的结构和外形如下图2-3所示,标准回路如下图2-4所示。
为了使测量的精确度达到最高,误差最小,需要找到适宜的温度,一般在测量之前将传感器预热5分钟。
实物图
2.4编码器
用于修改报警数值的器件有很多,出于方便,实用,简洁的考虑,我选着了编码器作为修改报警数值的器件。
旋转编码器可通过旋转可以计数正方向和反方向转动过程中输出脉冲的次数,旋转计数不像电位计,这种转动计数是没有限制的。
配合旋转编码器上的按键,可以复位到初始状态,即从0开始计数。
工作原理:
增量编码器是一种将旋转位移转换为一连串数字脉冲信号的旋转式传感器。
这些脉冲用来控制角位移。
在Eltra编码器中角位移的转换采用了光电扫描原理。
读数系统以由交替的透光窗口和不透光窗口构成的径向分度盘(码盘)的旋转为依据,同时被一个红外光源垂直照射,光把码盘的图像投射到接收器表面上。
接收器覆盖着一层衍射光栅,它具有和码盘相同的窗口宽度。
接收器的工作是感受光盘转动所产生的变化,然后将光变化转换成相应的电变化。
再使低电平信号上升到较高电平,并产生没有任何干扰的方形脉冲,这就必须用电子电路来处理。
读数系统通常采用差分方式,即将两个波形一样但相位差为180°
的不同信号进行比较,以便提高输出信号的质量和稳定性。
读数是再两个信号的差别基础上形成的,从而消除了干扰。
实现
A/D
转换的基本方法很多,有计数法、逐次逼近法、双斜积分法和并行转换法。
由于逐次逼近式A/D转换具有速度,分辨率高等优点,而且采用这种方法的ADC芯片成本低,所以我们采用逐次逼近式A/D
转换器。
逐次逼近型
ADC
包括1个比较器、一个模数转换器、1个逐次逼近寄存器(SAR)和1个逻辑控制单元。
逐次逼近型是将采样信号和已知电压不断进行比较,一个时钟周期完成1位转换,依次类推,转换完成后,输出二进制数。
这类型ADC的分辨率和采样速率是相互牵制的,优点是分辨率低于12位时,价格较低,采样速率也很好。
模数转换器具有8位分辨率、双通道
转换、输入输出电平与
TTL/CMOS
相兼容、5V
电源供电时输入电压在
0~5V
之间、工作频率为250KHZ、转换时间为32微秒、一般功耗仅为15MW
等优点,适合本系统的应用,所以我们采用ADC0832为模数转换器。
液晶显示模块与计算机的接口电路有两种方式,它与单片机的接口方法分为直接访问方式和间接控制方式。
直接访问方式是把液晶模块当作存储器或
I/O
设备直接接在单片机的总线上,单片机以访问存储器或I/O设备的方式操作液晶显示模块的工作。
间接控制方式只是利用它的
I/O口来实现与显示模块的联系,而不使用单片机的数据系统。
这种访问方式既不占用存储器空间,接口电路又与时序无关,其时序彻底地靠软件编程实现。
表2-1
LCD1602接口功能表
LCD1602
字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式
LCD,目前常用16×
1,16×
2,20×
2和40×
2行等的液晶显示模块,模块组件内部主要由LCD显示屏、控制器、列驱动器和偏压产生电路构成。
1602
液晶显示屏采用标准的16脚接口,其中各接口的功能如上表2-1所示:
系统硬件设计
基于单片机酒精浓度检测仪的硬件设计部分,首先,我们必须了解它的硬件设计原理其次,需要弄清楚它的总体构成及具体的外围电路最后,根据其原理框图和具体的外围电路得到完整的硬件总电路图。
由可燃性气体传感器对待测气体(液体)进行检测,转换成输出电压信号,以单片机为核心的控制、声光报警电路以及显示、排气电路。
测试仪进行气体检测的基本步骤是单片机先采集酒精传感器的响应信号,然后进行转换,储存在数据储存器中,最后单片机通过特定的算法进行气体浓度的识别,同时将分析的值与设定值进行对比,对超出设定值进行报警,并且将结果输出到LED显示屏幕上。
本系统由酒精传感器,单片机,声音报警,排气扇以及LCD显示等部分组成,在这次的整体设计中详细涉及下面几个方面,其原理框图如图
3-1所示:
图3-1系统总体流程图
硬件设计外围电路
单片机工作的过程中各指令的微操作在时间上有严格的次序,这种微操作的时间次序称作时序。
单片机的时钟信号用来为单片机芯片内部各种微操作提供时间基准。
的时钟产生方式有两种,一种是内部时钟方式,一种是外部时钟方式。
内部时钟方式即在单片机的外部接一个晶振电路与单片机里面的振荡器组合作用产生时钟脉冲信号。
外部时钟方式是把外部已有的时钟信号引入到单片机内,此方式常用于多片16F877A
单片机同时工作,以便于各单片机的同步,一般要求外部信号高电平的持续时间大于20ns,且为频率低于12MHz
的方波。
对于CHMOS工艺的单片机,外部时钟要由XTAL1端引入,而XTAL2端应悬空。
本系统中为了尽量降低功耗的原则,采用了内部时钟方式。
本设计中复位电路采用的是开关复位电路,开关S9未按下是上电复位电路,上电复位电路在上电的瞬间,由于电容上的电压不能突变,电容处于充电(导通)状态,故RST脚的电压与VCC相同。
随着电容的充电,RST
脚上的电压才慢慢下降。
选择合理的充电常数,就能保证在开关按下时是
RST
端有两个机器周期以上的高电平从而使STC89C51内部复位。
开关按下时是按键手动复位电路,RST端通过电阻与VCC电源接通,通过电阻的分压就可以实现单片机的复位。
如图3-3所示:
报警设计
在单片机应用系统中,一般的工作状态可以通过指示灯或数码显示来指示,供操作人员借鉴。
但针对某些特定状态,例如系统检测到的错误状态等,为了使操作人员不小心忽视,及时采取措施,必须还需要有某种更能引人注意,提起警觉的报警信号。
这种报警信号一般有闪光报警、鸣音报警和语音报警三种类型。
其中,前两种报警装置因硬件结构简单,软件编程方便,往往在单片机应用系统中使用。
但语音报警虽然警报信息较直接,并且硬件成本高,结构相对复杂,软件量也增加。
闪光报警实现单频音报警的接口电路比较简单,只要当值高于警报值的时候给一个低电频就能驱动二极管发光,简单易懂。
在本次设计中,需要一个比较大的电压源和一个5V的单片机供电源,为了实现便携式,设用一个9V的电压源,一般6节电池和一个9V的电池都可以提供,因而需要一个电压转换把9V转换成5V。
工作原理如图
3-5
低压层直流稳压电源电路原理图。
该电路是由电流放大、电压放大和基准电压等3个环节组成。
其中,基准电压产生,按图中电路连接,当通过
R0
的电流在
0.5~10
mA
时可获得稳定的
V
基准输出。
输出电压的具体数值由运算放大器U确定,采用同相放大器的优势在于其输入阻抗极大,更能很好地将TL431输出的2.5
V电压与后级电路隔离,使其免受负载变化的影响;
运放与电阻R3和R2组成比例放大环节,可对基准电压按要求进行比例放大输出,但输出电压最大不能超过运放的电源电压。
系统软件设计
主程序实现的功能:
与硬件相结合实现便携式酒精浓度检测仪的各个功能主要是检测与显示,数据存储功能子函数的调用。
流程图图
4-1所示:
首先开启启动按钮,启动单片机和显示器,同时对单片机内部进行初始化,紧接着初始化显示屏,初始化完毕后显示开机画面显示主菜单。
此检测仪会向更稳定,更可靠,更快捷等要求发展。
工厂,企业到居民家庭,可燃性气体泄露的检测,对居民的人身和财产安全都十分重要且必不可少的。
在产品未来的发展规划上,我希望可燃性气体检测仪不仅能实现声光报警,并且能通过短信告知在外工作的人,或工厂的管理者,将安全隐患扼杀在萌芽状态。
现如今,由于人们安全意识增强,对环境安全性和生活适性要求提高。
单片机具有受集成限制,片内储存量较小,可靠性好,扩展简单,控制功能强等特点,所以,基于单片机的可燃性气体检测仪的研究和开发生产具有十分广泛的现实市场和潜在的市场需求。
针对目前的现状,该系统设计遵循体积小,质量轻,性价比高的原则。
软件是C语言编写的,具有很好的可控性、模块化和移植性。
本系统的主要模块为传感检测、A/D转换、液晶显示。
通过本次电子信息技术比赛,我加深了很多在大学课本上学到的知识,并且用于实践,相信在以后的工作中,这次设计是我宝贵的财富。
附录:
1.硬件电路:
2.PCB原理图:
3.PCB图:
4.使用元器件名单:
5.程序:
#include<
pic.h>
#defineCLKRC1//#defineCLKRC1
#defineDTRD6//#defineDTRD6
#defineSWRC3//#defineSWRC3
#defineDBPORTB//#defineDBPORTB
#defineRSRC6//#defineRSRC6
#defineRWRC5//#defineRWRC5
#defineERC4//#defineERC4
#defineucharunsignedchar
voiddelay();
voidinit();
voidlcd_init();
voidlcd_com(uchari);
voidlcd_data(uchari);
voiddisplay1();
voidad();
voidad_init();
voidzhuanhuan();
voiddelay1();
voiddisplay2();
voidtiao1();
voidtiao2();
voidtiao3();
voidtiao4();
voidbmq();
ucharflag;
unsignedlongnum;
ucharxianshi[]={'
C'
'
O'
:
'
0,'
.'
0,0,0,'
M'
g'
/'
L'
};
ucharxs[]={'
S'
E'
T'
signedcharxs1[]={'
U'
P'
0};
signedcharxs2[]={'
D'
W'
N'
1,'
5};
voidmain()
{
init();
ad_init();
lcd_init();
while
(1)
{
while(SW==1)
ad();
zhuanhuan();
display1();
if((xianshi[3]>
=(xs1[3]+48))&
&
(xianshi[5]>
=(xs1[5]+48)))
RD0=1;
RD1=1;
}
if((xianshi[3]<
=(xs2[5]+48))&
(xianshi[5]<
=(xs2[7]+48)))
RD0=0;
RD1=0;
lcd_com(0x01);
delay();
delay1();
tiao1();
tiao3();
tiao2();
tiao4();
}
voidinit()//单片机初始化
TRISA=0xff;
TRISB=0x00;
TRISC=0x0f;
TRISD=0x40;
PORTA=0x00;
PORTB=0x00;
PORTD=0x00;
PORTC=0x00;
voidad_init()//AD初始化
ADFM=1;
PCFG3=1;
PCFG2=1;
PCFG1=1;
PCFG0=0;
ADCS2=0;
ADCS1=0;
ADCS0=1;
CHS2=0;
CHS1=0;
CHS0=0;
ADON=1;
voidad()//打开AD
GO=1;
while(!
GO);
num=ADRESH*256+ADRESL;
voidlcd_init()//1602初始化
lcd_com(0x38);
lcd_com(0x01);
lcd_com(0x06);
lcd_com(0x0c);
lcd_com(0x10);
voidlcd_com(uchari)//写命令
RS=0;
RW=0;
E=1;
DB=i;
E=0;
delay();
voidlcd_data(uchari)//写数据
RS=1;
voiddisplay1()//第一屏
uchari,j;
lcd_com(0x00|0x80);
for(i=0;
i<
12;
i++)
lcd_data(xianshi[i]);
lcd_com(0x4d|0x80);
for(j=0;
j<
3;
j++)
lcd_data(xs[j]);
voidzhuanhuan()//转换
num=num*1000*58/(1024*22);
xianshi[3]=num/1000+48;
xianshi[5]=num%1000/100+48;
xianshi[6]=num%100/10+48;
xianshi[7]=num%10+48;
voiddisplay2()//第二屏
uchari,j;
lcd_com(0x00|0x80);
for(i=0;
lcd_data(xs1[i]);
lcd_data(xs1[3]+48);
lcd_data(xs1[4]);
lcd_data(xs1[5]+48);
lcd_com(0x40|0x80);
for(j=0;
5;
lcd_data(xs2[j]);
lcd_data(xs2[5]+48);
lcd_data(xs2[6]);
lcd_data(xs2[7]+48);
voidtiao1()
display2();
bmq();
if(flag==1)
xs1[3]++;
if(xs1[3]>
3)
{xs1[3]=0;
if(flag==2)
xs1[3]--;
if(xs1[3]<
0)
{xs1[3]=3;
voidtiao2()
xs2[5]++;
if(xs2[5]>
{xs2[5]=0;
xs2[5]--;
if(xs2[5]<
{xs2[5]=3;
voidtiao3()