Arduino 代碼同影片:火焰感測器模組(用於 Arduino)
喺呢個教學入面,我哋會探討點樣將火焰感測器模組同Arduino一齊用。火焰感測器可以偵測火焰嘅存在,當偵測到嘅時候可以觸發警報或者指示器。完成呢個項目之後,你就會有一個可以對火焰偵測作出聲響警報同視覺反饋嘅系統。


火焰感測器模組係用紅外線LED嚟偵測火焰。當偵測到火焰嘅時候,模組會輸出一個訊號,可以用嚟啟動其他元件,例如蜂鳴器或者LED。呢個項目會涉及將火焰感測器接線到Arduino,同埋寫一個簡單嘅程式嚟處理輸入同輸出。
為咗更清楚了解程式碼同接線,我建議你睇吓相關嘅影片(影片00:00位置)。
硬件解說
呢個項目嘅主要元件包括火焰感測器模組、一塊Arduino板,同埋一個用嚟警報嘅蜂鳴器或者LED。火焰感測器有四個針腳:數碼輸出針腳(DO)、模擬輸出針腳(AO)、電源針腳(VCC)同接地針腳(GND)。數碼輸出針腳喺偵測到火焰嘅時候會輸出HIGH訊號,而模擬輸出就會根據火焰嘅強度提供唔同嘅數值。
Arduino會讀取數碼輸出嚟判斷有冇火焰存在。當感測器偵測到火焰嘅時候,Arduino就可以用輸出針腳啟動警報或者燈。火焰偵測嘅靈敏度可以用模組上面內置嘅可變電阻嚟調整。
數據表詳情
| 製造商 | 通用 |
|---|---|
| 零件編號 | LM393 |
| 邏輯/IO電壓 | 5 V |
| 供電電壓 | 2–36 V |
| 輸出電流(每通道) | 20 mA |
| 峰值電流(每通道) | 50 mA |
| PWM頻率指引 | 唔適用 |
| 輸入邏輯閾值 | 0.8 V(低),2.0 V(高) |
| 電壓降 / RDS(on) / 飽和 | 0.2 V |
| 熱限制 | 125 °C |
| 封裝 | TO-220 |
| 備註 / 變體 | 可調節靈敏度 |
- 確保為模組提供2至36 V之間嘅正確電壓。
- 保持感測器嘅紅外線LED暢通無阻,以達致最佳火焰偵測效果。
- 如果模組接近峰值電流極限運作,請使用散熱器。
- 接線時要小心,避免短路或者錯誤連接。
- 針對唔同應用,用板上可變電阻調整靈敏度。
- 確認警報輸出可以承受所連接嘅負載(蜂鳴器/LED)。
接線說明


要將火焰感測器模組接線到Arduino,首先將火焰感測器嘅VCC針腳連接到Arduino嘅5V針腳。然後,將感測器嘅GND針腳連接到Arduino嘅其中一個GND針腳。火焰感測器嘅數碼輸出針腳(DO)應該連接到Arduino嘅數碼針腳2,我哋會喺程式碼入面稱之為FLAME。最後,將一個警報裝置(例如蜂鳴器)連接到Arduino嘅數碼針腳8,稱之為ALARM。
確保所有連接都穩固,因為鬆動嘅連接可能導致行為唔一致。如果你想用模擬輸出,可以將模擬輸出針腳(AO)連接到Arduino嘅模擬針腳(例如A0),但呢個對基本功能嚟講係可選嘅。喺影片入面,都有討論其他接線方法(影片02:30位置)。
程式碼示例同講解
以下程式碼片段初始化火焰感測器並設定序列監視器:
#define FLAME 2 // 將感測器嘅DO針腳連接到呢個針腳
#define ALARM 8 // 針腳8用於警報
void setup() {
Serial.begin(9600);
Serial.println("Robojax.com Fire Module Test");
pinMode(FLAME, INPUT); // 定義FLAME為輸入針腳
pinMode(ALARM, OUTPUT); // 定義ALARM為輸出針腳
}
喺呢度,我哋定義咗火焰感測器同警報嘅針腳,並以9600波特率初始化序列通訊。咁樣可以等我哋將訊息打印到序列監視器嚟做除錯。
跟住,我哋喺主循環入面讀取火焰感測器:
void loop() {
int fire = digitalRead(FLAME); // 讀取FLAME感測器
if(fire == HIGH) {
digitalWrite(ALARM, HIGH); // 將蜂鳴器設為ON
Serial.println("Fire! Fire!");
} else {
digitalWrite(ALARM, LOW); // 將蜂鳴器設為OFF
Serial.println("Peace");
}
delay(200);
}
程式碼嘅呢部分會檢查火焰感測器嘅狀態。如果偵測到火焰(HIGH),就會啟動警報並喺序列監視器打印「Fire! Fire!」。如果冇火焰(LOW),就會關閉警報並打印「Peace」。循環入面包含200毫秒嘅延遲,可以調整嚟改變偵測嘅靈敏度。
示範 / 預期效果
當系統啟動之後,序列監視器會顯示「Robojax.com Fire Module Test」,之後會顯示「Peace」,直到偵測到火焰為止。一旦偵測到火焰,蜂鳴器就會響起,LED亦會亮起,表示有火警狀況。你可以透過調整模組上嘅可變電阻嚟測試感測器嘅靈敏度。要小心誤報,例如由遙控器紅外線訊號引起嘅誤報(影片04:15位置)。
影片時間戳
- 00:00 - 火焰感測器模組介紹
- 02:30 - 接線說明
- 04:15 - 火焰偵測示範
/*
* This is code for a Flame Sensor module for Arduino.
* Watch the video https://youtu.be/OZkZIP3KlHQ
* Other Arduino libraries and videos https://robojax.com
* *
Flame Sensor module for Arduino
Written by Ahmad Shamshiri for Robojax.com
on January 18, 2018 at 22:21 in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*
*/
/*
What does it do?
When the infrared diode sees the flame, it sends the digital output DO to
also, the level of flame is represented with the analog output.
*/
// 4 Infrared Obstacle code for Robojax.com
#define FLAME 2 // connect DO pin of sensor to this pin
#define ALARM 8 // pin 8 for Alarm
void setup() {
Serial.begin(9600);
Serial.println("Robojax.com Fire Module Test");
pinMode(FLAME, INPUT);//define FLAME input pin
pinMode(ALARM, OUTPUT);//define ALARM output pin
// Flame sensor code for Robojax.com
}
void loop() {
// Flame sensor code for Robojax.com
int fire = digitalRead(FLAME);// read FLAME sensor
if( fire == HIGH)
{
digitalWrite(ALARM,HIGH);// set the buzzer ON
Serial.println("Fire! Fire!");
}else{
digitalWrite(ALARM,LOW); // Set the buzzer OFF
Serial.println("Peace");
// Flame sensor code for Robojax.com
}
delay(200);
}
資源與參考資料
-
外部LM393 datasheet (PDF)ti.com
文件📁
冇文件可用。