基于STC89C52单片机的智能火灾报警系统设计
2023-01-11于骄洋王文鑫唐雪莹
于骄洋,王文鑫, 唐雪莹
(北京工业大学,北京,100124)
0 引言
火灾事故往往是因为人们的消防安全常识薄弱或存在误区从而导致悲剧发生[1]。严峻的事实让人们逐渐认识到建立良好火灾报警机制的重要性,并随科技的进步对火灾报警系统有了更加多样化、智能化的需求。
本设计基于STC89C52单片机,在传统火灾报警器的简单声光报警的功能基础上,增加了液晶显示以及通过液晶和按键调整报警阈值的功能,为报警系统在不同环境中的使用增加可变通性,方便用户的使用;同时,电话报警的功能解决了当火灾发生时用户不在家无法得知灾情的问题,并相较于短信报警的提醒更加引人注意;传感器的运用以及通过编程实现的延时报警可以更加准确、及时地进行报警。系统使用方便、价格低廉,适用于各种无烟环境,可有效地减少由火灾引起的人员伤亡和财产损失。
1 系统的总体结构设计
系统的总体结构示意图如图1所示。本系统以STC8952单片机为核心,采用5V锂电池供电,配合内部振荡器和外部手动复位电路构成单片机最小系统,涵盖按键电路、温度检测电路、烟雾检测电路、液晶显示电路、声光报警电路以及电话报警电路六个功能电路,配合软件编程可实现所需功能。
图1 系统总体结构示意图
系统的工作机制为:烟雾与温度检测电路通过传感器不间断地实时监测所处环境的烟雾浓度和温度,并将二者通过LCD液晶显示器呈现给用户;在报警系统开始工作后,可根据需要通过按键电路中的设置键与加、减按键结合液晶显示随时调整烟雾浓度或温度的报警限。当按下布防键后,系统进入布防状态:若监测的烟雾浓度或温度超过所设置的报警限,系统确认为非误报的危险后进行声光报警,并通过GSM模块对用户进行电话报警。
2 系统主要模块的设计
2.1 烟雾检测电路
本系统选择MQ-2气体传感器收集烟雾浓度模拟信号,再利用模数转换芯片ADC0832将其转换为可被单片机解读的数字信号,电路原理图如图2所示。
图2 烟雾检测电路
MQ-2气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡 (SnO2),工作的适宜温度为200℃~300℃,当传感器所处环境中存在烟雾时,传感器的电导率随空气中烟雾浓度的增加而增大,而输出电阻随电导率的增大而降低,从而使输出的模拟量越大[2]。
ADC8032是一种串行A/D数模转换器,接口线路简单,被广泛地应用于中低速测控系统中[3]。其DI与DO引脚分别代表数据信号输入与输出,二者在通信时并非同时有效,可并联到一根数据线上与单片机的I/O口连接。
2.2 温度检测电路
传统的测温方法主要依靠一些热敏电子元器件进行温度采集,比如热敏电阻等,这类方法存在精度低、速度慢、需额外增加转换器件和电路的缺点[4]。而本设计采用的DS18B20温度传感器具有测温精度高、连接方便、占用口线少等优点。
如图3所示,在使用时需将DS18B20的数据引脚与单片机的一个I/O口连接,二者可以通过1-Wire协议进行通信,使单片机能够通过传感器将外界温度读出。
图3 温度检测电路
2.3 液晶显示电路
原理图如图4所示。其中引脚RS、RW、E为LCD1602的功能控制端,D0~D7为数据端。
图4 液晶显示电路
在系统对环境监测时,液晶上会显示当前环境的烟雾浓度及温度大小;当烟雾浓度及温度大小或其中之一超过报警阈值时,液晶上会同时或单独显示“smoke”、“temp”字样用以提示用户危险类型;当用户对报警阈值进行修改时,液晶上也会显示相应信息方便用户操作。
2.4 声光报警电路
令单片机一个I/O端口连接一个电阻并与PNP型三极管基极串联,集电极一端连接LED灯与蜂鸣器的并联电路,发射极连接VCC,当I/O口输出低电平时,三极管导通,从而达到控制LED的亮灭与蜂鸣器报警的目的。
2.5 按键控制电路
本电路设计了四个按键,如图6所示。
图5 声光报警电路
图6 按键控制电路
当按下布防键后,系统开始进入对外可报警的布防状态。而其余三项可以对报警的温度,烟雾浓度进行调节,此功能通过1602液晶显示屏显示方便使用。当按下一次设置键后,LCD1602液晶会切换到温度报警阈值设置的页面,如图7所示;再摁下一次设置键会切换到烟雾浓度报警阈值设置页面,如图8所示;按下第三次设置键,液晶会重新回到烟雾浓度、温度实时监测页面;当液晶显示阈值设置页面时,使用加、减键可据环境需要调整阈值。
图7 温度报警阈值调节显示
图8 烟雾报警阈值调节显示
2.6 GSM模块电话报警电路
将带有通信功能的GSM模块SIM900A与单片机的P3.0与P3.1口连接实现二者的串口通信。P3.0与P3.1口的第二功能分别为串行口输入和串行口输出,通过这两个端口,单片机与SIM900A可使用协议中的AT指令进行实时通信,在声光报警的同时对用户手机拨打电话进行报警,从而可以及时通知不在灾情附近的用户尽快对灾情做出反应以减少损失。
3 系统的主要软件设计
3.1 总体逻辑设计
系统所配合的主程序逻辑框图如图9所示,利用C语言进行程序编写,以Keil作为软件编程工具。
图9 系统程序框图
系统实时循环检测环境中的烟雾浓度及温度,在布防键按下后,系统进入可报警状态。若判断为非误报情况下烟雾浓度或温度中有超出界定值的情况,则进行报警;在监测环境的同时,系统会判断是否有按键按下,从而进行报警界定值的修改;在按下复位键后,单片机会回到初始状态,重新进行烟雾浓度与温度检测。
3.2 烟雾浓度与温度的采集
设置以未触发报警为条件的循环,将烟雾浓度采集函数与温度采集函数放置在循环中。
MQ-2实时检测环境中的烟雾浓度,其输出引脚将收集到的模拟量传送给ADC0832的模拟输入通道CH0。烟雾开始收集时,令ADC0832的使能引脚CS为低电平,芯片被启用。CLK接收时钟信号,第一个下降沿前将DI置为高电平作为数据收集开始信号,第二、三个下降沿令DI分别为1、0,从而选择CH0为模拟输入通道,之后的8个时钟信号里ADC0832会将收集到的模拟量转化为8位二进制数据传到DO口,将其转化为适配的烟雾浓度值用变量承接即可。
DS18B20的测量范围为-55℃~+125℃,在它的寄存器中,温度存储值以补码的格式存储,低字节的最低位变化1,代表温度变化0.0625℃,因此只要将测到的数值乘以0.0625并参考符号位即可得到真实温度。
3.3 液晶显示
RS=0,RW=0,E=高脉冲时,液晶处于写指令模式,指导1206的功能配置,系统开始运行时,令液晶处于此模式,向D0~D7写入1206指令码,即可完成液晶的初始化配置。
令RS=0,RW=1,E=1时,液晶处于读状态模式,循环读取存于D0~D7的状态字,判断最高位是否为0,若是则代表液晶处于“不忙”状态,此时才可以使LCD1602进行读或写操作。
烟雾浓度与温度收集完毕时,先将收集到的数据转换为字符串,令RS=1,RW=0,E=高脉冲,此时液晶处于写数据状态,确定显示位置的初始地址,设置循环使数据引脚循环接收字符串数据,直到接收到结束符,完成内容在LCD1602液晶上的显示。
3.4 报警阈值改变
此功能的实现较为简单,只需定义烟雾浓度、温度两个报警阈值变量,若单片机检测到设置键按下相应次数,同时检测到有加或减键按下,将相应阈值变量加1或减1并送到LCD1602液晶显示即可达到目的。
3.5 延时报警
对于降低误报的概率,编程时采用延时报警的方法。在发现烟雾浓度或温度有超出界定值的情况后,系统不会立即进行报警,而是延时一小段时间后继续检测烟雾浓度与温度,若再次检测的值仍然高于界定值,则判断数值非误报,进行报警。延时报警可以大大降低系统的误报概率,使系统更加高效、准确。
3.6 按键消抖
按键消抖用定时器0中断, 每2ms进入中断,把扫描的按键的状态储存起来,再利用中断进行8次的扫描,看这八次是否都一致,如果8次状态都一致,则可以说明处于稳定状态,这样就可以确定按键状态了。利用这种方法可以避免延时消抖占用单片机的时间,转化成按键状态的判定而不是按键过程的判定,而8×2=16ms是小于一次按键完成的时间的,所以利用按键消抖可以更好地控制按键。
3.7 电话报警
启用单片机UART串口通信功能,在系统初始化时,向串行数据缓冲寄存器SBUF中发送判断SIM是否存在及SIM卡是否注册网络的指令,在串口中断中实时接收SIM900A返回指令,若SIM卡已准备好,将设置的标志位变量置1。在发现警情后,在SBUF中写入打电话的AT指令,即可对指定用户拨打电话报警。
4 结论
经测试,智能火灾报警系统各电路正常运行,可实现上述所需功能。
图10 系统正在进行报警
本系统以STC89C52单片机为基础,涵盖多种实用功能,操作方便,成本低廉,能够实现在各种有火灾隐患的无烟环境下对火灾的报警作用,为人们带来更多的便利。