Attivare circuito ogni giorno a una certa ora

Salve a tutti :slight_smile:
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) :wink:

Guglielmo

P.S. : Disponibile già pronto su breakout board QUI

Allora meglio questo --> http://www.robot-italy.com/it/mini-rtc-module.html :grin:

EDIT:
I pin dovrebbero essere: Vcc, SDA, SCL, NC, GND.
NC = non connesso.

Non trovo il datasheet del modulo da nessuna parte, ma avendo il modulo in mano basterebbe guardare le piste e i pin dal datasheet del micro.

PaoloP:
Allora meglio questo --> http://www.robot-italy.com/it/mini-rtc-module.html :grin:

Ottimo, costa meno ed è disponibile in Italia XD

Guglielmo

il tutto e' corretto se codesto "circuito" puo' essere messo in sleep. Ma ne dubito
Forse e' meglio gestire l'alimentazione, come suggeriva anche lui

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).

Brunello:
il tutto e' corretto se codesto "circuito" puo' essere messo in sleep.

Si, ma ... avete letto gli assorbimenti ??? parliamo di µA ... XD

Guglielmo

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 :slight_smile:

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 :frowning:

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 :slight_smile: 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.

Guglielmo

Inoltre quel modulo non ha il pin interrupt disponibile. Devi collegarti al piedino del micro.
Oppure passare a moduli più completi ma più costosi.

PaoloP:
Inoltre quel modulo non ha il pin interrupt disponibile.

La versione Adafruit, di cui ho dato il link in precedenza, lo rende disponibile :wink:

Guglielmo

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 ?

grazie ancora

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.

Guglielmo

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?

Ora vado a vedermi le guide di questa schedina.. :slight_smile:

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. :wink:

Guglielmo

Il PCF8563 ha anch'esso il pin INT e forse può servire meglio allo scopo.
Questo RTC ha la possibilità di far attivare il pin INT sia dal timer che dall'allarme interni.
Nel caso dell'uso abbinato all'allarme il pin INT resta attivo finché non viene ripulito il relativo bit interno:

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.