Ligne 33 : |
Ligne 33 : |
| * Modifier Rs peut profondément altérer les résultats... à modifier avec précaution. | | * Modifier Rs peut profondément altérer les résultats... à modifier avec précaution. |
| * [http://df.mchobby.be/datasheet/gp2y1010au_e.pdf Fiche technique du senseur Sharp GP2Y1010AU0F] (pdf) | | * [http://df.mchobby.be/datasheet/gp2y1010au_e.pdf Fiche technique du senseur Sharp GP2Y1010AU0F] (pdf) |
| + | |
| + | === Tension de sortie / densité === |
| + | Le graphique suivant affiche l'évolution de la tension de sortie en fonction de la densité de poussière/particule. |
| + | |
| + | [[Fichier:SENSEUR-PARTICULE-GP2Y1010AU0F-tech-00.jpg]] |
| | | |
| == Comment Brancher == | | == Comment Brancher == |
Ligne 48 : |
Ligne 53 : |
| |- style="font-size: 90%" | | |- style="font-size: 90%" |
| | align="left" | 1 | | | align="left" | 1 |
− | | align="left" | xx | + | | align="left" | Vled<small>''<br />Alimentation de la LED Infrarouge) |
− | | align="left" | yyyy | + | | align="left" | 5V<small>''<br />(via la résistance de 150 Ohms, voir schéma ci-dessous)''</small> |
| |- style="font-size: 90%" | | |- style="font-size: 90%" |
| | align="left" | 2 | | | align="left" | 2 |
− | | align="left" | xx | + | | align="left" | LED - |
− | | align="left" | yyyy | + | | align="left" | GND |
| |- style="font-size: 90%" | | |- style="font-size: 90%" |
| | align="left" | 3 | | | align="left" | 3 |
− | | align="left" | xx | + | | align="left" | LED<small>''<br />Commande de la LED.''</small> |
− | | align="left" | yyyy | + | | align="left" | Pin #2<small>''<br />Broche digital.''</small> |
| |- style="font-size: 90%" | | |- style="font-size: 90%" |
| | align="left" | 4 | | | align="left" | 4 |
− | | align="left" | xx | + | | align="left" | S-GND<small>''<br />Masse (y compris du boîtier)''</small> |
− | | align="left" | yyyy | + | | align="left" | GND |
| |- style="font-size: 90%" | | |- style="font-size: 90%" |
| | align="left" | 5 | | | align="left" | 5 |
− | | align="left" | xx | + | | align="left" | Vo<small>''<br />Sortie du senseur''</small> |
− | | align="left" | yyyy | + | | align="left" | Arduino A0 (analogique) |
| |- style="font-size: 90%" | | |- style="font-size: 90%" |
| | align="left" | 6 | | | align="left" | 6 |
− | | align="left" | xx | + | | align="left" | Vcc<small>''<br />Alimentation circuit logique du senseur''</small> |
− | | align="left" | yyyy | + | | align="left" | 5V |
| |} | | |} |
| | | |
Ligne 84 : |
Ligne 89 : |
| == Le code == | | == Le code == |
| | | |
| + | Le graphique suivant (repris de la fiche technique Sharp) indique que l'échantillonnage (la mesure) se fait 28ms après le début de la mesure. |
| + | |
| + | [[Fichier:SENSEUR-PARTICULE-GP2Y1010AU0F-Code-Pulse.jpg]] |
| + | |
| + | <nowiki>#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); |
| + | }</nowiki> |
| | | |
| == Où acheter == | | == Où acheter == |