4.3.3 Zonne-ultravioletdetector

4.3.3.1 Overzicht

Img

De zonne-ultravioletdetector is een precisie-instrument dat gebruikt wordt om de intensiteit van ultraviolette straling van de zon te meten. Het detecteert ultraviolette (UV) straling die onzichtbaar is voor het menselijk oog en kwantificeert de intensiteit ervan. Net als lichtintensiteitsdetectors zijn ze ook gebaseerd op het foto-elektrisch effect, maar de kern ligt in de selectieve detectie van ultraviolette straling.

In dit project toont de OLED de gedetecteerde ultraviolette intensiteit in realtime. Wanneer deze een bepaalde waarde overschrijdt, geeft de speaker op de kaart een alarm en toont de 5×5 LED-matrix een patroon als waarschuwing.

De zonne-ultravioletdetector wordt veel gebruikt in vrijwel alle situaties waar de kwantificering van “ultraviolet licht” vereist is, inclusief testen van UV-uithardingslampen en zonnebrandproducten, ultraviolet fototherapie-apparatuur, bewaking van ultraviolet sterilisatielampen in waterzuiverings- en luchtreinigingssystemen, enz.

Img

4.3.3.2 Kennis over componenten

Img

Zonne-ultravioletsensor

Img

De ultravioletsensor wordt gebruikt om ultraviolette straling te detecteren en bestaat voornamelijk uit de G365S01M gebaseerd op halfgeleiderfotodiodes. Het kan de UV-stralingsintensiteit in de omgeving omzetten in een analoog spanningssignaal dat uitgelezen kan worden door een single-chip microcomputer (zoals een micro:bit board). Het schema ziet er als volgt uit:

Img

Foto-elektrische omzetting: Wanneer de ultraviolette fotodiode in de sensor wordt blootgesteld aan ultraviolet licht, genereert deze een zeer zwakke stroom (evenredig met de UV-intensiteit).

Stroomversterking: Deze zwakke stroom wordt versterkt door de intern geïntegreerde operationele versterker.

Signaaluitgang: Het versterkte signaal wordt direct als analoge spanning uit een pen uitgegeven. De spanningswaarde ligt gewoonlijk tussen 0V en 1V (bij een voedingsspanning van 3.3V). Hoe sterker de UV-intensiteit, hoe hoger de spanning.

Parameters:

  • Voedingsspanning: DC 5V

  • Piekresponsgolflengte: 355nm (λmax)

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

  • Spectraal responsbereik: 220~370nm

  • UV/zichtbaar licht responsverhouding (Rmax/R400nm): > Img(VB)

micro:bit 5×5 LED-matrix

Img

De LED-matrix van het micro:bit board bevat 25 LED’s in een raster. We kunnen een bepaalde LED aansturen door de positie in de testcode op te geven. Theoretisch kunnen we meerdere LED’s tegelijkertijd inschakelen om patronen, cijfers en scrollende tekens weer te geven.

Img

4.3.3.3 Vereiste componenten

Img

Img

Img

micro:bit V2 hoofdboard ×1

micro:bit shield ×1

OLED display ×1

Img

Img

Img

ultravioletsensor ×1

micro USB-kabel ×1

4 pin draad ×1

Img

Img

Img

3 pin draad ×1

batterijhouder ×1

AA-batterij(zelf mee te nemen) ×6

4.3.3.4 Aansluitschema

⚠️ Let bij het aansluiten op de draadkleuren.

OLED display

draadkleur

micro:bit shield pin

micro:bit board pin

GND

zwart

G

G

VCC

rood

V2

V

SDA

blauw

20

P20

SCL

groen

19

P19

ultravioletsensor

draadkleur

micro:bit shield pin

micro:bit board pin

G

zwart

G

G

V

rood

V2

V

S

geel

1

P1

Img

4.3.3.5 Stroomschema van de code

Img

4.3.3.6 Testcode

⚠️ Tip 1: Before downloading the code to the Microbit board, please import the library file “oled_ssd1306.py” refering to Import Library on MU” .

Img

⚠️ Tip 2: De drempelwaarde 5 in de if()-voorwaarde kan worden aangepast aan de werkelijke situatie.

Complete 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
'''
# importeer gerelateerde bibliotheken
from microbit import *
from oled_ssd1306 import *
import music
import math

# initialiseer en wis oled
initialize()  # initialiseer oled
clear_oled()  # wis oled

# Initialiseer de ADC-pin (de ultraviolet sensor is verbonden met pin1)
uv_sensor = pin1

def read_uv_index():
    # Lees de analoge waarde (0-1023 corresponds to 0-5.0V)
    raw_value = uv_sensor.read_analog()
    # Zorg dat de waarde binnen het geldige bereik valt
    if raw_value > 1023:
        raw_value = 1023
    elif raw_value < 0:
        raw_value = 0
    # Map naar het ultraviolet-indexbereik van 0 tot 15
    # Het mappingsbereik kan worden aangepast op basis van de werkelijke karakteristieken van de sensor
    uvi = raw_value * (15.0 / 1023)

    return round(uvi, 1)

while True:
    clear_oled()   # wis OLED
    uv = read_uv_index() # Lees het ultraviolet-intensiteitsniveau dat door de ultravioletsensor is gedetecteerd
    add_text(0, 0, "UV Intensity:")  # Toon de tekenreeks op de aangegeven positie van het OLED
    add_text(14, 0, str(int(uv)))  # Toon het ultraviolet-intensiteitsniveau op de aangegeven positie van het OLED
    if uv >= 5:    # wanneer uv-niveau >=5
       display.show(Image.NO)    # LED-matrix toont het NO-patroon
       music.play("B5:4")        # luidspreker speelt toon B5
       sleep(100)
       music.play("C5:4")        # luidspreker speelt toon C5
       display.show(Image.SAD)   # LED-matrix toont het verdrietige patroon
       sleep(100)
    else: # anders
       display.show(Image.HAPPY)  # LED-matrix toont het blije patroon
       music.reset()              # geen toon
    sleep(1000)

Img

Korte uitleg:

① Importeer de bibliotheken microbit, oled_ssd1306, music en math.

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

② Initialiseer OLED-pixels, wis het OLED.

initialize()  # initialiseer OLED
clear_oled()  # wis OLED

③ Initialiseer de pin van de zonne-ultravioletsensor.

uv_sensor = pin1

④ Definieer de subfunctie voor de door de sensor gedetecteerde ultravioletwaarde.

def read_uv_index():
    # Lees de analoge waarde (0-1023 corresponds to 0-3.3V)
    raw_value = uv_sensor.read_analog()
    # Zorg dat de waarde binnen het geldige bereik valt
    if raw_value > 1023:
        raw_value = 1023
    elif raw_value < 0:
        raw_value = 0
    # Map naar het ultraviolet-indexbereik van 0 tot 15
    # Het mappingsbereik kan worden aangepast op basis van de werkelijke karakteristieken van de sensor
    uvi = raw_value * (15.0 / 1023)

    return round(uvi, 1)

⑤ Lees de ultravioletwaarde van de sensor en toon deze op de OLED.

uv = read_uv_index() # Lees het ultraviolet-intensiteitsniveau dat door de ultravioletsensor is gedetecteerd
add_text(0, 0, "UV Intensity:")  # Toon de tekenreeks op de aangegeven positie van het OLED
add_text(14, 0, str(int(uv)))  # Toon het ultraviolet-intensiteitsniveau op de aangegeven positie van het OLED

⑥ Beslissingsstructuur: if()…else…

Wanneer de gedetecteerde ultravioletintensiteit van zonlicht groter dan of gelijk aan 5 is, toont de 5×5 LED-matrix Img en Img, en geeft de speaker alarm. Anders toont de matrix Img en geeft de speaker geen alarm.

if uv >= 5:    # wanneer uv-niveau >=5
   display.show(Image.NO)    # LED-matrix toont het NO-patroon
   music.play("B5:4")        # luidspreker speelt toon B5
   sleep(100)
   music.play("C5:4")        # luidspreker speelt toon C5
   display.show(Image.SAD)   # LED-matrix toont het verdrietige patroon
   sleep(100)
else: # anders
   display.show(Image.HAPPY)  # LED-matrix toont het blije patroon
   music.reset()              # geen toon

⑦ Pauze 1000ms (1s).

sleep(1000)

4.3.3.7 Testresultaat

Img

Na het aansluiten en inschakelen via micro USB-kabel, sluit externe voeding aan (6 AA-batterijen) om voldoende stroomvoorziening te garanderen, en klik op “Flash” om de code naar het micro:bit board te downloaden.

Img

Na het uploaden van de testcode, druk op de resetknop aan de achterkant van de micro:bit.

Img

⚠️ Opmerking: Testomgeving voor de ultravioletsensor: middagzonlicht (10:00-14:00); vermijd schaduw; richt de sensor rechtstreeks naar de zon.

De OLED toont de gedetecteerde ultravioletintensiteit in realtime. Wanneer de gedetecteerde ultravioletintensiteit van zonlicht groter dan of gelijk aan 5 is, toont de 5×5 LED-matrix Img en Img, en geeft de speaker alarm. Anders toont de matrix Img en geeft de speaker geen alarm.

Img

⚠️ Opmerking: De bouwstenen in het experiment zijn niet inbegrepen in deze kit.

(Tip: Als er geen resultaat wordt waargenomen, druk dan op de resetknop van het micro:bit board.)

Img