Senseurs de particules PM2.5

Nous avons ajouté un petit tutoriel pour Arduino pour un senseur de particule (mais aussi d'autres microcontrôleurs) sur notre Wiki.
Ce fût un sujet vraiment intéressant qui faut bien un petit article d'intro.

Le senseur de particules
Senseur de particule PM 2.5
disponible chez MCHobby
Le PM2.5 est un senseur de particule (poussière et fumée) analogique avec une tension de sortie de 0.5V par 0.1mg/m³.

Il existe de nombreux senseurs différents dont le prix varie de quelques euros à plus de 100 euro (détecteur avec Laser).

L'air dont ont désire mesurer la teneur en particule passe dans un boîtier contenant un émetteur de lumière et un senseur "photo-sensible".


La qualité du senseur "photosensible" influence directement la sensibilité de la mesure tandis que la longueur d'onde de la source lumineuse permettra de mesurer des particules plus ou moins fine.

Principe de fonctionnement du senseur PM2.5
Ce senseur Sharp GP2Y1010AU0F utilise une lumière infrarouge. L'émetteur et le senseur sont placés diagonalement l'un par rapport à l'autre. Le senseur infrarouge mesure la quantité de lumière reflétée par les poussières et fumées.

La tension en sortie est donc proportionnel à la densité de poussière/particule.
Tension en fonction de la densité de poussière.
Ce senseur permet de détecter les poussières dans l'air et des particules très fines comme la fumée de cigarette (dixit Sharp). Il est même possible de faire la distinction entre la fumée et la poussière domestique en détectant des motifs d'impulsion sur la tension de sortie (pulse pattern of output voltage)
Les applications typiques de ce senseur sont:
  • conditionnement d'air,
  • contrôle de la qualité de l'air,
  • purification d'air

Détails techniques

  • Compacte: le senseur sharp à les dimensions suivantes: 46 x 30 x 17.6mm
  • Basse consommation: max 20mA
  • La présence de poussière peut être détecté par photométrie d'une seule impulsion.
  • Commande de la LED infrarouge par impulsion (cycle de 10ms avec largeur d'impulsion de 0.32ms)
  • Le senseur est équipé d'une résistance variable (Rs) permettant d'ajuster la sensibilité du circuit d'amplification.
    Modifier Rs peut profondément altérer les résultats... à modifier avec précaution.
Montage et croquis Arduino
Le schéma de montage doit être réalisé comme ceci:

Le détail du montage est repris sur notre tutoriel.

La mesure ne se fait pas n'importe comment: il faut envoyer une impulsion de 32ms sur la LED Infrarouge... mais faire la mesure 28ms après avoir allumé la LED infrarouge.

#define dustPin  A0 // Lecture analogique du senseur (A0)
#define ledPower 2  // Commande de la LED IR du senseur (digital 2)

// Delai avant la mesure analogique (0.28 ms, soit 280 microsecondes) 

#define delayTime 280

// Délai d'impulsion IR sur le senseur.
//     0.32ms actif sur 10ms au total.
//
//  Note: 280 + 40 + 9680 = 10000 micro-secondes, soit 10ms 

#define delayTime2 40 
#define offTime    9680

void setup(){
    Serial.begin(9600);
    pinMode(ledPower,OUTPUT);
    pinMode(dustPin, INPUT);
}

void loop(){
    float dustVal=0; // Valeur retournée par le senseur
    
    // Activation de la LED IR (en passant au niveau bas)
    digitalWrite(ledPower,LOW);
    // Attendre 0.28ms (280 micro secondes) avant lecture analogique 
    delayMicroseconds(delayTime);
    dustVal=analogRead(dustPin); 

    // Attendre encore 40 microseconde pour atteindre
    // 320 microsecondes (soit 0.32ms). Il est temps d'éteindre
    // la LED IT
    delayMicroseconds(delayTime2);
    digitalWrite(ledPower,HIGH);

    // Attendre la fin du cycle de 10ms 
    // (soit 10000 microsecondes au total)   
    delayMicroseconds(offTime);


    // pause de 1 seconde entre chaque capture
    delay(1000);

    // Transformation de la lecture analogique + affichage
    if (dustVal>36.455)
        Serial.println((float(dustVal/1024)-0.0356)*120000*0.035);
}

Où acheter