MQ2 Gáz érzékelő

Sajnos ehhez a projekthez sem találtam, fritzing modult a kapcsoláshoz, ezért csak képes és szöveges illusztrációval magyarázom a kapcsolást. A kapcsolás lényege, hogy ha az analóg lábon beolvasott érték egy bizonyos érték fölé kerül, akkor a piezo csipogó riaszt. A piezo csipogó bekötését egy korábbi cikkben ismertettem.  20150421_135841

Az MQ2 modul bekötése itt is úgy érzem egyértelmű:

GND — GND

VCC — 5V

AOUT — A0

DOUT – D3buzzerA piezo csipogó “S” lába a D2 pinre kötve a “-” lába a GND-re.

Az MQ2 érzékelő digitális kimenetét, úgy tudjuk használni, hogy a potméterrel beállítjuk az érzékenységet. Abban az esetben, ha a beállított érzékenység fölé kerül a gáz vagy a füst koncentrációja, akkor a digitális láb kimenete átbillen 0-ba. Ahhoz hogy meggyőződjünk a mükődés helyességéről ahhoz nem kell csak egy öngyújtú. Ahogy engedjük az öngyújtóból a gázt, mielőtt a beolvasott analóg értéket elérjük, a potméter melletti kis smd led kigyullad abban az esetben ha a potméterrel beállított érték alacsonyabb mint az analóg küszöb. Ahogy a led kigyullad, azzal egyidőben a DOUT átmegy 0-ba.

A program működése közben a digitális kimenet 0-ba billenését a serial monitoron követhetjük nyomon, illetve a potméter melletti led kigyúlladásával. A kiíratást lassíthatjuk az oszthatósági vizsgálat módusának az átállításával.

 Forráskód:

 

const int analogpin = A0;  // Gázérzékelő Analóg bemenete
const int sound_pin = 2;   // Piezzo csipógó pin
const int gas_pin = 3;

int sensor_value = 0;        
int d_out = 0;
int j=0;


void setup() {
 
  Serial.begin(9600); 
  pinMode(sound_pin, OUTPUT);   
}

void loop() {
  
  j=j+1;
  
  d_out = digitalRead(gas_pin);
  if (d_out == 1) 
  {
   if (j%100 == 0)
   { 
    Serial.println("Digital OUT OFF" );
   } 
  }
  else
   {
    if (j%100 == 0)
   { 
    Serial.println("Digital OUT ON" );
    }
    alarm();
  }
    
  // Analóg érték beolvasása 
  sensor_value = analogRead(analogpin);            
  
  if (sensor_value >= 750)
   {
    alarm();
   }
  
  // Serial monitorra kiíratás
  if (j%100 == 0)
   {
   Serial.print("sensor = " );                       
   Serial.println(sensor_value); 
   }  
   delay(10);     
}

//===============================================================

void alarm()
{
  int i; // léptető operátor

   for(i=0;i<100;i++)
   {
    digitalWrite(sound_pin,HIGH);
    delay(1); 
    digitalWrite(sound_pin,LOW);
    delay(1); 
   }
   for(i=0;i<10;i++)
   {
    digitalWrite(sound_pin,HIGH);
    delay(2); 
    digitalWrite(sound_pin,LOW);
    delay(2);
   }
   for(i=0;i<10;i++)
   {
    digitalWrite(sound_pin,HIGH);
    delay(3);
    digitalWrite(sound_pin,LOW);
    delay(3);
   }
 }
(Statisztika: 11 megtekintés)

Vélemény, hozzászólás?

Az email címet nem tesszük közzé.