Tabla de contenido:

Otro comprobador de capacidad de batería: 6 pasos
Otro comprobador de capacidad de batería: 6 pasos

Video: Otro comprobador de capacidad de batería: 6 pasos

Video: Otro comprobador de capacidad de batería: 6 pasos
Video: Cómo checar la capacidad de baterías sin equipo especial 2024, Mes de julio
Anonim
Otro comprobador de capacidad de batería
Otro comprobador de capacidad de batería
Otro probador de capacidad de batería
Otro probador de capacidad de batería

Por qué un probador de capacidad más

Leí muchas instrucciones de construcción de probadores diferentes, pero ninguna de ellas parece ajustarse a mis necesidades. Quería poder probar también más que solo células de NiCd / NiMH o Lion. Quería poder probar la batería de una herramienta eléctrica sin tener que participar primero. Entonces, decidí analizar más de cerca el asunto y diseñar uno propio. Una cosa lleva a la otra y finalmente decidí escribir yo mismo un instructable. También decidí no entrar en todos los detalles de cómo construir realmente el probador porque todos pueden decidir sobre ciertas opciones, como qué tamaño de resistencia usar o si se necesita una PCB o es suficiente Veroboard y también hay un montón de instrucciones sobre cómo instalar eagle o cómo hacer un PCB. En otras palabras, me concentraré en los esquemas y el código y cómo calibrar el probador.

Paso 1: Historial - Versión 1

Historia - Versión 1
Historia - Versión 1

Arriba está la primera versión que se menciona a continuación sobre soporte de entrada de 10 V agregado (R12 y R17 y Q11 y Q12).

La primera versión fue tomada más o menos de un instructable de deba168 (desafortunadamente no puedo encontrar su instructable para proporcionar un enlace). Solo se realizaron algunos cambios menores. En esta versión, tenía una resistencia de carga de 10 ohmios controlada por un mosfet. Sin embargo, esto trajo algunos problemas. Al probar una celda de NiCd o NiMH, el tiempo necesario se midió fácilmente en horas, si no en días. Una batería de 1500 mAh tomó más de 12 horas (la corriente era de solo 120 mA). Por otro lado, la primera versión solo podía probar baterías de menos de 10V. Y una batería de 9,6 V completamente cargada puede ser de hasta 11,2 V, lo que no se pudo probar debido al límite de 10 V. Algo había que hacer. Primero, acabo de agregar un par de mosfets y resistencias para que los divisores de voltaje puedan permitir más de 10V. Pero esto, por otro lado, planteó otro problema. Una batería de 14,4 V completamente cargada puede tener hasta 16,8 V, lo que con una resistencia de 10 ohmios significa una corriente de 1,68 A y, por supuesto, una disipación de potencia de la resistencia de carga de casi 30 W. Por lo tanto, con voltaje bajo, tiempo de prueba demasiado largo y con voltaje alto, corriente demasiado alta. Claramente, no era una solución adecuada y se necesitaba un mayor desarrollo.

Paso 2: Versión 2

Quería una solución en la que la corriente se mantuviera en ciertos límites independientemente del voltaje de la batería. Una solución hubiera sido usar PWM y solo una resistencia, pero preferí tener una solución sin corriente pulsante o tener la necesidad de disipar el calor del mosfet. Por lo tanto, creé una solución con 10 ranuras de voltaje, cada una de 2 V de ancho, usando 10 resistencias de 3.3ohm y un mosfet para cada resistor.

Paso 3: así es como resultó

Así es como resultó
Así es como resultó

Comentarios sobre el circuito Se podría argumentar que la pérdida de voltaje sobre el mosfet es insignificante porque la resistencia del mosfet es muy baja, pero he dejado la elección del mosfet al lector y, por lo tanto, la resistencia puede ir incluso por encima de 1 ohm donde comienza a importar. En la versión uno, elegir el mosfet correcto eliminaría la necesidad de medir el punto más bajo, pero en la versión 2 decidí medir el voltaje solo en una resistencia, lo que hace que sea importante tener dos puntos de medición. Y la razón detrás de la elección fue la simplicidad en el cableado de Veroboard. Esto agrega cierto error de precisión, ya que el voltaje medido a través de una resistencia es significativamente menor que la medición en todas las resistencias. En la selección de componentes, decidí usar lo que ya tenía a mano o lo que podía obtener fácilmente. Esto llevó a la siguiente lista de materiales:

  • Arduino Pro Mini 5V! IMPORTANTE! Usé la versión de 5V y todo se basa en ella.
  • Pantalla OLED I2C de 128x64
  • 10 resistencias de 5 W y 3,3 ohmios
  • 3 x 2n7000 mosfets
  • 10 x mosfets IRFZ34N
  • 6 resistencias de 10 kOhmios
  • 2 resistencias de 5 kOhmios
  • Condensador de 16V 680uF
  • 1 ventilador de CPU antiguo

No he agregado lo siguiente en los esquemas.

  • resistencias pullup en líneas I2C, que noté que hicieron que la pantalla fuera más estable
  • líneas eléctricas
  • condensador en línea de 5V que también estabilizó la pantalla

Mientras probaba, noté que las resistencias de carga se calentarían bastante, especialmente si todas estuvieran en uso. La temperatura se elevó a más de 100 grados Celsius (que es más de 212 grados Fahrenheit) y si todo el sistema se va a cerrar en una caja, se debe proporcionar algún tipo de enfriamiento. Las resistencias que utilicé son de 3,3 ohmios / 5 W y la corriente máxima debería producirse con aproximadamente 2 V por resistencia, lo que da 2 V / 3,3 = 0,61 A, lo que da como resultado 1,21 W. Terminé agregando un simple ventilador en la caja. Sobre todo porque tenía un viejo ventilador de CPU.

Funcionalidad esquemática

Es bastante sencillo y se explica por sí mismo. La batería a probar está conectada a la serie de resistencias y tierra. Los puntos de medición de voltaje son la conexión de la batería y la primera resistencia. Los divisores de voltaje se utilizan luego para reducir el voltaje a un nivel que se adapte mejor a Arduino. Se utiliza una salida digital para seleccionar el rango de 10 V o 20 V de los divisores. Cada resistencia en la carga se puede conectar a tierra individualmente utilizando los mosfets, que son impulsados directamente por Arduino. Y finalmente, la pantalla está conectada a los pines Arduino I2C. No hay mucho que decir sobre el esquema J

Paso 4: el código

El código
El código

Arriba se puede ver la funcionalidad aproximada del código. Entonces, echemos un vistazo más de cerca al código (los archivos arduino ino están adjuntos). Hay una serie de funciones y luego el bucle principal.

Bucle principal

Cuando la medición está lista, se muestran los resultados y la ejecución termina allí. Si la medición aún no se ha realizado, primero se verifica qué tipo de batería se selecciona y luego el voltaje en la entrada. Si el voltaje excede los 0.1V debe haber al menos algún tipo de batería conectada. En este caso, se llama a una subrutina para tratar de averiguar cuántas celdas hay en la batería para decidir cómo realizar la prueba. El número de celdas es más o menos información que podría utilizarse mejor pero, en esta versión, se informa solo a través de la interfaz serial. Si todo va bien, se inicia el proceso de descarga y en cada ronda del bucle principal se calcula la capacidad de la batería. Al final del ciclo principal, la pantalla se llena con valores conocidos.

Procedimiento para mostrar resultados

La función showResults simplemente establece las líneas que se mostrarán en la pantalla y también la cadena que se enviará a la interfaz en serie.

Procedimiento para medir tensiones

Al comienzo de la función se mide el Vcc de Arduino. Es necesario para poder calcular las tensiones medidas mediante entradas analógicas. Luego, el voltaje de la batería se mide usando un rango de 20 V para poder decidir qué rango usar. Luego se calcula tanto el voltaje de la batería como el voltaje de la resistencia. Las mediciones de voltaje de la batería aprovechan la clase DividerInput que tiene métodos de lectura y voltaje para dar la lectura bruta o el voltaje calculado de la entrada analógica en cuestión.

Procedimiento para seleccionar valores usados

En la función selectUsedValues, se adivina el número de celdas y se configuran los límites alto y bajo de la batería para usarse con el procedimiento de descarga. Además, la medición se marca como iniciada. Los límites para este procedimiento se establecen al principio de como variables globales. Aunque podrían ser constantes, y también podrían definirse dentro del procedimiento ya que no se utilizan globalmente. Pero bueno, siempre hay algo que mejorar:)

Procedimiento para calcular la capacidad de la batería

La función de descarga se encarga de contar realmente la capacidad de la batería. Obtiene los límites bajo y alto de los voltajes para la batería bajo prueba como parámetros. El valor alto no se usa en esta versión, pero el valor bajo se usa para decidir cuándo detener la prueba. Al comienzo de la función, el número de resistencias a utilizar se averigua mediante una función creada para este propósito. La función devuelve el número de resistencia y al mismo tiempo inicia la descarga y restablece el contador. Luego, los voltajes se miden y se usan junto con el valor de resistencia conocido para calcular la corriente. Ahora que conocemos el voltaje y la corriente y el tiempo transcurrido desde la última medición, podemos calcular la capacidad. Al final del proceso de descarga, el voltaje de la batería se compara con el límite bajo y si ha bajado del límite, la fase de descarga se detiene, los mosfets se cierran y la medición se marca como lista.

Procedimiento para encontrar el número de resistencias a utilizar

En la función selectNumOfResistors se realiza una simple comparación de voltaje con los valores preestablecidos y, como resultado, se decide el número de resistencias que se utilizarán. Se abre el mosfet apropiado para omitir algunas de las resistencias. Las ranuras de voltaje se seleccionan de modo que la corriente máxima en cualquier momento durante la descarga se mantenga ligeramente por encima de 600 mA (2 V / 3,3 ohmios = 606 mA). La función devuelve el número de resistencias utilizadas. Debido a que el ventilador se acciona desde la misma línea que el primer mosfet, siempre debe abrirse cuando se realiza la descarga.

Paso 5: Calibración del medidor

Calibración del medidor
Calibración del medidor

Para calibrar el medidor, creé otra aplicación (adjunta). Utiliza el mismo hardware. Al principio, los valores del divisor de corrección se establecen en 1000.

const int divCorrectionB10V = 1000; // multiplicador de corrección del divisor en el rango 10V const int divCorrectionR10V = 1000; // multiplicador de corrección del divisor en el rango 10V const int divCorrectionB20V = 1000; // multiplicador de corrección del divisor en rango 20V const int divCorrectionR20V = 1000; // multiplicador de corrección del divisor en rango 20V

en la función readVcc (), el voltaje Vcc resultante depende de establecer el valor en la última línea de la función antes del retorno. Por lo general, puede encontrar en Internet un valor de 1126400L para usar en el cálculo. Noté que el resultado no era correcto.

Proceso de calibración:

  1. Cargue la aplicación de medición en Arduino.
  2. Puede ver en el Arduino (y en la salida en serie y si el ventilador está girando) si la carga está encendida. Si es así, gire el interruptor de selección del tipo de batería.
  3. Ajuste el valor en readuVCC () para obtener un resultado correcto. Tome el valor que da la función (que está en milivoltios) y divida el valor largo con él. Obtendrá el valor bruto de la referencia interna. Ahora mida el voltaje de suministro real en milivoltios con un multímetro y multiplíquelo con el valor calculado previamente y obtendrá el nuevo valor largo corregido. En mi caso, la función devolvió 5288mV cuando el Vcc real era 5.14V. Calculando 1126400/5288 * 5140 = 1094874 que afiné por prueba. Ingrese el nuevo valor en el código y cárguelo nuevamente en Arduino.
  4. El ajuste de los valores de corrección del divisor de resistencia de entrada analógica se realiza mediante el uso de una fuente de alimentación ajustable que se utiliza para alimentar la entrada del medidor. Lo más simple es usar voltajes de 1V a 20V con pasos de 1V y registrar los resultados en una hoja de cálculo. En la hoja de cálculo se toma el promedio. Los valores corregidos se calculan con la siguiente fórmula: “raw_value * range * Vcc / Vin” donde raw_value es el valor en 10VdivB, 10VdivR, 20VdivB o 20VdivR dependiendo de la corrección a calcular.

Vea la hoja de cálculo como me pareció. Los promedios se calculan solo a partir de los valores que deben estar en el rango y esos valores se establecen en la aplicación del medidor real.

Como esto

const int divCorrectionB10V = 998; // divisor de corrección divisor en rango 10V const int divCorrectionR10V = 1022; // divisor de corrección divisor en rango 10V const int divCorrectionB20V = 1044; // divisor de corrección divisor en rango 20V const int divCorrectionR20V = 1045; // divisor de corrección divisor en rango 20V

El ajuste del valor de la resistencia se puede hacer proporcionando algo de voltaje a la entrada (es decir, 2 V), cambiando el interruptor tipo murciélago (para encender la carga) y midiendo la corriente que entra y el voltaje a través de la primera resistencia y dividiendo el voltaje con la corriente.. Para mí, 2V dio 607mA, lo que da 2 / 0.607 = 3.2948 ohmios que redondeé a 3.295 ohmios. Entonces ahora la calibración está hecha.

Paso 6: ¡Última NOTA

Una nota importante aquí. Es imperativo tener todas las conexiones en óptimas condiciones desde la batería hasta las resistencias. Tuve una mala conexión y me preguntaba por qué obtuve 0.3V menos voltios en la rejilla de la resistencia que en la batería. Esto significó que el proceso de medición terminó casi de inmediato con celdas de NiCd de 1,2 V porque el límite inferior de 0,95 V se alcanzó rápidamente.

Recomendado: