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.
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.
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
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.
Lea otras preguntas en las etiquetas microcontroller low-battery sleep indicator