多传感器融合的智能火灾报警系统设计与应用

需积分: 10 23 下载量 109 浏览量 更新于2024-07-31 2 收藏 2.47MB PDF 举报
"基于信息融合的智能火灾报警系统研究" 这篇硕士学位论文主要探讨了如何通过信息融合技术提升火灾报警系统的性能,以减少误报和漏报现象。作者陈玉珠在导师高金辉的指导下,针对当前火灾报警系统存在的问题,提出了一种由温度、烟雾和一氧化碳(CO)三种传感器信息融合的智能火灾报警系统。 首先,论文指出现有火灾报警系统由于无法准确探测和分析环境的综合状况,导致误报和漏报率较高,进而引发了火灾事故,造成重大损失。为了解决这个问题,作者提出采用多传感器融合技术,以提高系统的预警准确性。 该智能火灾报警系统的核心是16位单片机SPCE061A,它作为控制中心,负责集成处理来自三种传感器的数据,以此判断火灾发生的可能性。系统采用CAN(Controller Area Network)总线分布式通信,增强了系统的可靠性。 在信息处理方面,论文采用了三级融合策略。在数据层,运用速率检测算法,当传感器信号出现非平稳变化时,系统会提醒融合中心提取信息,这减少了中心的数据处理负担,同时也实现了并行分块处理。在特征层,利用最小二乘支持向量机(Least Squares Support Vector Machine, LS-SVM)进行特征提取,输出初步的火灾判断结果,利用LS-SVM的学习特性来提高分析的精确度。最后,在决策层,采用模糊逻辑推理,以其鲁棒性进行全局决策,进一步提高了决策的准确性和合理性,降低了误报率。 论文还对三种火灾类型(标准明火SH4、标准阴燃火SH1和厨房环境火灾)进行了仿真,验证了所提出的多传感器融合技术在不同环境下的有效性。通过建立的算法仿真模型,可以预测不同环境下的火灾概率,从而证明了该智能火灾报警系统的可行性和实用性。 关键词涉及:信息融合、SPCE061A单片机、CAN总线、最小二乘支持向量机和模糊推理,这些都是构建和优化智能火灾报警系统的关键技术。
2019-01-06 上传
火灾报警器全套资源 原理图 仿真 程序 参考论文都有 部分程序 #include //调用单片机头文件 #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #define uint unsigned int //无符号整型 宏定义 变量范围0~65535 #include #include "eeprom52.h" //数码管段选定义 0 1 2 3 4 5 6 7 8 9 uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //断码 //数码管位选定义 uchar code smg_we[]={0x7f,0xbf,0xdf,0xef}; uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; sbit CS=P3^2; //CS定义为P3口的第2位脚,连接ADC0832CS脚 PCB sbit SCL=P3^3; //SCL定义为P3口的第3位脚,连接ADC0832SCL脚 sbit DO=P3^4; //DO定义为P3口的第4位脚,连接ADC0832DO脚 sbit dq = P3^5; //18b20 IO口的定义 sbit beep = P3^6; //蜂鸣器IO口定义 uint temperature,s_temp ; //温度的变量 uchar dengji,s_dengji; //烟物等级 uchar shoudong; //手动报警键 bit flag_300ms = 1; uchar key_can; //按键值的变量 uchar menu_1; //菜单设计的变量 /***********************1ms延时函数*****************************/ void delay_1ms(uint q) { uint i,j; for(i=0;i<q;i++) for(j=0;j<120;j++); } /***********************小延时函数*****************************/ void delay_uint(uint q) { while(q--); } /******************把数据保存到单片机内部eeprom中******************/ void write_eeprom() { SectorErase(0x2000); byte_write(0x2000, s_temp); byte_write(0x2001, s_dengji); byte_write(0x2060, a_a); } /******************把数据从单片机内部eeprom中读出来*****************/ void read_eeprom() { s_temp = byte_read(0x2000); s_dengji = byte_read(0x2001); a_a = byte_read(0x2060); } /**************开机自检eeprom初始化*****************/ void init_eeprom() { read_eeprom(); //先读 if(a_a != 1) //新的单片机初始单片机内问eeprom { s_temp = 50; s_dengji = 5; a_a = 1; write_eeprom(); //保存数据 } } /***********************18b20初始化函数*****************************/ void init_18b20() { bit q; dq = 1; //把总线拿高 delay_uint(1); //15us dq = 0; //给复位脉冲 delay_uint(80); //750us dq = 1; //把总线拿高 等待 delay_uint(10); //110us q = dq; //读取18b20初始化信号 delay