Allora il problema forse è metà hardware e metà software.
Vorrei che arduino leggesse l' intensità di corrente (continua 12/14v 20A Max) e se questa è 0 si mettesse a dormire (sleep mode) mentre se > 0 si risvegliasse dal torpore per riprendere a funzionare.
Per il sensore stavo leggendo questo sito: http://www.lucadentella.it/2011/11/29/sensore-di-corrente-con-arduino/
A naso da quello che leggo devo usare gli interrupt, ma come posso utilizare i pin digitali 2 e 3 con quel sensore che è analogico? Esistono altri sensori utili allo scopo?
Gli interrupt sui pin leggono i cambi di stato, quindi low, high oppure una transizione tra uno di questi 2 stati. Non puoi attaccare un interrupt ad una lettura analogica, anche perché l'ADC funziona col clock di sistema e negli stati di sleep più profondi il clock di sistema viene bloccato, fermando tutte le periferiche.
Potresti usare però un op-amp in modalità comparazione. Sull'ingresso non invertente fai confluire il segnale del sensore, sull'invertente il segnale oltre il quale attivare l'interrupt. In questo modo, non appena il sensore dà un segnale sopra quello di soglia, l'op-amp ti spedisce un segnale alto verso un pin dell'Arduino ed attivi così il tuo interrupt.
Gli interrupt sui pin leggono i cambi di stato, quindi low, high oppure una transizione tra uno di questi 2 stati. Non puoi attaccare un interrupt ad una lettura analogica, anche perché l'ADC funziona col clock di sistema e negli stati di sleep più profondi il clock di sistema viene bloccato, fermando tutte le periferiche.
Potresti usare però un op-amp in modalità comparazione. Sull'ingresso non invertente fai confluire il segnale del sensore, sull'invertente il segnale oltre il quale attivare l'interrupt. In questo modo, non appena il sensore dà un segnale sopra quello di soglia, l'op-amp ti spedisce un segnale alto verso un pin dell'Arduino ed attivi così il tuo interrupt.
Sacrosanto . Aggiungo che la tensione di riferimento da applicare sull'ingresso invertente la potresti ottenere con un partitore resistivo collegato in questo modo +5->res 10K->trimmer 1K pin1 , trimmer 1k pin3-> res 10K->gnd....prelevando dal cursore hai la possibilità di regolare il valore di soglia da circa 2,4V a circa 2,6V , userei però un trimmer miltigiro per fare una migliore regolazione......Considera però che il tuo sensore ha una uscita pari a 2,5volt ed aumenta (nel caso di correnti positive)di 100mV per ogni ampere di assorbimento quindi se ti basta svegliare il micro con un assorbimento intorno all'ampere potresti seguire questa strada . Bisognerebbe capire quanta corrente assorbe il tuo circuito in varie situazioni ed individuare il minor assorbimento e ragionare su quello.
Grazie a tutti per le risposte.
Il minimo che assorbe è un altro arduino se non addirittura un altro atmega328 quindi pochissimo, poi ci saranno anche altre utenza ma se l'atmega non deve fare nulla allora solo quello che frulla.
Scusa questo non mi è chiaro:
Potresti farmi uno disegno al volo? perchè 2 partitori?
tonid:
Sacrosanto . Aggiungo che la tensione di riferimento da applicare sull'ingresso invertente la potresti ottenere con un partitore resistivo collegato in questo modo +5->res 10K->trimmer 1K pin1 , trimmer 1k pin3-> res 10K->gnd....
Il partitore è uno solo ed è composto da una R da 10K ,un trimmer da 1K ed infine da un'altra R da 10K.....Il solito partitore ma nel mezzo delle due resistenze ci metti il trimmer da 1K che ti permette di fare una regolazione della tensione di riferimento
+5v -------------
|
10K R
|
| cursore trimmer multigiri
1K T <---------------------------------- tensione out da ca. 2,4volt a 2,6volt
| | all'ingresso invertente
| ____
10K R ____ condensatore
| |
GND GND
Guarda un po se capisci,io mi sono impegnato 8)