In acest tutorial ne vom focusa atentia pe senzorul de praf GP2Y1014AU0F, modul de functionare si problemele intalnite in folosirea lui.
GP2Y1014AU0F este un senzor optic de particule fine ce poate fi folosit pentru masurarea calitatii aerului.
Senzorul este produs de Sharp Microelectronics, are un consum foarte mic (maxim 20mA) si se preteaza si aplicatiilor low-power, putand ajunge la un consum mediu mai mic de 1000uA, avand in vedere ca nu este necesar sa-l tinem pornit tot timpul.
Componente:
- Arduino UNO
- Senzor optic de praf
- Breadboard
- Condensator 220µF
- Rezistenta 150Ω
- Cabluri jumper T-T
Setup:
Am folosit fritzing pentru a reproduce setup-ul din atelierul letcon.ro insa vom incerca sa explicam ce reprezinta fiecare pin.
Consultati atat schema oferita de Sharp Microelectronics in datasheet cat si desenul nostru de mai sus pentru a conecta senzorul la placa de dezvoltare.
Senzor | Arduino |
1 - V-LED | 5V + rezistenta 150Ohm |
2 - LED-GND | GND |
3 - LED | Pin Digital 12 |
4 - S-GND | GND |
5 - Vo | Pin Analog A5 |
6 - Vcc | 5V |
Interpretarea semnalului:
In figura alaturata (extrasa din datasheet) observam ca densitatea prafului creste linear in raport cu voltajul (Vo).
Aditional, pe Arduino, orice pin analog va reprezenta voltajul ca valori intregi cuprinse intre 0 si 1023, valori ce pot fi convertite inapoi in valori reale ale voltajului.
Prin urmare, pentru Arduino UNO, vom inmulti valoarea obtinuta prin citirea pinului analog (A5 in cazul de fata) cu 0.5 / 1024.0. Atentie la calcule, sunt valori decimale.
Timpi de masurare
Tot din datasheet aflam ca trebuie sa pornim led-ul intern timp de 280µs inainte de a masura semnalul iar durata totala de puls va fi de 320µs. Asta inseamna ca vom adauga un delay de 40µs inainte de a opri led-ul.
Concret, acest lucru se traduce in cod astfel:
digitalWrite(12, LOW); // power on the LED
delayMicroseconds(280);
voMeasured = analogRead(A5); // read the dust value
delayMicroseconds(40);
digitalWrite(12, HIGH); // turn the LED off
Revenind la datasheet si interpretarea semnalului (imaginea de mai sus), aflam ca senzorul nu are un output de 0V atunci cand nu exista praf in atmosfera ci o valoare de aproximativ 0.6V (valoare ce poate fi intre 0.1V si 1.1V). Aceste valori sunt in concordanta cu specificatiile.
Sensibilitatea sa este de aproximativ 0.5V la 100µg/mc insa, tot conform specificatiilor, aceasta valoare poate fi cuprinsa intre 0.425V si 0.575V.
Pe baza acestor informatii putem stabili o formula de calcul a densitatii de praf astfel:
densitate = (voltajOutput – voltajDeBaza) / sensibilitate * 100; // valoare in µg/mc
Desi va recomandam sa folositi biblioteca GP2YDustSensor pentru ca tine cont de toate aceste variabile si le poate ajusta in timpul functionarii (inclusiv drift-ul de la valorile de baza), vom exemplifica mai jos cu se integreaza toate aceste informatii.
(In curand)
Adauga un comentariu