Monitoraggio della batteria a bassa corrente


13

Voglio far funzionare un microcontrollore da un lipo 1S attraverso un regolatore lineare a 3V. Devo misurare la tensione della batteria comunque. Il problema con l'uso di un divisore di tensione è che nel tempo si esaurirebbe la batteria che potrebbe avere o meno circuiti integrati di protezione. Poiché l'AVR che sto usando ha un'impedenza di ingresso consigliata non superiore a 10K, non riesco a fare divisore troppo grande neanche.

Qualcuno può suggerire una soluzione che mi consentirebbe di monitorare questa tensione senza uccidere una batteria non protetta per un paio di mesi? Il circuito potrebbe entrare in modalità di sospensione profonda per un periodo prolungato, il che significa che una soluzione di partizione di tensione consumerebbe più energia.


Alla fine ho usato la soluzione di Hanno e Andy. Grazie per tutti gli input. Sfortunatamente posso solo scegliere una risposta.

Risposte:


16

Il partitore di tensione deve unire l'MCU in modalità di sospensione profonda, quindi ... Questo può essere ottenuto con un FET del canale P (ad esempio) .... Quando l'MCU si sveglia, vorrà misurare la tensione della batteria, quindi non può fare altro che attivare un circuito formato attorno a un FET del canale P che collega la batteria + V al partitore di tensione: -

inserisci qui la descrizione dell'immagine

L'ingresso ADC è mostrato a destra e non vi sarà alcuna tensione che lo raggiunga a meno che l'MCU non abbia attivato il BC547 tramite la resistenza da 10k. Senza attivazione, il FET del canale P è spento e circuito praticamente aperto. Se puoi programmare l'MCU in modo che abbia un pull-down sul suo pin di controllo durante il sonno che dovrebbe essere, altrimenti aggiungi un altro resistore (diciamo) da 10k da quel punto a terra - questo assicura che il FET del canale P sia completamente spento.

Un piccolo avvertimento, scegliere un fet del canale P con una bassa corrente di dispersione, mentre in caso contrario ci sarà un leggero consumo della batteria, ma la maggior parte dei feti sarà inferiore a 100nA e molti nella regione di 1nA.

Un'ultima cosa - come funziona il regolatore di tensione sulla sua corrente di standby quando il micro è spento - è necessario occuparsene anche tu?


Sto usando l'MCP1802 che ha una corrente Q di 25uA, questa parte funziona perfettamente. Grazie per il suggerimento, esattamente il tipo di soluzione che stavo cercando.
s3c,

perché dovresti usare un P-Chan con transitor e non un singolo fet N-Channel?
jme

@jme - ADC e MCU sono riferiti a terra e quindi ha senso cambiare l'alimentazione di tensione più alta. Se avessi usato un dispositivo a canale N, ci sarebbe comunque uno scarico permanente attraverso la resistenza superiore e attraverso i diodi parassiti nell'MCU quando è in modalità di sospensione.
Andy aka

@Andyaka quale ID N-Fet è stato invertito in modo che il diodo fosse invertito per non consentire alla corrente di fluire verso i resistori ADC?
jme

3
@jme "Perché non utilizzare un interruttore laterale basso (ad es. N-ch FET o μC i / o pin)?" è una buona domanda Ecco perché. La tensione della batteria può essere maggiore di Vcc. Quando l'interruttore laterale basso è aperto, la tensione della batteria apparirà sul pin A / D. Ciò potrebbe causare la bruciatura dell'A / D o una perdita della batteria attraverso i diodi di protezione sul pin A / D. Discussione correlata
Nick Alexeev

2

Quando è necessario scoprire solo quando la batteria sta per esaurirsi (o dare un avviso poco prima), non è necessario misurarne direttamente la tensione. La tensione di uscita del regolatore scenderà sotto i 3 V prima che la batteria raggiunga la tensione minima. Quindi potresti misurare la tensione di alimentazione del microcontrollore.

A seconda delle sue effettive capacità, puoi farlo senza usare un divisore di tensione. Per un esempio, consultare il foglio dati ADC per un PIC12F1822, (a pagina 141): Schema a blocchi ADC

Il PIC ha un riferimento di tensione interno e può misurare il suo valore (il "buffer FVR" che va nel multiplexer). Ma può anche utilizzare la tensione di alimentazione come riferimento per le misurazioni ADC (il selettore ADPREF in alto).

Detto questo, si può semplicemente misurare il riferimento di tensione rispetto alla tensione di alimentazione e ottenere di conseguenza la tensione di alimentazione. Nel caso del 12F1822, il riferimento interno è 2.048 V e l'ADC ha una risoluzione di 10 bit. Pertanto, quando la tensione di alimentazione scende al di sotto di 3,0 V, il risultato ADC supera i 699:

UNDCreSult=1024*VionVref
UNDCreSult=1024*2.048VVSupply

Si noti che una tensione di alimentazione inferiore significa risultati ADC più elevati, poiché la tensione di ingresso e la tensione di riferimento vengono scambiate nel modo consueto. È possibile convertire questa formula per scoprire la tensione di alimentazione effettiva, dato il risultato ADC.


0

Hai davvero bisogno del regolatore lineare? Far funzionare µC a piena tensione della batteria renderà le cose molto più facili. Inoltre, il regolatore e µC consumano sempre energia, anche in modalità di risparmio energetico, scaricando continuamente la batteria. Dai un'occhiata alle schede tecniche e tienilo a mente.

Poiché l'ingresso ADC (di un comune ADC da campionamento e mantenimento, come quello in un AVR µC) affonderà la corrente solo quando si campiona effettivamente un valore, l' impedenza di ingresso bassa transitoria può essere compensata semplicemente aggiungendo un condensatore:

schematico

simula questo circuito - Schema creato usando CircuitLab

La frequenza di campionamento massima sarà ovviamente limitata in questo modo poiché il condensatore avrà bisogno di tempo per ricaricarsi attraverso il resistore di grandi dimensioni prima che venga eseguito il campionamento successivo, ma suppongo che non misurerai più di, diciamo, comunque una volta al secondo.

Il tempo necessario per ricaricare il condensatore può essere impostato variando la sua capacità e / o R1. Maggiore R1 = minore "perdita" di energia + minore max. frequenza di campionamento. Una capacità inferiore verrà caricata più rapidamente per un determinato resistore e così via.
Dovrai massimizzare il valore di R1 e potrebbe quindi essere necessario ridurre al minimo il valore di C1 per raggiungere la frequenza di campionamento desiderata.

La capacità minima dipende dalla quantità di carica che l'ADC trarrà per un campione, che a sua volta è determinato dalla capacità del buffer di campionamento dell'ADC. Per i dispositivi AVR mi sembra di ricordare che questo valore è specificato nel foglio dati. Per altri µC non posso dirlo, ma l'1 µF nel diagramma sarà probabilmente più che sufficiente in ogni caso, e può eventualmente essere ridotto di un fattore di circa 10. Le specifiche dell'ADC lo diranno.

Modificare:

Ho trovato questo nel foglio dati di Atmel per ATmega1284p. Il condensatore del buffer S&H è specificato su 14 pico -farads, quindi un paio di nano -fadad per C1 dovrebbero essere sufficienti.

Circuito di ingresso analogico dal foglio dati ATmega1284p

Vedi ad esempio la discussione qui .


Il regolatore lineare sarà a sua volta controllato da un rilevatore di tensione a bassissima corrente, rimuovendo efficacemente sia l'UC sia il regolatore dal circuito se la batteria si scarica al di sotto di un certo valore.
s3c,

Ok, ma è il regolatore necessario per l'alimentazione µC, oppure può essere alimentato direttamente da Vbat, nel qual caso può funzionare senza alcun divisore di tensione.
JimmyB,

Mi sembra di capire ora che in realtà non stai chiedendo come può essere costruito il dispositivo per utilizzare la minima potenza, ma piuttosto solo come assicurarsi che il LiPo non venga distrutto. È corretto?
JimmyB,

Sì, il regolatore è necessario per l'alimentazione degli uC. È preferibile utilizzare una potenza minima, ma non la mia preoccupazione principale.
s3c,

Che aspetto ha l'uscita del rilevatore di tensione che hai citato?
JimmyB
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.