Station de mesure – Les capteurs 3/

Introduction :

Dans le cadre d’un projet de réalisation d’une station de mesures nous avons vu :

  • dans un premier article disponible ICI les capteurs DHT22 (Température et hygrométrie), BME280 (Température, pression atmosphérique et hygrométrie) et BH1750 (lumière visible en lux),
  • puis dans un deuxième article disponible ICI les capteurs de gaz de la série MQ-xxx.

Nous allons voir maintenant dans ce nouvel article un détecteur de particules fines.

Capteur GP2Y10

Présentation :

Introduction :

Ce capteur de chez SHARP dont on peut voir une photo ci-dessous permet de mesurer le taux de particules fines :

pm_gp2y10_photo

Le fonctionnement très simple est de type optique, une diode infrarouge émet en direction d’un phototransistor récepteur. La quantité de lumière reçue par le récepteur dépend de la densité de particules présentes dans l’air ambiant.

La consommation de ce capteur est assez faible, 20 mA au maximum et typiquement de 11 mA.

Le datasheet du constructeur peut être trouvé par exemple ICI.

Mesure densité de particules :

On peut voir ci-dessous la courbe tension V0 en sortie du capteur en fonction du taux de particules fines fournie par le constructeur :

pm_gp2y10_courbe tension densite

On voit que le capteur fournit une tension analogique V0 proportionnelle à la densité de particules fines avec une sensibilité de 0,5 volt / 0,1 mg / m3 entre 0 et 0,5 mg/m3 de densité de particules.

La relation entre la densité d et la tension u est donc de type d = a * u + b avec a et b deux coefficients à déterminer. Avec les deux points de coordonnées (d, u) de la droite ( 0 , 0.55 V) et ( 0.5 , 3.5 V) on trouve pour les coefficients a et b les valeurs suivantes : 0.17 et -0.09.

On peut donc déterminer la densité en fonction de la tension V0 retournée par le capteur avec l’équation suivante : d = 0.17 * u – 0.09.

Pilotage LED IR  :

Le cycle d’allumage de la LED IR (Infra Rouge) du capteur doit respecter les informations fournies par le constructeur dans son datasheet.

Le cycle complet dure 10 ms avec la LED allumée pendant 0.032 ms puis éteinte pendant 0.968 ms :

pm_gp2y10_cycle complet

La lecture de la tension V0 fournie par le capteur est effectuée pendant la période d’allumage de la LED IR au bout de 0.028 ms.

pm_gp2y10_cycle mesure

Mise en œuvre :

Montage :

La liaison avec l’extérieur est réalisée au moyen d’un câble H series JST connector 6-pin, 1.5mm généralement fourni avec le capteur :

pm_gp2y10_photo_cable ZH series JST connector 6 pin

Ce câble permet d’accéder aux six connections suivantes du capteur :

pm_gp2y10_connections

Pour le montage, nous utiliserons de plus une résistance de 150 Ohms et un condensateur de 200 MicroFarads comme indiqué dans  les informations fournies par le constructeur :

pm_gp2y10_montage resist et condo

Pour piloter la LED IR en respectant le cycle vu en introduction et pour lire et traiter la tension retournée par capteur nous allons utiliser un Arduino UNO.

Le raccordement entre le capteur et l’Arduino est réalisé comme indiqué ci-dessous :

          GP2Y10   <======>  Arduino

  • 1 : V-LED                    5V (Alimentation) via la résistance de 150 Ohms 
  • 2 : LED-GND              GND (Masse)
  • 3 : LED                        D2 (Pour commande de la LED par l’Arduino)
  • 4 : S-GND                    GND (Masse)
  • 5 : V0                           A0 (Pour lecture par l’Arduino tension fournie par le capteur)
  • 6 : VCC                         5V (Alimentation)

Avec la correspondance entre les numéros et le connecteur du capteur indiquée ci-dessous :

pm_gp2y10_cablage

Au final mon montage avec une plaque d’essai donne çà :

pm_gp2y10_photo_montage

NB : Vous pouvez comme moi coller des étiquettes sur chacun des six fils du connecteur pour faciliter le montage 🙂

Code :

Le code est très simple :

  • Le pilotage de la LED connectée à la sortie numérique D2 de l’Arduino est réalisé conformément au cycle vu en introduction.
  • La tension V0 est mesurée sur l’entrée analogique A0 puis convertie en densité de particule à l’aide de l’équation de droite vue précédemment.

Vous trouverez mon code ci-dessous :

/*
 Nom script : pm_gp2y10.ino
 Description : Mesure densite de particule fine avec un capteur SHART GP2Y10
 Auteur : PHMARDUINO
 Date Creation : 17 mai 2018
 */

int pattecapteur=0;
int patteLEDIR=2;
int delai1=280;
int delai2=40;
float delaieteint=9680;
int mesure=0;
float tension = 0;
float densite = 0;

void setup(){
  Serial.begin(9600);
  pinMode(patteLEDIR,OUTPUT);
}

void loop(){
  digitalWrite(patteLEDIR,LOW); // On allume la LED IR
  delayMicroseconds(delai1);
  mesure=analogRead(pattecapteur); // Lecture valeur capteur
  delayMicroseconds(delai2);
  digitalWrite(patteLEDIR,HIGH); // On eteint la LED IR
  delayMicroseconds(delaieteint);
  tension = mesure*5.0/1024;
  densite = 0.17*tension-0.09;
  if (densite < 0 )densite = 0;
  if (densite > 0.5) densite = 0.5;
    
  Serial.print("Tension en volts : ");
  Serial.print(tension);
  Serial.print("  -  Densite particules en mg par m3 : ");
  Serial.println(densite);
    
  delay(1000);
}







 

Vous pouvez aussi retrouver le code sous Github ICI.

Tests :

Une fois le montage réalisé et le sketch téléversé, en l’absence de fumée, les résultats dans le moniteur série sont les suivants (la densité est quasiment à zéro) :

pm_gp2y10_moniteur serie_sans fumée

Pour faire un premier test, on peut introduire un crayon dans le cylindre de détection central du capteur. La tension mesurée doit alors être de 3.75 Volts et la densité de particule de 0,5 mg/m3.

Ensuite pour continuer les tests, on peut par exemple envoyer de la fumée de cigarette sur le capteur ou craquer une allumette.

On voit alors dans le moniteur série fluctuer la tension envoyée par le capteur et la densité de particules fines associée :

pm_gp2y10_moniteur_serie_avec fumée

On voit ici que la densité varie entre 0.19 et 0.50 mg / m3 .

Pour finir :

Vous trouverez ci-dessous un tableau avec le lien entre la densité de particules fines et la qualité de l’air :

pm_gp2y10_tableau_qualite

Vous trouverez ci-dessous le sketch modifié pour afficher la qualité de l’air :

/*
 Nom script : pm_gp2y10_qualite.ino
 Description : Mesure densite de particule fine avec un capteur SHART GP2Y10
               et indication de la qualite de l air
 Auteur : PHMARDUINO
 Date Creation : 20 mai 2018
 */

int pattecapteur=0;
int patteLEDIR=2;
int delai1=280;
int delai2=40;
float delaieteint=9680;
int mesure=0;
int dmicro;
float tension = 0;
float densite = 0;

void setup(){
  Serial.begin(9600);
  pinMode(patteLEDIR,OUTPUT);
}

void loop(){
  digitalWrite(patteLEDIR,LOW); // On allume la LED IR
  delayMicroseconds(delai1);
  mesure=analogRead(pattecapteur); // Lecture valeur capteur
  delayMicroseconds(delai2);
  digitalWrite(patteLEDIR,HIGH); // On eteint la LED IR
  delayMicroseconds(delaieteint);
  tension = mesure*5.0/1024;
  densite = 0.17*tension-0.09;
  if (densite < 0 )densite = 0;
  if (densite > 0.5) densite = 0.5;
  dmicro = densite *1000;
    
  Serial.print("Tension en volts : ");
  Serial.print(tension);
  Serial.print("  -  Densite particules (microg/m3) : ");
  Serial.print(dmicro);
  Serial.print(" - Qualite air : ");
  if (dmicro <= 35) Serial.println ("Excellent");
  if (dmicro >35 and dmicro <=75) Serial.println ("Moyen");
  if (dmicro >75 and dmicro <=115) Serial.println ("Pollution legere");
  if (dmicro >115 and dmicro <=150) Serial.println ("Pollution moderee");
  if (dmicro >150 and dmicro <=250) Serial.println ("Pollution importante");  
  if (dmicro >250 and dmicro <=500) Serial.println ("Pollution grave !!!!!");
    
  delay(1000);
}







Ce sketch est aussi disponible sous Github ICI.

Les résultats obtenus dans le moniteur série lors des tests sont les suivants :

 

 

 

 

 

 

 

 


Publicités

Une réflexion au sujet de « Station de mesure – Les capteurs 3/ »

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s