Tabla de contenido:

Arduino LTC6804 BMS - Parte 2: Tablero de equilibrio: 5 pasos
Arduino LTC6804 BMS - Parte 2: Tablero de equilibrio: 5 pasos

Video: Arduino LTC6804 BMS - Parte 2: Tablero de equilibrio: 5 pasos

Video: Arduino LTC6804 BMS - Parte 2: Tablero de equilibrio: 5 pasos
Video: Lithium-Ion Battery Management System | BMS | LTC6804-2 2024, Noviembre
Anonim
Arduino LTC6804 BMS - Parte 2: Tablero de equilibrio
Arduino LTC6804 BMS - Parte 2: Tablero de equilibrio

La parte 1 está aquí

Un sistema de gestión de baterías (BMS) incluye funciones para detectar parámetros importantes del paquete de baterías, incluidos los voltajes de las celdas, la corriente de la batería, las temperaturas de las celdas, etc. Si alguno de estos está fuera de un rango predefinido, el paquete se puede desconectar de su carga o cargador., o se puede tomar otra acción apropiada. En un proyecto anterior (https://www.instructables.com/id/Arduino-LTC6804-Battery-Management-System/) hablé de mi diseño de BMS, que se basa en el chip Monitor de batería multicelda LTC6804 de tecnología lineal y un microcontrolador Arduino. Este proyecto amplía el proyecto BMS agregando el equilibrio del paquete de baterías.

Los paquetes de baterías se construyen a partir de celdas individuales en configuraciones en paralelo y / o en serie. Por ejemplo, un paquete 8p12s se construiría usando 12 conjuntos conectados en serie de 8 celdas conectadas en paralelo. Habría un total de 96 celdas en el paquete. Para un mejor rendimiento, las 96 celdas deben tener propiedades muy similares; sin embargo, siempre habrá alguna variación entre las celdas. Por ejemplo, algunas celdas pueden tener menor capacidad que otras celdas. A medida que se carga el paquete, las celdas de menor capacidad alcanzarán su voltaje máximo seguro antes que el resto del paquete. El BMS detectará este alto voltaje y cortará la carga adicional. El resultado será que gran parte del paquete no está completamente cargado cuando el BMS interrumpe la carga debido al voltaje más alto de la celda más débil. Una dinámica similar puede ocurrir durante la descarga, cuando las celdas de mayor capacidad no pueden descargarse completamente porque el BMS desconecta la carga cuando la batería más débil alcanza su límite de voltaje bajo. Por lo tanto, el paquete es tan bueno como sus baterías más débiles, como una cadena tan fuerte como su eslabón más débil.

Una solución a este problema es utilizar una tabla de equilibrio. Si bien existen muchas estrategias para equilibrar el paquete, las tarjetas de equilibrio 'pasivas' más simples están diseñadas para purgar parte de la carga de las celdas de voltaje más alto cuando el paquete se acerca a la carga completa. Si bien se desperdicia algo de energía, el paquete en su conjunto puede almacenar más energía. El sangrado se realiza disipando algo de energía a través de una combinación de resistencia / interruptor controlada por un microcontrolador. Este instructable describe un sistema de equilibrio pasivo compatible con el arduino / LTC6804 BMS de un proyecto anterior.

Suministros

Puede solicitar el PCB de la placa de equilibrio de PCBWays aquí:

www.pcbway.com/project/shareproject/Balance_board_for_Arduino_BMS.html

Paso 1: teoría de funcionamiento

teoría de operación
teoría de operación

La página 62 de la hoja de datos del LTC6804 trata sobre el equilibrio de celdas. Hay dos opciones: 1) usar los MOSFETS de canal N internos para purgar la corriente de las celdas altas, o 2) usar los MOSFETS internos para controlar los interruptores externos que transportan la corriente de purga. Utilizo la segunda opción porque puedo diseñar mi propio circuito de purga para manejar una corriente más alta que la que se podría hacer con los interruptores internos.

Los MOSFETS internos están disponibles a través de los pines S1-S12, mientras que se accede a las celdas mediante los pines C0-C12. La imagen de arriba muestra uno de los 12 circuitos de purga idénticos. Cuando se enciende Q1, la corriente fluirá de C1 a tierra a través de R5, disipando parte de la carga en la celda 1. Seleccioné una resistencia de 6 ohmios y 1 vatio, que debería poder manejar varios miliamperios de corriente de purga. Se agregó un LED para que el usuario pueda ver qué celdas se están equilibrando en un momento dado.

Los pines S1-S12 son controlados por el CFGR4 y los primeros 4 bits de los grupos de registros CFGR5 (consulte las páginas 51 y 53 de la hoja de datos del LTC6804). Estos grupos de registros se establecen en el código de Arduino (que se describe a continuación) en la función balance_cfg.

Paso 2: esquema

Esquemático
Esquemático

El esquema del tablero de equilibrio BMS se diseñó con Eagle CAD. Es bastante sencillo. Hay un circuito de purga para cada segmento de la serie de paquetes de baterías. Los interruptores están controlados por señales del LTC6804 a través del encabezado JP2. La corriente de purga fluye desde el paquete de baterías a través del cabezal JP1. Tenga en cuenta que la corriente de purga fluye al siguiente segmento inferior del paquete de baterías, por lo que, por ejemplo, C9 se desangra en C8, etc. El símbolo del escudo Arduino Uno se coloca en el esquema para el diseño de PCB descrito en el Paso 3. Se proporciona una imagen de mayor resolución en el archivo zip. La siguiente es la lista de piezas (por alguna razón, la función de carga de archivos de Instructables no me funciona …)

Cantidad Valor Paquete del dispositivo Descripción de las piezas

12 LEDCHIPLED_0805 CHIPLED_0805 LED1, LED2, LED3, LED4, LED5, LED6, LED7, LED8, LED9, LED10, LED11, LED12 LED 12 BSS308PEH6327XTSA1 MOSFET-P SOT23-R Q1, Q2, Q3, Q4, Q5, Q8, Q9, Q10, Q11, Q12 Mosfet de canal P 2 PINHD-1X13_BIG 1X13-BIG JP1, JP2 PIN HEADER 12 16 R-US_R2512 R2512 R5, R7, R9, R11, R13, R15, R17, R19, R21, R23, R25, R27 RESISTOR, símbolo americano 12 1K R-US_R0805 R0805 R4, R6, R8, R10, R12, R14, R16, R18, R20, R22, R24, R26 RESISTOR, símbolo americano 12200 R-US_R0805 R0805 R1, R2, R3, R28, R29, R30, R31, R32, R33, R34, R35, R36 RESISTOR, símbolo americano

Paso 3: diseño de PCB

Diseño de PCB
Diseño de PCB

El diseño está determinado principalmente por el diseño del sistema BMS principal discutido en un instructivo separado (https://www.instructables.com/id/Arduino-LTC6804-Battery-Management-System/). Los encabezados JP1 y JP2 deben coincidir con los encabezados coincidentes en el BMS. Los Mosfets, las resistencias de purga y los LED están dispuestos de forma lógica en el escudo Arduino Uno. Los archivos Gerber se crearon utilizando Eagle CAD y los PCB se enviaron a Sierra Circuits para su fabricación.

El archivo adjunto "Gerbers Balance Board.zip.txt" es en realidad un archivo zip que contiene los Gerbers. Puede eliminar la parte.txt del nombre del archivo y luego descomprimirlo como un archivo zip normal.

Envíeme un mensaje si desea obtener una placa de circuito impreso, es posible que aún me quede algo.

Paso 4: Ensamblaje de PCB

Los PCB de la placa de equilibrio se soldaron a mano utilizando una estación de soldadura de temperatura controlada Weller WESD51 con una punta de "destornillador" de la serie ETB ET de 0,093 y una soldadura de 0,3 mm. Aunque las puntas más pequeñas pueden parecer mejores para trabajos complicados, no retienen el calor y, de hecho, dificultan el trabajo. Utilice un bolígrafo de flujo para limpiar las almohadillas de PCB antes de soldar. La soldadura de 0,3 mm funciona bien para soldar a mano piezas SMD. Coloque un poco de soldadura en una almohadilla y luego coloque la pieza con unas pinzas o un cuchillo x-acto y fije esa almohadilla. La almohadilla restante se puede soldar sin que la pieza se mueva. Asegúrese de no sobrecalentar la pieza o las almohadillas de la placa de circuito impreso. Debido a que la mayoría de los componentes son bastante grandes para los estándares SMD, la PCB es bastante fácil de ensamblar.

Paso 5: Código

Código
Código

El código completo de Arduino se proporciona en el instructable anterior vinculado anteriormente. Aquí llamaré su atención sobre la sección que controla el equilibrio celular. Como se mencionó anteriormente, S1-S12 son controlados por el CFGR4 y los primeros 4 bits de los grupos de registros CFGR5 en el LTC6804 (consulte las páginas 51 y 53 de la hoja de datos del LTC6804). La función de bucle del código Arduino detecta el segmento de paquete de batería de mayor voltaje y coloca su número en la variable cellMax_i. Si el voltaje de cellMax_i es mayor que CELL_BALANCE_THRESHOLD_V, el código llamará a la función balance_cfg (), pasando el número del segmento alto, cellMax_i. La función balance_cfg establece los valores del registro LTC6804 apropiado. Una llamada a LTC6804_wrcfg luego escribe estos valores en el IC, activando el pin S asociado con cellMax_i.

Recomendado: