In questo progetto con Arduino UNO realizzeremo un sensore crepuscolare. Il suo funzionamento è molto semplice, infatti non è altro che un interruttore che attiva un circuito quando la luce che colpisce l’elemento fotosensibile (fotoresistenza) va al di sotto di una certa soglia, che imposteremo attraverso il software.
Nel nostro progetto faremo accendere semplicemente un LED collegato ad uno dei piedini digitali di Arduino, ma potremmo benissimo pilotare una lampada a 220V o un qualsiasi altro apparecchio, ovviamente opportunamente pilotato con un circuito di potenza o relè.
Componenti utilizzati:
- Arduino Uno
- LED Rosso
- Fotoresistenza
- Resistenza: 330Ω, 10kΩ
La fotoresistenza
Le fotoresistenze sono trasduttori passivi i quali variano la loro resistenza al variare dell’intensità luminosa che li investe. Questi componenti permettono variazioni della loro resistenza da decine di ohm alla luce a decine di Megaohm al buio. Ciò comporta che la corrente elettrica che transita attraverso tale componente è proporzionale all’intensità di una sorgente luminosa. In tale maniera si realizza una sorta di potenziometro attuabile tramite la luce anziché tramite forze meccaniche o segnali elettrici.
Teoria del funzionamento
Il sensore crepuscolare con Arduino si basa sul principio del partitore di tensione, in cui uno dei due elementi è variabile in funzione della luce assorbita. La formula che regola il partitore di tensione è la seguente:
Da questa formula ricaviamo che, se la fotoresistenza assorbe luce, il valore della resistenza è basso, per cui la tensione Vout è alta, inversamente al buio la resistenza aumenta e di conseguenza la Vout diminuisce.
Realizzazione del circuito
Passiamo alla realizzazione del sensore crepuscolare con Arduino su breadboard:
Analizzando questo semplice schema vediamo che il LED è stato collegato con una resistenza di 330Ω al pin numero 6 della scheda Arduino, questa resistenza limiterà la corrente che scorrerà in esso. Per conoscere il valore preciso della resistenza da inserire in serie al diodo LED vi rimandiamo alla seguente lezione. Mentre il partitore è stato realizzato con la fotoresistenza e una resistenza di 10KΩ.
Programma
const int sensorValue = 350; //imposta il valore del sensore
int ledPin = 5; // connettere il LED al pin digitale 5
void setup(){ // esegui una sola volta quando il disegno inizia
pinMode(ledPin,OUTPUT); // imposta il piedino 5 come uscita
}
void loop() {//esegui più volte
int sensor = analogRead(A0); // imposta il sensore
if (sensor > sensorValue) { // registra il valore max del sensore
digitalWrite(ledPin,LOW); // imposta il piedino 5 a livello basso
delay(1000); //attende 1 secondo
}else{
digitalWrite(ledPin,HIGH); // imposta il piedino 5 a livello alto
delay(1000); // attende 1 secondo
}
}
Il programma presenta un solo blocco di istruzioni di tipo if-else facilmente interpretabile grazie i commenti che seguono le istruzioni.