Introduction

Les capteurs MQ sont des capteurs physicochimiques permettant de détecter une grande variété des gaz, polluants et fumées dans l’atmosphère. Le capteur est constitué par une électronique chauffante dont la résistance électrique varie en fonction de la présence d’un polluant dans l’atmosphère.

Avant de fonctionner et délivrer une mesure correcte, certains capteurs doivent être préchauffées. 

 

Voici un tableau récapitulant tous les différents type de détecteur de gaz MQ, leurs préchauffage afin qu’il soit fonctionnel, les gazs qu’ils peuvent détecter et leurs précisions :

 
Capteur Préchauffage Détection Précision Affichage
MQ-2 48h Méthane, Butane, GPL 300 à 10000ppmm
MQ-3 24h Alcool, Ethanol 0.05-10mg/L d’alcool
MQ-4 48h Méthane 300 à 10000 ppm
MQ-5 24h Gaz naturel, GPL 300 à 50000 ppm.
MQ-6 48h GPL, butane 200 à 10000 ppm
MQ-7 48h Monoxide de carbone 20 à 2000 ppm
MQ-8 24h Hydrogène 100 à 10000 ppm
MQ-9 + 48h Monoxyde de carbone, méthane 10 à 1 000 ppm de CO, 100 à 10 000 ppm de gaz combustible

Pour la suite du cours, nous avons décidé de prendre le capteur MQ-4 comme exemple. Néanmoins tous les circuits que nous présentons fonctionnent pour tous les capteurs présents dans le tableau. En effet, tous les capteurs ont les mêmes broches et se contrôlent de la même manière.

Les broches du capteur

Voici les broches du capteur de gaz :

  • GND : A brancher à la masse de la carte arduino
  • Digitalwrite : Le digitalwrite permet de contrôler le capteur de gaz avec un potentiomètre par exemple.
  • AnalogWriteL’analogwrite permet de lire la valeur du capteur de gaz
  • Vcc : Doit être connecté au 5V ou 3,3V de l’arduino

Afficher les valeurs sur le moniteur série

On va maintenant voir comment afficher les mesures de votre capteur de gaz sur le moniteur série :

int const Broche_Gaz = A1; // Broche du capteur de gaz
void setup(){
    Serial.begin(9600); // On initialise le capteur de gaz
}

void loop(){
    int valeur = analogRead(Broche_Gaz); // On lit la valeur du capteur
    valeur = map(valeur, 300, 750, 0, 100);// On transforme la valeur en pourcentage 
    Serial.print("La valeur est :"); // We affiche la valeur
    Serial.print(valeur);
    Serial.println("%");
  
  delay(250); // On fait une pause entre deux lectures de valeur
}

Voici les valeurs que l’on obtient en approchant le capteur du gaz et en l’éloignant :

LEDS de détection de gaz

On va maintenant voir comment créer une détection de gaz avec des LEDS. Pour cela on utilise 4 leds : verte, jaune, orange et rouge. Le programme allume d’abord la led Led verte, qui indique qu’il y a pas ou peut de gaz puis allume progressivement les leds selon le pourcentage de gaz mesuré par le capteur.

Voici le pourcentage de gaz par rapport à l’allumage des LEDS :

  • LED Verte : Toujours allumée
  • LED Jaune : 30% de gaz détectée
  • LED Orange : 50% de gaz détectée
  • LED Rouge : 80% de gaz détectée
int const Broche_Gaz = A1; // Broche pour le gaz
// Broche pour les leds
int LED_Verte = 7; 
int LED_Jaune = 6;
int LED_Orange = 5;
int LED_Rouge = 4;
void setup(){
  // On branche les leds en sortie
  	pinMode(LED_Verte, OUTPUT);
    pinMode(LED_Jaune, OUTPUT);
    pinMode(LED_Orange, OUTPUT);
    pinMode(LED_Rouge, OUTPUT);
}

void loop(){
    int valeur = analogRead(Broche_Gaz); // On lit la valeur du capteur de gaz
    valeur = map(valeur, 300, 750, 0, 100); // On transforme la valeur en pourcentage
    digitalWrite(LED_Verte, HIGH); // On allume la LED Verte
  	digitalWrite(LED_Jaune, valeur >= 30 ? HIGH : LOW); // On allume la led jaune si le pourcentage est supérieur à 30 %
    digitalWrite(LED_Orange, valeur >= 50 ? HIGH : LOW); // On allume la led orange si le pourcentage est supérieur à 50 %
    digitalWrite(LED_Rouge, valeur >= 80 ? HIGH : LOW); // On allume la led rouge si le pourcentage est supérieur à 80 %
  
  delay(250); // On fait une pause d'un quart de seconde
}

Détecteur de fumée

On va maintenant voir comment créer un réel détecteur de fumée avec un buzzer. Celui-ci va s’allumer quand le capteur détecte plus de 80% de gaz.

const int gaz = A0; // Broche du capteur de gaz 
const int buzzer = A1; // Broche pour le buzzer

void setup(){
  pinMode(gaz, INPUT); // On initialise le capteur en entrée pour lire sa valeur
  pinMode(buzzer, OUTPUT); // On initialise le buzzer en sortie pour le contrôler
}

void loop() {
  int valeur = analogRead(gaz);// On lit la valeur du buzzer
  valeur =map(valeur, 300,750,0,100); // On tranforme cette valeur entre 0% et 100%
  if (valeur > 80){ // Si la valeur est supérieur à 80%
    tone(buzzer, 494);// On allume le buzzer
    delay(500); // On attends une demi-seconde
    noTone(buzzer);// On stop le buzzer 

  }
  else{
    digitalWrite(buzzer, LOW); // On laisse le buzzer éteint
  }

  delay(100); 
}