Senzor UVB / UVA Záření ML8511

Senzor UVA a UVB záření ML8511 je Arduino modul, který nám umožňuje měřit ve svém okolí intenzitu UV záření. Tento modul je nejvíce citlivý v rozsahu 280 až 390 nanometrů, který odpovídá právě záření UVB a většině pásma záření UVA. Modul ML8511 se vyznačuje tím, že naměřený výsledek poskytuje na výstupu ve formě analogového napětí. Co se týká napájecího napětí, tak tento modul je nutné připojit na napětí 3,3 Voltů Arduina. Velkou výhodou je také velikost modulu, který má rozměry 13mm x 11mm x 1mm.

Pro úspěšné propojení senzoru ML8511 s Arduinem stačí zapojit celkem pět propojovacích vodičů. Propojíme 3V3 s pinem 3V3 Arduina, GND se zemí Arduina, OUT s pinem A0, EN s pinem 3V3 Arduina a jako poslední propojíme na Arduinu pin 3V3 a A1. Pro zapojení pinu OUT a napěťové reference s pinem 3V3 lze použít také ostatní analogové piny Arduina, ale tuto volbu je nutné provést na začátku programu.

Ukázkový kód obsahuje na svém začátku nastavení čísel propojovacích pinů, dále v podprogramu setup nastavíme komunikaci po sériové lince a také nastavíme oba propojovací piny jako vstupní. V nekonečné smyčce loop si vytvoříme proměnné pro uložení načtených hodnot z obou analogových pinů, tedy napětí z UV senzoru a také napětí pinu 3V3. Obě napětí jsou načteny pomocí podprogramu, který provede vždy osm měření za sebou a vrátí průměrnou hodnotu naměřeného napětí. Po naměření obou hodnot si do vytvořené proměnné přepočteme načtené napětí přes zmíněnou změřenou hodnotu pinu 3V3. Tento přepočet provádíme pro zvýšení přesnosti, protože není vždy pravidlem, že by na pinu 3V3 Arduina byla přesně tato hodnota a i několik setin voltu nám může způsobovat chybu. V posledním kroku si opět do nově vytvořené proměnné převedeme pomocí druhého podprogramu naměřené napětí na intenzitu, která je udávaná v jednotce mW/cm2.  Nyní si vytiskneme naměřené napětí společně s přepočtenou intenzitou po sériové lince a po pauze po dobu jedné sekundy se program opakuje. Na konci programu už vidíme pouze zmíněné podprogramy pro měření analogového napětí a jeho zprůměrování a převod z napětí na intenzitu záření.

// Arduino senzor UVA a UVB záření

// nastavení čísel propojovacích pinů senzoru
#define pinOut A0
#define pinRef3V3 A1

void setup() {
  // zahájení komunikace po sériové lince rychlostí 9600 baud
  Serial.begin(9600);
  // nastavení propojovacích pinů jako vstupních
  pinMode(pinOut, INPUT);
  pinMode(pinRef3V3, INPUT);
}

void loop() {
  // načtení analogové hodnoty z obou vstupů,
  // pro načtení volaný podprogram, který vrátí
  // průměr za 8 měření
  int hodnotaUV = prumerAnalogRead(pinOut);
  int hodnotaRef3V3 = prumerAnalogRead(pinRef3V3);
  // přepočet načteného napětí z UV senzoru a napětí
  // z 3,3 V Arduina pro přesnou hodnotu z UV senzoru
  float napetiOutUV = 3.3 / hodnotaRef3V3 * hodnotaUV;
  // přepočet napětí z UV senzoru na intenzitu UV záření
  float intenzitaUV = prevodNapetiIntenzita(napetiOutUV, 0.96, 2.8, 0.0, 15.0);
  // vytištění informací po sériové lince
  Serial.print("ML8511 napeti: ");
  Serial.print(napetiOutUV);
  Serial.print("V, UV Intenzita (mW/cm^2): ");
  Serial.println(intenzitaUV);
  // volitelná pauza 1 sekunda před novým měřením
  delay(1000);
}
// podprogram pro provedení 8 měření a vrácení průměrné hodnoty
int prumerAnalogRead(int pinToRead) {
  byte numberOfReadings = 8;
  unsigned int runningValue = 0; 

  for(int x = 0 ; x < numberOfReadings ; x++)
    runningValue += analogRead(pinToRead);
  runningValue /= numberOfReadings;

  return(runningValue);  
}

// podprogram pro převod naměřené hodnoty
// z desetinného čísla na UV intenzitu
float prevodNapetiIntenzita(float x, float in_min, float in_max,
                float out_min, float out_max) {
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

Po nahrání ukázkového kódu do Arduino desky s UV senzorem ML8511 dostaneme například tento výsledek:

ML8511 napeti: 0.96V, UV Intenzita (mW/cm^2): 0.00 (naměřené hodnoty uvnitř pokoje, blokované paprsky oknem)
ML8511 napeti: 0.96V, UV Intenzita (mW/cm^2): 0.04 (naměřené hodnoty uvnitř pokoje, blokované paprsky oknem)
ML8511 napeti: 1.05V, UV Intenzita (mW/cm^2): 0.70 (naměřené hodnoty na Slunci, částečně krytém mraky)
ML8511 napeti: 1.19V, UV Intenzita (mW/cm^2): 1.84 (naměřené hodnoty při osvitu UV LED diodou)
ML8511 napeti: 1.35V, UV Intenzita (mW/cm^2): 3.16 (naměřené hodnoty při osvitu UV LED diodou)

Senzor UVA a UVB záření ML8511 je velice zajímavý vstupní modul, který nám umožňuje obohatit naše Arduino zařízení o informace o okolní intenzitě UV záření. Je tedy vhodný do projektů jako je například meteostanice, měřící přístroj na rozložení intenzity UV záření či jako jednoduchý měřič pro bezpečné opalování.

 

Seznam použitých komponent:

http://dratek.cz/arduino/1511-original-arduino-uno-rev3-1485165418.html

http://dratek.cz/arduino/1327-senzor-uvb-uva-zareni-ml8511-pro-arduino-1466284958.html

Další podobné články