Home Digital WorldArduino #004 – Calibrated LDR (Light Dependant Resistor)

#004 – Calibrated LDR (Light Dependant Resistor)

by Psydis
Calibrated LDR

Il piccolo progetto “Calibrated LDR” nasce per ampliare le mie conoscenze sui resistori come sensori e, nel contempo, introdurre i metodi analogRead negli sketch di Arduino. L’idea era quella di avere una piccola form con cui fare la calibrazione del fotoresistore, dando modo successivamente ad Arduino di lavorare in modo indipendente in base a tre parametri.  Stabilito il minimo di luce di quell’ambiente, e successivamente il suo massimo, l’algoritmo in C# calcola ed invia le tre soglie per cui Arduino accenderà i tre led. Quando la luce massima cala si accende quello bianco, quando cala ulteriormente si accende anche quello giallo e, superata l’ultima soglia che volge al buio, si accende anche il rosso. Tornando a luce piena tutto si spegne, variandola dinamicamente i led seguono l’andamento con un ritardo lievissimo.

Tralasciando l’ormai assodato circuito per i led, per il Calibrated LDR occorre un partitore di tensione che mi permetta di prelevare un valore ad un capo del fotoresistore tramite il pin A0. Nel mio caso è stata utilizzata una resistenza di 100KΩ che mediamente mi ha dato valori oscillanti tra 5 (resistenza minima per forti luci) e 496 (resistenza massimo per buio) rispetto al 1023 massimo ricavabile tramite il pin di Arduino. La tensione applicata al circuito è stata presa direttamente dal 5 V della scheda.

Normalmente per fare questa calibrazione occorrono due sketch diversi, uno per ricavare i dati ed uno per farlo funzionare, costringendo l’operatore a caricare il primo, prendere i dati, caricare il secondo immettendo le soglie scelte. Usando l’interfaccia sviluppata, bastano tre pulsanti nella form per rendere autonomo Arduino. Infatti se dopo la calibrazione stacco la seriale, a patto di non perdere l’alimentazione il programma funzionerà perfettamente finché Arduino non viene spento o resettato.

Lo sketch è un piccolo riciclo di quello dei led dove, una volta ricavate le tre soglie, si entra in un loop infinito che permetterà l’accensione e spegnimento dinamico dei led in base ai lux dell’ambiente.

/*
Author: Andrea Bonvissuto
*/

        //Valori di Calibrazione
        if (Command == 0)
        {
            for( int i=0; i<10 ;i++)
            {
              light = analogRead(A0);
            }

            light = Serial.read();
        }

        //Gestione Soglie
        if (Command == 1)
        {
            int white = Serial.read();
            white *= 4;

            int yellow = Serial.read();
            yellow *= 4;
  
            int red = Serial.read();
            red *= 4;

            photores(white, yellow, red);
        }

Per la cailbrazione minima ho coperto completamente il fotoresistore per qualche secondo al fine di alzare il più possibile il valore di buio, mentre per la luce massima mi sono avvalso di una piccola lampada led, per avere un buono scarto ed osservare meglio il comportamento dell’algoritmo con soglie ampie.

La form è semplice ed essenziale, ma il risultato finale con soli tre pulsanti è interessante. Semplicemente si recupera il valore minimo di buio, quello massimo per la luce e basta premere Start per rendere Arduino una specie di Crepuscolare. Per scelta ho aggiunto i valori di soglia nella form, così da analizzare meglio i dati e capirne la coerenza.

L’interfacciamento è stato relativamente semplice, alla fine il problema è sempre e solo rendere compatibili i dati sulla seriale tra C# e C tramite qualche cast per non stare a creare metodi inutili per esperimenti veloci. Ho infatti utilizzato i byte, riducendo proporzionalmente i valori oltre il 255 altrimenti non rappresentabili. Importante supporto, per non spendere tempo, le due classi implementate precedentemente per la porta seriale e i led.

Intanto Claudio Capitani mi ha recapitato un insperato pacchetto che entrerà a far parte della dotazione studio dei componenti e segnali elettronici, un piccolo oscilloscopio portatile con batteria al litio integrata e ben due sonde 1x/10x: D602 Yiru. Quindi proprio a ridosso della pubblicazione del video ho potuto anche controllare l’andamento delle tensioni variabili ai capi del Calibrated LDR da pochi mV fino a 1,3V osservando i picchi quando, di colpo, viene spenta la luce o quando se ne applica una molto forte.

Vi ricordo sempre che, se siete interessati ad un buon kit di partenza, delle opzioni interessanti potrebbero essere:

    • Uno di questi Elegoo Starter Kit (testati e compatibili con l’IDE senza flashare il boot) con qualche sensore ed attuatore sfizioso

  • Se invece adorate i led di tanti colori non perdetevi questo sfizioso set:

Se inoltre volete seguirmi in questa pazzia qui o su youtube, vi aspetto!!

You may also like

Leave a Comment


Il periodo di verifica reCAPTCHA è scaduto. Ricaricare la pagina.