โปรเจกต์ Air Analyzer ที่ใช้ MQ Sensors เกือบทุกชนิด
Air monitor ที่สามารถวัดค่าความเข้มข้นของ CO, CO2, H2, CH4, NH3, Alcohol, Bangene, Acetone, Hexane, Toluene, Smoke และ Flammable gas
Air monitor ที่สามารถวัดค่าความเข้มข้นของ CO, CO2, H2, CH4, NH3, Alcohol, Bangene, Acetone, Hexane, Toluene, Smoke และ Flammable gas
▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์
Project Supporter Team
โพสต์โดย
เป็นเวลานานแล้วที่ผมอยากจะมอนิเตอร์ส่วนประกอบต่างๆ ในอากาศโดยใช้เพียง MQ sensors ราคาประหยัด ดังนั้นผมจึงสั่งชุด MQ sensors มา 9 ตัวและทำโปรเจกต์นี้ขึ้นมา ซึ่งผมสามารถวัดความเข้มข้นของ gas หลายประเภทในอากาศได้โดยใช้เพียง MQ sensors บางตัวเท่านั้น Sensor ประเภทนี้อาจจะไม่แม่นยำมากนักและต้องมีการ calibrate อย่างมาก แต่พวกมันเป็น gas sensors ราคาถูกที่ดีที่สุดเท่าที่มี คุณสามารถหาซื้อชุด gas sensors 9 ตัวได้ในราคาเพียง $6 ถึง $7 ในโปรเจกต์ของผม ผมใช้ 6 ตัวและวัดความเข้มข้นของ gas ได้ถึง 12 ชนิด

เดี๋ยวก่อน!!! ก่อนที่จะเริ่มทำงานใดๆ คุณควรจ่ายไฟให้ sensor ของคุณและปล่อยให้มัน burn อย่างน้อย 24 ชั่วโมง ขั้นตอนนี้สำคัญมากเนื่องจาก MQ sensors มักจะมาพร้อมกับสิ่งสกปรกปนเปื้อน และการ burn จะช่วยให้พวกมันทำความสะอาดตัวเองได้ คุณต้องจ่ายไฟให้ sensors ด้วยแรงดัน 5V และวางไว้ในที่ที่สะอาด
MQ sensors จะส่งเอาต์พุตเป็น analog voltage ที่เปลี่ยนแปลงตามความเข้มข้นของ gas บางชนิดที่เลือกไว้ ดังนั้นเราจึงสามารถอ่านค่า analog ผ่าน Arduino ADC และหาค่าความเข้มข้นของ gas ในอากาศได้
ผมใช้ 6 MQ sensor (MQ3, MQ4, MQ7, MQ8, MQ9 และ MQ135)
MQ3 สำหรับวัด Alcohol, Benzene, และ Hexane
MQ4 สำหรับวัด Methane และ smoke
MQ135 สำหรับวัด CO2, NH4, Toluene, และ Acetone
MQ7 สำหรับวัด CO
MQ8 สำหรับวัด H2
MQ9 สำหรับวัด flammable gas
ผมเชื่อมต่อพวกมันเข้ากับ Arduino nano เพราะมันมี 8 ADC ซึ่งผมจำเป็นต้องใช้ โดยใช้ 6 ADC สำหรับ sensors และอีก 2 ADC สำหรับการสื่อสารแบบ I2C กับ LCD
เชื่อมต่อ Arduino กับ sensors ดังนี้-
เชื่อมต่อ Arduino และ LCD ดังนี้-
การเชื่อมต่อ hardware และการอ่านค่า analog value นั้นเป็นเรื่องง่าย แต่สิ่งที่ยากที่สุดคือการ calibrate sensors และการคำนวณค่า ppm (parts per million) สำหรับ gas เฉพาะเจาะจง หลังจากค้นหาในอินเทอร์เน็ตมานาน ผมก็ได้พบ library สำหรับ sensors เหล่านี้ และเมื่อเปรียบเทียบการคำนวณกับ datasheet ของ sensors แล้ว ดูเหมือนว่าจะใช้งานได้ดีทีเดียว
ผมพบบทความที่อธิบายการทำงานและการคำนวณสำหรับ MQ sensor ได้ที่นี่- UNDERSTANDING A GAS SENSOR.
ผมใช้ library และเขียน code เพื่อใช้ sensors ทั้ง 6 ตัวกับ Arduino nano และแสดงค่าความเข้มข้นของ gas ต่างๆ ในอากาศ
คุณสามารถหา library ได้ที่นี่ - MQUnifiedsensor library
สำหรับการเขียน code, อันดับแรกผมรวม library LiquidCrystal_I2C และ MQUnifiedsensor เข้ามา จากนั้นจึงกำหนดค่า display parameter และ Input PIN สำหรับ sensors ต่อมาในส่วนของ setup ผมได้ทำการ initialize ตัวแสดงผลและ sensors รวมถึงตั้งค่า R0 สำหรับทุก sensor คุณต้องทำการ calibrate sensors ของคุณเพื่อหาค่า R0 นี้ โดยการยกเลิกคอมเมนต์ (uncomment) ในส่วนหนึ่งของฟังก์ชัน setup และ upload code ไปยัง Arduino ของคุณโดยที่ต่อ sensors ที่ผ่านการ pre-burned แล้วไว้ จากนั้นคุณจะพบค่า R0 ของทุก sensor ใน serial monitor ให้จดบันทึกค่าเหล่านั้นและนำไปแก้ไขในฟังก์ชัน setup ขอแนะนำให้ calibrate sensors ในสภาพแวดล้อมที่สะอาดเพียงครั้งเดียวแล้วตั้งค่า R0 ส่วนที่ต้องยกเลิกคอมเมนต์มีการระบุไว้ใน code แล้ว
และในฟังก์ชัน loop ผมได้ตั้งค่า A และ B สำหรับสมการ exponential สำหรับ gas ต่างๆ โดยค่า A และ B สำหรับ PPM = A*ratio^B ซึ่งค่าเหล่านี้จะแตกต่างกันไปตามชนิดของ gas ในแต่ละ sensors
หลังจากนั้น ผมจะแสดงค่าความเข้มข้นของ gas บน LCD โดยแสดงหน้าละสองค่า และมีการหน่วงเวลา 3 วินาทีในทุกๆ หน้า
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้