Indicador de batería baja

22

Estoy buscando hacer un indicador de duración de la batería que pueda usar junto con un microcontrolador. Espero poder leer la vida útil restante de la batería y poner el microcontrolador en reposo para preservar la vida útil de la batería.

    
pregunta littlebirdceo

3 respuestas

13

A la pregunta principal, sobre cómo medir el voltaje de una batería, el método más simple es usar uno de los pines ADC en el arduino.

Si está suministrando 5v de la batería (poco probable), entonces puede ejecutar el + directo a uno de los analógicos en los pines, y usar analogRead () - cada incremento en el valor (de 0-1023) representará 4.9 mv Entonces multiplique el valor de lectura por .0049 para obtener la lectura de los voltios.

Si está ejecutando más de 5v (lo más probable), puede usar un circuito divisor de voltaje (consulte: enlace ) para llevar el voltaje que está enviando a la entrada analógica a < = 5v. Si está ejecutando 12V, querrá dividir el voltaje en aproximadamente 1/3. Luego, después de multiplicar el valor de ADC, multiplique por 3 para obtener el voltaje real.

Por lo tanto, si utiliza 12 V y un divisor de tensión de 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

    
respondido por el shutterdrone
22

tinker.it publicó un medidor de nivel de voltaje "secreto" en el Atmega168 / atmega328. Con un pequeño truco, un Arduino puede comparar VCC con una referencia interna de precisión de 1.1v. La explicación y el código están aquí: enlace

    
respondido por el bpijls
10

la sugerencia de shutterdrone es muy buena, pero le falta un detalle, ya que implica que la referencia de voltaje analógica es la misma que la tensión que se mide (aparte de suponer que se está utilizando un Arduino, que no se indica explícitamente).

Necesitará un ADC, ya sea que sea integral para su unidad de control de usuario o un componente externo. El ADC necesita una referencia de voltaje analógica (ARef) para comparar la entrada con. No desea que el ARef sea el mismo que el voltaje que está detectando, porque entonces el ADC siempre verá los voltajes de entrada y de referencia como iguales, por lo que el valor analógico para el voltaje detectado siempre será el máximo. Lo que necesita es una referencia de voltaje analógico muy precisa que no cambie a medida que cambia el voltaje de la fuente de alimentación. El ADC comparará esa tensión de referencia con la tensión de la batería; puede usar un divisor de voltaje para reducir el voltaje de la batería que se detecta en el rango del ARef.

El Arduino (Atmega8 / 168/328 / etc.) tiene un ADC incorporado y una referencia analógica de 1.1V incorporada, por lo que los únicos componentes externos que necesitaría son resistencias para el divisor de voltaje. Creo que también querría utilizar valores muy altos para las resistencias para reducir el consumo de corriente de la batería.

    
respondido por el blalor

Lea otras preguntas en las etiquetas