Bienvenue sur le Journal de Bord du Projet OpenAir suivi dans le cadre du stage de L3 de Physique de Janvier 2017 par Nicolas Salviani et Ruben De Barros.
Lumière infrarouge (longueur de l'ordre du µm) sur des particules de l'ordre du 0.1µm à 10µm.
Type de particule | Valeur Limite | Objectif de Qualité | Seuil de recommandation et d'information | Seuil d'alerte |
---|---|---|---|---|
Particules Fines de diamètre =< 10µm (PM10). | En moyenne annuelle : 40 µg/m³. En moyenne journalière : 50 µg/m³ à ne pas dépasser plus de 35 jours par an. | En moyenne annuelle : 30 µg/m³. | En moyenne journalière : 50 µg/m³. | En moyenne journalière : 80 µg/m³. |
Particules fines de diamètre =< 2,5µm (PM2,5). | En moyenne annuelle : 25 µg/m³ depuis le 01/01/15. | En moyenne annuelle : 10 µg/m³. | En moyenne annuelle : 20 µg/m³. |
SHINYEI(Mesures PM10, PM2.5)
source : Journal.plos
Intake : entrée d'air.
Exhaust : sortie d'air.
Resistor : resistance chauffante pour créer une convection de l'air dans le capteur.
Infrared LED : LED infrarouge pour générer la lumière.
Light baffle : Empêche la lumière d'atteindre directement la diode photoélectrique.
Photodiode Detector : Diode photoélectrique qui génère un courant électrique selon l'intensité de la lumière.
Focusing Lense : Lentille convergente pour acheminer la lumière diffusée de la meilleure manière possible vers la diode.
Electromagnetic Shielding : Bouclier anti-électromagnétique qui protège la diode des interférences extérieures.
PLANTOWER (Mesures PM10, PM2.5, PM1)
source : aqicn
NOVA (Mesure PM10, PM2.5)
source : aqicn
SHARP (Mesure PM2.5)
source : Pocketmagic
L'air va dans un premier temps entrer dans le boitier puis grâce à une résistance chauffante on crée une convection de l'air pour le faire circuler et l'homogénéiser. On peut également utiliser un ventilateur qui fait circuler l'air (comme pour les 2 derniers détecteurs). Puis la lumière émise par notre émetteur infrarouge va être diffusée par les particules fines présentes dans l'air. Une partie de cette lumière diffusée va ensuite être concentrée dans la lentille convergente et envoyée sur la diode photoélectrique, qui va convertir l'intensité lumineuse en un signal électrique qui sera analysé et, à l'aide de formules mathématiques, et ainsi on déduira la quantité de particules fines par unité de volume.
Voici une photo de notre montage avec le Sharp. Le schéma de montage est légèrement modifié chez nous (on utilise le canal A5 au lieu de A6, n'ayant pas de A6 sur notre Arduino).
Le capteur est relié à la carte Arduino qui est elle-même relié à un ordinateur pour nous permettre l'acquisition des données. A l'intérieur de l'Arduino, le programme suivant tourne en permanence :
int measurePin = 6; int ledPower = 12; int samplingTime = 280; int deltaTime = 40; int sleepTime = 9680; float voMeasured = 0; float calcVoltage = 0; float dustDensity = 0; void setup(){ Serial.begin(9600); pinMode(ledPower,OUTPUT); } void loop(){ digitalWrite(ledPower,LOW); // power on the LED delayMicroseconds(samplingTime); voMeasured = analogRead(measurePin); // read the dust value delayMicroseconds(deltaTime); digitalWrite(ledPower,HIGH); // turn the LED off delayMicroseconds(sleepTime); // 0 - 5.0V mapped to 0 - 1023 integer values // recover voltage calcVoltage = voMeasured * (5.0 / 1024); // linear eqaution taken from http://www.howmuchsnow.com/arduino/airquality/ // Chris Nafis (c) 2012 dustDensity = (0.17 * calcVoltage - 0.1)*1000; //On multiplie par 1000 pour obtenir des µg Serial.print("Raw Signal Value (0-1023): "); Serial.print(voMeasured); Serial.print(" - Voltage: "); Serial.print(calcVoltage); Serial.print(" - Dust Density: "); Serial.println(dustDensity); delay(1000); }
Source howmuchsnow
On obtient ainsi les résultats sous cette forme :
La partie encadrée correspond aux mesures effectuées avec la fumée de papier brûlé. Le résultat est élevé mais ne surprend pas, étant donné qu'on envoie une grande quantité de fumée dans le capteur. De plus, il est sans doute plus grand en réalité : le capteur étant alimenté avec 3.3V, il a tendance à saturer autour des 125$µg.m^{-3}$.
Même idée avec le Shinyei, mais avec un branchement plus simple. On a également un code différent pour les mesures avec l'Arduino :
int pin = 8; unsigned long duration; unsigned long starttime; unsigned long sampletime_ms = 30000; unsigned long lowpulseoccupancy = 0; float ratio = 0; float concentration = 0; void setup() { Serial.begin(9600); pinMode(8,INPUT); starttime = millis(); } void loop() { duration = pulseIn(pin, LOW); lowpulseoccupancy = lowpulseoccupancy+duration; if ((millis()-starttime) > sampletime_ms) { ratio = lowpulseoccupancy/(sampletime_ms*10.0); // Integer percentage 0=>100 concentration = (1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62)/0.00028; // using spec sheet curve, multiplié par 0.00028 car calculé en cubic feet Serial.print(lowpulseoccupancy); Serial.print(","); Serial.print(ratio); Serial.print(","); Serial.println(concentration); lowpulseoccupancy = 0; starttime = millis(); } }
Source : howmuchsnow
Voici les résultats obtenus sur le Shinyei :
Ce capteur nous a permis d'obtenir une concentration en particules fines (ici de la fumée de papier brûlé) de 11000 particules/cubic feet, ce qui équivaut à $642µ.m^{-3}$ pour notre fumée, ce qui est au dessus de la norme française si on se réfère au tableau, et logique par rapport à la quantité de fumée générée.
source : aqicn
Le capteur Nova a un fonctionnement légèrement différent des deux précédents : il n'utilise pas une LED infrarouge mais un LASER infrarouge et un capteur placé à 90° de ce LASER. On a donc une intensité de diffusion légèrement différente mais ce n'est pas le changement le plus important. La plus grosse différence avec les autres capteurs est l'utilisation du code en Serial dans l'Arduino. La réception et l'interprétation des données va donc être légèrement différente, et plus complexe également. On obtient alors le code suivant pour le NOVA :
int incomingByte = 0; void setup() { // put your setup code here, to run once: Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: while (Serial.available() > 0) { incomingByte = Serial.read(); Serial.print(" Data:"); Serial.println(incomingByte); } }
On obtiendra ainsi le résultat sous la forme suivante :
Le résultat est obtenu sous forme de bytes, et décomposable : chaque byte est attribué à une valeur. Les valeurs encadrées correspondent respectivement à une concentration sans fumée et avec fumée. Les quatre bits encadrées sont respectivement Low Byte PM2.5, High Byte PM2.5, Low Byte PM10, High Byte PM10. On retrouve la concentration en chaque type de particule par la formule : $\frac{High Byte * 256 + Low Byte}{10}$
source : aqicn
Le capteur Plantower utilise également le système d'émetteur LASER infrarouge avec le capteur à 90°. On a réussi à utiliser le même code pour l'interprétation des données envoyées par le Plantower que pour le Nova, on obtiendra donc des valeurs sous cette forme :
Ici on 6 valeurs, qui correspondent à des PM1, PM2.5, et PM10. Cependant, contrairement au Nova, on ne divise pas par 10 les valeurs obtenues par le Low Byte et High Byte, on a donc $High Byte*256 + Low Byte$ .
Pour pouvoir mesurer en parallèle nos 4 capteurs, l'idée est venue d'utiliser une boite à fumée pour donner aux capteurs la même quantité de particules fines, et de les comparer après.
Pour cela, on utilise une boîte dans laquelle on brûlera un petit combustible pour générer une petite ou moyenne quantité de fumée qu'on homogénéisera à l'aide d'un ventilateur capable de faire circuler l'air dans toute la boîte sans créer de grosse perturbation mais suffisamment puissant pour que la fumée soit bien homogène. Pour cela, nous avons récupéré un ventilateur d'ordinateur, que nous alimenterons entre 6 et 12V pour une ventilation plus ou moins puissante, scotché au fond de la boîte, telle que suit :
Nous avons par la suite réussi à scotché les capteurs aux bords de la paroi et à faire un montage qui fonctionne, malgré quelques résultats pour l'instant peu satisfaisant dans les données acquises.
On peut voir sur la deuxième photo le sharp à gauche et le Plantower à droite, la troisième photo montre le Nova à gauche et le Shinyei à droite. Au milieu de la boîte on peut voir le ventilateur qui permet de faire circuler la fumée dans la boîte. A droite de la première, le récipient qui nous permet de faire brûler du combustible (papier, encens, mouchoire, etc.) et d'en récolter la fumée. Le ventilateur souffle depuis le recipient vers les capteurs.
Ainsi, à l'aide de deux cartes Arduino (nécessaires pour l'instant à cause des capteurs Nova et Plantower codés en Serial, rendant difficile l'acquisition sur une même carte.) on peut lancer une acquisition sur nos 4 capteurs en même temps. Ainsi, nous avons en premier lieu tenté de lancer une acquisition sur 15 minutes avec la boîte remplie de fumée, avec une légère fuite (laissée intentionnellement), pour observer le comportement des capteurs. Malgré quelques dysfonctionnements, les capteurs Nova et Plantower semblent donner des courbes similaires en terme de comportement, bien que les résultats du Plantower paraissent étonnamment faibles. De plus, le Shinyei n'a pas fonctionné sur la quasi totalité du test, d'autres tests sont donc de rigueur après amélioration.
Voici en tout cas les valeurs données par le nova sur un test de 15mn :
Nous avons lancé un test plus long et plus complet avec 2 injections de fumée dans notre boîte, pour comparer les 4 capteurs selon les types de particules.
On a également lancé une acquisition du bruit des capteurs, à savoir une longue acquisition sans fumée pour déterminer à quel point nos valeurs peuvent varier dans le temps sans aucune influence de notre part.
On peut clairement voir que le Nova possède un bruit beaucoup plus faible que les autres capteurs. Il semble donc qu'il soit le plus précis des 4 capteurs. Le capteur Plantower n'est pas représenté ici car lors de nos tests, nous avons constaté qu'à moins d'introduire une quantité minimale de particules, celui-ci ne semblait pas réagir. Le capteur Shinyei quant à lui affiche beaucoup de valeurs à 0, mais détecte un bruit raisonnable en dehors de cela. Le Sharp a quant à lui une précision qui laisse à désirer (+ ou - 50% sur une valeur), mais la valeur moyenne de la détection semble correcte.
Nous avons réussi à créer un petit script en Python qui permet de traiter les données reçues par les capteurs et de les ressortir sous forme de tableaux de valeurs :
Pour le Nova et Shinyei :
import csv f = open("nonyei.txt", "r") s=csv.writer(open("nonyei_traité.csv","w")) contenu = [line.strip('\n') for line in f.readlines()] for k in range (0,73280): if (len(contenu[k])>5): s.writerow([contenu[k],contenu[k+3],contenu[k+4],contenu[k+5],contenu[k+6]]) f.close()
Pour le Sharp et Plantower :
import csv f = open("plantarp.txt", "r") s=csv.writer(open("Plansharp_traité.csv","w")) contenu = [line.strip() for line in f.readlines()] for k in range (0,16440): if (len(contenu[k])>5): s.writerow([contenu[k],contenu[k+5],contenu[k+6],contenu[k+7],contenu[k+8],contenu[k+9],contenu[k+10]]) f.close()
Nous avons enfin effectué un dernier test, avec plusieurs injections de fumée à la seringue en quantités variables. Voici les résultats groupés pour les différentes catégories de particules, à savoir PM2.5 et PM10 :
Les courbes montrent une précision supérieure pour le Nova (courbe lisse), le Plantower semblant toujours être inférieur aux autres, sans doute pour des problèmes de calibration.