Limitare i consumi di Arduino

Ciao a tutti, con Arduino UNO ed un logger shield ho creato un piccolo datalogger. Il programma ad intervalli regolari verifica l'ingresso da seriale e lo salva su SD. Ho provato a collegarlo con una batteria da 9V ma dopo circa 4 ore mi ha scaricato la batteria, da 9V a 6,8V. Volevo chiedervi se esista qualche comando che lo tenga in stand-by fino al momento di loggare, gli faccia eseguire il loop e poi di nuovo stand-by. Un delay può andare? Grazie a tutti

Puoi mettere in sleep il microcontrollore Atmega328 ma togli così solo una parte del consumo. E' tutto l'Arduino che ha componenti che consumano e che non possono essere disattivate (vedi i regolatori sulla scheda, l'altro microcontrollore ecc..). Inoltre serve un segnale per risvegliare il micro.

Intanto inizia a leggere qui, per farti un'idea di ciò di cui stiamo parlando: http://arduino.cc/playground/Learning/ArduinoSleepCode

Più facile a dirsi che a farsi :~ Domanda, se lo alimento con un alimentatore 12V 800mA è troppo? Vedo che i limiti sono da 6-20V ma non leggo nulla in merito alla corrente. Può andar bene?

non leggi limiti sulla corrente perché ogni utilizzatore assorbirà solo il necessario, e l'eccesso non è un problema. il problema è solo quando l'utilizzatore richiede di più: il generatore cercherà di fornirgli la richiesta, si scalda e brucia.

Il fatto è che in parallelo ho una stampantina seriale, non vorrei combinar guai.

bhe allora la somma dell’amperaggio usato da arduino e dalla stampante deve essere < dell’amperaggio massimo del trasformatore. diciamo che arduino consuma talmente poco rispetto ad una stampante che è come se non ci fosse e puoi stare tranquillo.

Perfetto grazie allora faccio delle prove!

Ho provato ma subito il regolatore di tensione diventa caldo... mi fido???

uhmm quanto caldo? considera che comunque stai passando da 12 a 5v, quindi che scaldi un pò è normale, il punto è se supera i 40/50° inizierei a preoccuparmi

Continua a salire e supera i 50 °C. Non mi fido molto... devo trovare un'altra soluzione. Se volessi fare in modo che lui esegua il loop una volta ogni 5 minuti, basterebbe un delay?