搜尋程式碼

Arduino 代碼同影片:火焰感測器模組(用於 Arduino)

Arduino 代碼同影片:火焰感測器模組(用於 Arduino)

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

infrared flame sensor module -blue
infrared flame sensor module

火焰感測器模組係用紅外線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 wiring for infrared flame sensor
Arduino wiring for infrared flame sensor
Arduino wiring for infrared flame sensor
Arduino wiring for infrared flame sensor

要將火焰感測器模組接線到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 - 火焰偵測示範

圖片

infrared flame sensor module -blue
infrared flame sensor module -blue
infrared flame sensor module
infrared flame sensor module
Arduino wiring for infrared flame sensor
Arduino wiring for infrared flame sensor
Arduino wiring for infrared flame sensor
Arduino wiring for infrared flame sensor
62-This is the Arduino code and video for a flame sensor module for Arduino.
語言: C++
/*
 * 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);
}

資源與參考資料

文件📁

冇文件可用。