Salve a tutti
Allora ho un circuito che fa una certa operazione della durata di un minuto circa (loggare dei dati da un sensore). Vorrei attivare automaticamente la funzione ogni giorno alla stessa ora, tipo alle 19:00. Il problema e' che il sistema dovrebbe essere autonomo, alimentato a batteria e vorrei che durasse il piu' possibile, per evitare continui scaricamenti.
Quindi quando non in funzione il sistema dovrebbe essere completamente spento e consumare il meno possibile (idealmente zero).
Che soluzione mi consigliate?
In qualche modo poi il meccanismo dovrebbe anche spegnersi, anche qui non so bene come procedere? Magari un sistema che fornisce alimentazione al circuito per uno o due minuti mi andrebbe benissimo
Ti serve un RTC come il DS1307 o anche più preciso. Poi potresti pensare di crearti un circuito su basetta millefori utilizzando come microcontrollore un ATtiny84.
Potresti salvare i log su SD facendo funzionare tutto l'accroccio a 3.3V.
Disattivando tutte le periferiche interne dovresti andare avanti per molto tempo anche con una piccola batteria.
Dovresti giusto tenere acceso un timer per il conteggio dell'ora per la lettura e la registrazione su SD.
Mmmm ... no Paolo, gli consiglio invece un DS3231 che ha in più la gestione di ben DUE allarmi. Uno lo può programmare all'ora che gli serve e fare si che si ripeta ogni giorno.
Inoltre, l'allarme, sul DS3231 attiva un pin utilizzabile come interrupt per svegliare la MCU che così può essere messa completamente in PowerDown per limitare al massimo il consumo di corrente.
Per finire ... il DS3231 NON necessita di quarzi esterni ed è estremamente preciso (... ovviamente costa di più di un DS1307)
Guglielmo
P.S. : Disponibile già pronto su breakout board QUI
In effetti non avevo capito che lui avesse già un circuito pronto.
Allora si, meglio attivare e disattivare l'alimentazione. Gli basta il modulino RTC, un ATtiny25 , modulo relè e una batteria a 6V da moto (con uno o più diodi in serie).
Diciamo che di pronto non c'e' nulla, pero' preferivo procedere cosi' per non complicarmi la vita.
Onestamente speravo ci fosse qualcosa di pronto, da mettere in serie sull'alimentazione.. mettermi a programmare un ATtiny non rientra nelle previsioni e non ho ne l'hardware ne le conoscienze ne il tempo
A dire il vero pensavo che fosse un problema piuttosto diffuso (infondo chiunque debba effettuare misurazioni quotidiane a lungo termine si scontrera' con questo problema no?) e quindi ci fosse qualche soluzione gia' pronta
Se volessi utilizzare il Mini RTC Module come dovrei procedere? vedo che ha dentro il DS3231, quindi potrei preprogrammarlo per usare un allarme..
Se non vedo male c'e' un pin che puo' essere configurato come interrupt per l'allarme, sarebbe possibile usarlo per pilotare un transistor che da' corrente al sistema?
Se dico fesserie portate pazienza Grazie a tutti per l'aiuto!
msx:
Se non vedo male c'e' un pin che puo' essere configurato come interrupt per l'allarme, sarebbe possibile usarlo per pilotare un transistor che da' corrente al sistema?
Se leggi a pagina 12 del datasheet, troverai una parte che parla degli allarmi e, verso la fine dice :
When the RTC register values match alarm register set- tings, the corresponding Alarm Flag ‘A1F’ or ‘A2F’ bit is set to logic 1. If the corresponding Alarm Interrupt Enable ‘A1IE’ or ‘A2IE’ is also set to logic 1 and the INTCN bit is set to logic 1, the alarm condition will activate the INT/SQW signal. The match is tested on the once-per-second update of the time and date registers.
Quindi, allo scattare dell'allarme programmato, il pin INT va LOW per la durata di un secondo (... almeno così sembra) e poi torna HIGH ...
... dovrai quindi tu poi pensare a memorizzare l'impulso e tenere acceso quello che ti serve per il tempo che ti occorre.
gpb01:
Quindi, allo scattare dell'allarme programmato, il pin INT va LOW per la durata di un secondo (... almeno così sembra) e poi torna HIGH ...
... dovrai quindi tu poi pensare a memorizzare l'impulso e tenere acceso quello che ti serve per il tempo che ti occorre.
Si credo anche io che si attivi per un secondo.. Qualche idea su come tener acceso il sistema per un certo tempo dopo averlo attivato con l'alarm ?
msx:
Qualche idea su come tener acceso il sistema per un certo tempo dopo averlo attivato con l'alarm ?
Un NE555 come monostabile ? ... ma torniamo al problema dei consumi ...
Secondo me la strada ancora più "energeticamente" economica è il RTC con un AVR che metti totalmente in PowerDown e che si sveglia con l'INT solo per il tempo necessario, poi torna in PowerDown.
gpb01:
Secondo me la strada ancora più "energeticamente" economica è il RTC con un AVR che metti totalmente in PowerDown e che si sveglia con l'INT solo per il tempo necessario, poi torna in PowerDown.
Quindi un ATTiny come dicevi all'inizio? In tal caso sarebbe possibile usare una scheda arduino-compatibile, ad esempio questa, invece di dovermi programmare un ATTiny nativamente in C che non sarei assolutamente capace?
Mah ... per il poco che costa, potresti prenderti anche un Arduino Micro ...
... avresti più memoria, più I/O, più funzionalità ed ... il vantaggio di averlo totalmente integrato nel IDE di Arduino originale.
The generation of interrupts from the alarm function is controlled via bit AIE. If bit AIE is enabled, the INT pin follows the condition of bit AF. AF will remain set until cleared by the interface.
In modalità timer, l'RTC può essere configurato sia per dare un impulso sul pin INT che per dare un segnale stabile:
The interrupt may be generated as a pulsed signal every countdown period or as a permanently active signal which follows the state of TF. Bit TI_TP is used to control this mode selection.