Il sensore GUVA-S12SD prodotto dalla Roithner Lasertechnik GmbH è un fotodiodo UV al nitruro di gallio (GaN), alloggiato in un package SMD 3528. É utilizzato principalmente per il monitoraggio dei LED blu usati per polimerizzazione UV o monitoraggio LED UV.
In questo caso è utilizzato invece, per monitorare le radiazioni UV dei raggi solari.
La radiazione UV o la radiazione della luce ultravioletta, ha lunghezza d’onda nello spettro elettromagnetico compreso tra 10 nm a 400 nm . Il sensore rileva valori nella gamma spettrale compresa tra 345 – 450 nm, questa lunghezza d’onda è classificata come parte dello spettro dei raggi UVB e la maggior parte dello spettro dei raggi UVA.
Un altro tipo di sensore UV é quello analizzato nell’articolo Sensore UV ML8511 GYML8511- Arduino
Citazione dell’articolo nella sezione Arduino di Elettronica In
Indice
Qual è la differenza tra raggi UVA, UVB e UVC?
I raggi ultravioletti si differenziano per la loro lunghezza d’onda e si suddividono in raggi UVA, UVB e UVC (non misurabili con il nostro sensore):
- I raggi UVA (315-400 nm) rappresentano circa il 95% dei raggi UV e la loro irradiazione è costante, non solo durante tutto l’anno, ma anche in tutti i momenti della giornata. Quando camminiamo all’aperto in una giornata di sole siamo perciò sempre esposti a questi raggi, non importa se sia estate o inverno.
- I raggi UVB (280-315 nm) costituiscono il 5% dei raggi UV e sono presenti maggiormente nel periodo tra aprile e ottobre. La loro intensità però è influenzata anche da altri fattori come altitudine, stagione, orario della giornata, presenza di nuvole e inquinamento.
- I raggi UVC (100-280 nm) sono potenzialmente quelli più pericolosi per l’uomo, Vengono filtrati dallo strato di ozono così da non arrivare alla Terra e pertanto non rappresentano un rischio per la nostra salute.
Quali sono i rischi di un’esposizione prolungata?
Durante l’esposizione solare, soprattutto in estate, quando tendiamo a rimanere al sole più a lungo e i raggi UVB sono presenti, possiamo incorrere in alcuni fastidi causati proprio dall’azione dei raggi UV. Ecco quali sono:
- Rischi degli UVA: gli UVA penetrano più in profondità negli strati del derma e sono responsabili dell’invecchiamento cutaneo quindi della comparsa di rughe e macchie della pelle. Questi raggi possono provocare anche delle dermatiti solari e sono la causa dello sviluppo dei tumori cutanei.
- Rischi degli UVB: gli UVB sono i raggi che donando alla pelle la cosiddetta tintarella, il colorito sano e bronzeo a cui tutti aspiriamo durante i mesi estivi. Fate attenzione però: abbronzatura non deve essere sinonimo di scottatura perché questo è proprio uno degli effetti collaterali degli UVB. Gli UVB quindi sono responsabili degli eritemi solari e contribuiscono anche loro alla formazione di tumori della pelle.
Tabella indice UV
Il valore UV é associato a dei valori compresi tra 1 e 11; ogni indice è poi associato ad un colore che va dal verde, non pericoloso a viola, molto pericoloso.
Descrizione del sensore
Il sensore GUVA-S12SD è formato da un fotodiodo UV al nitruro di gallio (GaN), alloggiato in un package SMD 3528.
Circuito elettrico del modulo sensore UV GUVA-S12SD
Per facilitare l’utilizzo del sensore è disponibile uno specifico modulo Breakout.
Nello schema sopra riportato sono visibili i componenti utilizzati, il modulo sensore UV, D1 tipo GUVA-S12SD (datasheet) è un fotodiodo di tipo Schottky al nitruro di gallio, ottimizzato per il funzionamento in modalità fotovoltaica.
Vediamo poi il prossimo componente principale U1 che è uno dei due amplificatori operazionali presenti all’interno del Chip LM358 (datasheet) ; gli amplificatori sono ad alto guadagno, con compensazione interna della frequenza, e sono progettati specificamente per funzionare a singola alimentazione.
In altri moduli (vedi foto sotto) l’integrato LM358 è sostituito con il modello SGM8521 (datasheet), che é sempre un amplificatore operazionale Rail-to-Rail I/O CMOS.
Il circuito elettrico e il PCB sono realizzati con il programma online EasyEDA, potrà essere scaricato dal mio account presso OSHWLab, utilizzando questo link.
Altri modelli di moduli
In commercio si trovano diversi modelli di modulo che utilizzano il sensore UV GUVA-S12SD. Sotto sono presenti alcuni modelli
Altri sensori raggi UV
Un altro modello di sensore UV è il tipo ML8511 (GYML8511) che permette di misurare l’intensità della luce ultravioletta in mW/cm^2. Per le sue caratteristiche vedere l’articolo Sensore UV ML8511 GYML8511- Arduino
PINOUT del modulo sensore UV GUVA-S12SD
- OUT: tensione di uscita direttamente proporzionale all’intensità della radiazione ultravioletta
- GND: massa alimentazione
- VIN: ingresso alimentazione 2,7-5,5 VDC
Dove trovare il sensore?
Il Breakout con sensore GUVA-S12SD (simile a quello provato) può essere acquistato presso il sito FUTURA ELETTRONICA, il codice prodotto è 8300-UVDETMOD, il suo costo, al momento della pubblicazione di questo articolo di 6,90 €.
Collegamento di base del sensore
Vediamo prima di tutto il collegamento di base del sensore, in questo caso leggeremo i valori forniti dal sensore tramite il monitor seriale dell’IDE.
Materiale occorrente
Il materiale per realizzare il nostro misuratore di UV è formato da:
Programma/codice sorgente
Di seguito è riportato il codice sorgente di base per la lettura del sensore
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | /* sensore-GUVA-S12SD_base.ino Lo sketch misura la tensione misurata dal sensore GUVA-S12SD, e mostra il valore tramite il monitor seriale */ void setup() { Serial.begin(9600); } void loop() { float sensorVoltage; float sensorValue; sensorValue = analogRead(A0); sensorVoltage = sensorValue / 1024 * 3.3; //sensorVoltage = sensorValue / 1024 * 5.0; Serial.print("Lettura sensore = "); Serial.print(sensorValue); Serial.println(""); Serial.print("Tesione sensore = "); Serial.print(sensorVoltage); Serial.println(" V"); delay(1000); } |
Collegamento del sensore e lettura su display
Vediamo ora di aggiungere allo schema visto sopra, un display OLED che ci permetterà di leggere i valori senza l’utilizzo di in PC . In questo caso sarà anche mostrato l’indice UV, che fa riferimento alla tabella sottostante. Nella tabella è mostrato il valore dell’indice UV in relazione al valore di tensione in mV fornito dalla tensione. Per la valutazione del valore dell’indice si è fatto riferimento alla tabella visibile in questo link (fonte Wikipedia)
Esempio di indicazione fornita dal programma
Il display utilizzato
In questo progetto viene usato un Display OLED 0.96″ 128×64 -SSD1306 che ha una risoluzione di 128×64 pixel, e sfrutta il driver SSD1306 e si interfaccia tramite la connessioni I2C.
Il display ha la particolarità di avere una parte superiore con led gialli e quella inferiore di colore blu.
Per maggiori informazioni vedere articolo Display OLED 0.96″ 128×64 -SSD1306
Materiale occorrente
Il materiale per realizzare il nostro misuratore di UV con display è formato da:
Schema dei collegamenti
Rispetto ai collegamenti precedenti si sono aggiunti solamente quelli relativi al bus I2C, in questo caso si sono utilizzati i pin presenti al lato della porta USB, ma possono essere utilizzati anche i pin A4 (SDA) e A5 (SCL). Più i due pin di alimentazione VCC (5V) e GND.
Programma/codice sorgente
Di seguito è riportato il codice sorgente Arduino per la lettura del Sensore UV GUVA-S12SD.
In questo caso utilizzando un display, occorre utilizzare alcune librerie. Troverete tutte le informazioni nell’articolo Display OLED 0.96″ 128×64 -SSD1306
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | /* sensore-GUVA-S12SD_display.ino Lo sketch misura la tensione misurata dal sensore GUVA-S12SD, lo trasforma nel'indice UV e lo mostra sul display */ #include <Wire.h> #include <Adafruit_SSD1306.h> // OLED display wire address #define OLED_ADDR 0x3C #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET 1 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); int UV_index; String quality = ""; void setup() { Serial.begin(9600); // initialize and clear display display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); display.display(); delay(2000); display.clearDisplay(); } void loop() { float sensorVoltage; float sensorValue; sensorValue = analogRead(A0); sensorVoltage = sensorValue / 1024 * 3.3; //Trasmissione dati monitor seriale Serial.print("sensor reading = "); Serial.print(sensorValue); Serial.println(""); Serial.print("sensor voltage = "); Serial.print(sensorVoltage); Serial.println(" V"); //Scrittura dati su display int UV_index = sensorVoltage / 0.1; //condition for UV state if (UV_index <= 2) { quality = " BASSO "; } else if (UV_index > 2 && UV_index <= 5) { quality = " MODERATO "; } else if (UV_index > 5 && UV_index <= 7) { quality = " ALTO "; } else if (UV_index > 7 && UV_index <= 10) { quality = "MOLTO ALTO"; } else { quality = " ESTREMO "; } display.setTextColor(WHITE); display.setCursor(5, 0); display.setTextSize(2); display.println("Indice UV"); display.setCursor(50, 20); display.setTextSize(3); display.print(UV_index); display.setTextSize(2); display.setCursor(0, 50); display.println(quality); display.display(); delay(1000); display.clearDisplay(); } |