### 4.3.3 Zonne-ultravioletdetector #### 4.3.3.1 Overzicht ![Img](./media/top1.png) 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](./media/bottom1.png) #### 4.3.3.2 Kennis over componenten ![Img](./media/2top.png) **Zonne-ultravioletsensor** ![Img](./media/UV-sensor.png) 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](./media/UV.png) 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](media/103.png)(VB) **micro:bit 5×5 LED-matrix** ![Img](./media/j101.png) 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](./media/2bottom.png) #### 4.3.3.3 Vereiste componenten | ![Img](./media/microbitV2.png)| ![Img](./media/ExpansionBoard.png) |![Img](./media/OLED.png) | | :--: | :--: | :--: | | micro:bit V2 hoofdboard ×1 | micro:bit shield ×1 | OLED display ×1 | |![Img](./media/UV-sensor1.png)|![Img](./media/usb.png) |![Img](./media/4pin.png)| | ultravioletsensor ×1 | micro USB-kabel ×1 | 4 pin draad ×1 | |![Img](./media/3pin.png)|![Img](./media/batterycase.png)|![Img](./media/AAbattery.png)| | 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](./media/couj3.png) #### 4.3.3.5 Stroomschema van de code ![Img](./media/flow-chart-03.png) #### 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](https://docs.keyestudio.com/projects/KS4050/en/latest/docs/MicroPython/MU_development_environment.html#import-library-on-mu)” . ![Img](./media/WPSA1.png) ⚠️ **Tip 2: De drempelwaarde 5 in de if()-voorwaarde kan worden aangepast aan de werkelijke situatie.** **Complete code:** ```Python ''' 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](./media/line1.png) **Korte uitleg:** ① Importeer de bibliotheken microbit, oled_ssd1306, music en math. ```Python from microbit import * from oled_ssd1306 import * import music import math ``` ② Initialiseer OLED-pixels, wis het OLED. ```Python initialize() # initialiseer OLED clear_oled() # wis OLED ``` ③ Initialiseer de pin van de zonne-ultravioletsensor. ```Python uv_sensor = pin1 ``` ④ Definieer de subfunctie voor de door de sensor gedetecteerde ultravioletwaarde. ```Python 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. ```Python 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](./media/ab1.png) en ![Img](./media/ab2.png), en geeft de speaker alarm. Anders toont de matrix ![Img](./media/ab3.png) en geeft de speaker geen alarm. ```Python 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). ```Python sleep(1000) ``` #### 4.3.3.7 Testresultaat ![Img](./media/4top.png) 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](./media/A125.png) Na het uploaden van de testcode, druk op de resetknop aan de achterkant van de micro:bit. ![Img](./media/A455.png) ⚠️ **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](./media/ab1.png) en ![Img](./media/ab2.png), en geeft de speaker alarm. Anders toont de matrix ![Img](./media/ab3.png) en geeft de speaker geen alarm. ![Img](./media/dongtu-3.gif) ⚠️ **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](./media/4bottom.png)