• Home
  • About Me
  • Katalog
  • Video
  • Daftar Isi

Selasa, 19 Mei 2015

Sensor Gas LPG MQ-6

           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.


Gambar 1. Bentuk fisik sensor MQ-6


          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;
    }
  }
}


//-----------------------------------------------------

2 komentar:

  1. Assalamualaikum pak
    Skecth untuk sensor gas ini apakah dimulai dr # difine yg terdapat di blog ini pak?

    BalasHapus