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_mq135digunakan 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_mq135mengubah 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 darianalogRead) 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. Nilai1023.0adalah 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.
- Rumus ini berdasarkan kalibrasi sensor untuk gas amonia. Fungsi
- RsRo adalah rasio antara resistansi sensor pada kondisi pengukuran (
- 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_mq135yang 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 :





