传感器课程设计112号设计docWord下载.docx
《传感器课程设计112号设计docWord下载.docx》由会员分享,可在线阅读,更多相关《传感器课程设计112号设计docWord下载.docx(22页珍藏版)》请在冰豆网上搜索。
本文所设计的数字气体报警器采用单片机AT89C51,其价格便宜,易于产品化。
本设计能将置于测试环境中的气体传感器输出的模拟电压通过A/D转换器送入单片机AT89C51中进行处理并通过数码管显示,通过设置报警值,当检测到的浓度达到或者超过设定值时,用单片机控制发光二极管发光报警,同时打开喇叭发出声音报警,来达到报警的目的,并通过外接排风扇与电磁阀对其进行程控,以防事故的发生。
而当系统出现故障时,黄色LED
亮启,便于用户及时对报警器进行维修。
系统以MQK气体传感器和AT89C51单片机为核心,设计气体泄漏报警器。
实现:
1.准确测量周围环境中的可燃性气体、有毒有害气体的泄漏;
2.实现系统各个模块的功能控制;
3.实现单片机编程语言系统的控制及传感器电路的控制。
4.研究单片机各接口的作用及功能;
5.了解MQK气体传感器的具体功能;
6.实现对基本报警电路的控制。
二、设计任务与要求
2.1设计任务
设计是利用单片机控制技术,制作了程控一氧化碳报警器。
该仪器对一氧化碳进行实时监控,当一氧化碳的浓度超过允许值时,单片机控制电路进行报警,并通过外接排风扇进行程控,以防事故发生。
基于AT89C51性价比高的优势,主要运用了AT89C51单片机进行控制。
而对与报警器而言至关重要的部分是传感器,由于GS系列气敏元件采用半导体敏感材料,其灵敏度、选择性、稳定性、抗干扰性、响应时间及寿命等主要性能,均达到国内先进水平。
用该系列元件组装成易燃易爆和有毒气体泄漏报警器及检测装置,可广泛运用于矿山、油田、化工、国防、医药及家庭,所以在设计中采用的是GS系列传感器。
在模数转换这块,利用ADC0809实现模数转换,ADC0809是8位逐次渐进型的A/D转换器,它采用COMS工艺20个引脚双列直插式封装,它有三态琐存器,直接驱动数据总线,与微机相连时不需要附加接口电路。
为了方便用户了解浓度信息,好提前准备,还采用了显示环节。
显示器显示常用两种方法:
静态显示和动态扫描显示。
所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。
这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU的开销小。
可以提供单独锁存的I/O接口电路很多,这里运用了常用的74LS1648位移位寄存器串并转换电路。
总的来说,设计主要利用了以上的检测模块,A/D转换模块,显示模块,事故处理模块,控制模块五大模块,组成了可燃气体探测报警器。
2.2设计要求
(1)系统要求设置正常工作状态,除正常工作状态外,电磁阀要求处于关闭状态,以切断煤气通道,防止煤气外泄。
(2)在非正常工作状态下,当室内一氧化碳的浓度达到100ppm时系统应启动音乐报警,若2min报警无效,系统应启动排风扇进行通风排气。
(3)系统进入正常工作状态后,先启动排风扇进行通风,然后启动电磁阀供给煤气。
(4)系统进入正常工作状态,自45min后,每隔10min音乐响起一次,用来提醒用户在工作完毕后,停止供气。
(5)在正常工作状态下,当系统检测到一氧化碳的浓度达到300ppm时,应关闭电磁阀,切断煤气通道以防止意外事故的发生。
三、设计步骤及原理分析
3.1设计方法
而对与报警器而言至关重要的部分是传感器,由于GS系列气敏元件采用半导体敏感材料,其灵敏度、选择性、稳定性、抗干扰性、响应时间及寿命等主要性能,均达到国内先进水平.用该系列元件组装成易燃易爆和有毒气体泄漏报警器及检测装置,可广泛运用于矿山、油田、化工、国防、医药及家庭,所以在设计中采用的是GS系列传感器。
3.2设计原理及分析
1.系统的组成
整个报警器由三个部分组成:
浓度检测及显示模块。
主控模块和报警及事故处理模块。
系统的组成框图如图3-4所示。
故障处理
报警控制
浓度显示
AT89C51
气体浓度检测
工作状态设置
图3-4系统组成框图
2.系统各模块的功能
(1)气体浓度检测模块
系统采用三点单独检测的方法,可用来巡回检测三个不同的房间;
也可用来巡回检测同一个房间的不同方位.检测器件选用高温一氧化碳气体传感器(GS-A1),该传感器对一氧化碳具有很高的灵敏度,稳定性和抗湿性良好,加活性碳罩后,可防止乙醇等有机气体的干扰.检测结果经高精度运放器OP07放大后,送入ADC0809模P数转换芯片进行模)数转换,单个传感器检测电路图如图5。
(2)模数转换模块
在本设计中,另一重要模块就是A/D模数转换模块。
因为模拟信号不能直接送往单片机进行处理,必须进行A/D转换。
模数转换的过程有四个阶段,即:
采样,保持,量化和编码。
本设计利用ADC0809实现模数转换。
ADC0809是8位逐次渐进型的A/D转换器,它采用COMS工艺20个引脚双列直插式封装,它有三态琐存器,直接驱动数据总线,与微机相连时不需要附加接口电路。
ADC0809的主要性能如下:
1.分辨率为8位。
2.最大转换误差为1LSB。
3.转换时间为100uS。
4.逻辑点平与COMS和TTL相兼容。
5.+5V单电源供电。
6.可对0到+5V的输入模拟信号进行转换。
图3-5A/D转换模块引脚图
程序中预采用模数转换电路由ADC0809芯片组成,三路检测结果从IN0、IN1、IN2输入,转换顺序由ADDA、ADDB、ADDC控制,转换结果送单片机P0口供单片机进行数据处理。
3.显示电路
由P0口输入的数据,在单片机内部进行标度变换后,从单片机的串行口输出进行显示.系统的工作状态和气体浓度,采用LED数码管显示,每30秒刷新一次.为了不再扩展IPO口,系统采用串行口的移位功能扩展为4位静态显示电路.第一位为系统工作状态显示,后三位为一氧化碳气体浓度显示.当第一位为“00”时,表示系统工作在三点巡回检测同一个房间状态;
为“8”时表示系统工作在三点巡回检测同一个房间正常工作状态;
为“1”、“2”、“3”时表示系统工作在单独检测状态,此时后三位显示的数据分别为第1号、第2号、第3号传感器所检测到的一氧化碳气体浓度。
浓度显示单位为5ppm.74LS164为串行输入,并行输出寄存器,当P2.0=1且AT89C51的TXD端有输出时,74LS164接收串行数据,更新显示;
当P2.0=0时,显示的内容不变。
4.主控模块
系统采用单片机进行控制,选用AT89C51单片机.该单片机为ATMEL公司的产品,其指令系统完全与8031/8051兼容,内带4K字节的内存和程序保护系统,便于程序的调试修改和保密,各管脚的功能如下:
1)ALE端的功能:
ALE端与ADC0809的CLOCK相连,为ADC0809输入时钟脉冲.
2)P0口的功能:
P0口与ADC0809的数据输出口相连,接收APD转换结果.
3)P1口的功能:
P1.0端接工作状态控制开关,开关闭合时,系统进入正常工作状态;
P1.1端外接的开关为三点巡回测量同一个房间控制开关,当开关闭合时有效;
P1.2~P1.4端接ADC0809的ADDA、ADDB、ADDC三端,控制ADC0809的八路模拟输入转换.
4)P2口的功能:
P2.1端与WR端通过外接的与门求反后与ADC0809的START和ALE相连,用以启动APD转换,且将8路地址锁存;
P2.1端与RD端通过外接的与门求反后与ADC0809的OE端相连,用以允许将APD转换结果输出,让单片机读取转换结果;
P2.2端用作系统音乐报警信号控制端,高电平有效;
P2.3端用作排风扇启动信号控制端,高电平有效;
P2.4端用作电磁阀启动信号控制端,高电平有效。
5)P3口的功能:
P3.0、P3.1端和P2.0端用于控制系统的显示输出。
5.报警与数据处理模块
当气体浓度超过允许值时,该模块动作,发出警报信号并根据不同情况进行事故处理.P2.2端为音乐控制端,P2.3端为电磁阀启动控制端,P2.4为排风扇控制端,均为高电平有效.为防止市电对系统的干扰,P2.3和P2.4端都经过光电耦合管对电磁阀和排风扇进行控制.
系统各模块之间的接线图如图6所示.
图5单个传感器电路图
6.系统主要器件的介绍
(1)GS传感器介绍
设计中所用到的气体传感器是GS系列传感器,下面具体介绍一下GS系列气体传感器:
GS系列气敏元件采用半导体敏感材料,工艺独特为国内首创,其灵敏度、选择性、稳定性、抗干扰性、响应时间及寿命等主要性能,均达到国内先进水平.用该系列元件组装成易燃易爆和有毒气体泄漏报警器及检测装置,可广泛运用于矿山、油田、化工、国防、医药及家庭.GS系列传感器主要有以下特点:
1)灵敏度高、功耗低,输出信号强.
2)选择性好、对被检测的气体非常敏感,而对干扰气体则灵敏度很低
3)稳定性、可靠性强
4)具有抗高温、抗高湿性能
5)元件不含任何贵金属催化剂,具有抗中毒及抗饱和性能.
但由于气体传感器是使用半导体材料来制作,不可避免的是有温度漂移问题,如何处理好气体传感器温度补偿问题是报警器设计的关键(图3-1、图3-2).以前的一般做法是把报警器的报警阀值电压作补偿,这样的电路会简单一些,但温度补偿的效果不太理想,主要是在低温环境里,气体传感器的表面温度降低导致气体传感器的性能变差,解决的方法是在低温环境里提高气体传感器的加热功率,使气体传感器的表面温度维持相对恒定,达到使气体传感器稳定工作的目的。
图3-1传感器输出特性曲线图
图3-2传感器加温度补偿所需的加热电压曲线
气体传感器加热电源的原理见图3-3,利用PIC单片机的脉冲宽度调制输出功能(简称PWM),及A/D转换输入功能实现电源电压的稳定和自我调整。
如图所示,是降压式开关电源(Buck式)的基本电路。
其中,Vin为输入电压,Vout为输出电压,Q1、Q2为开关三极管,R1、R2、R3为电阻,L为电感,D为肖特基二极管;
C为电容,MQK为气体传感器,通常有:
,
;
。
其中,N为脉宽占空比,Ton为开关三极管导通时间,Toff为开关三极管关闭时间,Rx为开关电源的负载电阻,Vp为输出纹波电压.实际使用开关速度为20KHz,输出的电压为2.25±
0.01V,输出电流为120mA,Vp≤0.1V.
该电路的工作原理是:
预先设定目标工作电压值,输出AT89C51单片机的PWM,启动开关电源工作,通过A/D转换电路将电源电压值读入单片机,如果电压值偏离给定值,则调整PWM输出,这样形成一个电压调整的闭合环路,直到电压值维持恒定,而环境温度将决定电压给定值的大小,达到随外界温度的改变而改变加热功率的目的,以补偿气体传感器的温度变化,同时使用开关电源减少了线性稳压电源的压降损耗.该开关电源电路的电压稳定精度取决于单片机A/D和PWM的精度,该AT89C51单片机基本能够满足气体泄漏报警器的性能需求。
图3-3传感器加热电源原理图
(2)7LS164移位寄存器介绍
74LS1648位移位寄存器(串行输入,并行输出)简要说明164为8位移位寄存器,其主要电特性的典型值如下:
当清除端(CLEAR)为低电平时,输出端(QA-QH)均为低电平。
串行数据输入端(A,B)可控制数据。
当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0为低电平。
当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态。
引出端符号CLOCK时钟输入端CLEAR同步清除输入端(低电平有效)A,B串行数据输入端QA-QH输出端
逻辑及封装图
双列直插封装
极限值电源电压…7V
输入电压…5.5V
工作环境温度54164…-0~70℃
储存温度…-65℃~150℃
真值表
H-高电平L-低电平X-任意电平↑-低到高电平跳变QA0,QB0,QH0-规定的稳态条件建立前的电平QAn,QGn-时钟最近的↑前的电平
时序图
下面再介绍一下74LS164驱动数码管:
在单片机应用系统中,显示器显示常用两种方法:
可以提供单独锁存的I/O接口电路很多,这里以常用的串并转换电路74LS164为例,介绍一种常用静态显示电路,以使大家对静态显示有一定的了解。
MCS-51单片机串行口方式0为移位寄存器方式,外接6片74LS164作为6位LED显示器的静态显示接口,把8031的RXD作为数据输出线,TXD作为移位时钟脉冲。
74LS164为TTL单向8位移位寄存器,可实现串行输入,并行输出。
其中A、B(第1、2脚)为串行数据输入端,2个引脚按逻辑与运算规律输入信号,共一个输入信号时可并接。
T(第8脚)为时钟输入端,可连接到串行口的TXD端。
每一个时钟信号的上升沿加到T端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164中。
R(第9脚)为复位端,当R=0时,移位寄存器各位复0,只有当R=1时,时钟脉冲才起作用。
Q1…Q8(第3-6和10-13引脚)并行输出端分别接LED显示器的hg·
·
a各段对应的引脚上。
在给出了8个脉冲后,最先进入74LS164的第一个数据到达了最高位,然后再来一个脉冲会有什么发生呢?
再来一个脉冲,第一个脉冲就会从最高位移出,搞清了这一点,下面让我们来看电路,6片7LS164首尾相串,而时钟端则接在一起,这样,当输入8个脉冲时,从单片机RXD端输出的数据就进入到了第一片74LS164中了,而当第二个8个脉冲到来后,这个数据就进入了第二片74LS164,而新的数据则进入了第一片74LS164,这样,当第六个8个脉冲完成后,首次送出的数据被送到了最左面的164中,其他数据依次出现在第一、二、三、四、五片74LS164中。
3.3设计步骤
本设计的主要功能实现在于程序的编写,流程图如图4-1:
图4-1软件流程图
如图所示,整个报警器程序上分成中断取值转换、调零、报警、显示四大模块。
1.主程序
整个程序一共使用了两个中断,一个外部中断即INT0中断,一个定时/计数器中断即IT0中断.这两个中断各有其作用,INT0中断是用来判断A/D转换器ADC0809对模拟信号的转换是否完成,当A/D转换结束后,ADC0809发出结束EOC(高电平)信号,该信号可供单片机查询,也可反相后作为向单片机发出中断信号,而本设计正是用的这个方法,使得程序进入中断取值程序.而程序中所用到的IT0中断,是为产生一个周期为2S的方波而设计的,其作用是为看门狗产生喂狗子信号.具体程序如下:
ORG00H
JMPSTART;
主程序入口地址
ORG03H
JMPINTO;
外中断INTO入口
ORG0BH
JMPITOP;
定时器0中断入口
ORG0100H
START:
MOVIE,#10000001B;
INT0中断使能
MOVIP,#00000001B;
INT0中断优先
MOVTCON,#00000000B;
设置INT0为电平触发
MOVSCON,#00000000B;
串行口发送,接收标志位请0
MOVSP,#60H;
设堆栈指针
MOVTMOD,#01H;
设置T0为方式1
CALLPT0M0
HERE:
AJMPHERE;
自身跳转
PT0M0:
MOVTL0,#0CH;
T0中断服务程序,T0重新置初值
MOVTH0,#0FEH
SETBTR0;
启动T0
SETBET0;
允许T0中断
SETBEA;
CPU开中断
RET
ITOP:
T0中断服务程序,T0置初值
MOVTH0,0FEH
CPLP1.0;
P1.0状态取反
RETI
ACALLLED;
调用LED自检子程序
MOV33H,#00H;
设置中断完成标志为0
MOVDPTR,#0FEFFH;
ADC0809的端口地址
MOVX@DPTR,A;
使BUS为高阻抗,令ADC0809开始转化
WAIT:
MOVA,33H;
等待A/D转换完成信号
JNZINTOK
JMPWAIT;
未完成则跳回等待
INTOK:
MOVA,32H;
将最新的浓度值存入累加器中,(若A/D未工作,则A=0)
JNZL1
MOVA,30H
JMPL2
L1:
MOV30H,31H
MOVA,31H;
将新浓度载入累加器
L2:
CALLBCD;
调用BCD码调整程序
CALLDISP;
显示当前浓度
CALLADZERO;
调用零点调整子程序
CALLALARM;
调用判断报警程序
CALLBCD
调用显示子程序
CLRA;
清除累加器值
返回
在主程序通过对33H中数值的判断断定A/D是否转换完成,当33H中为1时,转换完成,程序调用调零、报警、显示模块对输入数据进行处理。
2.调零子程序
由于未知问题,可能造成送入单片机中显示的模拟电压量与真实电压存在区别,这种误差可以通过在中断处理中对A/D转换的数值加上一个调整值来解决。
这样,我们就能根据实际情况来对报警器输出的数值进行控制,使其记数更加精确,使用更方便。
我们可以利用对端口的电平高低来判断是否需要进行调零处理,故可将按键开关接于端口P2.2.若开关按下,则说明有调零需要,于是进入调零处理程序;
若开关没有按下,则说明没有调零需要,系统进入下一步.通过设置一个按键,既可保证程序顺利进行,又方便用户使用.具体程序如下:
ADZERO:
CALLDELAY
JBP2.2,JMP1;
判断调零按钮是否按下,没按则跳JMP1
………..
JMP1:
通过对P2.2位的判断来分辨是否有调零请求,若有则跳入调零模式,调零模式中程序如下:
LOOP1:
JNBP2.2,$;
消除抖动延时
MOVA,40H;
将调零预设值40H送入
CLRC;
清除进位标志
SUBBA,#01H;
调零值减1
JNCLOOP2;
未借位则跳LOOP2
MOVA,#05H;
有借位则重设调零值为5
LOOP2:
MOV40H,A;
将调零值送回40H保存
MOVA,R3;
将当前浓度值送入A
JZXEND
DECA;
当前浓度值减1(响应调整变化)
XEND1:
MOV30H,A;
送回30H保存
MOV31H,A;
送回31H保存
调用BCD码调整
JMPLOOP
XEND:
MOVA,#63H
JMPXEND1
进入调零模式后,若有按键则,LED数码管示数响应按键变化。
若3秒无任何按键,则退出调零模式返回主程序。
3.显示子程序
因为通过A/D转换进入单片机8051的浓度值以十六进制存在,为了让LED显示需要转换为BCD码,其BCD码转换程序如下:
BCD:
MOV55H,#00H;
存放BCD转换中的百位数
MOV56H,#00H;
存放BCD转换中的十位数
CLRC