เซ็นเซอร์เปลวไฟเชื่อมต่อกับ Arduino เพื่อสร้างระบบสัญญาณเตือนอัคคีภัย
ARDUINO
ในบทความนี้เราจะติดต่อ Flame Sensor กับArduinoและเรียนรู้ขั้นตอนทั้งหมดในการสร้างFire Alarm Systemโดยใช้ Arduino และ Flame Sensor โมดูลเซ็นเซอร์เปลวไฟมีโฟโตเดมิสเพื่อตรวจจับแสงและ op-amp เพื่อควบคุมความไว ใช้สำหรับตรวจจับการลุกไหม้และให้สัญญาณสูงเมื่อตรวจจับ Arduino อ่านสัญญาณและแจ้งเตือนโดยการเปิดเสียงและ LED ใช้เซ็นเซอร์เปลวไฟที่นี่เป็นเซ็นเซอร์เปลวไฟ IR
เปลวไฟเซนเซอร์
ตรวจจับเปลวไฟเป็นเซ็นเซอร์ที่ออกแบบมาเพื่อตรวจสอบและตอบสนองต่อการปรากฏตัวของเปลวไฟหรือไฟไหม้ การตอบสนองต่อเปลวไฟที่ตรวจพบขึ้นอยู่กับการติดตั้ง แต่อาจรวมถึงการเตือนภัยการเลิกใช้สายน้ำมัน (เช่นโพรเพนหรือสายแก๊สธรรมชาติ) และการเปิดใช้ระบบดับเพลิง
มีวิธีการตรวจจับเปลวไฟประเภทต่างๆ บางส่วนของพวกเขาคือเครื่องตรวจจับรังสีอัลตราไวโอเลตใกล้เครื่องตรวจจับอาร์เรย์ IR เครื่องตรวจจับอินฟราเรด (IR) กล้องอินฟราเรดความร้อนเครื่องตรวจจับรังสี UV / IR เป็นต้น
เมื่อเกิดเพลิงไหม้จะปล่อยแสงอินฟราเรดเพียงเล็กน้อยแสงนี้จะได้รับจาก Photodiode (ตัวรับสัญญาณ IR) บนโมดูลเซ็นเซอร์ จากนั้นเราจะใช้ Op-Amp เพื่อตรวจสอบการเปลี่ยนแปลงแรงดันไฟฟ้าทั่ว IR Receiver ดังนั้นหากตรวจพบไฟขาออก (DO) จะให้ 0V (LOW) และหากไม่มีไฟขาขาขาออกจะเป็น 5V ( สูง).
ในโครงการนี้เราจะใช้เซ็นเซอร์เปลวไฟ IR ตาม มันขึ้นอยู่กับเซ็นเซอร์ YG1006 ซึ่งเป็น phototransistor ซิลิคอน NPN ที่มีความไวสูงและมีความไวสูง สามารถตรวจจับแสงอินฟราเรดที่มีความยาวคลื่นตั้งแต่ 700nm ถึง 1000nm และมีมุมตรวจจับประมาณ 60 องศา โมดูลเซ็นเซอร์เปลวไฟประกอบด้วยโฟโตไดโอด (ตัวรับสัญญาณอินฟราเรด), ตัวต้านทาน, ตัวเก็บประจุ, โพเทนชิออมิเตอร์และตัวเปรียบเทียบ LM393 ในวงจรรวม ความไวสามารถปรับได้โดยปรับโพเทนชิออมิเตอร์บนบอร์ด แรงดันไฟฟ้าระหว่าง 3.3v และ 5v DC พร้อมเอาต์พุตแบบดิจิตอล ลอจิกสูงที่เอาท์พุทแสดงว่ามีเปลวไฟหรือไฟ ลอจิกต่ำเมื่อเอาท์พุทระบุว่าไม่มีเปลวไฟหรือไฟ
ด้านล่างเป็นขาคำอธิบายของ Flame sensor โมดูล:
หมุด
|
ลักษณะ
|
vcc
|
3.3 - แหล่งจ่ายไฟ 5V
|
GND
|
พื้น
|
dout
|
เอาท์พุทดิจิตอล
|
การประยุกต์ใช้เซ็นเซอร์เปลวไฟ
- สถานีไฮโดรเจน
- จอภาพการเผาไหม้สำหรับเตา
- ท่อส่งน้ำมันและก๊าซ
- โรงงานผลิตยานยนต์
- สิ่งอำนวยความสะดวกนิวเคลียร์
- เครื่องบินเครื่องบิน
- เปลือกกังหัน
องค์ประกอบที่จำเป็น
- Arduino Uno (สามารถใช้ Arduino board)
- เปลวไฟเซ็นเซอร์
- LED
- ออด
- ตัวต้านทาน
- สายจัมเปอร์
แผนภูมิวงจรรวม
การทำงานของ Flame Sensor กับ Arduino
Arduino Uno เป็นไมโครคอนโทรลเลอร์แบบโอเพ่นซอร์สที่ใช้ไมโครคอนโทรลเลอร์ ATmega328p มีพินแบบดิจิทัลจำนวน 14 แบบ (จาก 6 ขาสามารถใช้เป็นเอาท์พุท PWM) 6 อินพุตแบบอนาล็อกตัวควบคุมแรงดันไฟฟ้าของบอร์ด ฯลฯ Arduino Uno มีหน่วยความจำแฟลช 32KB SRAM 2KB และ EEPROM 1KB ทำงานที่ความถี่นาฬิกา 16MHz Arduino Uno รองรับการสื่อสารแบบอนุกรม, I2C, SPI สำหรับการสื่อสารกับอุปกรณ์อื่น ๆ ตารางด้านล่างแสดงข้อมูลทางเทคนิคของ Arduino Uno
ไมโครคอนโทรลเลอร์
|
ATmega328p
|
แรงดันไฟฟ้าที่ใช้งาน
|
5V
|
แรงดันไฟฟ้าขาเข้า
|
7-12V (แนะนำ)
|
หมุด I / O ดิจิทัล
|
14
|
หมุดอนาล็อก
|
6
|
หน่วยความจำ Flash
|
32KB
|
SRAM
|
2KB
|
EEPROM
|
1KB
|
ความเร็วสัญญาณนาฬิกา
|
16MHz
|
เซ็นเซอร์ตรวจจับเปลวไฟการปรากฏตัวของไฟหรือเปลวไฟอยู่บนพื้นฐานของอินฟาเรด (IR) ความยาวคลื่นปล่อยออกมาจากเปลวไฟ ให้ตรรกะ 1 เป็นเอาต์พุตถ้าตรวจพบเปลวไฟมิฉะนั้นจะให้ตรรกะ 0 เป็นเอาท์พุท Arduino Uno ตรวจสอบระดับลอจิกบนขาขาออกของเซ็นเซอร์และดำเนินงานต่อไปเช่นการเปิดใช้งาน Buzzer และ LED การส่งข้อความแจ้งเตือน
นอกจากนี้ให้ตรวจสอบโครงการไฟไหม้อื่น ๆ ของเรา:
- สัญญาณเตือนไฟด้วย Thermistor
- ระบบสัญญาณเตือนอัคคีภัยโดยใช้ไมโครคอนโทรลเลอร์ AVR
- หุ่นยนต์ดับเพลิง Arduino Based
คำอธิบายโค้ด
รหัส Arduino ที่สมบูรณ์สำหรับโครงการนี้จะได้รับในตอนท้ายของบทความนี้ โค้ดนี้แบ่งออกเป็นส่วนเล็ก ๆ ที่มีความหมายและอธิบายไว้ด้านล่าง
ในส่วนของรหัสนี้เราจะไปกำหนดหมุดสำหรับเซ็นเซอร์เปลวไฟ LED และออดที่เชื่อมต่อกับ Arduino เซ็นเซอร์เปลวไฟเชื่อมต่อกับขาดิจิตอล 4 ของ Arduino Buzzer เชื่อมต่อกับขาดิจิตอล 8 ของ Arduino LED เชื่อมต่อกับขา 7 ของ Arduino
ตัวแปร“ flame_detected ” ถูกนำมาใช้สำหรับการจัดเก็บค่าดิจิตอลอ่านออกจากเซ็นเซอร์เปลวไฟ ขึ้นอยู่กับค่านี้เราจะตรวจจับการมีเปลวไฟ
buzzer int = 8;
int LED = 7;
int flame_sensor = 4;
int flame_detected;
ในส่วนนี้ของโค้ดเราจะกำหนดสถานะของหมุดดิจิทัลของ Arduinoและกำหนดค่า
อัตราบอดสำหรับการสื่อสารแบบอนุกรมกับเครื่องคอมพิวเตอร์เพื่อแสดงสถานะของวงจรตรวจจับเปลวไฟ
การตั้งค่าเป็นโมฆะ () { 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แสดงว่ามีการตรวจพบเปลวไฟ เราต้องเปิดใช้งาน Buzzer และ LED แล้วแสดงข้อความแจ้งเตือนในจอภาพ Serial ของ Arduino IDE
ถ้าค่าเท่ากับ 0แสดงว่าไม่ได้มีเปลวไฟตรวจจับดังนั้นเราต้องปิด LED และเสียงกริ่ง กระบวนการนี้จะทำซ้ำทุกวินาทีเพื่อระบุว่ามีเปลวไฟหรือเปลวไฟ
ถ้า (flame_detected == 1) { Serial.println ("เปลวไฟถูกตรวจพบ ... ! ดำเนินการทันที"); digitalWrite (เสียงกริ่งสูง); digitalWrite (LED, HIGH); ล่าช้า (200); digitalWrite (LED, ต่ำ); ล่าช้า (200); } else { Serial.println ("ตรวจไม่พบเปลวไฟพัก"); digitalWrite (เสียงกริ่งต่ำ); digitalWrite (LED, ต่ำ); } ล่าช้า (1000);
เราได้สร้างหุ่นยนต์ดับเพลิงตามแนวความคิดนี้โดยอัตโนมัติซึ่งจะตรวจจับการเกิดไฟไหม้และสูบน้ำออกเพื่อดับเพลิง
ตรวจสอบรหัสและวิดีโอสาธิตทั้งหมดด้านล่าง
รหัส
buzzer int = 8;
int LED = 7;
int flame_sensor = 4;
int flame_detected;
int LED = 7;
int flame_sensor = 4;
int flame_detected;
การตั้งค่าเป็นโมฆะ ()
{
Serial.begin (9600);
pinMode (สัญญาณเสียง, เอาต์พุต);
pinMode (LED, เอาท์พุท);
pinMode (flame_sensor, INPUT);
}
{
Serial.begin (9600);
pinMode (สัญญาณเสียง, เอาต์พุต);
pinMode (LED, เอาท์พุท);
pinMode (flame_sensor, INPUT);
}
void loop ()
{
flame_detected = digitalRead (flame_sensor);
ถ้า (flame_detected == 1)
{
Serial.println ("เปลวไฟถูกตรวจพบ ... ! ดำเนินการทันที");
digitalWrite (เสียงกริ่งสูง);
digitalWrite (LED, HIGH);
ล่าช้า (200);
digitalWrite (LED, ต่ำ);
ล่าช้า (200);
}
else
{
Serial.println ("ตรวจไม่พบเปลวไฟพัก");
digitalWrite (เสียงกริ่งต่ำ);
digitalWrite (LED, ต่ำ);
}
ล่าช้า (1000);
}
{
flame_detected = digitalRead (flame_sensor);
ถ้า (flame_detected == 1)
{
Serial.println ("เปลวไฟถูกตรวจพบ ... ! ดำเนินการทันที");
digitalWrite (เสียงกริ่งสูง);
digitalWrite (LED, HIGH);
ล่าช้า (200);
digitalWrite (LED, ต่ำ);
ล่าช้า (200);
}
else
{
Serial.println ("ตรวจไม่พบเปลวไฟพัก");
digitalWrite (เสียงกริ่งต่ำ);
digitalWrite (LED, ต่ำ);
}
ล่าช้า (1000);
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น