Svegliare arduino (sleep) con una fotoresistenza

Ciao ragazzi!

Ho necessità di svegliare arduino dallo sleep con una fotoresistenza… spiego meglio:

Ho un plastico con dei LED (una 20ina) che si dovranno accendere quando la fotoresistenza rileva un valore oltre la soglia che imposto io da arduino…

Arduino però consuma 50mA, e tende a scaricare ugualmente la batteria…
Ho letto di questa modalità sleep che riesce a portare il consumo fino a livelli bassisimi (con l’opzione POWER_SAVE), ma non riesco a capire come farlo svegliare solo quando la fotoresistenza supera un certo valore che imposto.

Potreste darmi una mano?

Grazie :slight_smile:

Premesso che non sono molto pratico di queste cose, con un amplificatore operazionale dovresti poter realizzare un "banale" comparatore di soglia per generare un 1 logico quando la luce supera la soglia, scatenando in questo modo un interrupt. Però, a questo punto, potresti usare quel segnale con un relé per accendere direttamente i led, eliminando la necessità di Arduino.

Comunque aspetta qualcuno più esperto di me, io manco saprei dirti come realizzarlo, nella pratica :D. Prova a googlare "opamp comparator".

Esistono anche comparatori veri e propri, vedi: How to Build a Voltage Comparator Circuit with an LM393

puoi metterlo a dormire tenendo però sveglio il watchdog, che in pratica è un timer che ogni tot tempo (da millisecondi a 8 secondi mi pare) risveglia il micro. Ad ogni risveglio potresti leggere la fotoresistenza e decidere se è ora di fare qualcosa oppure di tornare a dormire. Se trovo qualche esempio te lo posto

edit: se usi tutta la scheda Arduino hai comunque del consumo dovuto a regolatori di tensione ecc, il watchdog si presta bene all'utilizzo diretto sulla batteria e con l'atmega (o altro) in modalità standalone

Si, puoi anche collegare una fotoresistenza ad Arduino, in questo modo

e lavorare con gli Interrupt per svegliarlo. Ma sostanzialmente, come ti hanno già detto, il consumo di Arduino cambia di poco, potrai risparmiare 10-12mA

Brunello:
Si, puoi anche collegare una fotoresistenza ad Arduino, in questo modo

e lavorare con gli Interrupt per svegliarlo. Ma sostanzialmente, come ti hanno già detto, il consumo di Arduino cambia di poco, potrai risparmiare 10-12mA

Beh direi ottima idea! :slight_smile: Però a livello di codice come si fa? Non ho mai fatto una cosa simile! :\

doppiozero:
puoi metterlo a dormire tenendo però sveglio il watchdog, che in pratica è un timer che ogni tot tempo (da millisecondi a 8 secondi mi pare) risveglia il micro. Ad ogni risveglio potresti leggere la fotoresistenza e decidere se è ora di fare qualcosa oppure di tornare a dormire. Se trovo qualche esempio te lo posto

edit: se usi tutta la scheda Arduino hai comunque del consumo dovuto a regolatori di tensione ecc, il watchdog si presta bene all’utilizzo diretto sulla batteria e con l’atmega (o altro) in modalità standalone

Grazie, anche questa è un’ottima idea! Se riesci a postarmi qualche esempio sarebbe meglio, perchè non riesco a capire come fare :\ Ad ogni modo uso la board solo per programmare, poi metto atmega su pcb direttamente, quindi in teoria non ho altri consumi :slight_smile:

qua e qua

io vedo ora che ho solo esempi con gli attiny :wink:

Per ridurrre i consumi devi usare un ATmega da solo oppure un modello Arduino con poca elettronica come un Arduino PRO MINI oppure un Arduino MINI.
La resistenza che fa da partitore insieme con la fotoresistenza deve essere abbastanza grande (100kOhm) e tra entrata analogica e massa metti un condensatore da 0,1µF.

Ciao Uwe

doppiozero:
qua e qua

io vedo ora che ho solo esempi con gli attiny :wink:

Avevo trovato subito dopo averti risposto, lo stesso identico link :slight_smile:

Siccome sono più programmatore (lo faccio per mestiere) che elettronico, preferisco usare il metodo del watchdog :slight_smile:

Grazie mille :slight_smile: