设计简介
硬件设计由AT89C51单片机、DS18B20温度传感器、4位共阳数码管、电源模块、报警模块、按键模块、MQ-2烟雾检测模块和ADC0832模数转换模块组成。
烟雾传感器MQ-2检测空气中的烟雾气体,通过ADC0832进行数据转换,经过单片机的运算处理后在数码管上显示浓度,同时采用DS18B20温度传感器检测环境温度,经过转换再经过单片机的运算也在数码管上进行显示。
单片机程序采用C语言编写,用Proteus仿真软件进行了仿真实验,并在仿真的基础上进行了实物的调试与制作。实物测试结果:当实际中的烟雾浓度和环境温度值大于设置的烟雾浓度和设置温度值时,蜂鸣器便发出报警声。通过实验表明本系统能够实现温度在测量范围从0度到99度报警以及在0-9等级烟雾浓度范围内的报警功能。
设计目标
制作一个可以实现以下功能的基于封闭环境下的烟雾报警系统,一是可以检测到可燃气体和烟雾,二是可以通过单片机对相应的驱动负载和报警设备进行控制,三是能够通过数码管实时显示烟雾的浓度值,并且可以通过按键来设定阀值。
该项目主要完成的任务包括以下三部分:
(1)硬件部分:由烟雾传感器的选择,烟雾信号模数转换电路的设计,显示模块的选择以及报警驱动电路设计组成。
(2)软件部分:是由单片机控制程序的编制和原理图的绘制两部分组成的。
(3)系统的调试与分析:在实物和程序都做好以后,要对系统进行一个测试与测验,分析观察系统的可靠性与实用性,来使系统达到正常工作状态。
系统总体设计方案
工作原理:烟雾传感器MQ-2实时检测空气中的烟雾气体,经过ADC0832模数转换芯片进行模数转换,再经过单片机的运算处理后在数码管上把烟雾的浓度显示出来,同时采用DS18B20温度传感器检测环境温度,经过转换,再传给单片机进行运算也显示在数码管上。
还可以用设置按键对烟雾和温度的报警值进行设定。当检测空气中的烟雾浓度和周围温度值大于或等于设置的烟雾浓度值和温度值(报警值)时,便会触发报警,蜂鸣器发出蜂鸣声。出现突发状况的时候可按紧急报警键,同样可以触发报警系统。
整个系统包括主控制模块、显示模块、烟雾检测采集模块、AD数模转换模块、按键控制模块和报警模块。
主控制模块
此设计中主控制模块控制核心是AT89C51单片机,是因为此类单片机具有它特有的优势:容易操作、简便、方便快捷、较强的抗干扰能力和抗静电能力,这样单片机就可以充分发挥出单片机资源丰富、强大控制功能和可位寻址操作功能的优点。
AT89C51单片机位操作指令十分丰富,单片机所有的I/O接口都可以按位寻址。单片机具有的足够的程序空间,来满足此设计,采用51 单片机控制,具有两个16位数据指针DPTRO/DPTR,因此软件编程的可选择性比较大,这样各种算术算法以及各种各样的逻辑控制便可以通过编程来实现,而且51单片机的体积比较小,这样硬件实现就变得简单,安装方便,而且此系统控制模块简单,数据量较小。所以选择ATC89C51作为核心。
主控制最小系统电路如图2-2所示。单片机最小系统硬件部分包括电源电路、复位电路、时钟电路三个部分[4]。AT89C51单片机的工作电压范围:3.3V-5.5V,所以在本设计中给单片机外界5V的直流电源,工作频率范围0-40MHz,但实际工作频率可达48MHz。
复位电路(图中连接单片机RST的电路)就是确定单片机的初始化操作,目的是让单片机在确定的初始化状态,相当于完成单片机的启动过程。当单片机开始工作接通电源时或者按下复位开关键,便会与RST形成通路,此时便会形成复位信号,从而确定单片机起始状态。当单片机系统在运行的过程中中,受到某些无法预知的因素的影响导致程序错误时,此时可以按下复位按键,则单片机内部的程序便会重新开始运行。
单片机在稳定振荡器以后,在RESET端口连续接收到24个振荡周期即2个机器周期的高电平信号时就可以完成复位[5]。本设计采用的是简单的RC冲放电电路,电阻R18的目的是为了提高高电平的值。
时钟电路(图中XTAL1与XTAL2形成的通路)的作用对单片机来说就好比人的心脏对于人,只有在时钟的驱动下单片机才能工作。因为在AT89C51内部就含有一个晶振,所以在单片机的XTAL1和XTAL2引脚接一个频率为12MHz晶振,便可以形成自激振荡器,这个自激振荡器能在单片机内部产生时钟脉冲信号。
此次的正弦信号是由时钟电路提供。在单片机内部还有一个构成内部振荡器的反相放大器[6]。引脚XTAL1是反向放大器的输入,而引脚XTAL2是反向放大器输出;如果采用外部时钟源驱动,XTAL2则不需要连接;一般情况下同一个系统会使用同样频率的晶振,这样整个系统的每个部分便可以保持一致。
显示模块电路
显示模块用四位数码管显示,数码管显示的速度比较快,原理相对简单,很容易被使用,显示效果简洁,所以选择了数码管。数码管一般分为共阳极数码管和共阴极数码管[7]。本设计用的是共阳极数码管。共阳极数码管是把发光二极管的阳极连接在一起,公共阳极接正电压(通常是+5v),当某个发光二极管的阴极收到低电平的信号时,则这个发光二极管便会发光,此时这个发光二极管相应的段就可以显示出来。根据不同发光段组成想要的数字。
在图中数码管的A-G,DP连接的是单片机的P1口,P1口(P1.0~P1.7,1~8 脚):P1口是一个双向I/O口。数码管的驱动一般分为静态驱动和动态驱动[8]。静态驱动就是数码管的每个LED灯对应单片机的一个I/O接口,这种驱动的优点是简单,但占用较多的I/O接口。图2-3中的三极管是用来做驱动的作用,因为单片机的接口输出电流比较小,从而导致驱动能力较弱,采用三极管起到放大电流的作用,提高了驱动能力。
温度传感器(DS18B20)电路
温度采集电路如图所示,DS18B20的数据脚和电源之间加了一个4.7K的电阻,目的是不仅为了保证数据的稳定,同时起到限流的作用。
温度传感器将采集的信号数据传输到单片机的P3.5口。因为从单片机的P3.5接口到温度传感器DS18B20 直接连接便可,而且温度传感器对温度信号的读、写以及温对度信号的转换的所需的电源而并不需要外部电源由数据线自身就可以提供,所以不需要备份电源,而且可以在1秒内把温度数据转换为数字,具有很高的效率。温度传感器对温度测量范围从-55度到+125度,增量值为0.5度,具有较高的测量温度和精确度,所以选择了DS18B20。
烟雾采集检测电路
烟雾采集检测电路如图2-5所示。烟雾采集检测电路是利用烟雾传感器检测周围空气的烟雾信号传输给模数转换电路。烟雾传感器采用的是MQ-2传感器。当烟雾传感器检测到烟雾时,烟雾时传感器的电阻值下降,通过测量传感器的输出电压值变化便可以反映烟雾浓度的变化,在此设计中,将传感器与电压串联,将电压信号传输到ADC0809A/D转换电路。MQ-2烟雾传感器具有较高的灵敏度、电导率波动范围大、恢复速度快、强大的抗干扰能力、输出的烟雾信号大、使用的时间长和工作相对稳定等优点。
AD模数转换电路
ADC0809模数转换电路如图2-6所示。AD数模转换电路是将烟雾传感器检测到的模拟信号转换成数字信号再次输入到单片机,单片机对接收到的数字信号进行相应的运算[9]。模数转换电路采用ADC0832,经过ADC0832采集后就可以得到烟雾各种气体后经过R14电阻的电阻分压的电压信号转换成数字信号,再传输给单片机,经过单片机运算分析后在数码管上把烟雾的浓度显示出来,
ADC0832芯片接口功能:CS片连接单片机的P3.2。当单片机给予低电平信号时ADC0832开始工作。CH0和CH1是模拟输入接口,接收由烟雾传感器检测的烟雾信号。在本设计中选择了CH0通道。D0与D1是转换数据输出接口,因为DO接口和D1接口在同时工作时并不是同时有效的所以将D0和D1并联 数据信号输出,再与单片机的p3.3相连,将转化的数字信号传给单片机。CLK 芯片时钟输入,连接单片机的P3.4,用于计数。
烟雾信号通过CH0进入ADC0832,D0将转换的数字信号传输到单片机的P3.3(外部中断)。
声音报警电路
烟雾检测仪系统电路采用PNP型S8550三极管驱动,蜂鸣器连接单片机的P3.6接口。当蜂鸣器接收到来自单片机的P3.6口输出的低电平信号时,此时三极管导通,便会触发报警。当蜂鸣器接收到来自单片机P3.6口输出的高电平时,三极管处于截止状态,电路发生断路,蜂鸣器因断电便停止报警。本设计的声音报警电路选择的是蜂鸣报警器电路,但是蜂鸣器的工作电流比较大,单片机的I/0口的电流偏弱并不能直接驱动蜂鸣器,所以此次设计的蜂鸣器前添加了一个PNP型三极管8550,这样就可以放大电流,从而来驱动蜂鸣器。图2-7中的电阻R13起到限流的作用,防止电流过大
系统主程序设计
烟雾报警系统主程序流程图如图3-1所示。需要注意的是当第一次使用时,第一步要给传感器预热,因为MQ-2型烟雾传感器在没有电源供应的情况下放一段时间后,当再次接通电源时,并不能立刻检测烟雾信号,所以预热这一步骤是必须的[11]。当预热结束后一段时间,报警系统才正式进入监控状态。
在报警系统工作过程中,烟雾浓度信号经ADC0832由模拟信号转换成数字信号后,再由AT89C51进行处理和运算,判断和控制系统是否触发报警。主程序包括数码管浓度字符显示功能(显示烟雾浓度和温度值)、手动报警功能、报警浓度等级和报警温度设定功能,中断子程序等。
检测烟雾信号浓度的同时检测温度传感器的温度,和设置的阈值做对比,如果大于设置阈值,便会触发报警,蜂鸣器发出滴滴蜂鸣声,此设计中温度报警阈值同样可以设定,这样的设计使报警器更加符合实际情况,是烟雾报警器的功能进一步完善,进一步满足报警器的要求,从而进一步降低火灾发生的几率。