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.
Voici les broches du capteur de gaz :
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 :
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 :
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
}
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);
}