基于STM32F103的家庭火灾报警及灭火系统(初步)

1 绪论

1.1 课题背景

随着科技的发展,越来越多的巨大的隐患由于工业生产和人们的日常生活而产生。为了早期发现和通报火灾,防止和减少火灾危害,保护人身和财产安全。保卫社会主义现代化建设,防止火灾引起燃烧、爆炸等事故,造成严重的经济损失,甚至危及生命安全。

为了减少这类事故的发生,就必须对烟雾进行现场实时检测,采用先进可靠的安全检测仪表,严密监测环境中烟雾的浓度, 及早发现事故隐患,采取有效措施,避免事故发生,才能确保工业安全和 家庭生活安全。因此,研究烟雾的检测方法与研制烟雾报警器就成为传感器技术发展领域的一个重要课题。

1.2 设计概述

单片机及烟雾传感器是烟雾报警器系统的两大核心。单片机好比一个桥梁,联系着传感器和报警电路设备。近几年来,单片机已逐步深入应用到工农业生产各部门及人们生活的各个方面。各种类型的单片机也根据社会的需求而开发出来。单片机是器件级计算机系统,实际上它是一个微控制器或微处理器。由于它功能齐全,体积小,成本低,因此它可以应用到所有电子系统中。同样,它也可以广泛应用于报警技术领域,使各类报警装置的功能更加完善,可靠性大大提高,以满足社会发展的需要。而传感器作为信息技术系统的“感官”器件,如果没有“感官”感受信息,或者“感官”迟钝,都难以形成高精度、高速度的控制系统。美国曾把二十世纪八十年代称为传感技术时代,日本更是把传感技术列为十大技术之首。所以,根据报警器功能的需要,选择合适、精确、经济的烟雾传感器和单片机芯片是至关重要的。在本论文中的最主要的设计是选STM32F103单片机和MQ-2半导体气体烟雾传感器为核心器件。

目前,现代建筑都会有选择地安装不同功能的烟雾自动报警系统。因为烟雾自动报警系统是建筑物的神 经系统,它能够感受、接收着发生火灾的早期信号并及时报警,发出警报同时告知用户和周边居民。它就像是一个个称职的更夫,给居住、忙碌或是休息在家庭中的人们以极大的安全感。在火灾的早期阶段,准确的探测到火情并迅速报警,对于及时组织有序快速疏散、积极有效地控制火灾的蔓延、快速灭火和减少火灾对居住人群的损失都具有重要的意义。

1.3 设计任务分析

本篇论文是小型火警及灭火系统的研制:
(1)对系统进行整体规划和结构设计。
(2)以STM32F103单片机为中央处理器,无需外围设计AD电路,可以直接使用STM32F103中自带的12位AD转换。以减小硬件电路所带来的系统的不稳定因素。通过使用烟雾传感器、DHT-11模块、继电器模块、降压模块来实现整体的功能。
(3)系统的软件编制。按照软件实现的功能,主要分为主程序、初始化子程序、串口屏收发程序、报警限值灭火子程序。程序采用子程序和主程序的模式来写,可移植性强,在以后的逐步完善中,可以增加传感器模块以便系统的升级。
(4)硬件电路和软件的综合调试。

2 装置选取总体方案设计

小型火警及灭火系统是能够检测环境中的烟雾浓度,并具有报警功能的仪器。该报警系统的最基本组成部分应包括:信号采集模数转换电路、单片机控制电路、字符显示电路、声光报警电路和安全保护电路等部分组成。
为适应家庭和工业等场所对可燃性易爆烟雾安全性要求,设计的烟雾报警器具有显示报警状态。报警器采用延时的工作方式,烟雾检测报警器以STM32F103单片机为控制核心,选用MQ-2半导体气体烟雾传感器采集烟雾浓度信息,配合外围电路构成烟雾报警系统。本设计包括硬件和软件设计两个部分。
从设计的要求来分析该设计须包含如下结构:烟雾检测部分(AD采集)、STM32F103主控部分、温湿度采集、显示部分、报警及灭火五大部分。电路总体框图如图1所示:
在这里插入图片描述

图1 总体设计框图
整个系统是在系统软件控制下工作的。设置在监测点上的烟雾检测探头将检测到的烟雾变换成电信号,送出模拟信号,给单片机进行数据转换。在单片机内,经软件判决当前电压值等环节实时发出烟雾报警状态控制信号。驱动蜂鸣器及继电器开闭来控制抽水机放水实现灭火。

2.1 烟雾检测传感器选型与介绍

2.1.1 烟雾传感器的介绍

烟雾传感器是测量装置和控制系统的首要环节。而小型火警及灭火系统的信号采集由烟雾传感器负责。烟雾传感器能够将气体的种类及其浓度有关的信息转换为电信号,根据这些电信号的强弱就可以获得与待测气体在环境中存在的情况有关的信息,从而达到检测、监控、报警的功能。可以说,没有精确可靠的传感器,就没有精确可靠的自动检测、控制和报警系统。烟雾传感器作为报警器中不可缺少的核心器件,它决定了所采集的烟雾浓度信号的准确性和可靠性。烟雾传感器内部结构如图2所示。
Alt

图2 烟雾传感器内部结构图
MQ-2半导体传感器是以清洁空气中电导率较低的金属氧化物二氧化锡(SnO2)为主体的N型半导体气敏元件。当传感器所处环境中存在烟雾气体时,传感器的电导率随空气中烟雾气体浓度的增加而增大。在设计报警器时只有使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。该传感器具备一般半导体烟雾传感器灵敏度高、电导率变化大、响应和恢复时间短、抗干扰能力强、输出信号大、寿命长和工作稳定等优点,在市面上应用十分广泛。 二氧化锡(SnO2)半导体气敏元件特点:

(1)SnO2材料的物理、化学稳定性较好,与其他类型气敏元件相比,SnO2气敏元件寿命长、稳定性好、耐腐蚀性强。
(2)SnO2气敏元件对气体检测是可逆的,而且吸附、脱离时间短,可连续长时间使用。
(3)SnO2气敏元件结构简单,成本低,可靠行较高,机械性能良好。

MQ-2气敏元件的结构如图2所示,由微型AL2O3陶瓷管、SnO2 敏感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内,加热器为气敏元件提供了必要的工作条件。封装好的气敏元件有6只针状管脚,其中4个用于信号取出,2个用于提供加热电流。
MQ-2半导体气体烟雾传感器适用于烟雾、天然气、煤气、氢气、烷类气体、汽油、煤油、乙炔、氨气等的检测,对可燃性气体的(CH4、C4H10、H2等)的检测很理想。这种传感器在较宽的浓度范围内对烟雾气体有良好的灵敏度,能够检测多种可燃性气体,十分适合应用在家庭的气体泄漏报警器中。是一款便携式气体检测器,非常适合多种应用的低成本传感器。其技术指标表1。

加热电压(Vh) AC或DC 5±0.2V
回路电压(Vc) 最大DC 24V
负载电阴(Rl) 2KΩ
清洁空气中电阻 (Ra) ≤2000 KΩ
灵敏度(S=Ra/Rdg) ≥4(在1000ppmC4H10中)
响应时间(trec) ≤10S
恢复时间(trec) ≤30S
元件功耗 ≤0.7W
检测范围 50—10000ppm
使用寿命 2年
表3 技术指标

2.1.2 烟雾传感器电路连接图

由于物理量和测量范围的不同,传感器的工作机理和结构就不同。通常烟雾传感器输出的电信号是模拟信号(已有许多新型传感器采用数字量输出)。当信号的数值符合A/D转换器的输入等级时,可以不用放大器放大;当信号的数值不符合A/D转换器的输入等级时,就需要放大器放大。所以MQ-2半导体气体烟雾传感器要想把采集到的烟雾浓度模拟信号传送给单片机控制器就必须经过将模拟信号经过A/D转换器转化为可以识别的电信号给单片机。 这里的电信号是电压。其结构如图所示。
在这里插入图片描述

图4 烟雾传感器电路连接图

4号脚为模拟量输出0~5V电压,浓度越高电压越高。通过电压比较器接入电路中,与正向端电压比较,如果输出的电压比正向端电压高,则输出反向电压,使得LED灯亮,给DOUT一个低电平的信号,接入单片机可判断浓度是否过高,通过调节Rp可控制MQ-2的TTL输出的灵敏度,从而限制不同的浓度。
也可以直接将4号脚输出的电压直接接入AD芯片,通过AD转换送入单片机,本设计采用的是STM32F103芯片,好处是无需考虑外接AD芯片,但是因为STM32F103的基准电压是3.3V,由于MQ-2输出的电压是0~5V,需要考虑分压,将MQ-2的电压减半送入单片机进行转换,但是由于3.3V电压对于MQ-2来说已经是浓度过高的电压,实际不可能让它达到如此高的电压,因此为了电路的简单考虑,不进行分压处理,直接将模拟电压送入单片机。
如图所示,图中纵坐标为传感器的电阻比 ,横坐标为气体浓度, 表示传感器在不同浓度气体中的电阻值, 表示传感器在洁净空气中的电阻值。图中所有测试都是在标准条件下完成的。根据气体浓度与纵坐标一一对应关系,用EXCEL进行曲线拟合,查阅数据手册得到公式
在这里插入图片描述

由图4的电路图可知:
在这里插入图片描述

其中 是Ao口的输出电压,VCC是电源供电电压,R2的电阻一般去取5K,根据技术文档我们知道R0是洁净空气下的Rs值,在系统稳定时,所测得的电压是0.61887,因此带入算的R0的电阻为21.53215k
在这里插入图片描述

在这里插入图片描述

图5 气体浓度对应曲线

2.2 显示装置

有很多可以实现显示装置的设备,诸如1602、12864、OLED显示屏,但是这些都只能显示,并不能实现发送的值的操作,这些要想实现既能显示又能实现发送阈值的操作,就必须配合按键键盘来实现,这会造成焊接电路的复杂,因此本设计采用亲民的串口屏显示,好处有二。其一:串口屏显示更能体现出这是一个完整的产品,便民化得以体现。其二:它不仅仅能够显示当前的温度和湿度,以及设置的浓度阈值电压,也能通过串口屏设置阈值,从而改变不同浓度所对应的的电压而实现灭火的功能。其界面如图所示
在这里插入图片描述

图6 显示屏幕展示

在这里插入图片描述

图7 设置阈值界面

串口屏有自己的独立的编写代码,通过在串口屏文件中编写代码,实现发送的功能,STM32F103实现接收数据并转化为合适的类型即可。这样减少了矩阵键盘,从而让整个设计显得美观。

2.3声音报警以及灭火电路

电路通过三极管基极串连一个电阻与单片机PB5端口连接从而达到控制蜂鸣器是否报警。继电器接单片机STM32F103的PA11端口,当烟雾传感器的返回值比设置的阈值大时,使单片机给PB5、PA11引脚为低电平,从而实现蜂鸣器报警,继电器打开,使得抽水机的12V的线和12V的供电导通,实现抽水灭火,当当前值下降到比阈值低时,给单片机PB5和PA11高电平,从而停止报警和蓄水的工作。

在这里插入图片描述

图8 蜂鸣器报警电路

在这里插入图片描述

图9 继电器蓄水电路

2.4电源电路

通过使用12V电池给抽水机供电,再利用一个降压模块,12V输入,输出0~12V可调电压,这里调到3.3V为单片机和继电器以及串口屏供电。
在这里插入图片描述

图10 开关电源降压电路

2.5温湿度传感器的选择

2.5.1 DS18B20与DHT11的对比

首先DHT11测量的温度范围有限,仅只能测0~50℃,而DS18B20的温度范围更广,但是DS18B20仅仅只能测量温度,而DHT11可以测量湿度。这是两者的不同,在本实验中,我们所采取的是DHT11,是因为我们在灭火现场也可以通过湿度以及温度共同决定是否有火情,因为在实际生活中,不可能达到50℃以上的温度,因此DHT11测量的温度,可以反馈给抽水机,给环境喷水降温增湿的功能。而且这并不是本设计的关键部分,就只采用了DHT11来测量室内的温度和湿度。

2.5.2 DHT11模块介绍

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测量温度元件。
DHT11数字湿温度传感器采用单总线数据格式。即单个数据 端口完成输入输出双向传输。其数据包由5Byte(40Bit)组成。数据分小数部分和整数部分。格式说明如下:
一次完整的数据传输为40bit,高位先出。8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据=8bit校验和
在这里插入图片描述

图11 DHT11数据读取
湿度=byte4.byte3=45.0(%RH)
温度=byte2.byte1=28.0(℃)
校验数据=byte4+byte3+byte2+byte1=73(湿度+温度)

在编写程序的时候应该注意,DHT11一次通讯时间最大为3ms,主机连续采样间隔不小于100ms。
在这里插入图片描述

图12 DHT11模块原理介绍

在这里插入图片描述

图13 主机发送起始信号

在这里插入图片描述

图14 从机响应信号

主机发送开始信号后,延时等待20us-40us后读取DHT11的回应信号,读取总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高,准备发送数据,每一位数据都已低电平开始,格式如下所示。
在这里插入图片描述

图15 传输格式

DHT11模块引脚如下所示:

引脚号 引脚名称 类型 引脚说明
1 VCC 电源 正电源3~5V
2 DOUT 数据输出 数据输入/输出
3 NC 空脚 扩展未用
4 GND 电源
表16 引脚介绍

在VCC和GND之间,接一个LED灯,作为电源开启指示灯。
在这里插入图片描述

图17 DHT11模块引脚图

2.6 主控芯片的选取

STM32F103芯片是火警及灭火系统的心脏,用来接收火灾信号并启动报警装置显示和执行相应的报警。在STM32F103实现的控制功能中,需要单片机有较快的运算速度,使检测人员和用户在报警器系统正常工作时能够及时地观测到实时的烟雾浓度等级,并进行相应处理。同时,在能够满足报警器系统设计的计算速度及接口功能要求的同类型单片机中,要考虑选择价格低廉且体积轻巧的机型,在保证了报警器的精确性、可靠性及抗干扰性的基础上,能够不提高成本,缩小体积。
这里为什么不选用AT89C51单片机芯片作为主控芯片,因为AT89C51内部没有自带的ADC引脚,这对于我们要读取烟雾传感器的电压值造成了不便,这就需要外接AD0809芯片来进行AD转换再送入单片机中,这造成了成本的提高,也造成了电路的麻烦,还会产生各种问题。而且0809芯片是8位的AD转换芯片,而STM32F103自带的AD转换是12位的,精度比0809高。还有就是STM32F103在如今也以设计了很多版本,诸如C8系列,RC系列,ZE系列,对于我们来说C8系列价格低廉,更适合本次设计。

3 系统软件的设计

3.1 系统主程序设计及流程图

主程序流程图如下图所示。首先要给传感器预热,因为MQ-2型半导体电阻式烟雾传感器在不通电存放一段时间后,再次通电时,传感器不能立即正常采集烟雾信息,需要一段时间预热。程序初始化结束后,系统进入监控状态。DHT11一直在读取室内的温湿度。
在这里插入图片描述

图18 主程序流程图

在整个报警系统工作中,烟雾浓度信息经STM32F103内部AD转换处理后,由单片机进行分析处理,判断系统是否启动报警。在主程序中,还可以通过温度和湿度来判断是否有火警,但是由于DHT11外部是塑料装置,不好放在火灾附近检测,因此温湿度仅仅只是测量室内的温湿度。这成为这个设计的不足之处。本设计还通过串口屏显示当前的情况并且还可以通过串口屏设置当前的阈值,还可以通过湿润按键,放水一段时间,实现提高湿度的作用。

4 硬件调试及调试中遇到的问题

第一步设计方案时,我们要设计好外部系统,还有程序的实现,这是本系统最大的难点之一。因此这系统并不十分完善,还需要进一步完善,在后期的工作中,我们小组会进一步晚上此系统,使得本设计能够真正的投入使用。
第二步程序和电路连接时,需要供电,不能直接通过采用电脑供电,但是又不能通过220V转12V在通过降压给单片机和抽水机供电。于是在网上买了12V的电池,然后再通过降压模块降压,得到3.3V的电压给单片机和串口屏供电。
第四步是串口屏和单片机通讯的难点,查阅资料熟悉串口屏的代码规则,以及单片机接收数据的难点。
对于本次设计,DHT11检测的温湿度后,并没有反馈一个现象,仅仅只是测量,而不是闭环操作,因此在今后我们还需进一步完善设计。

5 设计总结

小型火警及灭火系统可保障生产与生活的安全,避免火灾和爆炸事故以及煤气中毒的发生,它是防火、防爆和安全生产所必备的仪器,具有广阔的市场空间与发展前景。
本文在对烟雾传感器的研究基础上,进行合理设计确定系统的设计方案。并对仪器的整体设计和各个组成部分进行了详细的分析和设计。
本文设计的烟雾报警器由烟雾信号采集电路与单片机控制电路两大部分构成。根据设计要求、使用环境、成本等因素,选用MQ-2型半导体电阻式烟雾传感器。该传感器是对以烷类烟雾为主的多种烟雾有良好敏感特性的广谱型半导体敏感器件。它的灵敏度适中,具有响应与恢复特性好,长期工作稳定性、重现性、不易受环境影响及抗温湿度影响等优点。
在系统单片机控制电路的设计上,采用了高性能、自带AD转换的STM32F103作为核心芯片,充分利用了其高速数据处理能力和丰富的片内外设,实现了仪器的小型化和智能化。使仪器具有结构简单、性能稳定、体积小、成本低等优点。由于烟雾传感器需要在加热状态下工作,温度越高,反应越快,响应时间和恢复时间就越快。为提高响应时伺,保证传感器准确地、稳定地工作,需要向烟雾传感器持续供给5V的加热电压。烟雾报警器能在较宽的温度范围工作,可将烟雾浓度显示用串口屏显示。当烟雾的浓度达到设定的浓度时,发出报警。并且还能通过串口屏设置阈值改变报警值。

6 附录

6.1 实物图

在这里插入图片描述

在这里插入图片描述

6.2 部分代码

// [主函数代码]
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "hmi.h"
#include "adc.h"
#include "stdio.h"
#include "string.h"
#include "dht11.h"
#include "stdlib.h"
   
u8 table1[20];   
u8 table2[20];
u8 table3[20];
u8 table4[20];
u8 table5[20];
u8 table6[20];

DHT11_Data_TypeDef DHT11_Data;

 int main(void)
 { 
	u16 adcx;
	float temp;
	float value=2.5;
	delay_init();	    	 //延时函数初始化	  
	uart_init(9600);	 	//串口初始化为9600
	LED_Init();		  		//初始化与LED连接的硬件接口
 	Adc_Init();		  		//ADC初始化	
    DHT11_GPIO_Config();	 
	HMISendstart();
	while(1)
	{
		adcx=Get_Adc_Average(ADC_Channel_1,10);
		sprintf((char*)table1,"%d",adcx);		
		HMISends("t3.txt=\"");    //向串口屏发送电压值
		HMISends(table1);
		HMISends("\"");
		HMISendb(0xff);
		temp=(float)adcx*(3.3/4096);
		sprintf((char*)table2,"%f",temp);
		HMISends("t4.txt=\"");   //向串口屏发送电压值
		HMISends(table2);
		HMISends("\"");
		HMISendb(0xff);
		if( Read_DHT11(&DHT11_Data)==SUCCESS)
		{
			LED0=!LED0;
			sprintf((char*)table3,"%d",DHT11_Data.humi_int);
			HMISends("t6.txt=\"");   
			HMISends(table3);
			HMISends("\"");
			HMISendb(0xff);
			sprintf((char*)table4,"%d",DHT11_Data.temp_int);
			HMISends("t8.txt=\"");   
			HMISends(table4);
			HMISends("\"");
			HMISendb(0xff);
		}
		if(USART_RX_STA&0x8000)
		{
			if(strcmp((char*)USART_RX_BUF,"moist")==0)
			{
				JDQ=0;
				delay_ms(1000);
			}
			else
			{
				value=atof((char*)USART_RX_BUF);
			}
			memset(USART_RX_BUF,0,sizeof(USART_RX_BUF));
			USART_RX_STA=0;
		}
		if((temp>value)||(temp>2.5))
		{
			JDQ=0;
			BEEP=0;
		}
		else
		{
			JDQ=1;
			BEEP=1;
		}
		delay_ms(250);	
	}											    
}

原创文章 1 获赞 0 访问量 51

猜你喜欢

转载自blog.csdn.net/qq_44891298/article/details/105903700