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
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.
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(); } |