火灾报警系统在商业建筑和工厂中非常常见,这些设备通常包含一簇传感器,该传感器不断监视建筑物中的任何火焰,气体或火灾,并在检测到其中任何一种时触发警报。检测火情最简单的方法之一是使用IR火焰传感器,这些传感器具有对IR光敏感的IR光电二极管。现在,发生火灾时,火灾不仅会产生热量,还会发出红外线,是的,每一个燃烧的火焰都会发出一定水平的红外线,人眼看不到这种光,但是我们的火焰传感器可以检测到它并提醒Arduino等微控制器已检测到火灾。
在本文中,我们将Flame Sensor与Arduino连接,并学习使用Arduino和Flame sensor构建火灾报警系统的所有步骤。火焰传感器模块具有用于检测光线的光电二极管和用于控制灵敏度的运算放大器。它用于检测火灾,并在检测到信号时提供HIGH信号。Arduino读取信号并通过打开蜂鸣器和LED发出警报。此处使用的火焰传感器是基于IR的火焰传感器。我们还使用了相同的概念来检测我们的消防机器人中的火灾,如果您有兴趣,也可以检查一下我们。
火焰感应器
甲火焰检测器是被设计为检测和响应于火焰或火灾的存在的传感器。对检测到的火焰的响应取决于安装情况,但可以包括发出警报,停用燃料管线(如丙烷或天然气管线)以及激活灭火系统。该项目中使用的IR火焰传感器如下所示,这些传感器有时也称为火灾传感器模块或火焰探测器传感器。
火焰检测方法有不同类型。其中一些是:紫外线探测器,近红外阵列探测器,红外(IR)探测器,红外热像仪,UV / IR探测器等。
当火燃烧时,它会发出少量的红外光,该光将被传感器模块上的光电二极管(IR接收器)接收。然后,我们使用运算放大器检查IR接收器两端的电压变化,以便在检测到火灾时输出引脚(DO)会提供0V(LOW),如果没有火灾,则输出引脚将为0V(LOW)。 5V(高)。
在此项目中,我们使用基于IR的火焰传感器。它基于YG1006传感器,该传感器是一种高速,高灵敏度的NPN硅光电晶体管。它可以检测波长范围为700nm至1000nm的红外光,检测角度约为60°。火焰传感器模块由集成电路中的光电二极管(IR接收器),电阻器,电容器,电位计和LM393比较器组成。灵敏度可以通过改变板载电位器来调节。工作电压在3.3v至5v DC之间,具有数字输出。输出上的逻辑高电平表示存在火焰或火灾。输出逻辑低表示没有火焰或火。
以下是火焰传感器模块的引脚说明:
销 |
描述 |
Vcc |
3.3 – 5V电源 |
地线 |
地面 |
杜特 |
数字量输出 |
火焰传感器的应用
- 加氢站
- 燃烧器燃烧监控器
- 石油和天然气管道
- 汽车制造设施
- 核设施
- 飞机机库
- 涡轮机罩
所需组件
- Arduino Uno(可以使用任何Arduino板)
- 火焰传感器模块
- LED
- 蜂鸣器
- 电阻器
- 跳线
电路原理图
下图是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 |
工作电压 |
5伏 |
输入电压 |
7-12V(推荐) |
数字I / O引脚 |
14 |
模拟引脚 |
6 |
快闪记忆体 |
32KB |
SRAM |
2KB |
EEPROM |
1KB |
时钟速度 |
16兆赫 |
火焰传感器根据火焰发出的红外(IR)波长来检测火或火焰的存在。如果检测到火焰,则将逻辑1作为输出;否则,将逻辑0作为输出。Arduino Uno检查传感器输出引脚上的逻辑电平,并执行进一步的任务,例如激活蜂鸣器和LED,发送警报消息。
另外,请检查我们的其他火灾报警项目:
- 使用热敏电阻的火灾报警
- 使用AVR单片机的火灾报警系统
- 基于Arduino的消防机器人
代码说明
本文结尾给出了该项目的完整Arduino代码。该代码分为多个有意义的小块,并在下面进行说明。
在这部分代码中,我们将定义连接到Arduino的火焰传感器,LED和蜂鸣器的引脚。火焰传感器连接到Arduino的数字引脚4。蜂鸣器连接到Arduino的数字引脚8。LED连接到Arduino的数字引脚7。
变量“ flame_detected ”用于存储从火焰传感器读取的数字值。基于此值,我们将检测到火焰的存在。
内部蜂鸣器= 8; 内置LED = 7; int flame_sensor = 4; int flame_detected;
在这部分代码中,我们将设置Arduino数字引脚的状态并进行配置
与PC进行串行通信的波特率,用于显示火焰检测电路的状态。
无效的setup() { Serial.begin(9600); pinMode(蜂鸣器,输出); pinMode(LED,输出); pinMode(flame_sensor,INPUT); }
这行代码读取火焰传感器的数字输出并将其存储在变量“ flame_detected ”中。
flame_detected = digitalRead(flame_sensor);
根据存储在“ flame_detected ”中的值,我们必须打开蜂鸣器和LED。在这部分代码中,我们将存储在“ flame_detected ”中的值与0或1进行比较。
如果其等于1,则表明已检测到火焰。我们必须打开蜂鸣器和LED,然后在Arduino IDE的串行监视器中显示警报消息。
如果其等于0,则表明未检测到火焰,因此我们必须关闭LED和蜂鸣器。每秒重复此过程以识别火或火焰的存在。
如果(flame_detected == 1) { Serial.println(“检测到火焰…!立即采取行动。”); digitalWrite(蜂鸣器,高); digitalWrite(LED,HIGH); 延迟(200); digitalWrite(LED,LOW); 延迟(200); } else { Serial.println(“未检测到火焰。保持凉爽”); digitalWrite(蜂鸣器,低); digitalWrite(LED,LOW); } delay(1000);
我们基于此概念构建了一个消防机器人,该机器人可以自动检测到火灾并抽出水扑灭火灾。现在,您知道了如何使用Arduino和火焰传感器进行火灾探测,希望您喜欢它,如果有任何疑问,请在下面的评论部分中进行学习。
查看下面的完整代码和演示视频。