- ¿Por qué necesitamos un comprobador de capacidad de batería?
- Componentes requeridos
- Diagrama del circuito del probador de capacidad de la batería Arduino
- Programa Arduino para medir la capacidad de la batería
- Mejoras de precisión
- Construyendo y probando el circuito
Con el advenimiento de la tecnología, nuestros aparatos y dispositivos electrónicos son cada vez más pequeños con aplicaciones más funcionales y complejas. Con este aumento en la complejidad, el requerimiento de energía del circuito también ha aumentado y en nuestra búsqueda para hacer que el dispositivo sea lo más pequeño y portátil posible, necesitamos una batería que pueda proporcionar alta corriente durante un largo período de tiempo y al mismo tiempo. tiempo, pesar mucho menos para que el dispositivo siga siendo portátil. Si desea saber más sobre las baterías, también puede leer este artículo sobre terminologías básicas de batería.
De los muchos tipos diferentes de baterías disponibles, las baterías de plomo ácido, las baterías de Ni-Cd y las baterías de Ni-MH no son adecuadas ya que pesan más o no pueden proporcionar la corriente requerida para nuestra aplicación, esto nos deja con las baterías de iones de litio. que puede proporcionar alta corriente manteniendo el peso bajo y el tamaño compacto. Anteriormente, también hemos construido un cargador de batería 18650 y un módulo de refuerzo y un sistema de monitoreo de batería basado en IoT, puede consultarlos si está interesado.
¿Por qué necesitamos un comprobador de capacidad de batería?
Hay muchos proveedores de baterías en el mercado que venden versiones de imitación baratas de baterías de iones de litio que afirman especificaciones extrañas con un precio muy bajo que es demasiado bueno para ser verdad. Cuando compra estas celdas, o no funcionan en absoluto o, si lo hacen, la capacidad de carga o el flujo de corriente es tan bajo que no pueden funcionar con la aplicación en absoluto. Entonces, ¿ cómo probar una batería de litio si la celda no es una de estas imitaciones baratas? Uno de los métodos es medir el voltaje de circuito abierto sin carga y cargando, pero esto no es en absoluto confiable.
Entonces, vamos a construir un probador de capacidad de batería 18650 para una celda Li-Ion 18650 que descargará una celda 18650 completamente cargada a través de una resistencia mientras mide la corriente que fluye a través de la resistencia para calcular su capacidad. Si no obtiene la capacidad de la batería reclamada mientras el voltaje de la celda está dentro de los límites especificados, entonces esa celda está defectuosa y no debe usarla, ya que el estado de carga de la celda se agotará a un ritmo muy rápido bajo carga, creando una bucle de corriente local si se usa en un paquete de baterías, lo que produce un calentamiento y posiblemente un incendio. Así que vayamos directamente a eso.
Componentes requeridos
- Arduino Nano
- LCD de 16 × 2 caracteres
- LM741 OPAMP IC
- Resistencia de 2,2 Ω, 5 vatios
- Regulador de voltaje positivo 7805 IC
- Fuente de alimentación de 12V
- Potenciómetro de ajuste de 10 kΩ
- Condensador 0.47uF
- Resistencia de 33kΩ
- Conector jack de barril de alimentación CC
- Terminales de tornillo de PCB
- IC Mosfet de canal N IRF540N
- Perfboard
- Kit de soldadura
- Disipadores de calor
Diagrama del circuito del probador de capacidad de la batería Arduino
El diagrama de circuito completo para el probador de capacidad de batería 18650 se muestra a continuación. La explicación del circuito es la siguiente:
Unidad de visualización y computación:
Este circuito se divide en dos partes, primero es un suministro bajo de 5 V para Arduino Nano y una pantalla LCD alfanumérica de 16 × 2 y sus conexiones para mostrar los resultados de las mediciones de corriente y voltaje en tiempo real. El circuito es alimentado por la fuente de alimentación de 12V usando SMPS o puede usar una batería de 12V y la corriente máxima será de alrededor de 60-70mA para alimentar el Arduino y la pantalla LCD.
Para reducir el voltaje a 5 V, usaremos un regulador de voltaje lineal que puede tomar hasta 35 V y necesita al menos una fuente de alimentación de entrada de 7,5 V para proporcionar un suministro regulado de 5 V y el exceso de voltaje se disipa como calor, por lo tanto, si su entrada El voltaje IC del regulador de voltaje LM7805 es superior a 12 V, luego considere agregar un disipador de calor para que no se dañe. La pantalla LCD se alimenta con un suministro de 5 V del 7805 y está conectada a Arduino y funciona en modo de 4 bits. También hemos agregado un potenciómetro de limpiaparabrisas de 10k Ω para controlar el contraste de la pantalla LCD.
Circuito de corriente de carga constante:
El segundo es el circuito de carga de corriente constante basado en PWM para hacer que la corriente de carga que fluye a través de la resistencia sea controlable por nosotros y constante para que no haya errores debido a la variación de la corriente con el tiempo a medida que baja el voltaje de la celda. Consiste en LM741 OPAMP IC y IRF540N MOSFET de canal N, que controla la corriente que fluye a través del MOSFET al encender y apagar el MOSFET de acuerdo con el nivel de voltaje establecido por nosotros.
El amplificador operacional está funcionando en modo comparador,así que en este modo. la salida del amplificador operacional será alta siempre que el voltaje del pin no inversor del amplificador operacional sea mayor que el pin inversor. De manera similar, si el voltaje en el pin inversor del amplificador operacional es más alto que el pin no inversor, la salida del amplificador operacional se reducirá. En el circuito dado, el nivel de voltaje del pin no inversor es controlado por el pin D9 PWM del Arduino NANO, que cambia a una frecuencia de 500Hz que luego pasa a través del filtro de circuito RC de paso bajo con un valor de resistencia de 33kΩ y un condensador con una capacitancia de 0.47 uF, para proporcionar una señal de CC casi constante en el pin no inversor. El pin inversor está conectado a la resistencia de carga, que lee el voltaje a través de la resistencia y GND común. El pin de salida del OPAMP está conectado al terminal de puerta del MOSFET para encenderlo o apagarlo.El OPAMP intentará igualar los voltajes en ambos terminales cambiando el MOSFET conectado para que la corriente que fluye a través de la resistencia sea proporcional al valor de PWM que ha establecido en el pin D9 del NANO. En este proyecto, la corriente máxima a la que limité mi circuito es 1.3A, lo cual es razonable ya que la celda que tengo es 10A como su clasificación de corriente máxima
Medida de voltaje:
El voltaje máximo de una celda típica de iones de litio completamente cargada es de 4.1V a 4.3V, que es menor que el límite de voltaje de 5V de los pines de entrada analógica del Arduino Nano, que tiene una resistencia interna de más de 10kΩ en ellos para que podamos conectar directamente el Celda a cualquiera de los pines de entrada analógica sin preocuparte por la corriente que fluye a través de ellos. Entonces, en este proyecto, necesitamos medir el voltaje de la celda para que podamos determinar si la celda está en el rango de operación de voltaje correcto y si está completamente descargada o no.
Necesitamos medir la corriente que fluye a través de la resistencia también para eso no podemos usar la derivación de corriente ya que la complejidad del circuito aumentará y el aumento de la resistencia en la ruta de carga disminuirá la tasa de descarga de la celda. El uso de resistencias de derivación más pequeñas requerirá un circuito amplificador adicional para hacer que la lectura de voltaje proveniente de él sea legible para el Arduino.
Entonces leemos directamente el voltaje a través de la resistencia de carga y luego, usando la Ley de Ohm, dividimos el voltaje obtenido por el valor de la resistencia de carga para que la corriente fluya a través de él. El terminal negativo de la resistencia está conectado directamente al GND, por lo que podemos asumir con seguridad que el voltaje que estamos leyendo en la resistencia es la caída de voltaje en la resistencia.
Programa Arduino para medir la capacidad de la batería
Ahora, después de finalizar el circuito de hardware, pasamos a la programación de Arduino. Ahora bien, si no tiene Arduino IDE instalado en su PC, ¿qué está haciendo aquí? Vaya al sitio web oficial de Arduino y descargue e instale el IDE de Arduino o también puede codificar en cualquier otro editor, pero ese es un tema para otro día, por ahora nos ceñimos al IDE de Arduino. Ahora estamos usando Arduino Nano, así que asegúrese de haber seleccionado la placa Arduino Nano yendo a TOOLS> BOARDS y seleccionando ARDUINO NANO allí, ahora seleccione el procesador correcto que tiene su nano yendo a TOOLS> PROCESADORy mientras esté allí, también seleccione el puerto al que está conectado su Arduino en su PC. Estamos usando Arduino para manejar el LCD alfanumérico de 16 × 2 conectado a él y para medir el voltaje de la celda y la corriente que fluye a través de la resistencia de carga como se explica en la sección anterior, comenzamos nuestro código declarando que los archivos de encabezado conducen 16 × 2 Pantalla LCD alfanumérica. Puede omitir esta sección para obtener el código completo y servido al final de la página, pero tenga paciencia con nosotros mientras dividimos el código en pequeñas secciones e intentamos explicarlo.
Ahora que el archivo de encabezado está definido, pasamos a declarar las variables que usaremos en el código para calcular el voltaje y la corriente. Además, tenemos que definir los pines que estamos usando para conducir la pantalla LCD y los pines que usaremos para dar salida PWM y leer los voltajes analógicos provenientes de la celda y la resistencia también en esta sección.
#incluir
Ahora, llegando a la parte de configuración, si desea mantener su Arduino conectado a su PC todo el tiempo y monitorear el progreso usando Serial Monitor e inicializar la pantalla LCD aquí. También mostrará un mensaje de bienvenida "Circuito del probador de capacidad de la batería" en la pantalla durante 3 segundos.
configuración vacía () {Serial.begin (9600); lcd. comienzo (16, 2); lcd.setCursor (0, 0); // Coloca el cursor en la primera columna y la primera fila. lcd.print ("Capacidad de la batería"); lcd.setCursor (0,1); lcd.print ("Circuito de prueba"); retraso (3000); lcd.clear (); }
Ahora no necesitamos declarar el pin Arduino PWM como Salida ya que la función AnalogWrite que vamos a usar en nuestro bucle principal se encarga de esta parte. Necesita definir el valor PWM que se escribirá en ese pin en el código. Seleccione el valor de PWM cuidadosamente de acuerdo con la corriente de descarga requerida en su aplicación. Demasiado valor de PWM dará como resultado una corriente alta con una caída de voltaje alta en la celda de Li-Ion y un valor de PWM demasiado bajo dará como resultado un tiempo de descarga alto de la celda. En la función de bucle principal, leeremos los voltajes en los pines A0 y A1, ya que el Arduino tiene un ADC de 10 bits a bordo, por lo que deberíamos obtener valores de salida digital que van desde 0-1023, que necesitaremos escalar al Rango de 0-5 V multiplicándolo por 5.0 / 1023.0. Asegúrese de medir correctamente el voltaje entre los pines 5V y GND del Arduino Nano usando un voltímetro o multímetro calibrado ya que la mayoría de las veces el voltaje regulado no es exactamente 5.0V e incluso una pequeña diferencia en este voltaje de referencia daría como resultado errores progresivos en las lecturas de voltaje, así que mida el voltaje correcto y reemplace el 5.0 en el multiplicador dado arriba.
Ahora, para explicar la lógica del código, medimos continuamente el voltaje de la celda y si el voltaje de la celda supera el límite superior especificado por nosotros en el código, el mensaje de error se muestra en la pantalla LCD para informarle si la celda está sobrecargado o hay algún problema con la conexión y la alimentación al pin de la compuerta MOSFET se detiene para que no fluya corriente a través de la resistencia de carga. Es crucial que primero cargue completamente su celda antes de conectarla a la placa del probador de capacidad para que pueda calcular su capacidad de carga total.
analogWrite (MOSFET_Pin, PWM_VALUE); // lee la entrada en el pin analógico 0: int sensorValue_voltage_Cell = analogRead (A0); // Convertir la lectura analógica (que va de 0 - 1023) a un voltaje (0 - 5V): voltaje de flotación = sensorValue_voltage_Cell * (5.08 / 1023.0); Serial.print ("VOLTAJE:"); Serial.println (voltaje); // Aquí el voltaje se imprime en Serial Monitor lcd.setCursor (0, 0); // Coloca el cursor en la primera columna y la primera fila. lcd.print ("Voltaje:"); // Imprime la lectura de voltaje en la pantalla lcd.print (voltage); retraso (100); int sensorValue_Shunt_Resistor = analogRead (A1); voltaje de flotación1 = sensorValue_Shunt_Resistor * (5.08 / 1023.0); corriente de flotación = voltaje1 / Resistencia; Serial.print ("Actual:"); Serial.println (actual); lcd.setCursor (0, 1);// Coloque el cursor en la primera columna y la segunda fila (¡el conteo comienza en 0!). lcd.print ("Actual:"); lcd.print (actual);
Ahora, si el voltaje de la celda está dentro de los límites de voltaje superior e inferior especificados por nosotros, entonces el Nano leerá el valor actual mediante el método especificado anteriormente y lo multiplicará por el tiempo transcurrido durante las mediciones y lo almacenará en la variable de capacidad que definimos anteriormente. en unidades mAh. Durante todo este tiempo, los valores de corriente y voltaje en tiempo real se muestran en la pantalla LCD adjunta, y si lo desea, también puede verlos en el monitor en serie. El proceso de descarga de la celda continuará hasta que el voltaje de la celda alcance por debajo del límite inferior especificado por nosotros en el programa y luego la capacidad total de la celda se muestra en la pantalla LCD y el flujo de corriente a través de la resistencia se detiene tirando de la compuerta MOSFET pin bajo.
else if (voltage> BAT_LOW && voltage <BAT_HIGH) {// Compruebe si el voltaje de la batería está dentro del límite seguro millisPassed = millis () - previousMillis; mA = corriente * 1000.0; Capacidad = Capacidad + (mA * (milisPassed / 3600000.0)); // 1 hora = 3600000ms para convertirlo en unidades mAh previousMillis = millis (); retraso (1000); lcd.clear (); }
Mejoras de precisión
Es, por supuesto, una forma suficientemente buena de leer voltaje y corriente, pero no es perfecta. La relación entre la tensión real y la tensión ADC medida no es lineal y esto supondrá algún error en las medidas de las tensiones y corrientes.
Si desea aumentar la precisión del resultado, debe trazar los valores de ADC que obtiene al aplicar varias fuentes de voltaje conocidas en un gráfico y luego determinar la ecuación del multiplicador utilizando el método que desee. De esta manera, se mejorará la precisión y se acercará mucho a los resultados reales.
Además, el MOSFET que usamos no es un MOSFET de nivel lógico, por lo que necesita más de 7 V para encender completamente el canal actual y si le aplicamos 5 V directamente, las lecturas actuales serían inexactas. Pero puede usar un MOSFET de canal N IRL520N de nivel lógico para eliminar el uso de una fuente de 12V y trabajar directamente con los niveles lógicos de 5V que tiene con su Arduino.
Construyendo y probando el circuito
Ahora, mientras diseñamos y probamos diferentes secciones de nuestro circuito en una placa de prueba y después de asegurarnos de que todas funcionan según lo previsto, usamos una placa de perfil para soldar todos los componentes, ya que es un método mucho más profesional y confiable para probar el circuito.. Si lo desea, puede diseñar su propia PCB en AutoCAD Eagle, EasyEDA o Proteus ARES o cualquier otro software que desee. El Arduino Nano, el LCD alfanumérico de 16 × 2 y el OPAMP LM741 están montados en un Bergstik hembra para que puedan reutilizarse más tarde.
Proporcioné un suministro de 12V a través de un conector DC Barrel Jack para el circuito de corriente de carga constante y luego, con la ayuda del LM7805, se proporcionan los 5V para la pantalla Nano y LCD. Ahora encienda el circuito y ajuste el potenciómetro para ajustar el nivel de contraste de la pantalla LCD, ya debería ver el Mensaje de bienvenida en la pantalla LCD, y luego, si el nivel de voltaje de la celda está en el rango de trabajo, entonces la corriente -Allí se mostrarán el voltaje y la corriente de la batería.
Esta es una prueba muy básica para calcular la capacidad de la celda que está utilizando y se puede mejorar tomando los datos y almacenándolos en un archivo de Excel para hacer el procesamiento y visualización de datos posteriores por métodos gráficos. En el mundo actual basado en datos, esta curva de descarga de celda se puede usar para construir modelos predictivos precisos de la batería para simular y ver la respuesta de la batería en condiciones de carga sin pruebas en el mundo real mediante el uso de software como NI LabVIEW, MATLAB Simulink, etc..y muchas más aplicaciones te esperan. Puede encontrar el funcionamiento completo de este proyecto en el video a continuación. Si tiene alguna pregunta sobre este proyecto, escríbala en la sección de comentarios a continuación o utilice nuestros foros. Vaya y diviértase con él y, si lo desea, podemos guiarlo en la sección de comentarios a continuación sobre cómo continuar desde aquí. Hasta entonces Adios !!!