Il controllo della tensione di backup su un RTC consuma la batteria di backup?


8

Sto lavorando a un progetto ATMega che manterrà il tempo e sto provando a farlo in modo da avere un'opzione di RTC (time millis () basati su software), DS1307 o DS3231 (ChronoDot).

Al massimo, quello che vorrei fare è avere intestazioni per un ChronoDot disponibili per la saldatura e quindi in qualche modo nel software rilevare se ChronoDot è collegato e passare a usarlo. In genere sarebbe abbastanza facile verificare che sia presente il DS1307 o DS3231 poiché utilizzano lo stesso registro I2C, ma dopo quel controllo iniziale si discostano un po 'l'uno dall'altro e quest'ultimo ha più funzionalità. Quindi voglio ancora determinare quale è collegato. In generale, ho in programma di avere un posto direttamente a bordo per saldare nel DS1307 come opzione predefinita e il supporto DS3231 sarebbe con un ChronoDot completo solo tramite doppie intestazioni a 4 pin. ChronoDot si adatterebbe sostanzialmente al punto in cui normalmente si collocherebbe il DS1307 (in questo caso non verrebbe popolato). Il motivo principale per cui mi sto concentrando su ChronoDot è che è ' è popolare, facile da acquisire e non richiede saldatura SMD per l'utente finale (questo se per un kit). Quindi, ecco cosa sto pensando ...

Sia il DS1307 che il DS3231 hanno una linea Vbat sul chip, ma non è davvero necessario per nulla. Tuttavia, ChronoDot ha un pin VBat effettivo sulla scheda di breakout. Potrei forse collegare solo Vbat dall'intestazione ChronoDot e non il DS1307 e collegarlo a un pin di ingresso digitale sul mio ATMega. Ma quel pin di input è stato messo a terra da un resistore (non sei sicuro di quale valore ... forse 4.7k?). Se la mia teoria EE è corretta posso quindi leggere quel pin e se ottengo un minimo, non c'è cronografo, ma se ottengo un alto, c'è.

Qualcosa come questo:

schematico

simula questo circuito - Schema creato usando CircuitLab

La mia domanda principale qui è se farlo finirà per scaricare la batteria di backup sull'RTC? Normalmente non verrebbe assorbita corrente dalla batteria di backup mentre l'alimentazione principale, 5 V, viene fornita, ma collegandola a un ingresso digitale la assorbirebbe sempre dalla batteria? Oppure, c'è una modalità in cui avrei bisogno di inserire il pin dopo averlo letto per "disconnetterlo", per così dire? So che potrei cambiarlo in output, ma credo che se fosse impostato come output e basso avrei fondamentalmente messo a terra la batteria.

Comunque, i miei corsi EE erano molto tempo fa. Qualsiasi aiuto sulla teoria qui sarebbe apprezzato.

Risposte:


8

Prosciugherai sicuramente la batteria attraverso la resistenza. La quantità di corrente che assorbirai sarà regolata dalla legge di Ohm: I = V / R. Supponiamo che la tensione della batteria sia di 3 V (cioè il solito cronografo Vbat). Con una resistenza da 4,7 kOhm disegnerai continuamente 3/4700 = 638 microampere. Se lo rendi un resistore da 1 MOhm, disegna invece 3/1000000 = 3 microampere. E se lo rendi un resistore da 10 MOhm, disegna invece 3 / 1e7 = 300 nanoamp.

Maggiore è il resistore di valore che scegli, minore sarà la corrente che assorbirai continuamente, ma maggiore sarà il tempo necessario alla transizione del tuo pin digitale (pensa alla costante temporale R * C governata dalla resistenza e dalla capacità dei pin e delle tracce). Finché aspetti abbastanza a lungo (o ricontrollare periodicamente) dopo l'avvio, dovresti essere OK con un resistore da 10 MOhm. Teoricamente, potresti raccogliere più rumore con un valore maggiore (dato che inizia a sembrare sempre più un circuito aperto), ma penso che andrà tutto bene. Potrei anche considerare di salire a 100 MOhm.

Un tipico CR1632 ha 130 milliamp-ora (mAh) di energia immagazzinata al suo interno e forse l'80% di quella è vita utile, quindi chiamiamolo semplicemente 100 mAh per facilità di calcolo. Una stima approssimativa della durata della batteria è quindi milliamp-ore / milliampere in meno.

  • Con la tua resistenza da 4,7 kOhm che è 100 / .638 = 156 ore = 6,5 giorni
  • Con un resistore da 1 MOhm che è 100 / 0,003 = 33333 ore = 3,8 anni
  • Con una resistenza da 10 MOhm che è 100 / 0.0003 = 333333 ore = 38 anni

Questi sono numeri con limite superiore che presuppongono che il resto del sistema non sia alimentato. Rappresentano la durata del sistema quando è spento e la batteria viene semplicemente scaricata attraverso la resistenza. Ci sono anche molti effetti del secondo ordine che non vengono presi in considerazione (decadimento della tensione, chimica della perdita della batteria interna, ecc.). È improbabile che il resistore sia il tuo problema più grande a seconda della durata che speri di raggiungere.


Duh ... non riesco a credere di aver dimenticato di notare il fatto che stavo mettendo a terra direttamente la batteria: P Qualche suggerimento su un modo diverso di farlo?
Adam Haile,

Penso che il tuo approccio vada bene, dato che un resistore abbastanza grande la corrente di dispersione non influirà in modo significativo sulla durata della batteria, aggiornerò con un po 'più di matematica.
Vicatcu,

1
Upvote: rispondere alla domanda principale. @AdamHaile una tecnica che potresti trovare utile: i voltmetri digitali usano un FET che presenta un equivalente di drain insignificante di un resistore in ordini o MOhm.
shimofuri,

1
@AdamHaile una cosa veloce ... Ho notato il tuo commento che il tuo sistema è un 5V in un altro commento. Fai attenzione al fatto che la tua soglia di ingresso di tensione digitale sia sufficientemente alta per essere registrata con una batteria scarica (probabilmente fino a circa 2 V per un CR1632) - controlla la scheda
tecnica del

1

Praticamente qualsiasi di questi schemi di misurazione che coinvolgono resistori, se lasciati collegati permanentemente, provocherà un assorbimento di corrente inaccettabile e una riduzione della durata della piccola batteria al litio che alimenta questi dispositivi.

La soluzione quindi è che il circuito di misurazione assorba corrente solo brevemente ad intervalli rari, quando si sta effettivamente effettuando una misurazione.

Per un test digitale, questo potrebbe essere facile come usare un pulldown interno configurabile via software e configurarlo come pulldown solo per un breve periodo di tempo che circonda il test. Tuttavia, sarà necessario esaminare le possibili complicazioni di avere tensione sul pin quando l'MCU che esegue la misurazione non è alimentato / in modalità di sospensione.

Una misurazione analogica diventerebbe più complicata, ma potrebbero essere applicate idee simili. Ad esempio, è possibile collegare il resistore inferiore di un partitore di tensione (ad alta impedenza rispetto agli I / O) a un pin di uscita e abbassarlo solo per un tempo che circonda la misurazione. Oppure potresti anche essere in grado di costruire un circuito RC con un piccolo condensatore a bassa perdita e un singolo pin I / O che potresti guidare basso come uscita, quindi configurare come ingresso analogico e misurare la tensione dopo un certo periodo di tempo. Se la tensione di soglia digitale del dispositivo è coerente (attenzione alla temperatura!), Puoi anche fare una misurazione analogica con un ingresso digitale in questo modo, misurando il tempo impiegato dal condensatore per caricare la tensione di soglia.


Hmmm ... Vorrei poter fare il pull-down interno, ma purtroppo ci sono solo resistenze pull-up interne. Potrei provare a complicare troppo le cose. Un pad di saldatura che deve essere colmato per utilizzare una modalità o l'altra sarebbe probabilmente accettabile.
Adam Haile,

È possibile creare il proprio pulldown configurabile via software con una resistenza su un altro pin I / O. Oppure puoi usare l'idea del circuito circuitale RC, guidando lo stesso pin che dovrai riconfigurare come input per misurare.
Chris Stratton,

In realtà, usare un pull-down interno è una pessima idea. I pin di I / O sono generalmente collegati a Vdd e GND con diodi per evitare che la tensione dei pin si allontani dalla tensione di alimentazione. Quando il chip non è alimentato, il pin sarà sostanzialmente legato a GND con due diodi paralleli e l'applicazione di qualsiasi tensione oltre la tensione di soglia dei diodi comporterà un flusso di corrente molto grande. Un'idea migliore sarebbe quella di utilizzare un transistor serie PMOS il cui gate è controllato a terra da un transistor NMOS. Ciò minimizzerà le perdite quando il microcontrollore non è alimentato.
alex.forencich,

1

Il DS3231 ha una temperatura interna che puoi leggere. Potresti emettere un comando su I2C per leggere la temperatura, se hai una risposta hai il DS3231, se non hai il DS1307.


1
Non credo che questo risponda alla domanda in alcun modo.
shimofuri,

Penso di si. Adam nell'OP vuole determinare se un DS3231 o DS1307 è collegato al suo circuito. Stava pensando di provare a farlo con il pin vbat. Sto suggerendo di farlo vedendo se il dispositivo restituirà la temperatura. Mi sembra che dovrebbe funzionare bene.
Scott Goldthwaite,

Penso che questo affronti la domanda: non la domanda che è stata posta, ma l'affermazione del problema sottostante. Interessante. Otterrebbe il mio voto se rafforzato un po 'e con riferimenti aggiunti.
Anindo Ghosh,

Nella scheda tecnica Maxim vedere la Figura 1 a pagina 11. Mostra i registri (11 e 12) per la temperatura interna.
Scott Goldthwaite,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.