当前位置: 首页>编程语言>正文

基于51单片机的火灾报警器设计

一、设计背景

在我们生活越来越便捷的同时,很多的设备也逐渐进入了我们的生活,对于我们的生活有便利,同时也是增加了一定的安全隐患。

因此基于这种情况,设计了一款火灾报警器,采用了MQ-2烟雾传感器、DS18B20温度传感器以及AT89C51单片机作为核心器件并与其他电子技术相结合。

通过AT89C51单片机控制传感器对检测地点的烟雾、温度进行实时检测,并把检测结果进行数据信息处理,可以实现声光电一体化报警、浓度显示、温度显示等功能。

烟雾-温度报警系统的组成部分有:MQ-2烟雾信号采集电路、ADC0832模数转换电路、DS18B20温度信号采集电路、单片机控制电路、LCD显示电路、按键电路、继电器电路,和声光报警电路。

在实际应用中,继电器电路可以用来控制电闸、喷淋设施和消防设施等。

系统框架如下所示。

基于51单片机的火灾报警器设计,基于51单片机的火灾报警器设计_单片机,第1张

二、MQ-2灵敏度特性

烟雾传感器在最佳工作条件下,接触同一种烟雾,其电阻值RS随气体浓度变化的特性称之为灵敏度特性,用K表示。

K=RS/RO

式中,RS为烟雾传感器洁净空气条件下的电阻值,RS为烟雾传感器在一定浓度的检测烟雾中的电阻值。

虽然对于不同的烟雾,器件灵敏度特性K的值也会各有差异,但是它们都遵循同一规律。

logRS=mlogC+n

式中,m为器件相对烟雾浓度变化的敏感性,又称烟雾分离能,对于烟雾,m值为1/2~1/3;C为检测烟雾的浓度。n为与检测烟雾,器件材料有关,并随测试温度和材料中有无增感剂而有所不同。

基于51单片机的火灾报警器设计,基于51单片机的火灾报警器设计_bc_02,第2张

三、设计说明

首先,需要说明的是:由于Proteus软件没有MQ-2烟雾传感器模型,仿真中用滑动变阻器代替。

MQ-2气体传感器内部结构电导率随着气体浓度的增大而增大,其电阻是电导率的倒数,所以电阻是随之减小的。设计获取,关注公众号:交院小智。

其特性就相当于一个滑动变阻器。所以在仿真中用滑动变阻器替代。

而在实际运用中,原理图中,MQ-2接线方式如下图所示。

基于51单片机的火灾报警器设计,基于51单片机的火灾报警器设计_初始化_03,第3张

由于MQ-2输出电压与烟雾浓度不成线性关系,浓度大小需要根据上文计算公式计算出Rs/R0的比值,然后查灵敏度特性曲线表得出,具体操作方法请见器件资料文件夹中关于MQ-2的电压-浓度转换操作说明。

基于51单片机的火灾报警器设计,基于51单片机的火灾报警器设计_bc_04,第4张

仿真为了简便该过程,将烟雾等级(Smoke)分为5档,其与MQ-2输出电压对应关系如下表所示。

基于51单片机的火灾报警器设计,基于51单片机的火灾报警器设计_初始化_05,第5张

Proteus仿真电路

基于51单片机的火灾报警器设计,基于51单片机的火灾报警器设计_单片机_06,第6张

原理图及PCB

基于51单片机的火灾报警器设计,基于51单片机的火灾报警器设计_bc_07,第7张

基于51单片机的火灾报警器设计,基于51单片机的火灾报警器设计_bc_08,第8张

洞洞板实物图

基于51单片机的火灾报警器设计,基于51单片机的火灾报警器设计_bc_09,第9张

四、仿真结果分析

打开“火灾温度烟雾报警系统设计.DSN”仿真文件,双击单片机加载“报警.hex”文件,运行仿真,其结果如下所示。

基于51单片机的火灾报警器设计,基于51单片机的火灾报警器设计_单片机_10,第10张

从图中可以看出,LCD显示当前烟雾等级为3,小于设定的报警等级4;系统当前温度为29.8℃,在温度范围内(5~30℃);绿色LED灯点亮,指示系统处于正常工作状态下;继电器和蜂鸣器处于工作停止状态。

通过调节DS18B20传感器和RV3滑动变阻器上下红色箭头,改变温度大小或烟雾等级,使系统达到报警状态。此时,仿真结果如下3个图所示。

从图中可以看出,LCD显示当前烟雾等级为3,小于设定的报警等级4;系统当前温度为29.8℃,在温度范围内(5~30℃);绿色LED灯点亮,指示系统处于正常工作状态下;继电器和蜂鸣器处于工作停止状态。

通过调节DS18B20传感器和RV3滑动变阻器上下红色箭头,改变温度大小或烟雾等级,使系统达到报警状态。此时,仿真结果如下3个图所示。

基于51单片机的火灾报警器设计,基于51单片机的火灾报警器设计_初始化_11,第11张

基于51单片机的火灾报警器设计,基于51单片机的火灾报警器设计_bc_12,第12张

基于51单片机的火灾报警器设计,基于51单片机的火灾报警器设计_初始化_13,第13张

从以上3个报警状态可以看出,无论温度或烟雾是单独报警还是同时报警,系统动作都是一样的,即红色LED报警指示灯点亮,蜂鸣器鸣叫,继电器动作,达到声光电一体式报警动作。

可以通过“调整”、“调大”和“调小”按键,设置烟雾报警等级和温度报警上下限。按下“调整”键,进入烟雾报警等级设置,LCD光标闪烁,通过“调大”和“调小”键设置等级大小;)。

设置完成好后,再次按下“调整”键,进入温度报警下限设置,同样操作。当3个参数都设置好后,按下“调整”键,即可退出系统设置。

本例中,我们设置烟雾报警等级为3,温度范围为20~60℃,结果如图所示。

基于51单片机的火灾报警器设计,基于51单片机的火灾报警器设计_bc_14,第14张

当系统处于正常工作状态时,按下“呼叫”键,此时系统立刻进入报警状态:红色LED灯点亮,蜂鸣器鸣叫,继电器动作。

呼叫键用于模拟系统失效或者出现紧急情况时,巡检人员手动操作直接报警。

基于51单片机的火灾报警器设计,基于51单片机的火灾报警器设计_初始化_15,第15张

五、C代码

for(i = 0;i < 7;i++)
	{
		ndat >>= 1;
		ADCLK = 1;//拉高时钟端
		_nop_();
		_nop_();
		ADCLK=0;//拉低时钟端形成一次时钟脉冲
		_nop_();
		_nop_();
		if(ADDO==1)
		ndat |= 0x80;
	}	  
	ADCS=1;//拉高CS端,结束转换
	ADCLK=0;//拉低CLK端
	ADDI=1;//拉高数据端,回到初始状态
	if(dat==ndat)
	return(dat);
	else
	return 0;   
}
/*****主函数*****/
void main(void)
{
InitTimer();    //初始化定时器
EA=1;      //全局中断开关
TR0=1;
ET0=1;      //开启定时器0
BEEP=0;
led_h=1;
led_l=1;
JDQ=1;
check_wendu();
check_wendu();
	lcd_init();//初始化显示
	delay1ms(100);
	lcd_init();//初始化显示
	delay1ms(100);
while(1)
{
if(hujiao==0)
{
   Delay(2000);
   do{}while(hujiao==0);
   flag=~flag;
}
checkkey();
		abc = ADC0832(1,0);  //差分模式,CH0-CH1
		abc = abc*19.607843; //转换为实际电压便于显示	5.0V/256*1000 = 19.607843
		abc=abc/1000%10;
    check_wendu();

https://www.xamrdz.com/lan/5dt1960542.html

相关文章: