- MQ6 แก๊สเซนเซอร์
- วิธีวัด PPM โดยใช้เซ็นเซอร์ MQ Gas?
- ส่วนประกอบที่จำเป็น
- แผนผัง
- MQ Sensor พร้อมการเขียนโปรแกรม PIC
MQ ซีรี่ส์เซ็นเซอร์ก๊าซเป็นเซ็นเซอร์ประเภททั่วไปที่ใช้ในเครื่องตรวจจับก๊าซเพื่อตรวจจับหรือวัดก๊าซบางประเภท เซ็นเซอร์เหล่านี้ใช้กันอย่างแพร่หลายในอุปกรณ์ที่เกี่ยวข้องกับก๊าซทั้งหมดเช่นตั้งแต่เครื่องตรวจจับควันธรรมดาไปจนถึงเครื่องตรวจวัดคุณภาพอากาศในโรงงานอุตสาหกรรม เราได้ใช้เซ็นเซอร์ก๊าซ MQ เหล่านี้กับ Arduino แล้วเพื่อวัดก๊าซที่เป็นอันตรายเช่นแอมโมเนีย ในบทความนี้เราจะเรียนรู้วิธีการใช้เซ็นเซอร์ก๊าซเหล่านี้กับ PIC Microcontrollersเพื่อวัดค่า PPM ของก๊าซและแสดงบนจอ LCD ขนาด 16x2
ดังที่ได้กล่าวไว้ก่อนหน้านี้มีเซ็นเซอร์ซีรีส์ MQ หลายประเภทที่วางจำหน่ายในท้องตลาดและเซ็นเซอร์แต่ละตัวสามารถวัดก๊าซได้หลายประเภทดังแสดงในตารางด้านล่าง เพื่อประโยชน์ในบทความนี้เราจะใช้เซ็นเซอร์ MQ6 Gas พร้อม PICที่สามารถใช้ตรวจจับการมีอยู่และความเข้มข้นของก๊าซ LPG อย่างไรก็ตามด้วยการใช้ฮาร์ดแวร์และเฟิร์มแวร์เดียวกันเซ็นเซอร์ MQ ซีรีส์อื่น ๆ ก็สามารถใช้งานได้โดยไม่ต้องมีการแก้ไขที่สำคัญในส่วนของโค้ดและฮาร์ดแวร์
เซนเซอร์ | ตรวจพบ |
MQ-2 | ก๊าซมีเทนบิวเทนก๊าซหุงต้มควัน |
MQ-3 | แอลกอฮอล์เอทานอลควัน |
MQ-4 | มีเทนก๊าซ CNG |
MQ-5 | ก๊าซธรรมชาติ LPG |
MQ-6 | ก๊าซหุงต้มก๊าซบิวเทน |
MQ-7 | คาร์บอนมอนอกไซด์ |
MQ-8 | ก๊าซไฮโดรเจน |
MQ-9 | ก๊าซคาร์บอนมอนอกไซด์ก๊าซไวไฟ |
MQ131 | โอโซน |
MQ135 | คุณภาพอากาศ (เบนซินแอลกอฮอล์ควัน) |
MQ136 | ก๊าซไฮโดรเจนซัลไฟด์ |
MQ137 | แอมโมเนีย |
MQ138 | เบนซีนโทลูอีนแอลกอฮอล์อะซิโตนโพรเพนก๊าซฟอร์มาลดีไฮด์ไฮโดรเจน |
MQ214 | ก๊าซมีเทนก๊าซธรรมชาติ |
MQ216 | ก๊าซธรรมชาติก๊าซถ่านหิน |
MQ303A | แอลกอฮอล์เอทานอลควัน |
MQ306A | ก๊าซหุงต้มก๊าซบิวเทน |
MQ307A | คาร์บอนมอนอกไซด์ |
MQ309A | คาร์บอนมอนอกไซด์ก๊าซไวไฟ |
มก 811 | คาร์บอนไดออกไซด์ (CO2) |
AQ-104 | คุณภาพอากาศ |
MQ6 แก๊สเซนเซอร์
ด้านล่างนี้แสดงให้เห็นภาพMQ6 เซ็นเซอร์ขาแผนภาพ อย่างไรก็ตามภาพด้านซ้ายเป็นเซ็นเซอร์ MQ6 ที่ใช้โมดูลสำหรับเชื่อมต่อกับหน่วยไมโครคอนโทรลเลอร์แผนภาพพินของโมดูลจะแสดงในภาพนั้นด้วย
Pin 1 คือ VCC, Pin 2 คือ GND, Pin 3 คือ Digital out (Logic ต่ำเมื่อตรวจพบแก๊ส) และ Pin 4 คือเอาต์พุตแบบอะนาล็อก หม้อใช้สำหรับปรับความไวแสง ไม่ใช่ RL ตัวต้านทาน RL เป็นตัวต้านทานที่ถูกต้องของ DOUT LED
เซ็นเซอร์แต่ละ MQ ชุดมีองค์ประกอบความร้อนและความต้านทานต่อการตรวจจับขึ้นอยู่กับความเข้มข้นของก๊าซความต้านทานการตรวจจับจะเปลี่ยนไปและโดยการตรวจจับความต้านทานที่เปลี่ยนแปลงสามารถวัดความเข้มข้นของก๊าซ ในการวัดความเข้มข้นของก๊าซใน PPMเซนเซอร์ MQ ทั้งหมดให้กราฟลอการิทึมซึ่งมีความสำคัญมาก กราฟแสดงภาพรวมของความเข้มข้นของก๊าซด้วยอัตราส่วน RS และ RO
วิธีวัด PPM โดยใช้เซ็นเซอร์ MQ Gas?
RS คือความต้านทานความรู้สึกระหว่างการมีอยู่ของก๊าซเฉพาะในขณะที่ RO คือความต้านทานความรู้สึกในอากาศบริสุทธิ์โดยไม่มีก๊าซใด ๆ กราฟลอการิทึมด้านล่างที่นำมาจากแผ่นข้อมูลแสดงภาพรวมของความเข้มข้นของก๊าซที่มีความต้านทานต่อการรับรู้ของเซ็นเซอร์ MQ6 เซ็นเซอร์ MQ6 จะใช้ในการตรวจสอบความเข้มข้นของก๊าซแอลพีจีดังนั้นเซ็นเซอร์ MQ6 จะให้ความต้านทานเฉพาะในช่วงที่อากาศบริสุทธิ์ซึ่งก๊าซ LPG ไม่สามารถใช้งานได้ นอกจากนี้ความต้านทานจะเปลี่ยนไปเมื่อใดก็ตามที่เซ็นเซอร์ MQ6 ตรวจพบก๊าซ LPG
ดังนั้นเราต้องพล็อตกราฟนี้ลงในเฟิร์มแวร์ของเราคล้ายกับที่เราทำในโครงการเครื่องตรวจจับก๊าซ Arduino สูตรคือการมีจุดข้อมูล 3 จุดที่แตกต่างกัน ข้อมูลสองจุดแรกคือจุดเริ่มต้นของเส้นโค้ง LPG ในพิกัด X และ Y ข้อมูลที่สามคือความชัน
ดังนั้นถ้าเราเลือกเส้นโค้งสีน้ำเงินเข้มซึ่งเป็นเส้นโค้ง LPG จุดเริ่มต้นของเส้นโค้งในพิกัด X และ Y คือ 200 และ 2 จุดข้อมูลแรกจากมาตราส่วนลอการิทึมคือ (log200, log2) ซึ่งเป็น 2.3, 0.30)
มาสร้างเป็น X1 และ Y1 = (2.3, 0.30) จุดสิ้นสุดของเส้นโค้งคือจุดข้อมูลที่สอง โดยกระบวนการเดียวกันกับที่อธิบายไว้ข้างต้น X2 และ Y2 คือ (log 10000, log0.4) ดังนั้น X2 และ Y2 = (4, -0.40) เพื่อให้ได้ความชันของเส้นโค้งสูตรคือ
= (Y2-Y1) / (X2-X1) = (- 0.40 - 0.30) / (4 - 2.3) = (-0.70) / (1.7) = -0.41
กราฟที่เราต้องการสามารถกำหนดเป็น
LPG_Curve = {สตาร์ท X และสตาร์ท Y, ความชัน} LPG_Curve = {2.3, 0.30, -0.41}
สำหรับเซ็นเซอร์ MQ อื่น ๆ รับข้อมูลข้างต้นจากแผ่นข้อมูลและพล็อตกราฟลอการิทึม ค่าจะแตกต่างกันไปตามเซ็นเซอร์และก๊าซที่วัดได้ สำหรับโมดูลเฉพาะนี้มีพินดิจิทัลที่ให้ข้อมูลเกี่ยวกับก๊าซหรือไม่เท่านั้น สำหรับโครงการนี้ยังใช้
ส่วนประกอบที่จำเป็น
ส่วนประกอบที่จำเป็นสำหรับการเชื่อมต่อเซ็นเซอร์ MQ กับไมโครคอนโทรลเลอร์ PIC มีดังต่อไปนี้ -
- แหล่งจ่ายไฟ 5V
- เขียงหั่นขนม
- ตัวต้านทาน 4.7k
- จอแอลซีดี 16x2
- ตัวต้านทาน 1k
- คริสตัล 20Mhz
- ตัวเก็บประจุ 33pF - 2 ชิ้น
- ไมโครคอนโทรลเลอร์ PIC16F877A
- เซ็นเซอร์ซีรีส์ MQ
- Berg และสายเชื่อมต่ออื่น ๆ
แผนผัง
แผนผังสำหรับเซ็นเซอร์แก๊สที่มีโครงการ PICค่อนข้างตรงไปตรงมา พินอนาล็อกเชื่อมต่อกับ RA0 และพินดิจิทัลกับ RD5 เพื่อวัดแรงดันไฟฟ้าแบบอะนาล็อกที่มาจากโมดูลเซ็นเซอร์ก๊าซ หากคุณยังใหม่กับ PIC คุณอาจต้องการดูบทช่วยสอน PIC ADC และบทช่วยสอน PIC LCD เพื่อทำความเข้าใจโครงการนี้ให้ดีขึ้น
วงจรถูกสร้างขึ้นในเขียงหั่นขนม เมื่อการเชื่อมต่อเสร็จสิ้นการตั้งค่าของฉันจะมีลักษณะดังนี้ดังแสดงด้านล่าง
MQ Sensor พร้อมการเขียนโปรแกรม PIC
ส่วนหลักของรหัสนี้คือฟังก์ชันหลักและฟังก์ชันอุปกรณ์ต่อพ่วงอื่น ๆ ที่เกี่ยวข้อง โปรแกรม Complete สามารถพบได้ที่ด้านล่างของหน้านี้โดยมีการอธิบายข้อมูลโค้ดที่สำคัญดังนี้
ฟังก์ชั่นด้านล่างนี้ใช้เพื่อรับค่าความต้านทานของเซ็นเซอร์ในอากาศอิสระ เป็นช่องทางอนาล็อก 0 ที่ใช้ก็จะได้รับข้อมูลจากช่องอนาล็อก 0. นี้สำหรับการสอบเทียบเซ็นเซอร์ MQ แก๊ส
ลอย SensorCalibration () { int count; // ฟังก์ชั่นนี้จะปรับเทียบเซ็นเซอร์ใน วาล์วลอย อากาศอิสระ = 0; สำหรับ (count = 0; count <50; count ++) {// ใช้หลายตัวอย่างและคำนวณค่าเฉลี่ย val + = คำนวณ_resistance (ADC_Read (0)); __delay_ms (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // หารด้วย RO_CLEAN_AIR_FACTOR ให้ค่า Ro return; }
ด้านล่างฟังก์ชันใช้เพื่ออ่านค่าอะนาล็อกของเซ็นเซอร์ MQ และเฉลี่ยเพื่อคำนวณค่า Rs
ลอย read_MQ () { int count; ลอย rs = 0; สำหรับ (count = 0; count <5; count ++) {// อ่านค่าหลาย ๆ ครั้งแล้วหาค่าเฉลี่ย rs + = การคำนวณความต้านทาน (ADC_Read (0)); // rs เปลี่ยนแปลงตามความเข้มข้นของก๊าซ __delay_ms (50); } rs = rs / 5; กลับ rs; }
ฟังก์ชันด้านล่างใช้ในการคำนวณความต้านทานจากตัวต้านทานตัวแบ่งแรงดันและความต้านทานต่อโหลด
ลอยคำนวณความต้านทาน (int adc_channel) {// เซ็นเซอร์และตัวต้านทานโหลดเป็นตัวแบ่งแรงดันไฟฟ้า ดังนั้นการใช้ค่าอนาล็อกและการ ส่งคืน ค่าโหลด (((float) RL_VALUE * (1023-adc_channel) / adc_channel)); // เราจะพบตัวต้านทานเซ็นเซอร์ }
RL_VALUE ถูกกำหนดไว้ที่จุดเริ่มต้นของรหัสดังที่แสดงด้านล่าง
#define RL_VALUE (10) // กำหนดความต้านทานโหลดบนบอร์ดเป็นกิโลโอห์ม
เปลี่ยนค่านี้หลังจากตรวจสอบความต้านทานโหลดออนบอร์ด อาจแตกต่างจากบอร์ดเซ็นเซอร์ MQ อื่น ๆ ในการลงจุดข้อมูลที่มีอยู่ในมาตราส่วนบันทึกจะใช้ฟังก์ชันด้านล่าง
int gas_plot_log_scale (ลอย rs_ro_ratio เส้นโค้ง * ลอย) { return pow (10, (((log (rs_ro_ratio) - เส้นโค้ง) / เส้นโค้ง) + เส้นโค้ง)); }
เส้นโค้งคือเส้นโค้ง LPG ที่กำหนดไว้ด้านบนของรหัสที่คำนวณก่อนหน้านี้ในบทความของเราด้านบน
ลอย MQ6_curve = {2.3,0.30, -0.41}; // กราฟพล็อตเปลี่ยนสิ่งนี้สำหรับเซ็นเซอร์เฉพาะ
สุดท้ายฟังก์ชั่นหลักภายในที่เราวัดค่าอะนาล็อกคำนวณ PPM และแสดงบน LCD ได้รับด้านล่าง
เป็นโมฆะ main () { system_init (); clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("การปรับเทียบ…. "); Ro = SensorCalibration (); // clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("เสร็จแล้ว!"); // clear_screen (); lcd_com (FIRST_LINE); lcd_print_number (Ro); lcd_puts ("K โอห์ม"); __delay_ms (1500); gas_detect = 0; ในขณะที่ (1) { if (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("มีแก๊สอยู่"); lcd_com (SECOND_LINE); lcd_puts ("ก๊าซ ppm ="); ลอย rs = read_MQ (); อัตราส่วนลอย = rs / Ro; lcd_print_number (gas_plot_log_scale (อัตราส่วน, MQ6_curve)); __delay_ms (1500); clear_screen (); } อื่น ๆ { lcd_com (FIRST_LINE); lcd_puts ("ไม่มีแก๊ส"); } } }
ขั้นแรก RO ของเซ็นเซอร์จะถูกวัดในอากาศบริสุทธิ์ จากนั้นจะอ่านพินดิจิทัลเพื่อตรวจสอบว่ามีก๊าซอยู่หรือไม่ หากมีก๊าซอยู่ก๊าซจะถูกวัดโดยเส้นโค้งของก๊าซหุงต้มที่ให้มา
ฉันใช้ไฟแช็คเพื่อตรวจสอบว่าค่า PPMเปลี่ยนแปลงหรือไม่เมื่อตรวจพบก๊าซ ไฟแช็คซิการ์เหล่านี้มีก๊าซ LPG อยู่ภายในซึ่งเมื่อปล่อยออกมาในอากาศเซ็นเซอร์ของเราจะอ่านค่า PPM และค่า PPM บนจอ LCD จะเปลี่ยนแปลงตามที่แสดงด้านล่าง
การทำงานทั้งหมดสามารถพบได้ในวิดีโอที่ให้ไว้ที่ด้านล่างของหน้านี้ หากคุณมีคำถามใด ๆ โปรดทิ้งไว้ในส่วนความคิดเห็นหรือใช้ฟอรัมของเราสำหรับคำถามทางเทคนิคอื่น ๆ