UV-Belastung messen mit Arduino

In der Workbench hatte ich ja bereits mein Projekt angekündigt und hier ist es nun endlich fertig. Ich habe mich daran versucht die UV-Belastung zu messen. Dafür habe ich zwei Sensoren verwendet. Zusätzlich wird noch die externe Batteriespannung überwacht. Als Spanungsversorgung dient eine LiIon Akku, welcher über einen Pololu 3.3V Step-Up/Step-Down Spannungsregler die Schaltung mit Strom versorgt. Als Anzeige dient ein 128×64 OLED Display welches per I2C angeschaltet ist.

arduino uvindex

 

Der ML8511

Den ML8511 hae ich über AliExpress bezogen und entsprechend des Sparkfun Hookup Guides angeschaltet.  Er deckt einen Bereich von 280 bis 390nm ab, was fast den gesamten Bereich von UV-A und UV-B Strahlung abdeckt. Da ich jedoch einen Spannungswandler verwende, spare ich mir die Messung des 3.3 Volt Ausgangs und lege 3,36 Volt als meine Referenz fest. Diese ist die Ausgangsspannung die mein Spannungswandler liefert.

Der Sensor liefert eine an seinem Ausgang eine Spannung zwischen ca. 1 und 3 Volt, welche in mW/cm2 umgerechnet werden. Dabei ist sollten die Werte nach folgender Grafik einzuordnen sein.

uv

 

 

Der UVM-30A

Dieser Sensor arbeitet im Bereich von 200 bis 370nm und kam ebenfalls aus Fernost. Im wesentlichen habe ich diese Anleitung verwendet. Der Sensor liefert an seinem Ausgang eine Spannung zwischen 0 und 1 Volt, welche direkt in den UV-Index umgerechnet wird. Dieses macht es sehr einfach, die Messwerte des Sensores zu bewerten. Die Genauigkeit sollte bei ±1UV INDEX liegen.

uv-index

 

Links zum Thema UV-Index:

 

Aufbau der Schaltung

Wie bereits erwähnt liefert mit eine Li-Ion Rundzelle vom Typ 18650 die Versorgungsspannung, welche zwischen 4.2 und ca. 2.7 Volt liegt. Durch einen Step-Up/Step-Down Spannungswandler, wird diese auf relativ genaue 3,36 Volt gewandelt. Die Spannung der Batterie wird über einen Spannungsteiler an Pin A3 gemessen. Für diesen verwende ich zwei 10KOhm Widerstände. So habe ich auch die Spannung im Blick und kann den Akku tauschen bevor er leer ist.

Daneben messe ich den ML8511 über A1 und den UVM-30A über A2 (Hier im bild mit TMP beschriftet). Das Display ist über I2C angeschaltet. Somit werden insgesamt drei Messwerte auf dem Display ausgegeben.

Schwarz ist GND ; Rot die ungeregelte Spannungsversorgung ; Violett die geregelte Spannungsversorgung

 

Wenn ich nichts vergessen habe, sieht so die Beschaltung aus:

ArduinoML8511UVM-30ADisplayWandlerBatterie
GNDGNDGNDGNDGNDGND (- Pol)
VCC3.3 und ENVCCVCCOut
A1OUT
A2OUT
A3Spannungsteiler
A4SDA
A5SCL
In+ Pol

 

Arduino Sketch

Der Sketch enthält grob gesagt drei Komponenten:

  1. ML8511 Auswertung
  2. UVM-30A Auswertung
  3. Die Auswertung der Batteriespannung

Daneben noch Funktionen für das auslesen der Spannungen.

Anfänglich hatte ich arge Probleme valide Werte zu erhalten, da meine Spannungsmessung schlicht falsch waren. Beiträge wie Secret Arduino Voltmeter, halfen mir aber wieder auf den richtigen Weg. Mein Problem bestand darin von einer VCC Spannung von 3.3 Volt auszugehen, welche aber bei 3.36 Volt lag. Dadurch hatte ich anstelle von 4.2 Volt Zellenspannung, nur noch 4.12 Volt. Dieser Messfehler wiederholte sich auch in den Werten der UV-Sensoren und verfälschte erheblich die Messwerte der UV-Belastung. Nachdem ich den Sketch angepasst hatte, bekam ich endlich vernünftige Werte. Ich habe im Sketch die VErsorgungsspannung fest einprogrammiert, da ich schlechte Erfahrungen damit gemacht habe, die Spannung über den Arduino zu messen.

Den Code findet ihr auf GitHub. Ihr könnt natürlich nur einen Sensor verwenden und den Code entsprechend anpassen. Macht aus dem Sketch einfach was ihr braucht. Ich habe die Mehrheit auch nur zusammenkopiert und meinen Gegebenheiten angepasst.

 

Messung der UV-Belastung

Ich musste erst mal raus in die Sonne um zu sehen ob die Sensoren funktionieren und auch vergleichbare Werte lieferten. Jetzt im März, in der Mittagssonne, sollte ein UV-Index von 2 erwartet werden, mal sehen ob es passt.

Ich bin doch positiv überrascht gewesen als ich mir die Werte aus dem Display angeschaut habe. Der UV-Index schwankte zwischen 2 und 3 und der ML8511 liefert eine UV-Belastung von knapp 3 mW/cm2. Damit bin ich zufrieden und sehe die Werte als hinreichend genau an. Ich bin mir natürlich auch im klaren, dass die Messmethode nicht die genaueste ist. Leider konnte ich kein gutes Foto machen, da die Sonne störte und ich Probleme durch den Zeilenaufbau bekam.

uv

2 Gedanken zu „UV-Belastung messen mit Arduino“

  1. Die Frage ist wie du zu einer Relation des UV-Index zwischen dem ml8511 und uvm30a kommst.
    Soweit ich das richtig sehe ist für den uvm30a nur die Relation Volt/UV-Index bekannt.
    Für den ML8511 ist nur Volt/mW/cm2 bekannt. Ohne das dir bekannt ist wie sich UV-Index zu mW/cm2 verhält kann man doch eigentlich keine Vergleiche zwischen den Sensoren treffen oder übersehe ich da etwas?

    Antworten
    • Erwischt 🙂

      Ich kann es dir nicht komplett erklären, aber mW/cm² multipliziert mit der Zeit ergibt die Dosis in mJ/cm². Dieses wird auch für den UV-Index herangezogen. Zusätzlich hatte ich bei meinen Messungen immer ähnliche Werte +-1.

      Antworten

Schreibe einen Kommentar