Utilizzare Arduino per creare un semplice rilevatore di gas (MQ5)

Ci affidiamo sempre più alla qualità costruttiva dei materiali delle nostre cucine e bruciatori, e la possibilità di una fuga di gas sembra remota. Col passare del tempo questi componenti potrebbero usurarsi aumentando in qualche modo il rischio di fuoriuscita di gas.
Autocostruirsi un sistema di rilevamento è piuttosto semplice ed economico, dato che, il costo del sensore e tipicamente inferiore ai 10€.
Questi sensori sono stabili, hanno una lunga vita di esercizio, sono molto precisi ed una elevata sensibilità con una risposta molto veloce.

Sensore Gas Modello MQ5

Il modello MQ5 che ho acquistato è prodotto dalla Hanwei Electronics, ed è progettato per rilevare principalmente gas GPL, Metano e Idrogeno ed in misura minore rileva alcool e monossido di carbonio. Questo sensore è indicato per rilevare il gas comune, utilizzato in ambiente domestico.

Lo schema del circuito è il seguente:

Schema elettrico rilevatore di gas

Il sensore MQ5 viene alimentato dalla +5Vdc dell’Arduino anche se, come sempre, consiglio di utilizzare una fonte di energia esterna per evitare di sovraccaricare lo stadio di alimentazione della board.
L’uscita della sonda è collegata all’ingresso analogico A0, una resistenza da 10Kohm collegata a massa crea un partitore di tensione indispensabile per rilevare le variazioni di tensione generate dal sensore.
Ai pin digitali vengono collegati due led, un cicalino e uno stadio relè che permette di azionare una ventola di estrazione.

Il relè deve essere assolutamente di tipo ermetico per avvitare i piccoli archi di corrente che si manifestano durante il contatto delle lamelle del relè.
La ventola invece deve essere di tipo induttivo, priva quindi di spazzole che potrebbero generare, anche in questo caso piccolissimi ma pericolosi archi di corrente.

I led collegato al pin7 viene impiegato per indicare lo stato di preriscaldamento del sensore, necessario all’avvio per renderlo stabile evitando falsi alarmi. Il led collegato al pin8, e il cicalino collegato al pin9, vengono utilizzati per rappresentare l’eventuale allarme.

Il codice per questo circuito è il seguente:

int gas = 0;
int PreRiscaldo = 0;

void setup()
{
  Serial.begin(9600);

  pinMode(2, OUTPUT); //Relè-ventola
  pinMode(7, OUTPUT); //Riscaldamento
  pinMode(8, OUTPUT); //Allarme
  pinMode(9, OUTPUT); //Buzzer

  digitalWrite(7, HIGH);
  //attendo 5 minuti per stabilizzare la sonda
  for ( PreRiscaldo = 0; PreRiscaldo < 300; PreRiscaldo++)
  {
    delay(1000);
  }
  digitalWrite(7, LOW);
}

void loop()
{
  //Leggo il valore di tensione generato dalla sonda
  gas = analogRead(0);

  //invio i dati al serial Monitor
  Serial.println(gas, DEC);

  //gestisco le soglie e agisco di conseguenza
  if ( gas > 150)
  {
    //cicalino ON
    analogWrite(9, 100);
    //allarme via led ON
    digitalWrite(8, HIGH);
    //attivo relè
    digitalWrite(2, HIGH);
  }
  else
  {
    //cicalino OFF
    analogWrite(9, 100);
    //allarme via led OFF
    digitalWrite(8, LOW);
    //attivo relè
    digitalWrite(2, LOW);
  }

  //acquisisco i dati ogni 1/2 secondo
  delay(500);
}

 

Nel mio caso la funzione analogRead(0); genera un valore (dopo circa 5 minuti di funzionamento) intorno a 90, avvicinando un accendino e aprendo il gas, questo valore schizza a 800-900, provocando l’azionamento del relè e l’accensione del Led sul pin8.
Potete variare le soglie in base al vostro sensore e alle vostre esigenze di sensibilità.

Per rilevare in maniera efficiente le fughe di gas, il sensore va posizionato in prossimità del pavimento se il gas da rilevare è pesante (Gpl, Propano, Butano) o in prossimità del soffitto se il gas è leggero (vapori di Alcool, Metano, Etanolo).

Questo progetto è stato testato in modo prototipale, non è stata fata alcuna verifica reale di funzionamento, il progetto è quindi da utilizzare solo per scopi didattici. Non mi assumo responsabilità (visto il delicato campo di impiego) di nessun tipo derivate dal un funzionamento anomalo del circuito o da incidenti da esso causati.