Oggi ti racconto come puoi misurare l’intensità della luce con una semplice fotoresistenza, arduino ed una resistenza di 50KΩ o simile.
Le fotoresistenze ( o fotoresistori ) sono resistenze composte da uno strato semiconduttore che reagisce alla radiazione luminosa, sia quest’ultima emessa dal sole o da altra fonte luminosa.
Il funzionamento di una fotoresistenza, se già non lo conosci, è semplice varia il valore da 0Ω alla sua resistenza massima 10,50,100KΩ, in base al tipo di fotoresistenza, quando passa dalla condizione di illuminazione piena a buio.
In pratica se la luce è sufficentemente forte il suo valore in ohm è 0, man mano che la luce diminuisce il suo valore aumenta fino alla resistenza massima.
Alcuni modelli, come la LDR 2-20KΩ o la LDR 20-50KΩ, dopo 10 secondi di buio arrivano a livelli di resistenza molto elevati, quasi una interruzione di continuità:
e la LDR 20-50 Kohm:
Wikipedia riporta (http://it.wikipedia.org/wiki/Fotoresistenza):
La fotoresistenza è un componente elettronico la cui resistenza è inversamente proporzionale alla quantità di luce che lo colpisce. Si comporta come un tradizionale resistore, ma il suo valore in ohm diminuisce mano a mano che aumenta l’intensità della luce che la colpisce. 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 dipotenziometro attuabile tramite la luce anziché tramite forze meccaniche o segnali elettrici.
Ma come puoi sfruttare tutte queste informazioni con Arduino?
Prima di tutto ti occorre realizzare un partitore di tensione:
il principio di funzionamento è: due resistenze, di eguale valore, collegate come nello schema dividono in parti uguali la tensione erogata dalla batteria, nel punto B misurerai Volt/2, in questa configurazione R1 ed R2 devono essere identiche.
Passando al tuo progetto con la fotoresistenza se al posto di R1 ci metti la LDR 20-50Kohm e al posto di R2 una resistenza fissa da 50Kohm hai realizzato un partitore di tensione in cui uno dei due elementi è variabile, e varia in funzione della luce che lo irradia.
Quando la fotoresistenza è colpita dalla massima luce al punto B troverai esattamente V+ ( lavorando con arduino diremo +5v) quando ci sarà buio al punto B avrai V/2 = 5v / 2 = 2,5v.
Materiale necessario:
1 arduino Uno
1 fotoresistenza da 50Kohm ( LDR 20-50Kohm)
1 resistenza da 50Kohm
1 breadboard
3 cavetti per breadboard
Collega tutto come nello schema sopra dove al posto della resistenza R1 ci metti la fotoresistenza, al posto di R2 la resistenza fissa da 50Kohm e colleghi A al +5v di arduino, B al pin A0 ( analogic input 0 di arduino ) e il negativo alla massa di Arduino.
Il risultato non dovrebbe essere simile a questo, io non avendo la resistenza fissa da 50Kohm ho dovuto realizzarla mettendo in serie 5 resistenze da 10Kohm:
Il risultato dal punto di vista elettrico cambia pochissimo e puoi considerare valido il codice con cui testerai il tuo circuito:
lo sketch
/* * Autore: Mauro Alfieri * * Web: mauroalfieri.it * Tw: @mauroalfieri */ int analogInPin = A0; int sensorValue = 0; void setup() { Serial.begin(9600); pinMode( analogInPin, INPUT); } void loop() { sensorValue = analogRead(analogInPin); Serial.print("sensor = " ); Serial.println(sensorValue); delay(1000); }
leggendolo linea per linea:
linea 08: imposta una variabile di tipo integer a cui assegni il pin analogico a cui hai collegato il punto B ( vedi schema sopra);
linea 09: imposta una variabile di tipo inger in cui memorizzerai il valore del sensore ad ogni loop();
linea 12: inizializza la comunicazione seriale tra Arduino e il computer a 9600 baud;
linea 13: indica ad arduino che vuoi utilizzare il pin analogInPin come INPUT, questo passaggio potresti anche evitarlo in quanto i pin analogici in Arduino Uno sono solo utilizzabili come INPUT;
linea 17: con la funzione analogRead(pin) leggi il segnale presente sul pin A0 e assegnalo alla variabile definita alla linea 09;
linea 19: scrivi sul monitor seriale la frase “sensor = “;
linea 20: scrivi sul monitor seriale il valore letto dal pin A0, la differenza tra il metodo print ed il metodo println è che quest’ultimo dopo aver scritto il contenuto sul monitor seriale invia anche un segnale di “a capo” che sposta il cursore sulla linea successiva del monitor seriale;
linea 22: attendi un secondo ( 1000 millisecondi ) prima di eseguire un nuovo loop();
Come funziona e cosa leggerai sul monitor seriale
Dopo aver uplodato lo sketch su Arduino, apri il monitor seriale e punta una fonte di luce verso la fotoresistenza, il valore che leggi è il seguente: sensor = 1023 o poco meno, questo perchè con la radiazione luminosa massima la resistenza è 0ohm e il valore convertito dall’ADC di arduino è corrispondente al +5v ossia il valore in bit massimo 1023.
Se sposti la fonte luminosa o copri la fotoresistenza in modo che percepisca il buio vedrai che il valore rilavato si abbassa fino a raggiungere circa 512, ossia 1024/2 ( vedi descrizione del partitore sopra ), ecco i valori che ho letto io:
sensor = 1023 sensor = 1018 sensor = 1007 sensor = 994 sensor = 950 sensor = 972 sensor = 938 sensor = 937 sensor = 1007 sensor = 516
Ti invito ad eseguire anche quest’altro test: lascia che il buio sulla fotoresistenza vi resti per più di 10 secondi e dovresti osservare qualcosa di simile:
sensor = 516 sensor = 490 sensor = 458 sensor = 411 sensor = 387 sensor = 345 sensor = 298 sensor = 233 sensor = 197 sensor = 140 sensor = 103 sensor = 96
questo accade perché il valore della fotoresistenza dopo 10 secondi di buio diventa elevatissimo ( 10Mohm ) di fatto simulando quasi la completa interruzione del circuito.
Il video
non ho realizzato alcun video del progetto ma ho trovato chi ha realizzato un interruttore crepscolare, senza arduino, tu potresti provare a farne uno con Arduino.
Buona sperimentazione.
Prima di inserire un commento, per favore, leggi il regolamento
51 pings
Skip to comment form
[…] A5: fotoresistenza, lo schema mostra la scelta di utilizzarla come primo elemento di un partitore resistivo, se vuoi saperne di più leggi il mio articolo: Tutorial: Fotoresistenze e Arduino; […]
[…] ecc… ) un uso del partitore di resistenze con le fotoresistenze lo hai visto in questo articolo in cui il circuito è composto da R1 fisso ed R2 la fotoresistenza o più in generale la […]
[…] (da https://www.mauroalfieri.it/elettronica/fotoresistenze-e-arduino.html) […]
[…] uguale a quello massimo della fotoresistenza. Poi collegate la resistenza a GND. Vi rimando a questo schema da cui io stesso ho […]