Salve a tutti, vorrei sapere se esiste un comando per lo sketch di arduino che permette di sapere se la batteria tampone installata sul mio RTC DS3231 è funzionante o scarica.
Se non possibile come posso aggiornare la data dell'RTC senza collegarlo ad un computer tenendo conto che salvo l'orario e la data dell'ultimo evento sulla EEPROM?
Dovrei creare un sistema in grado di registrare alcuni eventi su una SD stile scatola nera, andando ad associare ad ogni evento la causa e l'orario di avvenimento.
Volevo fare in modo che il sistema funzionasse unicamente con data e ora aggiornate (batteria funzionante). In caso in cui non siano aggiornate (batteria scarica o guasta) il sistema deve restituire un errore.
Se esiste un metodo per capire se la batteria tampone funziona renderebbe le cose più semplici poichè, se non dovesse funzionare, lo sketch deve bloccarsi in uno stato d'allarme segnalandomi il problema per evitare che ad ogni evento vengano associate date e orari errati.
Grazie mille, spero di essermi spiegato il meglio possibile.
Dovrebbe esserci un pin batt sull'rtc che restituisce la tensione della batteria.
Credo che leggendo quello e facendo qualche proporzione si riesca a capire se la batteria è scarica.
No, il pin VBAT è il pin dove si collega la batteria e, l'unico modo per sapere la sua tensione, è misurarla con un pin analogico di Arduino, ricordando che la curva di caduta delle batterie a bottone (litio), tipicamente usate per gli RTC, è piuttosto improvvisa ...
Una batteria al litio puó durare anche 10 anni. Se la colleghi ad Arduino per misurare la tensione la scaricherai molto prima. Se vuoi essere sicuro che la batteria tempone non si esaurirá mai allora cambiala ogni 2 anni a molulo alimantato.
Dal datasheet: https://datasheets.maximintegrated.com/en/ds/DS3231.pdf
Status Register (0Fh) Bit 7:
Oscillator Stop Flag (OSF). A logic 1 in this bit indi-cates that the oscillator either is stopped or was stopped for some period and may be used to judge the validity of the timekeeping data. This bit is set to logic 1 any time that the oscillator stops. The following are examples of conditions that can cause the OSF bit to be set:
The first time power is applied.
The voltages present on both VCC and VBAT are insuf-ficient to support oscillation.
The EOSC bit is turned off in battery-backed mode.
External influences on the crystal (i.e., noise, leakage, etc.)
Non so se la libraria che usi sopporta la lettura di questo bit. Probabilmente devi programmarlo tu a mano.
l'impedenza d'ingrsso del ADC di Arduino è estremamente elevata e quindi l'assorbimento trascurabiile
quel bit che indichi serve a poco perché NON indica se VBAT è bassa, ma segnala che l'oscillatore NON è stato attivato e questo accade per vari motivi, tra i quali il fatto che VBAT sia bassa e che contemporaneamente manchi VCC, caso in cui ... il sistema è spento