- Sensor Gas MQ6
- Bagaimana mengukur PPM menggunakan sensor Gas MQ?
- Komponen yang dibutuhkan
- Skema
- Sensor MQ dengan Pemrograman PIC
Sensor gas seri MQ adalah jenis sensor yang sangat umum digunakan dalam Detektor Gas untuk mendeteksi atau mengukur jenis Gas tertentu. Sensor ini banyak digunakan di semua perangkat yang berhubungan dengan Gas seperti dari Detektor Asap sederhana hingga Pemantau Kualitas Udara Industri. Kami telah menggunakan sensor gas MQ ini dengan Arduino untuk mengukur beberapa gas berbahaya seperti Amonia. Pada artikel ini, kita akan mempelajari cara menggunakan sensor gas ini dengan Mikrokontroler PIC, untuk mengukur nilai PPM gas dan menampilkannya pada LCD 16x2.
Seperti disebutkan sebelumnya, ada berbagai jenis sensor seri MQ yang tersedia di pasaran dan setiap sensor dapat mengukur berbagai jenis gas seperti yang ditunjukkan pada tabel di bawah. Untuk kepentingan artikel ini, kami akan menggunakan sensor Gas MQ6 dengan PIC yang dapat digunakan untuk mendeteksi keberadaan dan konsentrasi gas LPG. Namun, dengan menggunakan perangkat keras dan firmware yang sama, sensor seri MQ lainnya juga dapat digunakan tanpa modifikasi besar pada bagian kode dan perangkat keras.
Sensor | Mendeteksi |
MQ-2 | Metana, Butana, LPG, asap |
MQ-3 | Alkohol, Etanol, asap |
MQ-4 | Metana, Gas CNG |
MQ-5 | Gas alam, LPG |
MQ-6 | LPG, gas butana |
MQ-7 | Karbon monoksida |
MQ-8 | Gas Hidrogen |
MQ-9 | Karbon Monoksida, gas yang mudah terbakar. |
MQ131 | Ozon |
MQ135 | Kualitas Udara (Benzene, Alkohol, asap) |
MQ136 | Gas Hidrogen Sulfida |
MQ137 | Amonia |
MQ138 | Benzena, Toluena, Alkohol, Aseton, Propana, Gas Formaldehida, Hidrogen |
MQ214 | Metana, gas alam |
MQ216 | Gas alam, gas Batubara |
MQ303A | Alkohol, Etanol, asap |
MQ306A | LPG, gas butana |
MQ307A | Karbon monoksida |
MQ309A | Karbon Monoksida, gas yang mudah terbakar |
MG811 | Karbon Dioksida (CO2) |
AQ-104 | Kualitas udara |
Sensor Gas MQ6
Gambar di bawah ini menunjukkan diagram pin sensor MQ6. Namun, gambar kiri adalah sensor MQ6 berbasis modul untuk antarmuka dengan unit mikrokontroler, diagram pin modul juga ditampilkan pada gambar itu.
Pin 1 adalah VCC, Pin 2 adalah GND, Pin 3 adalah Digital out (Logika rendah saat gas terdeteksi.) Dan Pin 4 adalah keluaran Analog. Panci digunakan untuk mengatur kepekaan. Ini bukan RL. Resistor RL adalah resistor kanan dari LED DOUT.
Setiap sensor seri MQ memiliki elemen pemanas dan resistansi penginderaan. Bergantung pada konsentrasi gas, tahanan penginderaan berubah dan dengan mendeteksi perubahan tahanan, konsentrasi gas dapat diukur. Untuk mengukur konsentrasi gas di PPM semua sensor MQ menyediakan grafik logaritmik yang sangat penting. Grafik memberikan gambaran tentang konsentrasi gas dengan rasio RS dan RO.
Bagaimana mengukur PPM menggunakan sensor Gas MQ?
RS adalah hambatan indera selama keberadaan gas tertentu sedangkan RO adalah hambatan indera di udara bersih tanpa gas tertentu. Grafik logaritmik di bawah ini yang diambil dari lembar data memberikan gambaran umum tentang konsentrasi gas dengan tahanan indera dari sensor MQ6. Sensor MQ6 digunakan untuk mendeteksi konsentrasi gas LPG. Oleh karena itu, sensor MQ6 akan memberikan resistansi tertentu selama kondisi udara bersih dimana gas LPG tidak tersedia. Selain itu, tahanan akan berubah setiap kali gas LPG terdeteksi oleh sensor MQ6.
Jadi, kami perlu memplot grafik ini ke firmware kami serupa dengan yang kami lakukan di Proyek detektor Gas Arduino kami. Rumusnya adalah memiliki 3 titik data yang berbeda. Dua titik data pertama adalah awal dari kurva LPG, di koordinat X dan Y. Data ketiga adalah kemiringan.
Jadi, jika kita memilih kurva biru tua yang merupakan kurva LPG, awal dari kurva di koordinat X dan Y adalah 200 dan 2. Jadi, titik data pertama dari skala logaritmik adalah (log200, log2) yaitu (2.3, 0.30).
Mari kita buat sebagai, X1 dan Y1 = (2.3, 0.30). Akhir dari kurva adalah titik data kedua. Dengan proses yang sama seperti dijelaskan di atas, X2 dan Y2 adalah (log 10000, log0.4). Jadi, X2 dan Y2 = (4, -0.40). Untuk mendapatkan kemiringan kurva, rumusnya adalah
= (Y2-Y1) / (X2-X1) = (- 0,40 - 0,30) / (4 - 2,3) = (-0,70) / (1,7) = -0,41
Grafik yang kita butuhkan dapat diberikan sebagai
LPG_Curve = {awal X dan awal Y, kemiringan} LPG_Curve = {2.3, 0.30, -0.41}
Untuk sensor MQ lainnya, dapatkan data di atas dari lembar data dan plot grafik Logaritmik. Nilai tersebut akan berbeda berdasarkan sensor dan gas yang diukur. Untuk modul khusus ini, ia memiliki pin digital yang hanya memberikan informasi tentang adanya gas atau tidak. Untuk proyek ini, itu juga digunakan.
Komponen yang dibutuhkan
Komponen yang diperlukan untuk menghubungkan sensor MQ dengan mikrokontroler PIC diberikan di bawah ini-
- Catu daya 5V
- Papan tempat memotong roti
- Resistor 4.7k
- LCD 16x2
- Resistor 1k
- Kristal 20Mhz
- Kapasitor 33pF - 2 lembar
- Mikrokontroler PIC16F877A
- Sensor seri MQ
- Berg dan kabel hookup lainnya.
Skema
Skema untuk sensor Gas ini dengan proyek PIC cukup lurus ke depan. Pin analog dihubungkan dengan RA0 dan pin digital dengan RD5 untuk mengukur tegangan analog yang disediakan oleh modul sensor Gas. Jika Anda benar-benar baru mengenal PIC, maka Anda mungkin ingin melihat tutorial PIC ADC dan tutorial PIC LCD untuk lebih memahami proyek ini.
Sirkuit dibuat di papan tempat memotong roti. Setelah koneksi selesai, pengaturan saya terlihat seperti ini, ditunjukkan di bawah.
Sensor MQ dengan Pemrograman PIC
Bagian utama dari kode ini adalah fungsi utama dan fungsi periferal terkait lainnya. Program Lengkap dapat ditemukan di bagian bawah halaman ini, potongan kode penting dijelaskan sebagai berikut
Fungsi di bawah ini digunakan untuk mendapatkan nilai resistansi sensor di udara bebas. Karena saluran Analog 0 digunakan, ia mengambil data dari saluran analog 0. Ini untuk mengkalibrasi sensor Gas MQ.
float SensorCalibration () { int count; // Fungsi ini akan mengkalibrasi sensor di float udara bebas val = 0; for (count = 0; count <50; count ++) {// ambil beberapa sampel dan hitung nilai rata-rata val + = count_resistance (ADC_Read (0)); __delay_ms (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // dibagi dengan RO_CLEAN_AIR_FACTOR menghasilkan nilai pengembalian Ro ; }
Di bawah ini Fungsi digunakan untuk membaca nilai analog sensor MQ dan rata-rata untuk menghitung nilai Rs
float read_MQ () { int count; float rs = 0; for (count = 0; count <5; count ++) {// ambil beberapa bacaan dan ratakan. rs + = hitung_resistance (ADC_Read (0)); // rs berubah sesuai dengan konsentrasi gas. __delay_ms (50); } rs = rs / 5; kembali rs; }
Fungsi di bawah ini digunakan untuk menghitung resistansi dari resistor pembagi tegangan dan resistansi beban.
float count_resistance (int adc_channel) {// sensor dan resistor beban membentuk pembagi tegangan. jadi menggunakan nilai analog dan nilai beban kembali (((float) RL_VALUE * (1023-adc_channel) / adc_channel)); // kita akan menemukan resistor sensor. }
RL_VALUE didefinisikan di awal kode seperti yang ditunjukkan di bawah ini
#define RL_VALUE (10) // tentukan tahanan beban di papan, dalam kilo-ohm
Ubah nilai ini setelah memeriksa tahanan beban onboard. Ini bisa berbeda di papan sensor MQ lainnya. Untuk memplot data yang tersedia ke dalam skala log, fungsi di bawah ini digunakan.
int gas_plot_log_scale (float rs_ro_ratio, float * kurva) { return pow (10, (((log (rs_ro_ratio) -kurva) / kurva) + kurva)); }
Kurva adalah kurva LPG yang ditentukan di atas dari kode yang sebelumnya dihitung dalam artikel kami di atas.
float MQ6_curve = {2.3,0.30, -0.41}; // Grafik Plot, ubah ini untuk sensor tertentu
Akhirnya, fungsi utama di mana kami mengukur nilai analog, menghitung PPM dan menampilkannya di LCD diberikan di bawah ini
void main () { system_init (); clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("Mengkalibrasi…."); Ro = SensorCalibration (); // 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); deteksi_bas = 0; sementara (1) { if (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("Ada gas"); lcd_com (SECOND_LINE); lcd_puts ("Gas ppm ="); float rs = read_MQ (); rasio float = rs / Ro; lcd_print_number (gas_plot_log_scale (rasio, 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 apakah ada gas atau tidak. Jika ada gas, gas tersebut diukur dengan kurva LPG yang disediakan.
Saya telah menggunakan korek api untuk memeriksa apakah nilai PPM berubah saat gas terdeteksi. Pemantik api cerutu ini memiliki gas LPG di dalamnya, yang ketika dilepaskan ke udara akan terbaca oleh sensor kami dan nilai PPM pada LCD berubah seperti gambar di bawah ini.
Pekerjaan lengkap dapat ditemukan di video yang diberikan di bagian bawah halaman ini. Jika Anda memiliki pertanyaan, silakan tinggalkan di bagian komentar, atau gunakan forum kami untuk pertanyaan teknis lainnya.