หน้าแรก ดูโปรเจกต์ทั้งหมด
Intermediate

โปรเจกต์ เครื่องตรวจจับ LPG Leakage ที่ใช้ Arduino

โปรเจกต์ที่ใช้ Arduino นี้คือเครื่องตรวจจับและแจ้งเตือนการรั่วไหลของ LPG ที่สร้างโดยใช้ MQ6 gas leakage sensor และใช้ servo ในการเปิด outlet

โปรเจกต์ เครื่องตรวจจับ LPG Leakage ที่ใช้ Arduino

วิดีโอสาธิต

Video

▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์

}

รายละเอียดและวิธีทำ

การรั่วไหลของก๊าซเป็นสาเหตุของอันตรายที่รุนแรง อุบัติเหตุไฟไหม้หลายครั้งในโรงแรม ร้านอาหาร และบ้านเรือน มีสาเหตุมาจากการรั่วไหลของก๊าซ LPG แม้ว่าการรั่วไหลจะสามารถตรวจพบได้จากกลิ่นของก๊าซ แต่ในหลายๆ ครั้งก็ไม่สามารถรับรู้ถึงการรั่วไหลได้โดยตรง ด้วยเหตุนี้ ในโรงแรม ร้านอาหาร หรือแม้แต่ในบ้านเรือน การติดตั้งเครื่องตรวจจับการรั่วไหลของก๊าซ LPG จึงเป็นเรื่องที่ชาญฉลาด โปรเจกต์นี้เป็นการนำแนวคิดดังกล่าวมาสร้างจริงโดยใช้ MQ-6 gas sensor ซึ่งเป็น Sensor ที่นิยมใช้ในการตรวจจับการรั่วไหลของก๊าซสำหรับงานต่างๆ อุปกรณ์นี้จะสร้างการแจ้งเตือนด้วยสายตาโดยใช้ LED เมื่อตรวจพบการรั่วไหลที่อันตราย นอกจากนี้ยังเปิดช่องระบายอากาศโดยการขับ Servo motor เพื่อให้ก๊าซที่รั่วไหลออกมาถูกระบายออกไป และอุปกรณ์ยังแสดงปริมาณการรั่วไหลบน LCD display อีกด้วย

MQ6 gas sensor จะตรวจจับความเข้มข้นของก๊าซในหน่วย ppm และส่งเอาต์พุตเป็นค่า Analog ซึ่งสามารถแปลงเป็นค่า Digital ได้โดยใช้ Analog to Digital Convertor (ADC) ที่มีอยู่ในตัว Arduino ค่า Digital ที่ได้จะมีความยาว 10-bit และมีค่าตั้งแต่ 0 ถึง 1023 โปรเจกต์นี้อนุญาตให้ผู้ใช้กำหนดระดับอันตรายสำหรับการรั่วไหลโดยอ้างอิงจากค่า Digital เดียวกันนี้ เมื่อค่าที่ผู้ใช้ตั้งไว้ตรงกับค่าที่ Sensor ตรวจพบ ระบบจะสั่งให้สัญญาณเตือนทำงาน โดย MQ6 sensor สามารถปรับเทียบ (Calibrate) ได้โดยการเชื่อมต่อ Load resistance ที่มีค่าคงที่เข้ากับ Sensor

โปรเจกต์นี้สร้างขึ้นบน Arduino Pro Mini และเป็นอุปกรณ์แบบพกพาที่สามารถติดตั้งได้ทุกที่ Arduino sketch บน Board จะจัดการการอ่านข้อมูลจาก MQ-6 sensor, เปรียบเทียบข้อมูล และสั่งให้สัญญาณเตือนทำงาน

Circuit Connections - 

Arduino based LPG Leakage Detector Circuit Connection

วงจรของเครื่องตรวจจับการรั่วไหลของก๊าซ LPG นี้สร้างขึ้นบน Arduino Pro Mini โดยมีการเชื่อมต่อ MQ-6 gas sensor, Servo motor, LCD display และ LED เข้ากับ Arduino board การเชื่อมต่อวงจรมีรายละเอียดดังนี้ - 

MQ6 Gas Sensor - MQ6 คือ Gas sensor module โดย Module นี้มี 4 Pins สำหรับการเชื่อมต่อ ซึ่งมี 2 Pins เป็น VCC และ Ground, 1 Pin เป็น Analog output และอีก 1 Pin เป็น Digital pin ที่ผ่าน Comparator (LM358) โดย Analog output pin ของ Module จะถูกใช้สำหรับตรวจจับระดับความเข้มข้นของการรั่วไหลของก๊าซ และเชื่อมต่อกับ A0 analog input pin ของ Arduino board ซึ่ง Sensor จะวัดความเข้มข้นของก๊าซที่รั่วไหลในหน่วย ppm ตามสูตรดังต่อไปนี้ - 

Concen = 1036.5*R^-2.392 โดยที่ 

Concen คือความเข้มข้นของ LPG ในหน่วย ppm

R คืออัตราส่วนของ Rs ซึ่งเป็นความต้านทานของ Sensor ต่อ R0 ซึ่งเป็นความต้านทานที่ 1000ppm ณ อุณหภูมิ 20 องศาเซลเซียส และความชื้น 65%   

ความต้านทานของ Sensor (Rs) คำนวณได้จากสูตร - 

Rs = (1024/ADC_DATA-1)*RL โดยที่

Rs คือความต้านทานของ Sensor

ADC_DATA คือค่า Digital ที่อ่านได้ในช่วง 0 ถึง 1023

RL คือ Load resistance ในช่วง 10K ถึง 40K ohms

ดังนั้น สำหรับ Load resistance ที่คงที่ ค่า ADC ที่อ่านได้จะแปรผันตรงกับความเข้มข้นของก๊าซในหน่วย ppm

ใน Datasheet จะมีการระบุอัตราส่วนของความเข้มข้นต่อความต้านทานของ Sensor ไว้ โดยกราฟนี้ทำขึ้นภายใต้สภาวะปกติที่อุณหภูมิ 20 องศาเซลเซียส และความชื้น 65% ดังนั้น Rs=R0 สำหรับเส้นกราฟนี้ ด้วยวิธีนี้ความเข้มข้นของก๊าซในหน่วย ppm จึงเท่ากับค่าที่อ่านได้จาก ADC ซึ่งค่า ADC จะมีค่าระหว่าง 0 ถึง 1023 โดยใช้ Analog output pin ของ Sensor ในการอ่านค่า ส่วน Pins VCC และ Ground จะเชื่อมต่อกับ VCC และ Ground รวม ในขณะที่ Analog output pin เชื่อมต่อกับ A0 pin ของ Arduino board

16X2 LCD: 16X2 LCD display ถูกใช้เพื่อแสดงค่าความเข้มข้นของก๊าซ โดยเชื่อมต่อกับ Arduino board ด้วยการต่อ Data pins เข้ากับ Pins 4 ถึง 7 ของ Arduino board ส่วน RS และ E pins ของ LCD เชื่อมต่อกับ Pins 2 และ 3 ของ Arduino UNO ตามลำดับ และ RW pin ของ LCD เชื่อมต่อกับ Ground

Servo Motor - Servo motor ถูกใช้เพื่อเปิดและปิดช่องระบายอากาศเพื่อให้ก๊าซที่รั่วไหลระบายออกไปได้ Servo motor มี 3 ขั้ว คือ VCC, Ground และ Control โดย VCC และ Ground เชื่อมต่อกับ VCC และ Ground รวมตามลำดับ ส่วน Control terminal ของมอเตอร์เชื่อมต่อกับ Pin 10 ของ Arduino board โดยต้องส่งสัญญาณ Pulse width modulated ไปยัง Control terminal ของ Servo เพื่อสั่งให้หมุนระหว่างมุม 0 ถึง 180 องศา 

LED - LED ถูกเชื่อมต่อโดยตรงกับ Pin 12 ของ Arduino โดย LED จะถูกตั้งค่าให้เปิด (ON) เมื่อการรั่วไหลเกินระดับอันตราย 

Power Supply - วงจรต้องการไฟกระแสตรง 5V (regulated DC) สำหรับการทำงาน สามารถใช้แบตเตอรี่ 18V เป็นแหล่งพลังงานหลักได้ และแรงดันจากแบตเตอรี่สามารถปรับให้คงที่ที่ 5V ได้โดยใช้ 7805 voltage regulator IC โดย Pin 1 ของ IC regulator ควรเชื่อมต่อกับขั้วบวกของแบตเตอรี่ และ Pin 2 เชื่อมต่อกับ Ground ส่วนเอาต์พุตแรงดันไฟฟ้าให้นำมาจาก Pin 3 ของ 7805 IC

How the circuit works -

Arduino based LPG Leakage Detector Circuit Working

การทำงานของวงจรนั้นง่ายมาก เมื่อเปิดเครื่อง (ON) Arduino จะเริ่มต้นการทำงานของ LCD display และเริ่มอ่านค่าแรงดัน Analog จาก MQ-6 sensor แรงดัน Analog จาก Sensor จะถูกแปลงเป็นค่า Digital โดยใช้ ADC channel ภายใน และเก็บไว้ใน Variable ในรูปแบบค่า 10-bit จากนั้นค่าจาก Sensor จะถูกนำไปเปรียบเทียบกับค่า Threshold ที่ปรับเทียบไว้ และหากค่าจาก Sensor สูงกว่าค่านั้น Buzzer จะทำงานและ Servo จะหมุนเพื่อเปิดช่องระบายก๊าซ แต่หากค่าจาก Sensor ยังอยู่ในเกณฑ์ปกติ ข้อความ "No Danger" จะแสดงบนหน้าจอ LCD ต่อไป และ Servo จะถูกรักษาไว้ที่มุมที่ช่องระบายอากาศปิดอยู่ โดยที่ Buzzer จะถูกปิด (OFF) ในสภาวะนี้

ตรวจสอบ Project code เพื่อเรียนรู้วิธีที่ Arduino อ่านข้อมูลจาก MQ-6 sensor, เปรียบเทียบข้อมูล, สั่งการ Servo และเปิดสัญญาณเตือน

Programming Guide - 

Arduino sketch นี้มีการนำเข้า (Import) Servo.h สำหรับควบคุม Servo motor และ LiquidCrystal.h สำหรับ LCD display มีการสร้าง Object ของ LCD และกำหนด Controller pins ส่วน Variables ที่ระบุถึง LED และการเชื่อมต่อ Pin ของ MQ-6 sensor จะถูกประกาศและกำหนด Controller pins นอกจากนี้ยังมีการประกาศ Object ของ Servo และ Variable สำหรับมุมของ Servo ด้วย

ฟังก์ชัน setup() ถูกประกาศขึ้นเพื่อให้ทำงานเพียงครั้งเดียวหลังจากเปิดเครื่อง ในฟังก์ชันนี้ Baud rate สำหรับ Serial communication กับ LCD module ถูกตั้งไว้ที่ 9600 baud ต่อวินาที LCD object ถูกเริ่มต้นให้ทำงานในโหมด 16 by 2 character LCD และ Pin ที่เชื่อมต่อกับ LED ถูกตั้งค่าเป็น Digital output โดยใช้ฟังก์ชัน pinMode() ส่วน Servo motor จะถูกสั่งให้หมุนไปที่มุม 10 องศาโดยเป็นค่าเริ่มต้น และหัวข้อเริ่มต้น "LPG Gas Leakage" จะถูกพิมพ์บนแถวแรกของ LCD

ฟังก์ชัน loop() จะถูกเรียกใช้เพื่อทำงานซ้ำไปเรื่อยๆ อย่างไม่สิ้นสุด ในฟังก์ชันนี้ ค่าจาก Sensor จะถูกอ่านโดยใช้วิธี analogRead() และพิมพ์ลงบน LCD display ค่าจาก Sensor มีความยาว 10-bit และจะถูกนำไปเปรียบเทียบกับค่าคงที่ 380 หากเกิน 380 ค่า LED จะถูกตั้งเป็น ON โดยส่ง Logic HIGH ไปยัง Pin ที่เกี่ยวข้อง และ Servo จะถูกหมุนไปที่มุม 110 โดยใช้วิธี write() บน Servo object หากค่าจาก Sensor น้อยกว่า 380 ค่า LED จะถูกตั้งเป็น OFF และแสดงข้อความ "No Danger" บน LCD

Programming code ที่สมบูรณ์สำหรับ LPG Gas Detector สามารถดูได้ในส่วนของ Code

.

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: arduino-based-lpg-leakage-detector-5b520b
2450 บาท
PromptPay QR Code