- Capteur de gaz MQ6
- Comment mesurer les PPM à l'aide des capteurs de gaz MQ?
- Composants requis
- Schématique
- Capteur MQ avec programmation PIC
Les capteurs de gaz de la série MQ sont des types de capteurs très courants utilisés dans les détecteurs de gaz pour détecter ou mesurer certains types de gaz. Ces capteurs sont largement utilisés dans tous les appareils liés au gaz, des simples détecteurs de fumée aux moniteurs de qualité de l'air industriels. Nous avons déjà utilisé ces capteurs de gaz MQ avec Arduino pour mesurer certains gaz nocifs comme l'ammoniac. Dans cet article, nous allons apprendre à utiliser ces capteurs de gaz avec des microcontrôleurs PIC, pour mesurer la valeur PPM du gaz et l'afficher sur un écran LCD 16x2.
Comme mentionné précédemment, il existe différents types de capteurs de la série MQ disponibles sur le marché et chaque capteur peut mesurer différents types de gaz, comme indiqué dans le tableau ci-dessous. Pour les besoins de cet article, nous utiliserons le capteur de gaz MQ6 avec PIC qui peut être utilisé pour détecter la présence et la concentration de gaz GPL. Cependant, en utilisant le même matériel et le même micrologiciel, d'autres capteurs de la série MQ peuvent également être utilisés sans modification majeure du code et de la partie matérielle.
Capteur | Détecte |
MQ-2 | Méthane, butane, GPL, fumée |
MQ-3 | Alcool, éthanol, fumée |
MQ-4 | Méthane, gaz CNG |
MQ-5 | Gaz naturel, GPL |
MQ-6 | GPL, gaz butane |
MQ-7 | Monoxyde de carbone |
MQ-8 | Gaz hydrogène |
MQ-9 | Monoxyde de carbone, gaz inflammables. |
MQ131 | Ozone |
MQ135 | Qualité de l'air (benzène, alcool, fumée) |
MQ136 | Gaz de sulfure d'hydrogène |
MQ137 | Ammoniac |
MQ138 | Benzène, toluène, alcool, acétone, propane, formaldéhyde gazeux, hydrogène |
MQ214 | Méthane, gaz naturel |
MQ216 | Gaz naturel, gaz de charbon |
MQ303A | Alcool, éthanol, fumée |
MQ306A | GPL, gaz butane |
MQ307A | Monoxyde de carbone |
MQ309A | Monoxyde de carbone, gaz inflammables |
MG811 | Dioxyde de carbone (CO2) |
AQ-104 | Qualité de l'air |
Capteur de gaz MQ6
L'image ci-dessous montre le diagramme des broches du capteur MQ6. Cependant, l'image de gauche est un capteur MQ6 basé sur un module pour l'interfaçage avec l'unité de microcontrôleur, le diagramme des broches du module est également représenté sur cette image.
La broche 1 est VCC, la broche 2 est le GND, la broche 3 est la sortie numérique (logique basse lorsque le gaz est détecté.) Et la broche 4 est la sortie analogique. Le pot est utilisé pour régler la sensibilité. Ce n'est pas RL. La résistance RL est la bonne résistance de la LED DOUT.
Chaque capteur de la série MQ possède un élément chauffant et une résistance de détection. En fonction de la concentration du gaz, la résistance de détection change et en détectant le changement de résistance, la concentration de gaz peut être mesurée. Pour mesurer la concentration de gaz en PPM, tous les capteurs MQ fournissent un graphique logarithmique qui est très important. Le graphique donne un aperçu de la concentration de gaz avec le rapport RS et RO.
Comment mesurer les PPM à l'aide des capteurs de gaz MQ?
Le RS est la résistance de détection en présence d'un gaz particulier tandis que le RO est la résistance de détection dans un air propre sans gaz particulier. Le graphique logarithmique ci-dessous tiré de la fiche technique donne un aperçu de la concentration de gaz avec la résistance de détection du capteur MQ6. Le capteur MQ6 est utilisé pour détecter la concentration de gaz GPL. Par conséquent, le capteur MQ6 fournira une résistance particulière pendant la condition d'air propre où le gaz GPL n'est pas disponible. De plus, la résistance changera chaque fois que le gaz GPL est détecté par le capteur MQ6.
Nous devons donc tracer ce graphique dans notre firmware de la même manière que ce que nous avons fait dans notre projet de détecteur de gaz Arduino. La formule consiste à avoir 3 points de données différents. Les deux premiers points de données sont le début de la courbe LPG, en coordonnées X et Y. La troisième donnée est la pente.
Donc, si nous sélectionnons la courbe bleu profond qui est la courbe LPG, le début de la courbe en coordonnées X et Y est le 200 et 2. Ainsi, le premier point de données de l'échelle logarithmique est (log200, log2) qui est (2,3, 0,30).
Faisons comme, X1 et Y1 = (2,3, 0,30). La fin de la courbe est le deuxième point de données. Par le même processus décrit ci-dessus, X2 et Y2 sont (log 10000, log0,4). Ainsi, X2 et Y2 = (4, -0,40). Pour obtenir la pente de la courbe, la formule est
= (Y2-Y1) / (X2-X1) = (- 0,40 - 0,30) / (4 - 2,3) = (-0,70) / (1,7) = -0,41
Le graphique dont nous avons besoin peut être donné comme
LPG_Curve = {X de départ et Y de départ, pente} LPG_Curve = {2,3, 0,30, -0,41}
Pour les autres capteurs MQ, récupérez les données ci-dessus à partir de la fiche technique et du graphique logarithmique. La valeur variera en fonction du capteur et du gaz mesurés. Pour ce module particulier, il dispose d'une broche numérique qui ne fournit que des informations sur le gaz présent ou non. Pour ce projet, il est également utilisé.
Composants requis
Les composants nécessaires pour interfacer le capteur MQ avec le microcontrôleur PIC sont indiqués ci-dessous.
- Alimentation 5V
- Planche à pain
- Résistance 4,7k
- LCD 16x2
- Résistance 1k
- Cristal 20Mhz
- Condensateur 33pF - 2pcs
- Microcontrôleur PIC16F877A
- Capteur série MQ
- Berg et autres fils de raccordement.
Schématique
Le schéma de ce capteur de gaz avec un projet PIC est assez simple. La broche analogique est connectée au RA0 et la broche numérique au RD5 pour mesurer la tension analogique fournie par le module de capteur de gaz. Si vous êtes complètement nouveau dans PIC, vous voudrez peut-être consulter le didacticiel PIC ADC et le didacticiel PIC LCD pour mieux comprendre ce projet.
Le circuit est construit dans une maquette. Une fois les connexions terminées, ma configuration ressemble à ceci, illustré ci-dessous.
Capteur MQ avec programmation PIC
La partie principale de ce code est la fonction principale et les autres fonctions périphériques associées. Le programme complet se trouve au bas de cette page, les extraits de code importants sont expliqués comme suit
La fonction ci-dessous est utilisée pour obtenir la valeur de résistance du capteur à l'air libre. Lorsque le canal analogique 0 est utilisé, il obtient des données du canal analogique 0. Ceci sert à étalonner le capteur de gaz MQ.
float SensorCalibration () { nombre entier ; // Cette fonction calibrera le capteur en flotteur d' air libre val = 0; for (count = 0; count <50; count ++) {// prendre plusieurs échantillons et calculer la valeur moyenne val + = Calculate_resistance (ADC_Read (0)); __delay_ms (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // divisé par RO_CLEAN_AIR_FACTOR donne la valeur de retour Ro ; }
La fonction ci-dessous est utilisée pour lire les valeurs analogiques du capteur MQ et la moyenne pour calculer la valeur Rs
float read_MQ () { nombre entier ; float rs = 0; for (count = 0; count <5; count ++) {// prendre plusieurs lectures et en faire la moyenne. rs + = calculer la résistance (ADC_Read (0)); // rs change en fonction de la concentration de gaz. __delay_ms (50); } rs = rs / 5; return rs; }
La fonction ci-dessous est utilisée pour calculer la résistance de la résistance du diviseur de tension et la résistance de charge.
float Calculate_resistance (int adc_channel) {// le capteur et la résistance de charge forment un diviseur de tension. donc en utilisant la valeur analogique et le retour de valeur de charge (((float) RL_VALUE * (1023-adc_channel) / adc_channel)); // nous trouverons la résistance du capteur. }
Le RL_VALUE est défini au début du code comme indiqué ci-dessous
#define RL_VALUE (10) // définir la résistance de charge sur la carte, en kilo-ohms
Modifiez cette valeur après avoir vérifié la résistance de charge embarquée. Cela peut être différent dans d'autres cartes de capteurs MQ. Pour tracer les données disponibles dans l'échelle logarithmique, la fonction ci-dessous est utilisée.
int gas_plot_log_scale (float rs_ro_ratio, float * courbe) { return pow (10, (((log (rs_ro_ratio) -curve) / courbe) + courbe)); }
La courbe est la courbe GPL définie ci-dessus du code qui est précédemment calculé dans notre article ci-dessus.
float MQ6_curve = {2,3,0,30, -0,41}; // Graph Plot, changez ceci pour un capteur particulier
Enfin, la fonction principale à l'intérieur de laquelle nous mesurons la valeur analogique, calculons le PPM et l'afficherons sur l'écran LCD est donnée ci-dessous
void main () { system_init (); écran propre(); lcd_com (FIRST_LINE); lcd_puts ("Calibrage…."); Ro = SensorCalibration (); //écran propre(); lcd_com (FIRST_LINE); lcd_puts ("Terminé!"); //écran propre(); lcd_com (FIRST_LINE); lcd_print_number (Ro); lcd_puts ("K Ohms"); __delay_ms (1500); gas_detect = 0; while (1) { if (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("Du gaz est présent"); lcd_com (SECOND_LINE); lcd_puts ("Gaz ppm ="); float rs = read_MQ (); rapport flottant = rs / Ro; lcd_print_number (gas_plot_log_scale (ratio, MQ6_curve)); __delay_ms (1500); écran propre(); } else { lcd_com (FIRST_LINE); lcd_puts ("Gaz non présent"); } } }
Tout d'abord, le RO du capteur est mesuré dans de l'air pur. Ensuite, la broche numérique est lue pour vérifier si le gaz est présent ou non. Si le gaz est présent, le gaz est mesuré par la courbe GPL fournie.
J'ai utilisé un briquet pour vérifier si la valeur PPM change lorsque le gaz est détecté. Ces briquets contiennent du gaz GPL qui, une fois libéré dans l'air, sera lu par notre capteur et la valeur PPM sur l'écran LCD change comme indiqué ci-dessous.
Le travail complet peut être trouvé dans la vidéo donnée au bas de cette page. Si vous avez des questions, laissez-les dans la section des commentaires ou utilisez nos forums pour d'autres questions techniques.