Pada detektor gas LPG yang akan kita buat kali ini menggunakan sensor MQ-6
dengan Arduino Uno agar dapat mendeteksi konsentrat gas LPG di udara. Sensor MQ-6
ini memiliki pemanas (heater) yang membutuhkan arus listrik sekitar 150 mA
dalam waktu 90 detik untuk mendeteksinya. Bentuk fisik dari sensor gas LPG MQ-6
ditunjukkan seperti pada gambar 1 dibawah ini.
Oleh karena Arduino Uno tidak dapat mensuplai
arus listrik yang diperlukan heater sensor MQ-6 tersebut, maka digunakan
regulator tegangan KA278R05 yang mensuplai arus listrik pada heater sensor MQ-6
tersebut dengan mengambil daya dari power supply 12 VDC. Regulator tegangan KA278R05
memiliki pin mengaktifkan (enable), yang digunakan untuk mendorong tinggi input
digital pin 8 dari Arduino Uno guna mengaktifkan sensor MQ-6 agar dapat
mendeteksi gas LPG dengan stabil dalam waktu 90 detik. Selanjutnya untuk
membaca level tegangan output dari sensor MQ-6 setiap detik dan nilai stabil
final yang tepat pada 90 detik setelah pengaktifan sensor, digunakan input
analog pin 0. Skema rangkaian detektor gas LPG sensor MQ-6 dengan Arduino Uno
ditunjukan seperti pada gambar 2 dibawah ini. Sedangkan tata letak komponen pada
breadboard ditunjukan seperti pada gambar 3 dibawah ini.
*)klik gambar untuk memperbesar dimensi gambar
Gambar 2. Skema rangkaian detektor gas LPG menggunakan sensor MQ-6 dengan Arduino Uno
*)klik gambar untuk memperbesar dimensi gambar
Gambar 3. Tata letak dan koneksi komponen detektor gas LPG pada breadboard
Setelah semua komponen detektor gas LPG
terpasang seperti skema gambar tersebut diatas, seting hasil deteksi sensor
MQ-6 pada udara bersih (tidak ada gas LPG) seperti pada gambar 4 di bawah ini.
Pada tes ini grafik hasil pengukuran stabil setelah 90 detik berada di sekitar
level 256.
*)klik gambar untuk memperbesar dimensi gambar
Gambar 4. Grafik deteksi sensor MQ-6 terhadap udara bersih selama 90 detik
Selanjutnya seting hasil deteksi sensor
MQ-6 pada udara dengan sedikit gas LPG (propana) seperti pada gambar 5 dibawah
ini. Dengan cara sesnor MQ-6 diletakkan di dalam kompor gas dengan tutupnya
dipasang (tertutup) dan memberi sedikit kepulan gas LPG (propana) tanpa menyalakan
api. Pada tes ini grafik hasil pengukuran stabil setelah 90 detik berada sekitar
level 739, yang hampir 3 kali lebih tinggi dibanding dengan hasil pengukuran
pada udara bersih. Dengan demikian sesnor MQ-6 ini sangat sesnsitif, mengingat
dalam hal ini sesnor MQ-6 hanya diberi sangat sedikit kepulan gas LPG (propana).
*)klik gambar untuk memperbesar dimensi gambar
Gambar 5. Grafik deteksi sensor MQ-6 terhadap gas LPG (propana) seteleh 90detik
Berikut ini adalah
sketsa program yang digunakan untuk mengoperasikan Arduino Uno pada perangkat
detektor gas LPG ini. Dalam hal ini digunakan finite state machine sederhana
untuk mengelola kondisi sensor MQ-6.
#define MQ6_POWER_ON_DIGITAL_OUT_PIN 8
#define MQ6_LP_GAS_LEVEL_MEASURE_ANALOG_IN_PIN 0
#define MQ6_HEATER_TIME_MILLIS 90000
#define MQ6_SAMPLE_PERIOD_MILLIS 1000
int lpGas;
typedef enum {
ST_MQ6_OFF,
ST_MQ6_CYCLE_0_HIGH,
ST_MQ6_DONE
} MQ6_STATE;
MQ6_STATE mq6State = ST_MQ6_OFF;
unsigned long mq6SwitchTimeMillis;
unsigned long
mq6NextReadingTimeMillis;
unsigned long lpGasStartTimeMillis;
unsigned long startMillis;
//-----------------------------------------------------
void setup(){
Serial.begin(19200);
pinMode(MQ6_POWER_ON_DIGITAL_OUT_PIN,
OUTPUT);
startMillis = millis();
// start 10s after
power up
lpGasStartTimeMillis = 10000;
// print headers for
CSV output
Serial.print("Seconds");
Serial.print(",");
Serial.println("LP
Gas Level");
}
//-----------------------------------------------------
void loop(){
readLPGas();
}
//-----------------------------------------------------
// uses a simple finite state machine to manage states of the MQ6 sensor
void readLPGas(){
switch(mq6State){
case
ST_MQ6_OFF :
{
if(millis()
> lpGasStartTimeMillis){
digitalWrite(MQ6_POWER_ON_DIGITAL_OUT_PIN,
HIGH);
mq6State = ST_MQ6_CYCLE_0_HIGH;
mq6SwitchTimeMillis = millis()
+ MQ6_HEATER_TIME_MILLIS;
}
break;
}
case
ST_MQ6_CYCLE_0_HIGH :
{
if(millis()
> mq6NextReadingTimeMillis) {
lpGas = analogRead(MQ6_LP_GAS_LEVEL_MEASURE_ANALOG_IN_PIN);
Serial.print((millis()
- startMillis)/1000);
Serial.print(",");
Serial.println(lpGas);
mq6NextReadingTimeMillis = millis()
+ MQ6_SAMPLE_PERIOD_MILLIS;
}
if(millis()
> mq6SwitchTimeMillis){
digitalWrite(MQ6_POWER_ON_DIGITAL_OUT_PIN,
LOW);
mq6State = ST_MQ6_DONE;
}
break;
}
case
ST_MQ6_DONE :
{
break;
}
}
}
//-----------------------------------------------------
Assalamualaikum pak
BalasHapusSkecth untuk sensor gas ini apakah dimulai dr # difine yg terdapat di blog ini pak?
ya, ikuti aja sketsa programnya
Hapusaslamualaikum pak, bisa jelasin nggak pak prinsip kerja rangkaian internal sensor mq6
BalasHapusBisah bertanya kk bgaimana cara meng kalibrasi sensor mq 6
BalasHapus