Cara Memprogram Sensor Gas MQ139 Pada ESP32

Cara Memprogram Sensor Gas MQ139 Pada ESP32

Sensor Gas MQ139 adalah salah satu sensor yang digunakan untuk mendeteksi gas amonia (NH₃) dalam udara.Berikut ini adalah cara memprogramnya :

#include <Arduino.h>


const int port_gas_mq135 = A0;


float konversiKePPM_gas_mq135(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_mq135, INPUT);

}
void loop(){
float gas_mq135 = (analogRead(port_gas_mq135));
Serial.println("GAS MQ135 : " + (String)gas_mq135);


}

Berikut ini adalah penjelasan dari kode di atas :

1. Deklarasi Pin Sensor Gas MQ135

const int port_gas_mq135 = A0;
  • Pada baris ini, variabel port_gas_mq135 digunakan untuk mendeklarasikan pin analog A0 pada Arduino. Pin ini akan digunakan untuk membaca nilai dari sensor gas MQ135.
  • Pin A0 adalah pin analog yang dapat digunakan untuk membaca nilai sensor yang menghasilkan sinyal analog.

2. Fungsi konversiKePPM_gas_mq135

float konversiKePPM_gas_mq135(int sensorValue) {
  float RsRo = (1023.0 / sensorValue) - 1.0;
  float ppmNH3 = 1.0955 * pow(10, 1.3993 * RsRo);
  return ppmNH3;
}
  • Fungsi konversiKePPM_gas_mq135 mengubah nilai yang dibaca oleh sensor MQ135 menjadi nilai dalam satuan PPM (Parts Per Million). Fungsi ini akan mengubah nilai pembacaan sensor yang berupa angka mentah (dalam hal ini antara 0 hingga 1023, hasil dari analogRead) menjadi estimasi konsentrasi gas dalam satuan PPM (khususnya untuk gas amonia atau gas lainnya yang terdeteksi oleh sensor MQ135).
  • Penjelasan rumus:
    • RsRo adalah rasio antara resistansi sensor pada kondisi pengukuran (sensorValue) terhadap resistansi sensor pada kondisi standar (Ro). Rumusnya adalah (1023.0 / sensorValue) - 1.0. Nilai 1023.0 adalah nilai maksimum yang bisa dibaca dari pin analog Arduino (10-bit ADC).
    • Setelah memperoleh nilai RsRo, rumus untuk menghitung PPM adalah: ppmNH3 = 1.0955 * pow(10, 1.3993 * RsRo);
      • Rumus ini berdasarkan kalibrasi sensor untuk gas amonia. Fungsi pow(10, 1.3993 * RsRo) digunakan untuk menghitung pangkat 10 dengan eksponen yang didasarkan pada rasio resistansi.
  • Fungsi ini mengembalikan nilai PPM gas amonia sebagai hasil konversi.

3. Setup Function (setup)

void setup() {
  Serial.begin(9600);
  pinMode(port_gas_mq135, INPUT);
}
  • Serial.begin(9600): Menginisialisasi komunikasi serial dengan baud rate 9600, yang digunakan untuk mengirimkan data ke monitor serial.
  • pinMode(port_gas_mq135, INPUT): Mengonfigurasi pin analog A0 (yang terhubung ke sensor MQ135) sebagai input. Sensor gas akan menghasilkan sinyal analog yang dibaca oleh pin ini.

4. Loop Function (loop)

void loop() {
  float gas_mq135 = (analogRead(port_gas_mq135));
  Serial.println("GAS MQ135 : " + (String)gas_mq135);
}
  • analogRead(port_gas_mq135): Membaca nilai analog dari sensor gas MQ135 yang terhubung pada pin A0. Nilai yang dibaca akan berada dalam rentang 0 hingga 1023, yang merepresentasikan tingkat voltase antara 0 hingga 5V.
  • Nilai yang terbaca dari sensor disimpan dalam variabel gas_mq135 yang bertipe data float.
  • Serial.println("GAS MQ135 : " + (String)gas_mq135);: Mengirimkan hasil pembacaan sensor ke monitor serial, dengan menampilkan pesan GAS MQ135 diikuti dengan nilai yang dibaca dari sensor. Nilai ini masih berupa angka mentah (raw) antara 0 hingga 1023.

Apa yang Diharapkan dalam Monitor Serial?

Pada monitor serial, kamu akan melihat hasil yang ditampilkan dalam format berikut:

GAS MQ135 : 234
GAS MQ135 : 345
...

Nilai yang tertera di sini adalah nilai analog mentah yang dibaca oleh sensor MQ135, yang berkisar antara 0 dan 1023. Nilai ini belum diubah menjadi konsentrasi gas dalam satuan PPM.

Fitur yang Belum Digunakan

Meskipun fungsi konversiKePPM_gas_mq135 sudah ada di dalam kode, fungsi ini tidak dipanggil dalam loop(), sehingga nilai yang ditampilkan di monitor serial masih berupa nilai mentah dari sensor. Agar hasil yang ditampilkan adalah konsentrasi gas dalam satuan PPM, kamu bisa mengubah kode di bagian loop() seperti berikut:

void loop() {
  int sensorValue = analogRead(port_gas_mq135);  // Membaca nilai sensor
  float ppm = konversiKePPM_gas_mq135(sensorValue);  // Mengonversi ke PPM
  Serial.println("GAS MQ135 PPM: " + String(ppm));  // Menampilkan hasil PPM
  delay(1000);  // Menunggu 1 detik sebelum pembacaan berikutnya
}

Dengan perubahan ini, monitor serial akan menampilkan nilai konsentrasi gas dalam PPM.

untuk diskusi bisa kontak dibawah ini :

Sosial media :

Apa itu ESP32?