Outils pour utilisateurs

Outils du site


wiki:projets:open-air:stagel2_2017

Stage L3 Janvier 2017



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.


Principe de diffusion



Lumière infrarouge (longueur de l'ordre du µm) sur des particules de l'ordre du 0.1µm à 10µm.

  • *Diffusion de Mie : Ce phénomène se produit dans le cas où la particule est de l'ordre de 0.1 a 10 fois la longueur d'onde. La lumière percute le nuage électronique de l'atome et le déforme, créant ainsi un dipôle électrique qui rayonne avec la même longueur d'onde que l'onde incidente, avec intensité variable selon l'angle d'impact. La lumière incidente est diffusée de façon anisotrope, la diffusion vers l'avant est plus importante que dans n'importe quelle autre direction et cet effet augmente lorsque la taille de la particule augmente.

    ==$I(\theta,a,m$)=$\frac{\lambda^2}{4\pi^2r^2}$$|S(\theta,a,m)|^2$==

    Caractéristiques du problème: *$\theta$=angle incident *a=rayon de la particule *m=indice de réfraction de la particule *$\lambda$=longueur d'onde *r=distance entre la particule et le capteur *S=amplitude de la fonction d'onde mesurée

    Dans la fonction ci-dessus, la fonction S est très complexe, et aucune solution simple n'existait jusqu'à l'utilisation des ordinateurs. Aujourd'hui, il existe des calculateurs puissants capables de trouver les valeurs que l'on recherche.
    Calculateur OMLC

    Nous avons également trouvé un logiciel à télécharger qui effectue des calculs très complets avec beaucoup de paramètres disponibles, très efficace, que je recommande tout particulièrement : MiePlot

    Voici un exemple de ce que l'on peut obtenir à partir de ce calculateur pour une particule carbonée avec une LED émettant $27W.m^{-2}$ d'intensité :





    Pour avoir une idée du nombre de particules à l'intérieur du capteur, on va d'abord tenter d'estimer le rapport de la puissance émise par la LED sur la puissance reçue par le capteur. La puissance émise par la LED étant connue, on a donc le rapport $\frac{Pr}{Pe}$ qui nous donne une estimation (un pourcentage) de la puissance lumineuse transmise par le milieu diffusant (en l'occurrence les particules fines ici).

    A l'aide du logiciel MiePlot, on peut connaître le coefficient d'atténuation $\frac{Pe}{Pr}$ pour une particule. Ainsi, connaissant la puissance émise et la puissance totale reçue, on peut déduire le nombre de particules présentes dans le détecteur par une simple division. Nous avons ainsi pu estimer (à vérifier), à partir de MiePlot, que l'intensité reçue était $10^8$ fois plus petite que l'intensité émise pour une particule. Ainsi, pour un grand nombre de particules (ex : $50*10^6$, cf test Shinyei), notre capteur devra être capable de détecter une intensité de l'ordre du $W.m^{-2}$ pour notre LED à 27$W.m^{-2}$.

    Pour ce qui est de l'architecture du capteur, les modèles semblent différer sur certains points et notamment l'utilisation de LED ou de LASER, et l'angle entre l'émetteur et le récepteur. Les deux semblent en corrélation, étant donné que l'utilisation du LASER se fait visiblement à 90° tandis que les LED sont plutôt utilisées à un angle de 60° (ou 120°, selon quelle origine est prise). Selon la polarisation du LASER, l'intensité lumineuse captée ne sera pas la-même : en effet, à l'aide des différents calculateurs disponibles, on constate que si le LASER est polarisé parallèlement, l'intensité reçue est quasi-nulle, tandis qu'elle est relativement élevée dans une polarisation perpendiculaire.

    ====Facteurs environnementaux====

    Particules fines respirées et responsables de la pollution : de l'ordre de 2.5µm. Cette pollution est potentiellement dangereuse pour la santé, elle est un facteur aggravant pour les personnes âgées et les femmes enceintes mais aussi les professions surexposées ( chauffeurs routiers,mineurs…). De plus il existe des risques respiratoires et cardio-vasculaires liés aux particules fines.

    Sources de particules fines : Combustion de biomasses, d'hydrocarbures ; centrales thermiques (et autres procédés industriels qui créent des aérosols). Dans les cas de pics de pollutions dans la région parisienne, la forte circulations, le chauffage domestique, les chantiers et l'agriculture sont les principaux responsables de l'émission de particules fines.

    Normes françaises de pollution** : AirParif
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³.

Principe de fonctionnement



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.

Test des capteurs


Capteur Sharp




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}$.

Capteur Shinyei




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.

Capteur Nova




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}$



Plantower



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$ .



Boîte à fumée


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.

Acquisition des données et comparaison des 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 :


Deuxième vague de résultats :

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.






Troisième vague de résultats :







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()

Test Final



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.

Retour à la page principale du projet

wiki/projets/open-air/stagel2_2017.txt · Dernière modification: 2020/10/05 16:39 (modification externe)