内容简介:高层建筑越来越多,高楼大厦的消防隐患就更加严峻,加之目前的消防救援车辆对高层的火灾救援仍旧没有很好的解决方案,因此大楼在发生火灾后通常只能等待大火燃尽熄灭,造成的经济损失,社会影响都比较严重。为了避免此类问题的发生,大楼的消防预警系统就成为了现代高楼设计的重中之重。
摘要: 高层建筑越来越多,高楼大厦的消防预警系统就成为了现代高楼设计的重中之重。
一、项目场景
高层建筑越来越多,高楼大厦的消防隐患就更加严峻,加之目前的消防救援车辆对高层的火灾救援仍旧没有很好的解决方案,因此大楼在发生火灾后通常只能等待大火燃尽熄灭,造成的经济损失,社会影响都比较严重。为了避免此类问题的发生,大楼的消防预警系统就成为了现代高楼设计的重中之重。
二、任务目标
某百层以上的摩天大楼即将完工,为提高大楼的安全性需要对大楼的消防设施进行配套。为配合喷淋及大楼报警装置的使用,需要使用火焰传感器对大楼内的明火进行提前预警。请使用火焰传感器对明火信号进行监测,并将监测结果发送至上位等待对明火的进一步处理。
三、火焰传感器介绍
火焰是由各种燃烧生成物、中间物、高温气体、碳氢物质以及无机物质为主体的高温固体微粒构成的。火焰的热辐射具有离散光谱的气体辐射和连续光谱的固体辐射。
火焰传感器检测火焰主要依靠光谱中的特征波长的光线。
-
火焰传感器类型
火焰传感器检测火焰主要依靠光谱中的特征波长的光线,根据不同特征的光线可将火焰传感器分为远红外火焰传感器和紫外火焰传感器。
-
红外接收管
火焰传感器之所以能够检测火焰接受到红外信号的原因是由于使用红外接收头做为火焰传感器的眼睛。常见的940nm红外接收管如图。
远红外火焰传感器可以用来探测火源或其它一些波长在700纳米~1100纳米范围内的热源。
-
红外接收管的特征与原理
红外线接收管是将红外线光信号变成电信号的半导体器件,它的核心部件是一个特殊材料的PN结,和普通二极管相比,在结构上采取了大的改变,红外线接收管为了更多更大面积的接受入射光线,PN结面积尽量做的比较大,电极面积尽量减小,而且PN结的结深很浅,一般小于1微米。
红外线接收二极管是在反向电压作用之下工作的。没有光照时,反向电流很小(一般小于0.1微安),称为暗电流。当有红外线光照时,携带能量的红外线光子进入PN结后,把能量传给共价键上的束缚电子,使部分电子挣脱共价键,从而产生电子——空穴对(简称:光生载流子)。
四、项目分析
本项目设计中通过940nm的红外接收管经过运算放大器采集火焰红外信息,并将采集信息打印在PC上,定时进行更新,硬件结构主要由STM32F407、火焰传感器、串口和LCD屏幕组成。
五、项目硬件图
火焰传感器原理图
六、火焰传感器程序逻辑
七、项目实现
主函数模块
/*********************************************************************************************
* 头文件
*********************************************************************************************/
#include "stm32f4xx.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "lcd.h"
#include "usart.h"
#include "Flame.h"
/*********************************************************************************************
* 名称:main()
* 功能:火焰传感器驱动逻辑代码
* 参数:无
* 返回:无
* 修改:
*********************************************************************************************/
void main(void)
{
unsigned char led_status = 0; //存储火焰状态变量
delay_init(168); //延时初始化
led_init(); //初始化LED控制管脚
key_init(); //初始化按键检测管脚
lcd_init(FLAME1); //LCD初始化
usart_init(115200); //串口初始化
flame_init(); //火焰传感器初始化
while(1){ //循环体
if(get_flame_status() == 1){ //检测到火焰
led_status = ~led_status; //LED灯的状态反转
printf("fire!\r\n"); //串口打印提示信息
//LCD更新数据
LCDDrawFnt16(4+30,30+20*7,4,320," 检测到火焰",0x0000,0xffff);
}
else{ //没有检测到火焰
led_status = 0; //熄灭LED灯
printf("no fire!\r\n"); //串口打印提示信息
//LCD更新数据
LCDDrawFnt16(4+30,30+20*7,4,320,"未检测到火焰",0x0000,0xffff);
}
if(led_status == 0) //根据LED灯的状态控制LED灯的变化
led_control(0); //关闭LED灯
else
led_control(D3|D4); //点亮LED灯
delay_ms(1000); //延时1秒
}
}
火焰传感器初始化
void flame_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //定义一个GPIO_InitTypeDef类型的结构体
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); //开启火焰相关的GPIO外设时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //选择要控制的GPIO引脚
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //设置引脚的输出类型为推挽
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; //设置引脚模式为输入模式
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //设置引脚为下拉模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //设置引脚速率为2MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化GPIO配置
}
获取火焰传感器状态
unsigned char get_flame_status(void)
{
if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10))
return 1;
else
return 0;
}
八、项目思考
火焰传感器检测火焰信号的原理是什么?
火焰传感器在工业上有哪些应用?
LiteOS操作系统如何移植进项目?
项目如何对接华为云平台?
欢迎留下你的想法~
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 漏洞预警 | Adobe ColdFusion远程命令执行漏洞预警(CVE-2018-15961)
- 讲讲用户的流失预警
- 讲讲用户的流失预警
- Influxdb 认证绕过漏洞预警
- Metrics 资料整理,多图预警
- libssh cve-2018-10993预警
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Domain-Driven Design
Eric Evans / Addison-Wesley Professional / 2003-8-30 / USD 74.99
"Eric Evans has written a fantastic book on how you can make the design of your software match your mental model of the problem domain you are addressing. "His book is very compatible with XP. It is n......一起来看看 《Domain-Driven Design》 这本书的介绍吧!