- Sensor Gas MQ6
- Bagaimana mengukur PPM menggunakan sensor MQ Gas?
- Komponen yang diperlukan
- Skematik
- Sensor MQ dengan Pengaturcaraan PIC
Sensor gas siri MQ adalah jenis sensor yang sangat biasa digunakan dalam Detektor Gas untuk mengesan atau mengukur jenis gas tertentu. Sensor ini digunakan secara meluas di semua alat yang berkaitan dengan Gas seperti dari Detektor Asap sederhana hingga Monitor Kualiti Udara Industri. Kami telah menggunakan sensor gas MQ ini dengan Arduino untuk mengukur beberapa gas berbahaya seperti Ammonia. Dalam artikel ini, kita akan belajar bagaimana menggunakan sensor gas ini dengan PIC Microcontroller, untuk mengukur nilai PPM gas dan memaparkannya pada LCD 16x2.
Seperti disebutkan sebelumnya, ada berbagai jenis sensor seri MQ yang tersedia di pasar dan setiap sensor dapat mengukur berbagai jenis gas seperti yang ditunjukkan dalam tabel di bawah. Untuk artikel ini, kami akan menggunakan sensor Gas MQ6 dengan PIC yang dapat digunakan untuk mengesan kehadiran dan konsentrasi gas LPG. Namun, dengan menggunakan perkakasan dan firmware yang sama, sensor siri MQ lain juga dapat digunakan tanpa pengubahsuaian besar pada bahagian kod dan perkakasan.
Sensor | Mengesan |
MQ-2 | Metana, Butana, LPG, asap |
MQ-3 | Alkohol, Etanol, asap |
MQ-4 | Metana, Gas CNG |
MQ-5 | Gas asli, LPG |
MQ-6 | LPG, gas butana |
MQ-7 | Karbon monoksida |
MQ-8 | Gas Hidrogen |
MQ-9 | Karbon Monoksida, gas mudah terbakar. |
MQ131 | Ozon |
MQ135 | Kualiti Udara (Benzena, Alkohol, asap) |
MQ136 | Gas hidrogen sulfida |
MQ137 | Amonia |
MQ138 | Benzena, Toluena, Alkohol, Aseton, Propana, gas Formaldehid, Hidrogen |
MQ214 | Metana, gas asli |
MQ216 | Gas asli, Gas arang batu |
MQ303A | Alkohol, Etanol, asap |
MQ306A | LPG, gas butana |
MQ307A | Karbon monoksida |
MQ309A | Karbon Monoksida, gas mudah terbakar |
MG811 | Karbon Dioksida (CO2) |
AQ-104 | Kualiti udara |
Sensor Gas MQ6
Gambar di bawah menunjukkan gambarajah pin sensor MQ6. Namun, gambar kiri adalah sensor MQ6 berdasarkan modul untuk berinteraksi dengan unit mikrokontroler, gambarajah pin modul juga ditunjukkan dalam gambar itu.
Pin 1 adalah VCC, Pin 2 adalah GND, Pin 3 adalah Digital out (Logik rendah apabila gas dikesan.) Dan Pin 4 adalah output Analog. Pot digunakan untuk menyesuaikan kepekaan. Ia bukan RL. Perintang RL adalah perintang kanan LED DOUT.
Setiap sensor siri MQ mempunyai elemen pemanasan dan rintangan penginderaan. Bergantung pada kepekatan gas, rintangan penginderaan berubah dan dengan mengesan rintangan yang berubah, kepekatan gas dapat diukur. Untuk mengukur kepekatan gas di PPM, semua sensor MQ menyediakan graf logaritma yang sangat penting. Grafik memberikan gambaran keseluruhan kepekatan gas dengan nisbah RS dan RO.
Bagaimana mengukur PPM menggunakan sensor MQ Gas?
RS adalah daya tahan akal semasa adanya gas tertentu sedangkan RO adalah daya tahan akal di udara bersih tanpa gas tertentu. Grafik logaritma di bawah yang diambil dari lembar data memberikan gambaran keseluruhan kepekatan gas dengan rintangan deria sensor MQ6. Sensor MQ6 digunakan untuk mengesan kepekatan gas LPG. Oleh itu, sensor MQ6 akan memberikan rintangan tertentu semasa keadaan udara bersih di mana gas LPG tidak tersedia. Juga, rintangan akan berubah setiap kali gas LPG dikesan oleh sensor MQ6.
Oleh itu, kita perlu memasukkan grafik ini ke dalam firmware kita yang serupa dengan yang kita lakukan dalam Projek pengesan Gas Arduino kami. Rumusnya adalah mempunyai 3 titik data yang berbeza. Dua titik data pertama adalah permulaan keluk LPG, dalam koordinat X dan Y. Data ketiga adalah cerun.
Jadi, Sekiranya kita memilih lengkung biru tua yang merupakan lengkung LPG, permulaan lengkung dalam koordinat X dan Y adalah 200 dan 2. Jadi, titik data pertama dari skala logaritmik adalah (log200, log2) yang (2.3, 0.30).
Mari buat sebagai, X1 dan Y1 = (2.3, 0.30). Akhir kurva adalah titik data kedua. Dengan proses yang sama yang dijelaskan di atas, X2 dan Y2 adalah (log 10000, log0.4). Oleh itu, X2 dan Y2 = (4, -0.40). Untuk mendapatkan cerun lengkung, rumusnya adalah
= (Y2-Y1) / (X2-X1) = (- 0,40 - 0,30) / (4 - 2,3) = (-0,70) / (1,7) = -0,41
Grafik yang kita perlukan boleh diberikan sebagai
LPG_Curve = {bermula X dan mulai Y, cerun} LPG_Curve = {2.3, 0.30, -0.41}
Untuk sensor MQ lain, dapatkan data di atas dari lembar data dan plot grafik Logaritma. Nilainya akan berbeza berdasarkan sensor dan gas yang diukur. Untuk modul khusus ini, ia mempunyai pin digital yang hanya memberikan maklumat mengenai gas yang ada atau tidak. Untuk projek ini, ia juga digunakan.
Komponen yang diperlukan
Komponen yang diperlukan untuk menghubungkan sensor MQ dengan mikrokontroler PIC diberikan di bawah-
- Bekalan kuasa 5V
- Papan roti
- Perintang 4.7k
- LCD 16x2
- Perintang 1k
- Kristal 20Mhz
- Kapasitor 33pF - 2pcs
- Pengawal mikro PIC16F877A
- Sensor siri MQ
- Berg dan wayar penyambung lain.
Skematik
Skema untuk sensor Gas ini dengan projek PIC agak lurus ke hadapan. Pin Analog dihubungkan dengan RA0 dan yang digital dengan RD5 untuk mengukur voltan analog yang disediakan oleh modul sensor Gas. Sekiranya anda baru mengenal PIC, maka anda mungkin ingin melihat tutorial PIC ADC dan tutorial PIC LCD untuk lebih memahami projek ini.
Litar dibina di papan roti. Setelah sambungan selesai, persediaan saya kelihatan seperti ini, seperti di bawah.
Sensor MQ dengan Pengaturcaraan PIC
Bahagian utama kod ini adalah fungsi utama dan fungsi periferal lain yang berkaitan. Program Lengkap boleh didapati di bahagian bawah halaman ini, potongan kode penting dijelaskan seperti berikut
Fungsi di bawah digunakan untuk mendapatkan nilai rintangan sensor di udara bebas. Oleh kerana saluran Analog 0 digunakan, ia mendapatkan data dari saluran analog 0. Ini untuk menentukur sensor MQ Gas.
Float SensorCalibration () { int count; // Fungsi ini akan mengkalibrasi sensor dalam float udara bebas val = 0; untuk (hitung = 0; hitung <50; hitung ++) {// ambil banyak sampel dan hitung nilai purata val + = hitung_perlawanan (ADC_Read (0)); __delay_ms (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // dibahagi dengan RO_CLEAN_AIR_FACTOR menghasilkan nilai pulangan Ro ; }
Fungsi Di Bawah digunakan untuk membaca nilai analog sensor MQ dan rata-rata untuk mengira nilai Rs
float read_MQ () { int count; apungan rs = 0; untuk (hitung = 0; hitung <5; hitung ++) {// ambil banyak bacaan dan rata-rata. rs + = hitung_perlawanan (ADC_Read (0)); // rs berubah mengikut kepekatan gas. __delay_ms (50); } rs = rs / 5; kembali rs; }
Fungsi di bawah digunakan untuk mengira rintangan dari perintang pembahagi voltan dan rintangan beban.
float calcul_resistance (int adc_channel) {// sensor dan perintang beban membentuk pembahagi voltan. jadi menggunakan nilai analog dan nilai beban kembali (((float) RL_VALUE * (1023-adc_channel) / adc_channel)); // kita akan menemui perintang sensor. }
RL_VALUE ditakrifkan pada permulaan kod seperti ditunjukkan di bawah
#define RL_VALUE (10) // tentukan rintangan beban pada papan, dalam kilo-ohm
Ubah nilai ini setelah memeriksa rintangan beban di kapal. Ia boleh berbeza di papan sensor MQ yang lain. Untuk memplot data yang ada ke dalam skala log, fungsi di bawah digunakan.
int gas_plot_log_scale (float rs_ro_ratio, float * curve) { return pow (10, (((log (rs_ro_ratio) -curve) / curve) + curve)); }
Kurva adalah keluk LPG yang ditentukan di atas kod yang sebelumnya dikira dalam artikel kami di atas.
terapung MQ6_curve = {2.3,0.30, -0.41}; // Grafik Petak, ubah ini untuk sensor tertentu
Akhirnya, fungsi utama di mana kita mengukur nilai analog, mengira PPM dan memaparkannya di LCD diberikan di bawah
kekosongan utama () { system_init (); clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("Mengkalibrasi…."); Ro = SensorKalibrasi (); // clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("Selesai!"); // clear_screen (); lcd_com (FIRST_LINE); lcd_print_number (Ro); lcd_puts ("K Ohms"); __delay_ms (1500); gas_detect = 0; sementara (1) { if (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("Gas ada"); lcd_com (SECOND_LINE); lcd_puts ("Gas ppm ="); terapung rs = read_MQ (); nisbah apungan = rs / Ro; lcd_print_number (gas_plot_log_scale (ratio, MQ6_curve)); __delay_ms (1500); clear_screen (); } lain { lcd_com (FIRST_LINE); lcd_puts ("Gas tidak ada"); } } }
Pertama, RO sensor diukur di udara bersih. Kemudian pin digital dibaca untuk memeriksa sama ada gas ada atau tidak. Sekiranya gas ada, gas diukur dengan lengkung LPG yang disediakan.
Saya telah menggunakan pemetik api untuk memeriksa sama ada nilai PPM berubah semasa gas dikesan. Pemetik api cerut ini memiliki gas LPG di dalamnya, yang ketika dilepaskan di udara akan dibaca oleh sensor kami dan nilai PPM pada LCD berubah seperti gambar di bawah.
Karya yang lengkap dapat dilihat dalam video yang diberikan di bahagian bawah halaman ini. Sekiranya anda mempunyai sebarang pertanyaan, sila tinggalkan di bahagian komen, atau gunakan forum kami untuk pertanyaan teknikal yang lain.