Mit dem UVM30 UV-Sensor kann die Intensität des ultravioletten Lichts gemessen und anschließend als UV-Index ausgegeben werden. Vor allem in DIY Wetterstationen kann dieser Messwert eine sinnvolle Ergänzung sein.
UV-Index
Der UV-Index beschreibt den am Boden erwarteten Spitzenwert der sonnenbrand-wirksamen UV-Strahlung. Je höher der UV-Index ist, desto höher ist die UV-Bestrahlungsstärke, desto schneller kann bei ungeschützter Haut ein Sonnenbrand auftreten.
Der UV-Index wurde von der WHO definiert und ist weltweit einheitlich.

Die UV-Index-Skala ist in verschiedene Bereiche unterteilt, für die unterschiedliche Schutzempfehlungen gelten. Er ist somit nicht nur ein Maß für die zu erwartende UV-Belastungen, sondern dient darüber hinaus als Orientierungshilfe für Empfehlungen, welche Schutzmaßnahmen ergriffen werden sollten.
Folgende Faktoren beeinflussen die UV-Intensität:
- aktueller Sonnenstand (Morgens, Mittags, Abends)
- geografische Breitenlage
- Ozonkonzentration in der Atmosphäre
- Höhenlage eines Ortes
- Bewölkung
UVM30 UV-Sensor
Der UVM30 UV-Sensor misst die Intensität des ultralioletten Lichts und rechnet diese in einen analogen Wert um. Dieser Wert muss nun lediglich in einen UV-Index übersetzt werden um lesbare Daten zu erhalten.
Technische Daten
| Betriebsspannung | 3-5 V |
| Ausgangsspannung | 0-1 V |
| Genauigkeit | ± 1UV Index |
| Betriebsstrom | 0,06 mA (Standard) / 0,1 mA (max.) |
| Messbereich | 200nm bis 370nm |
| Betriebstemperatur | -20 °C bis -85 °C |
| Maße (L x B x H) | 28 x 13 x 10 mm |

Aufbau und Schaltplan
Im Versuchsaufbau wurde ein Arduino Nano V3.0 und ein HALJIA UVM-30A Sensor verwendet. Es sind lediglich drei Verbindungen zwischen den zwei Geräten notwendig:
| Arduino Nano V3.0 | UVM30 Sensor |
|---|---|
| 5V | VCC (+) |
| A0 | Out |
| GND | GND (-) |
UVM30 Arduino Sketch
void setup()
{
Serial.begin(9600);
}
void loop()
{
int analogwert;
analogwert = analogRead(0);
if (analogwert < 10 )
{ Serial.print("UV-Index : 0"); }
if (analogwert < 46 & analogwert >= 10 )
{ Serial.print("UV-Index : 1"); }
if (analogwert < 65 & analogwert >= 46 )
{ Serial.print("UV-Index : 2"); }
if (analogwert < 83 & analogwert >= 65 )
{ Serial.print("UV-Index : 3"); }
if (analogwert < 103 & analogwert >= 83 )
{ Serial.print("UV-Index : 4"); }
if (analogwert < 124 & analogwert >= 103 )
{ Serial.print("UV-Index : 5"); }
if (analogwert < 142 & analogwert >= 124 )
{ Serial.print("UV-Index : 6"); }
if (analogwert < 162 & analogwert >= 142 )
{ Serial.print("UV-Index : 7"); }
if (analogwert < 180 & analogwert >= 162 )
{ Serial.print("UV-Index : 8"); }
if (analogwert < 200 & analogwert >= 180 )
{ Serial.print("UV-Index : 9"); }
if (analogwert < 221 & analogwert >= 200 )
{ Serial.print("UV-Index : 10"); }
if (analogwert >= 221 )
{ Serial.print("UV-Index : 11"); }
delay(5000);
}Da der Sensor den gemessenen UV-Wert nur in Millivolt ausgibt, muss dieser Wert dem entsprechenden UV-Index zugeordnet werden. Im o.g. Sketch erfolgt diese Zuordnung mit Hilfe mehrerer IF-Anfragen.
Soll die Zuordnung andersweitig realisiert werden kann die folgende Tabelle genutzt werden:
| Analogwert in mV | UV-Index |
|---|---|
| 0 – 9 | 0 |
| 10 – 45 | 1 |
| 46 – 64 | 2 |
| 65 – 82 | 3 |
| 83 – 103 | 4 |
| 104 – 124 | 5 |
| 125 – 141 | 6 |
| 142 – 161 | 7 |
| 162 – 179 | 8 |
| 180 – 199 | 9 |
| 200 – 220 | 10 |
| ab 221 | >11 |
Mehr zum Thema Arduino Sensoren und Co
Möchtest du mehr interessante Arduino Projekte kennen lernen und weiter in die Welt der Mikrocontroller einsteigen? Dann empfehle ich das Buch Arduino Kompendium: Elektronik, Programmierung und Projekte.
Hiermit ist es möglich auch ohne umfassende Elektronik- und Programmiervorkenntnisse spannende IoT Projekte umzusetzen.
- Danny Schreiter (Autor)

