Indicatore di batteria scarica


22

Sto cercando di creare un indicatore della durata della batteria che posso usare insieme a un microcontrollore. Spero di poter quindi leggere la durata residua della batteria rimanente e mettere sempre più in pausa il microcontroller per preservare la durata della batteria.


1
Quale microcontrollore?
Brian Carlton,

Risposte:


13

Alla domanda principale, su come misurare la tensione di una batteria, il metodo più semplice è quello di utilizzare uno dei pin ADC sull'Arduino.

Se stai fornendo 5v dalla batteria (improbabile), puoi eseguire il + direttamente su uno dei pin analogici in, e usare analogRead () - ogni incremento di valore (da 0-1023) rappresenterà 4,9mV. Quindi moltiplica il valore letto per 0,0000 per ottenere la lettura dei volt.

Se stai correndo più in alto di 5v (più probabilmente), puoi usare un circuito divisore di tensione (vedi: http://en.wikipedia.org/wiki/Voltage_divider ) per portare la tensione che stai inviando all'ingresso analogico a <= 5v. Se usi 12V, ti consigliamo di dividere la tensione in circa 1/3. Quindi, dopo aver moltiplicato il valore ADC, moltiplicare per 3 per ottenere la tensione effettiva.

Pertanto, se si utilizza 12V e un partitore di tensione 1/3:

#define BAT_PIN 14

float read_batt_volts(void) {

  int val = analogRead(BAT_PIN);

  float volts = (float) val * (float) 0.0049 * (float) 3;

  return(volts)
}

! c


2
Ho due cose principali da aggiungere a questo. Innanzitutto, la maggior parte delle batterie da 12V non si esaurisce a 0 V, ma invece a qualcosa di abbastanza vicino, almeno entro 5 V, della tensione di carica completa. Una tecnica comune per ottenere misure di risoluzione più elevate nell'intervallo operativo è di ridurre la tensione con un diodo zener. Un resistore in serie con uno zener e si misura attraverso il resistore. In secondo luogo, la maggior parte delle persone non si rende conto che è necessario assorbire corrente da una batteria per avere una buona idea della carica residua.
Kortuk,

@Kortuk: Potresti fare due chiarimenti per il mio apprendimento: (1) Per entrare nella gamma di tensione accettata dai pin, stai suggerendo che l'approccio diodo zener darà una risoluzione più alta rispetto al metodo del partitore di tensione? (2) Perché hai fatto una menzione particolare qui che "devi disegnare corrente ...", ecc.?
Boardbite

22

tinker.it ha pubblicato un misuratore di livello di tensione "segreto" su Atmega168 / atmega328. Con un piccolo trucco, un Arduino è in grado di confrontare VCC con un riferimento 1.1v di precisione interno. La spiegazione e il codice sono qui: https://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/


eccellente, sto usando un atmega con batterie e non sono riuscito ad avere un valore vref affidabile. grazie per aver pubblicato questo, ha risolto il mio problema come per magia!
Radhoo,

10

Il suggerimento di shutterdrone è molto buono, ma manca un dettaglio, in quanto implica che il riferimento di tensione analogico è lo stesso della tensione misurata (a parte supporre che venga utilizzato un Arduino, che non è esplicitamente dichiarato).

Avrai bisogno di un ADC, che sia parte integrante del tuo uC o di un componente esterno. L'ADC necessita di un riferimento di tensione analogico (ARef) per confrontare l'ingresso. Non si desidera che l'ARef sia uguale alla tensione che si sta rilevando perché ADC vedrà sempre le tensioni di ingresso e di riferimento uguali, quindi il valore analogico per la tensione rilevata sarà sempre il massimo. Ciò di cui hai bisogno è un riferimento di tensione analogica molto preciso che non cambierà al variare della tensione di alimentazione. L'ADC confronterà quella tensione di riferimento con la tensione della batteria; è possibile utilizzare un divisore di tensione per ridurre la tensione della batteria rilevata nell'intervallo di ARef.

Arduino (Atmega8 / 168/328 / ecc.) Ha un ADC incorporato e un riferimento analogico 1.1V incorporato, quindi gli unici componenti esterni di cui avresti bisogno sono resistori per il partitore di tensione. Penso che vorresti anche usare valori molto alti per i resistori per ridurre il consumo di corrente della batteria.


2
Punti eccellenti - e hai ragione sul fatto che io (erroneamente) ho assunto un Arduino nel mix. =)! c
shutterdrone,
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.