如何使用Arduino和火焰传感器构建火灾报警系统

安全设备/系统

153人已加入

描述

火灾报警系统在商业建筑和工厂中非常常见,这些设备通常包含一组传感器,这些传感器不断监控建筑物中的任何火焰、气体或火灾,并在检测到其中任何一种时触发警报。检测火灾的最简单方法之一是使用红外火焰传感器,这些传感器具有对红外光敏感的红外光电二极管。现在,如果发生火灾,火灾不仅会产生热量,还会发出红外线,是的,每个燃烧的火焰都会发出一定程度的红外光,这种光是人眼不可见的,但是我们的火焰传感器可以检测到它并提醒像Arduino这样的微控制器已经检测到火灾。

在本文中,我们将火焰传感器与Arduino连接,并了解使用Arduino和火焰传感器构建火灾报警系统的所有步骤。火焰传感器模块具有用于检测光的光电二极管和用于控制灵敏度的运算放大器。它用于检测火灾并在检测到时提供高信号。Arduino读取信号并通过打开蜂鸣器和LED提供警报。这里使用的火焰传感器是基于红外的火焰传感器。我们还使用相同的概念来检测消防机器人中的火灾,如果您有兴趣,也可以检查我们的。

火焰传感器

火焰探测器是一种传感器,旨在检测和响应火焰或火灾的存在。对检测到的火焰的响应取决于安装,但可能包括发出警报、停用燃料管线(如丙烷或天然气管线)和激活灭火系统。本项目中使用的红外火焰传感器如下所示,这些传感器有时也称为火灾传感器模块或火焰探测器传感器。

Arduino

有不同类型的火焰检测方法。其中一些是:紫外探测器,近红外阵列探测器,红外(IR)探测器,红外热像仪,UV / IR探测器等。

当火燃烧时,它会发出少量的红外线,该光将被传感器模块上的光电二极管(红外接收器)接收。然后,我们使用运算放大器来检查红外接收器两端的电压变化,这样,如果检测到火灾,输出引脚(DO)将给出0V(LOW),如果没有火灾,输出引脚将为5V(HIGH)。

在这个项目中,我们使用基于红外的火焰传感器。它基于YG1006传感器,YG1006传感器是一种高速,高灵敏度的NPN硅光电晶体管。它可以检测波长范围为700nm至1000nm的红外光,其检测角度约为60°。火焰传感器模块由光电二极管(IR 接收器)、电阻器、电容器、电位计和 LM393 比较器组成。灵敏度可以通过改变板载电位计来调节。工作电压在 3.3v 和 5v DC 之间,带数字输出。输出上的逻辑高电平表示存在火焰或火灾。输出逻辑低表示没有火焰或火灾。

以下是火焰传感器模块的引脚说明:

 

描述: __________
Vcc 3.3 – 5V 电源
接地
杜特 数字输出

 

火焰传感器的应用

加氢站

燃烧器燃烧监测器

石油和天然气管道

汽车制造设施

核设施

飞机库

涡轮机外壳

所需组件

Arduino Uno(可以使用任何Arduino板)

火焰传感器模块

发光二极管

蜂鸣器

电阻器

跳线

电路图

下图是Arduino火灾传感器电路图,它显示了如何将火灾传感器模块与Arduino连接。

Arduino

火焰传感器与Arduino的工作

阿杜伊诺Uno 是一款基于 ATmega328p 微控制器的开源微控制器板。它具有 14 个数字引脚(其中 6 个引脚可用作 PWM 输出)、6 个模拟输入、板载稳压器等。Arduino Uno具有32KB闪存,2KB的SRAM和1KB的EEPROM。它的工作时钟频率为16MHz。 Arduino Uno支持串行,I2C,SPI通信,用于与其他设备通信。下表显示了Arduino Uno的技术规格。

 

微控制器 ATmega328p
工作电压 5V
输入电压 7-12V(推荐)
数字 I/O 引脚 14
模拟引脚 6
闪存 32KB
SRAM 2KB
电丙胺 1KB
时钟速度 16兆赫

 

火焰传感器根据火焰发出的红外 (IR) 波长检测火灾或火焰的存在。如果检测到火焰,则提供逻辑 1 作为输出,否则,它给出逻辑 0 作为输出。Arduino Uno 检查传感器输出引脚上的逻辑电平,并执行进一步的任务,例如激活蜂鸣器和 LED、发送警报消息。

Arduino

代码说明

本文末尾给出了该项目的完整Arduino代码。代码被分成有意义的小块,并在下面解释。

在代码的这一部分中,我们将定义连接到Arduino的火焰传感器,LED和蜂鸣器的引脚。火焰传感器连接到 Arduino 的数字引脚 4。蜂鸣器连接到 Arduino 的数字引脚 8。LED 连接到 Arduino 的数字引脚 7。

变量“flame_detected”用于存储从火焰传感器读出的数字值。根据该值,我们将检测火焰的存在。

int buzzer = 8 ; int LED = 7 ; int flame_sensor = 4 ; int flame_detected ;

在代码的这一部分中,我们将设置Arduino数字引脚的状态并配置

波特率用于与PC串行通信,用于显示火焰检测电路的状态。

void setup()

{

Serial.begin(9600) ;

pinMode(buzzer, OUTPUT) ;

pinMode(LED, OUTPUT) ;

pinMode(flame_sensor, INPUT) ;

}

这行代码读取火焰传感器的数字输出并将其存储在变量“flame_detected”中。

flame_detected = digitalRead(flame_sensor) ;

根据存储在“flame_detected”中的值,我们必须打开蜂鸣器和LED。在代码的这一部分中,我们将存储在“flame_detected”中的值与 0 或 1 进行比较。

如果等于 1,则表示已检测到火焰。我们必须打开蜂鸣器和LED,然后在Arduino IDE的串行监视器中显示警报消息。

如果它等于 0,则表示未检测到火焰,因此我们必须关闭 LED 和蜂鸣器。此过程每秒重复一次,以识别是否存在火或火焰。

if (flame_detected == 1)

{

Serial.println("Flame detected...! take action immediately.");

digitalWrite(buzzer, HIGH);

digitalWrite(LED, HIGH);

delay(200);

digitalWrite(LED, LOW);

delay(200);

}

else

{

Serial.println("No flame detected. stay cool");

digitalWrite(buzzer, LOW);

digitalWrite(LED, LOW);

}

delay(1000);

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分