Tutorial: Fotoresistenze e Arduino

Oggi ti racconto come puoi misurare l’intensità della luce con una semplice fotoresistenza, arduino ed una resistenza di 50KΩ o simile.

fotoresistenza arduino

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à:

LDR 2-20 Kohm

e la LDR 20-50 Kohm:

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:

schema del 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:

collegamento fotoresistenza

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

Permanent link to this article: https://www.mauroalfieri.it/elettronica/fotoresistenze-e-arduino.html

51 pings

Skip to comment form

  1. […] 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; […]

  2. […] 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 […]

  3. […] (da https://www.mauroalfieri.it/elettronica/fotoresistenze-e-arduino.html) […]

  4. […] uguale a quello massimo della fotoresistenza. Poi collegate la resistenza a GND. Vi rimando a questo schema da cui io stesso ho […]

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.