Sensori gas per Arduino

Poter controllare i livelli di gas nocivi o pericolosi non prerogativa di sistemi costosi o industriali: anche un semplice circuito con arduino può bastare.

Il principio

Il principio di funzionamento di questi “annusatori” è relativamente semplice: una resistenza composta di lega speciale, se riscaldata, varierà la sua resistenza in funzione della presenza di uno (o più) determinati gas.

In commercio

Esistono diversi sensori e relativi circuiti già pronti per essere collagati a sistemi quali Arduino. Molte di queste schede sono dotate di trimmer per la regolazione o taratura.

Ovviamente ogni sensore è selettivo, ovvero è sensibile solo a uno o pochi altri gas. Per riconoscerne il modello basterà cercare la sigla “MQ-xxx” dove xxx è un numero da 1 a 3 cifre.

Ecco qualche esempio:

MQ-2  idrogeno, metano, monossido di carbonio

MQ-3 metano, benzene

MQ-4 metano

MQ-5 gas città, metano

MQ-6 propano, butano

MQ-7 monossido di carbonio

MQ-135 ammoniaca , benzene

 

Rivelatori, non misuratori

Per essere precisi questi dispositivi rientrano nella categoria dei rivelatori e non misurano la esatta quantità: per questo scopo bisogna ricorrere a sensori diversi. In ogni modo è comunque possibie collegare i misuratori ad Arduino.

 

Non sono giocattoli

Anche se possiamo realizzare in economia un dispositivo di allarme per un determinato gas, questo non significa che il dispositivo sia un giocattolo e che non funzioni: il sensore è lo stesso degli apparati (costosi) che si acquistano in negozio.

Esempio

Vediamo come costruire un semplice rivelatore per il pericoloso monossido di carbonio.

Il materiale occorente è davvero poco:

  • Arduino UNO
  • sensore MQ-7
  • resistenza 1K
  • led

Lo sketch di Arduino è semplice, ma potremo estenderlo per attivare per esempio un allarme.

 

Il sensore invia il segnale analogico “AC” sul pin analogico 1.

La costante MSOGLIA ci permetterà di impostare il valore oltre il quale il led si accenderà.

/*
som_lab14_00.ino
21.03.2016
usare MQ-7
 */

#define MSOGLIA  370
int mled = 5; 
int wcurrport = 1;

void setup() {
 pinMode(mled, OUTPUT);
 Serial.begin(9600);
 pinMode(wcurrport, INPUT);
}
 
// the loop routine runs over and over again forever:
void loop() {
  int wcurrval = analogRead(wcurrport);
  if (wcurrval > MSOGLIA) digitalWrite(mled,HIGH);
  else digitalWrite(mled,LOW);
  Serial.print("valore: ");
  Serial.println(wcurrval); 
  delay(500);
}

 

Salva

Salva

Salva

Salva

Leave a Reply