4.3.3 Solarer Ultraviolett-Detektor

4.3.3.1 Übersicht

Img

Der Solar-Ultraviolett-Detektor ist ein Präzisionsinstrument, das zur Messung der Intensität der ultravioletten Strahlung der Sonne verwendet wird. Er detektiert ultraviolette (UV) Strahlung, die für das menschliche Auge unsichtbar ist, und quantifiziert deren Intensität. Ähnlich wie Helligkeitssensoren beruhen diese Detektoren auf dem photoelektrischen Effekt, wobei der Schwerpunkt auf der selektiven Erfassung von Ultraviolettstrahlen liegt.

In diesem Projekt zeigt das OLED die erkannte Ultraviolett-Intensität in Echtzeit an. Wenn diese einen bestimmten Wert überschreitet, gibt der Lautsprecher auf der Platine Alarm und die 5×5-LED-Matrix zeigt ein Muster als Warnung.

Der Solar-Ultraviolett-Detektor wird vielfach in nahezu allen Anwendungsfällen eingesetzt, die die Quantifizierung von „UV-Licht“ erfordern, einschließlich Tests von UV-Härtungsleuchten und Sonnenschutzmitteln, UV-Phototherapie-Geräten, Überwachung von UV-Desinfektionslampen in Wasseraufbereitungs- und Luftreinigungssystemen usw.

Img

4.3.3.2 Bauteilkenntnisse

Img

Solarer Ultraviolett-Sensor

Img

Der Ultraviolett-Sensor dient der Erkennung von Ultraviolettstrahlung und besteht hauptsächlich aus dem G365S01M, basierend auf Halbleiter-Photodioden. Er kann die UV-Strahlungsintensität in der Umgebung in ein analoges Spannungssignal umwandeln, das von einem Mikrocontroller (z. B. einem micro:bit-Board) ausgelesen werden kann. Das Schaltbild ist wie folgt:

Img

Photoelektrische Umwandlung: Wenn die Photodiode im Sensor der Ultraviolettstrahlung ausgesetzt wird, erzeugt sie einen sehr schwachen Strom (proportional zur UV-Intensität).

Stromverstärkung: Dieser schwache Strom wird durch einen intern integrierten Operationsverstärker verstärkt.

Signalausgang: Das verstärkte Signal gibt direkt eine analoge Spannung an einem Pin aus. Der Spannungswert liegt üblicherweise zwischen 0V und 1V (bei 3.3V Versorgung). Je stärker die UV-Intensität, desto höher die Spannung.

Parameter:

  • Betriebsspannung: DC 5V

  • Wellenlänge mit Maximumantwort: 355nm (λmax)

  • Spitzenempfindlichkeit (355nm) : 0.18A/W (Rmax)

  • Spektraler Ansprechbereich: 220~370nm

  • UV/ sichtbares Licht Empfindlichkeitsverhältnis (Rmax/R400nm): > Img(VB)

micro:bit 5×5-LED-Matrix

Img

Die LED-Matrix des micro:bit-Boards enthält 25 LEDs in einem Raster. Wir können eine bestimmte LED durch Integration ihres Positionswertes in den Testcode steuern. Theoretisch können viele LEDs gleichzeitig eingeschaltet werden, um Muster, Ziffern und scrollende Zeichen darzustellen.

Img

4.3.3.3 Benötigte Komponenten

Img

Img

Img

micro:bit V2 Hauptplatine ×1

micro:bit Shield ×1

OLED-Display ×1

Img

Img

Img

Ultraviolett-Sensor ×1

micro USB-Kabel ×1

4-poliges Kabel ×1

Img

Img

Img

3-poliges Kabel ×1

Batteriehalter ×1

AA-Batterien (selbst bereitgestellt) ×6

4.3.3.4 Schaltplan

⚠️ Achten Sie beim Verkabeln bitte auf die Drahtfarben.

OLED display

wire color

micro:bit shield pin

micro:bit board pin

GND

black

G

G

VCC

red

V2

V

SDA

blue

20

P20

SCL

green

19

P19

ultraviolet sensor

wire color

micro:bit shield pin

micro:bit board pin

G

black

G

G

V

red

V2

V

S

yellow

1

P1

Img

4.3.3.5 Programmablauf

Img

4.3.3.6 Testcode

⚠️ Tipp 1: Bevor Sie den Code auf das Microbit-Board herunterladen, importieren Sie bitte die Bibliotheksdatei “oled_ssd1306.py” gemäß Import Library on MU” .

Img

⚠️ Tipp 2: Der Schwellenwert 5 in der if()-Bedingung kann je nach tatsächlicher Situation angepasst werden.

Vollständiger Code:

'''
Theme: Solar ultraviolet detector
Function: OLED displays the intensity of ultraviolet rays and the ultraviolet sensor controls the 5×5 dot matrix and speaker
Compiling IDE: MU 1.2.0
Author: https://docs.keyestudio.com
'''
# benötigte Bibliotheken importieren
from microbit import *
from oled_ssd1306 import *
import music
import math

# OLED initialisieren und löschen
initialize()  # initialize oled
clear_oled()  # clear oled

# ADC-Pin initialisieren (der Ultraviolett-Sensor ist an Pin1 angeschlossen)
uv_sensor = pin1

def read_uv_index():
    # Analogen Wert auslesen (0-1023 entspricht 0-5.0V)
    raw_value = uv_sensor.read_analog()
    # Sicherstellen, dass der Wert im gültigen Bereich liegt
    if raw_value > 1023:
        raw_value = 1023
    elif raw_value < 0:
        raw_value = 0
    # Auf den UV-Indexbereich von 0 bis 15 abbilden
    # Der Abbildungsbereich kann entsprechend den tatsächlichen Eigenschaften des Sensors angepasst werden
    uvi = raw_value * (15.0 / 1023)

    return round(uvi, 1)

while True:
    clear_oled()   # OLED löschen
    uv = read_uv_index() # Die vom Ultraviolett-Sensor erkannte UV-Intensität lesen
    add_text(0, 0, "UV Intensity:")  # Zeichenkette an der entsprechenden Position auf dem OLED anzeigen
    add_text(14, 0, str(int(uv)))  # UV-Intensitätsstufe an der entsprechenden Position auf dem OLED anzeigen
    if uv >= 5:    # wenn UV-Stufe >=5
       display.show(Image.NO)    # LED-Matrix zeigt das NO-Muster an
       music.play("B5:4")        # Lautsprecher spielt Ton B5
       sleep(100)
       music.play("C5:4")        # Lautsprecher spielt Ton C5
       display.show(Image.SAD)   # LED-Matrix zeigt das SAD-Muster an
       sleep(100)
    else: # sonst
       display.show(Image.HAPPY)  # LED-Matrix zeigt das HAPPY-Muster an
       music.reset()              # kein Ton
    sleep(1000)

Img

Kurzbeschreibung:

① Bibliotheken microbit, oled_ssd1306, music und math importieren.

from microbit import *
from oled_ssd1306 import *
import music
import math

② OLED initialisieren und löschen.

initialize()  # initialize oled
clear_oled()  # clear oled

③ Den Pin des Solar-Ultraviolett-Sensors initialisieren.

uv_sensor = pin1

④ Die Unterfunktion zur Ermittlung des vom Sensor detektierten Ultraviolett-Werts definieren.

def read_uv_index():
    # Analogen Wert auslesen (0-1023 entspricht 0-3.3V)
    raw_value = uv_sensor.read_analog()
    # Sicherstellen, dass der Wert im gültigen Bereich liegt
    if raw_value > 1023:
        raw_value = 1023
    elif raw_value < 0:
        raw_value = 0
    # Auf den UV-Indexbereich von 0 bis 15 abbilden
    # Der Abbildungsbereich kann entsprechend den tatsächlichen Eigenschaften des Sensors angepasst werden
    uvi = raw_value * (15.0 / 1023)

    return round(uvi, 1)

⑤ Den vom Sensor gelesenen Ultraviolett-Wert auslesen und auf dem OLED anzeigen.

uv = read_uv_index() # Die vom Ultraviolett-Sensor erkannte UV-Intensität lesen
add_text(0, 0, "UV Intensity:")  # Zeichenkette an der entsprechenden Position auf dem OLED anzeigen
add_text(14, 0, str(int(uv)))  # UV-Intensitätsstufe an der entsprechenden Position auf dem OLED anzeigen

⑥ Verzweigungsanweisung: if()…else…

Wenn die vom Sonnenlicht ermittelte Ultraviolett-Intensität größer oder gleich 5 ist, zeigt die 5×5-LED-Matrix Img und Img an und der Lautsprecher gibt Alarm. Andernfalls zeigt die Matrix Img an und der Lautsprecher bleibt stumm.

if uv >= 5:    # wenn UV-Stufe >=5
   display.show(Image.NO)    # LED-Matrix zeigt das NO-Muster an
   music.play("B5:4")        # Lautsprecher spielt Ton B5
   sleep(100)
   music.play("C5:4")        # Lautsprecher spielt Ton C5
   display.show(Image.SAD)   # LED-Matrix zeigt das SAD-Muster an
   sleep(100)
else: # sonst
   display.show(Image.HAPPY)  # LED-Matrix zeigt das HAPPY-Muster an
   music.reset()              # kein Ton

⑦ Verzögerung 1000ms (1 s).

sleep(1000)

4.3.3.7 Testergebnis

Img

Nach dem Verkabeln und dem Einschalten per micro USB-Kabel schließen Sie die externe Stromversorgung (6 AA-Batterien) an, um eine ausreichende Stromversorgung sicherzustellen, und klicken Sie “Flash”, um den Code auf das micro:bit-Board herunterzuladen.

Img

Nach dem Hochladen des Testcodes drücken Sie die Reset-Taste auf der Rückseite des micro:bit.

Img

⚠️ Hinweis: Testumgebung für den Ultraviolett-Sensor: Mittagssonne (10:00–14:00); Abschattung vermeiden; Sensor direkt zur Sonne ausrichten.

Das OLED zeigt die erkannte Ultraviolett-Intensität in Echtzeit an. Wenn die erkannte Ultraviolett-Intensität des Sonnenlichts größer oder gleich 5 ist, zeigt die 5×5-LED-Matrix Img und Img an und der Lautsprecher gibt Alarm. Andernfalls zeigt die Matrix Img an und der Lautsprecher bleibt stumm.

Img

⚠️ Hinweis: Die Bausteine im Experiment sind nicht im Lieferumfang dieses Kits enthalten.

(Tipp: Wenn kein Ergebnis beobachtet wird, drücken Sie bitte die Reset-Taste des micro:bit-Boards.)

Img