Cara Memprogram Sensor MQ-3 Pada ESP32

Cara Memprogram Sensor MQ-3 Pada ESP32

Sensor MQ-3 adalah sensor gas yang digunakan untuk mendeteksi konsentrasi alkohol dalam udara, terutama etanol. Sensor ini termasuk dalam keluarga MQ Gas Sensors yang dibuat oleh Winson.

Berikut cara memprogram sensor mq-3 pada esp32 :

#include <Arduino.h>


const int port_gas_mq3 = A0;

float konversiKePPM_gas_mq3(int sensorValue) {
float RsRo = (1023.0 / sensorValue) - 1.0;
float ppmNH3 = 1.0955 * pow(10, 1.3993 * RsRo);
return ppmNH3;
}



void setup()
{
Serial.begin(9600);
pinMode(port_gas_mq3, INPUT);

}
void loop(){
float gas_mq3 = konversiKePPM_gas_mq3(analogRead(port_gas_mq3));
Serial.println("GAS MQ3 : " + (String)gas_mq3);


}


Berikut adalah penjelasan dari kode di atas :

1. Deklarasi Library dan Pin

#include <Arduino.h>
const int port_gas_mq3 = A0;
  • #include <Arduino.h>: Ini adalah library dasar untuk mendukung fungsi-fungsi seperti Serial.begin(), pinMode(), dan lainnya yang digunakan dalam program Arduino.
  • const int port_gas_mq3 = A0;: Mendeklarasikan pin A0 pada Arduino sebagai pin untuk membaca nilai dari sensor MQ-3. Pin A0 adalah pin analog pada board Arduino yang digunakan untuk membaca nilai sensor analog dari MQ-3.

2. Fungsi Konversi ke PPM

float konversiKePPM_gas_mq3(int sensorValue) {
  float RsRo = (1023.0 / sensorValue) - 1.0;
  float ppmNH3 = 1.0955 * pow(10, 1.3993 * RsRo);
  return ppmNH3;
}
  • konversiKePPM_gas_mq3(int sensorValue): Fungsi ini bertugas untuk mengonversi nilai sensor yang dibaca oleh Arduino (yang merupakan nilai analog) menjadi konsentrasi gas dalam satuan PPM (Parts Per Million).
    • sensorValue adalah nilai yang dibaca oleh sensor MQ-3 melalui pin A0.
  • float RsRo = (1023.0 / sensorValue) - 1.0;:
    • sensorValue yang dibaca oleh analogRead() akan berada dalam rentang 0 hingga 1023. Nilai ini digunakan untuk menghitung rasio antara Rs (resistansi sensor ketika terpapar gas) dan Ro (resistansi sensor dalam udara bersih). Persamaan ini digunakan karena resistansi sensor berubah seiring dengan konsentrasi gas yang terdeteksi.
  • float ppmNH3 = 1.0955 * pow(10, 1.3993 * RsRo);:
    • Formula ini digunakan untuk mengonversi nilai RsRo menjadi konsentrasi gas dalam satuan PPM. Dalam hal ini, rumus ini digunakan untuk gas amonia (NH3), karena formula tersebut sesuai dengan karakteristik sensor MQ-3 untuk jenis gas tersebut.
    • pow(10, 1.3993 * RsRo) adalah fungsi untuk menghitung 10 pangkat dari ekspresi 1.3993 * RsRo. Hasilnya adalah konversi dari rasio resistansi ke konsentrasi gas dalam PPM.
  • return ppmNH3;: Fungsi ini mengembalikan hasil perhitungan PPM gas yang terdeteksi oleh sensor.

3. Fungsi setup()

void setup() {
  Serial.begin(9600);
  pinMode(port_gas_mq3, INPUT);
}
  • Serial.begin(9600);: Menginisialisasi komunikasi serial dengan baud rate 9600. Ini memungkinkan kita untuk mengirim data dari Arduino ke komputer dan melihat hasilnya melalui Serial Monitor.
  • pinMode(port_gas_mq3, INPUT);: Mengatur port_gas_mq3 (A0) sebagai pin input, yang berarti pin ini akan digunakan untuk membaca data dari sensor analog (sensor MQ-3).

4. Fungsi loop()

void loop() {
  float gas_mq3 = konversiKePPM_gas_mq3(analogRead(port_gas_mq3));
  Serial.println("GAS MQ3 : " + (String)gas_mq3);
}
  • analogRead(port_gas_mq3): Fungsi analogRead() membaca nilai analog dari pin A0 yang terhubung ke sensor MQ-3. Nilai yang dibaca berada di rentang 0 hingga 1023, yang kemudian dikirim ke fungsi konversiKePPM_gas_mq3() untuk dihitung.
  • konversiKePPM_gas_mq3(analogRead(port_gas_mq3)): Nilai yang dibaca dari sensor kemudian dikirim ke fungsi konversiKePPM_gas_mq3(), yang mengonversi nilai tersebut menjadi konsentrasi gas dalam satuan PPM.
  • Serial.println("GAS MQ3 : " + (String)gas_mq3);:
    • Fungsi ini menampilkan hasil konversi gas dalam PPM pada Serial Monitor.
    • (String)gas_mq3 digunakan untuk mengonversi nilai gas_mq3 (yang bertipe data float) menjadi tipe data String, sehingga dapat digabungkan dengan teks “GAS MQ3 : ” dan ditampilkan di Serial Monitor.

5. Proses Kerja Program Secara Keseluruhan:

  • setup() menginisialisasi komunikasi serial dan mengatur pin A0 untuk membaca nilai sensor.
  • loop() membaca nilai sensor dari pin A0, mengonversinya ke dalam satuan PPM, dan kemudian menampilkan hasilnya di Serial Monitor.

6. Output yang Diharapkan di Serial Monitor:

Pada Serial Monitor, kamu akan melihat nilai konsentrasi gas MQ-3 dalam satuan PPM yang terus diperbarui setiap kali fungsi loop() dijalankan. Contoh outputnya:

GAS MQ3 : 150.23<br>GAS MQ3 : 120.56<br>GAS MQ3 : 180.45<br>

7. Catatan:

  • Kalibrasi: Kode ini mengasumsikan bahwa sensor MQ-3 telah dikalibrasi dengan benar. Untuk mendapatkan hasil yang lebih akurat, kamu perlu melakukan kalibrasi sensor dengan mengukur konsentrasi gas yang diketahui.
  • Tegangan Pemanasan: Sensor MQ-3 membutuhkan waktu pemanasan agar elemen pemanas di dalamnya bekerja dengan baik. Pada aplikasi nyata, kamu harus memastikan sensor diberikan waktu untuk pemanasan sebelum mengambil pembacaan yang akurat.

untuk diskusi bisa kontak dibawah ini :

Sosial media :

Apa itu ESP32?