Optický senzor kvality ovzduší Sharp GP2Y1010AU0F

Optický senzor kvality ovzduší Sharp GP2Y1010AU0F je velice vhodný při situacích, kdy by jsme rádi měřili ve svém okolí koncentraci prachu. Tento model je citlivý hlavně na velice jemné částice a často se používá v čističkách vzduchu či detektorech cigaretového kouře. Jeho funkce je založena na dvojici součástek – infračervené diodě a fototranzistoru, kdy právě vzduch obohacený jemnými částicemi mění intenzitu světla dopadajícího z diody na fototranzistor. My pak tuto změnu zachycené intenzity měříme pomocí napětí na fototranzistoru.

Pro úspěšné propojení s Arduino deskou je nutné propojit celkem 6 vodičů. Číslování je uvedeno na obrázku se zapojením níže (je nutné dodržet pořadí, barvy drátků se mohou změnit). Zapojíme 1 přes odpor na +5V, 2 na zem, 3 na digitální pin 3, 4 na zem, 5 na analogový pin 0 a poslední 6 na +5V. Dále je ještě nutné připojit kondenzátor dle schématu, tedy kladný pól na 1 a záporný pól na zem. Zmíněný digitální a analogový pin můžeme samozřejmě připojit na jiný volný, ale je nutné tuto změnu provést i v programu pro Arduino desku.

Ukázkový kód obsahuje na svém začátku proměnné pro nastavení čísel pinů na Arduino desce a dále konstanty pro přesné měření. Tyto konstanty udává přímo výrobce, takže by jsme je neměli měnit. Jako další následují proměnné pro uložení výsledků měření a podprogram setup, ve kterém si nastavíme komunikaci přes sériovou linku a také pin ledPin jako výstupní. V nekonečné smyčce loop se nachází nejprve úsek kódu s provedením měření dle pokynů výrobce a dále jsou uvedeny výpočty pro získání reálné hodnoty napětí a poté přepočtení této hodnoty na výslednou prašnost. Poté jsou už jen výsledky vytištěny na sériovou linku a na konci smyčky je pauza 1 vteřina pro přehledný výpis výsledků.

// Optický senzor kvality ovzduší Sharp GP2Y1010AU0F

// proměnné pro nastavení propojovacích pinů
int mericiPin = A0;
int ledPin = 3;

// konstanty pro přesné měření
const int casMereni = 280;
const int casUstaleni = 40;
const int casSpanku = 9680;

// proměnné pro uložení výsledků měření
float napetiAnalog = 0;
float napetiPrepocet = 0;
float prasnost = 0;

void setup() {
  // komunikace přes sériovou linku rychlostí 9600 baud
  Serial.begin(9600);
  // nastavení ledPin jako výstupní
  pinMode(ledPin,OUTPUT);
}
  
void loop() {
  // zahájení měření
  digitalWrite(ledPin,LOW);
  delayMicroseconds(casMereni);
  // načtení analogové hodnoty napětí
  napetiAnalog = analogRead(mericiPin);
  delayMicroseconds(casUstaleni);
  digitalWrite(ledPin,HIGH);
  delayMicroseconds(casSpanku);
  // přepočet analogové hodnoty na digitální
  napetiPrepocet = napetiAnalog * (5.0 / 1024.0);
  // výpočet koncentrace prachu v okolí dle
  // informací od výrobce
  prasnost = (0.17 * napetiPrepocet - 0.1)*1000;
  Serial.print("Napeti ze senzoru: ");
  Serial.print(napetiPrepocet);
  Serial.print(" V");
  Serial.print(" -> Koncentrace prachu: ");
  Serial.print(prasnost);
  Serial.println(" ug/m3");
  // pauza pro přehlednější výpis
  delay(1000);
}

Po nahrání programu do Arduino desky dostaneme například tento výpis:

Napeti ze senzoru: 0.72 V -> Koncentrace prachu: 22.02 ug/m3
Napeti ze senzoru: 0.71 V -> Koncentrace prachu: 21.19 ug/m3
Napeti ze senzoru: 0.70 V -> Koncentrace prachu: 18.70 ug/m3
Napeti ze senzoru: 0.67 V -> Koncentrace prachu: 13.72 ug/m3
Napeti ze senzoru: 0.73 V -> Koncentrace prachu: 23.68 ug/m3
Napeti ze senzoru: 0.72 V -> Koncentrace prachu: 22.02 ug/m3
Napeti ze senzoru: 0.65 V -> Koncentrace prachu: 10.40 ug/m3

Jak je vidět, naměřené výsledky senzoru kvality ovzduší Sharp GP2Y1010AU0F jsou poněkud méně přesné. Je však nutné zmínit, že samotný senzor není schopný měřit úplně od nuly a pro naměření nějakých rozumných hodnot je třeba ho umístit někam do prašnějšího prostředí, v mém případě to bylo testování na rušné ulici. Při měření v pokoji totiž senzor při nízkých hodnotách prachu v okolí nenaměří výsledky správně a přibližně do napětí 0,6 V jsou tak přepočtené hodnoty koncentrace mínusové. A co se týká maximálních hodnot, tak ty by se podle zákonů v České republice měly pohybovat do hranice 50 ug/m3.

 

Seznam použitých komponent:

http://dratek.cz/arduino/1126-opticky-senzor-prachu-sharp-gp2y1010au0f-1449872536.html

http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

http://dratek.cz/arduino-kabelaz-propoje-rozsireni/1214-arduino-vodice-samice-samice-40-kusu-1457705007.html

Další podobné články