Desarrollo de un banco de energía para una computadora portátil. Desde el diseño hasta el producto terminado. La segunda parte
En la última parte del artículo sobre el desarrollo de PowerBank para una computadora portátil, nos decidimos por un diseño fabricado, medimos la eficiencia y entendimos qué hacer a continuación. Y luego fue necesario revivir la pieza de hierro. Por lo tanto, presento a su atención la segunda parte: diseño de software.
La ruptura entre las partes resultó ser bastante grande: todas las fuerzas se lanzaron sobre el proyecto de una batería externa de carga rápida, que ahora está reuniendo apoyo en boomstarter . Continuemos. Para comprender qué microcircuitos tendremos que programar, veremos el diagrama de bloques del diseño. Desde aquí está claro que tendremos que escribir software para el control MK (STM32F042), así como configurar el sistema de control de batería de iones de litio + cargador (BQ40Z60). Comencé con el segundo, porque consideraba esta parte la más difícil. Para programar el controlador BQ40Z60, necesitamos: - El adaptador EV2400 y EV2300 ( listo o hecho en casa). He dejado el EV2300 de proyectos anteriores, así que lo usé. - programa
Estudio de gestión de la batería (bqStudio) .El adaptador está conectado a través de SMBus, para la conexión dejé puntos de soldadura en las líneas SMBD y SMBC. (No es la solución más práctica, luego me di cuenta de que tenía que instalar el conector).
Después de bailar con una pandereta, el BQ40Z60 se decidió por Battery Management Studio. La razón de esto fue el modo de suspensión en el que el controlador ingresa cuando no hay pull-up en el bus SMBus y no hay acceso al mismo. Se despierta cuando conecta la memoria.A continuación, ajustaremos directamente el chip BQ40Z60. Decir que tiene muchos registros es no decir nada. Un millón de configuraciones. Dado que la configuración es un proceso largo y complicado (se requiere un artículo separado para la descripción) lo describiré brevemente.Después de comenzar, aparece la ventana principal de Battery Management Studio.
La pestaña Memoria de datos contiene una gran cantidad de campos en los que debemos ingresar los parámetros de la batería y los modos de operación del controlador.
En la pestaña Química, puede intentar encontrar calibraciones listas para las celdas utilizadas.
Para mi YOKU LP 5558115 3500mAh, no había calibraciones listas (por cierto, las calibraciones se actualizan constantemente ). Encontramos similares YOKU LP 656193 4000mAh. Al darme cuenta de que todavía no sé nada sobre los paquetes disponibles, elegí este perfil.Luego, en la pestaña Memoria de datos, configuré:Calibración: valores de calibración para voltímetros (celdas, baterías y un adaptador externo), resistencia del sensor de corriente, valores de calibración para el sensor de temperatura.Configuraciones:inclusión de protecciones, termistores, LED, modo de suspensión, configuración de batería.Protecciones: configuración de umbrales de protección (tensión, tiempo, temperatura), configuración de umbrales de tensión del adaptador externo.Falla permanente: establecer umbrales para errores irreversibles (de modo que no sea posible el funcionamiento de la batería).Algoritmo de carga avanzado: configuración del cargador (corrientes, voltajes para diferentes rangos de temperatura, señal del final de la carga, balanceo).Medición de gas: configuración de la unidad para determinar el nivel de carga (capacidad de la placa de identificación / voltaje de la celda, resistencia del cable, estadísticas).Potencia: configuración de modos de funcionamiento del controlador.Estado de PF:Estado de falla permanente estado de bitDatos del sistema: campos para datos del fabricante.Configuración de SBS: configuración de umbrales de activación para la activación de alarma, información básica de la batería (número de serie, fecha de producción, fabricante, nombre, química).Soporte LED: configuración del modo de luz indicadora LED.Cuadro negro : cuadro negro (historial de cambios en los bits de estado de protección).Vida útil : estadísticas de la batería.Tabla Ra: una tabla de resistencias celulares internas.Durante el proceso de configuración, no cambié todos los campos, pero esto fue suficiente para comenzar.Con esta parte del circuito, solo había una jamba de hardware conectada a la salida del microcircuito 21-AFEFUSE. La cosa fue así:Estaba arrancando el circuito de la placa de depuración a excepción del microcircuito de protección secundario y el fusible quemado. El BQ40Z60 tiene 21 pines AFEFUSE para quemar un fusible (como pensé). Así que miré la página 5 de la hoja de datos BQ40Z60 , vi el
tipo de salida Salida en la tabla y, con la conciencia tranquila, la dejé colgando en el aire. Los problemas surgieron después de soldar la placa: clasifiqué todas las configuraciones (y en ese momento había muchas dudas), pero no funcionó: los transistores de carga y descarga no se encendieron. Después de 2 días de duda / reflexión / prueba y error, noté que el bit FUSE_EN no estaba configurado y decidí "preguntar a la gente" y cuando publiqué una pregunta, recibí una idea.
Mirando la placa de circuito de la placa de depuración, sugerí que el pin AFEFUSE también puede ser una entrada, lo que se confirmó en la sección 9.3.2.4 p.24, que dice que si el pin no se usa, debe conectarse a tierra. Lo hice con pinzas y funcionó. Después de 5 minutos, me respondieron en e2e.com - la respuesta es clara y correcta, expresé mi "phi" sobre el error en la tabla de resultados - prometieron arreglarlo en futuras versiones de la documentación.Para poner fin a la configuración del controlador, ejecuté 2 ciclos de entrenamiento de carga / descarga completa + relajación (tomó un total de 30 horas).Ahora pasemos a programar el STM32F042. En la etapa simulada, este procesador no requería mucho:- Controlar el convertidor de voltaje, procesar los botones.- Duerma lo más posible para no descargar la batería.- Lea los parámetros principales de la batería del controlador (voltaje, corriente, nivel de carga, temperatura, estado actual, número de ciclos, tiempo de carga / descarga completa) y envíelos a la PC a través de USART (ya que el convertidor CP2102 ya estaba en la placa). Aunque el procesador contiene USB a bordo, no lo usé en el diseño, y se realizó un diseño para 051 MK, pero no pude comprarlo.El control del convertidor se redujo a dos conclusiones (encendido y modo de funcionamiento), suministrando el PWM (con filtrado RC posterior) a la salida de la configuración de frecuencia de conversión del chip LTC3780 (como resultado, establezca la frecuencia a un máximo de 400 kHz) y la entrada de monitoreo de señal PowerGood. Pero incluso aquí logré pisar el rastrillo. El error estaba flotando y ocurrió cuando Power Bank permaneció durante mucho tiempo, expresado en el hecho de que simplemente no se encendió. El problema fue que primero encendí la interrupción a la señal PowerGood del LTC3780, y luego encendí el chip (EN). Resultó que la interrupción se disparó incluso antes del inicio del convertidor y lo apagó. Reorganizó los eventos en lugares y agregó un retraso: el problema desapareció. De lo contrario, esta funcionalidad fue fácil.Se decidió hacer una interfaz de usuario con 1 botón y 5 (6) LED (aunque había 2 botones y 10 LED en la placa de diseño). Funciona de la siguiente manera:el dispositivo está apagado -> pulsación corta (<500 ms) - animación del nivel de carga en 4 LED.El dispositivo está apagado -> pulsación larga (> 500 ms) - encienda el dispositivo (se enciende el 5º LED).El dispositivo se apaga -> conectando la memoria -> animación del nivel de carga en 4 LED hasta el final del proceso de carga.El dispositivo está encendido -> pulsación corta - animación del nivel de carga en 4 LED.Dispositivo encendido -> pulsación larga - apaga el dispositivo.Dispositivo apagado -> consumo de corriente inferior a 50 mA durante más de 3 min. - apague el dispositivo.Esto permitió eliminar 27 elementos del dispositivo.Ya tenía experiencia en la implementación de modos de suspensión en STM32F0xx, así que no conté con un gran rastrillo aquí. Para optimizar el consumo, primero reemplacé el LDO 3.3V por mcp1703 con una baja corriente de mi propio consumo (era necesario no arrancar la depuración, sino instalarlo de inmediato). Tamaño, precio, consumo, kit de carrocería, todo menos que el LP2951.Gracias a Hardegor por editar LDO para Li-ion 4s. Mcp1703 no se puede usar debido al bajo voltaje de entrada. Usé LiFePo4 para la química, no hay tal problema. ¡¡¡Ten cuidado!!!-Cuando el dispositivo está apagado, el MK está en modo EN ESPERA y responde solo al presionar un botón o la conexión de la memoria. El consumo en este modo es de 108 μA (100 de ellos consumen BQ40Z60).-Cuando el dispositivo está encendido, el procesador la mayor parte del tiempo (a excepción de los momentos de indicación y sondeo del BQ40Z60) está en modo STOP con un consumo de 1,5 mA (1 mA es un LED). En el momento de la interrogación y la indicación, el consumo de corriente varía de 4.5 a 9 mA.- Cuando se conecta un USB MK en modo RUN de 48 MHz, el consumo es de 15 mA. En el futuro, alimentaré el MK en este modo desde USB.El mayor problema potencial fue la encuesta BQ40Z60. No trabajé con SMBus y hasta el último esperaba que SMBus fuera I2C 1v1 (esto se debe en parte a que el nivel físico es el mismo para ellos), pero resultó que el nivel del canal es muy diferente y esto creó una serie de dificultades. Aquí no describiré las diferencias entre SMBus e I2C, pero proporcionaré un enlace a un artículo bastante competente . En la etapa de diseño, no me involucré en la lucha contra SMBus (por cierto, como programador, soy mucho más débil que un diseñador de circuitos) y como los comandos de envío y recepción de bytes en SMBus e I2C eran completamente idénticos, solo los utilicé. Como resultado, leí SOC, SOH, Current, CellVolt, TimeToFull, TimeToEmpty de BQ40Z60. Dependiendo de los valores de los registros, el modo de operación cambió (se emitieron advertencias, se produjo cualquier apagado).Bueno, en el lado de la PC, por supuesto, se necesitaba un programa que pudiera mostrar los datos leídos de la batería de forma conveniente. Como solo podía usar GUI en Borland C ++ Builder y lo hice durante mucho tiempo, le pedí al programador que dibujara una depuración simple para mí. Para un látigo rápido, salió lo siguiente:
Este es todo el trabajo que se realizó en la etapa de diseño. Además en los planes (y dado que describo las operaciones que ya se han completado, parte del trabajo ya se ha realizado), la transferencia de especificaciones técnicas al diseñador para el desarrollo / fabricación del paquete PowerBank, corrección / revisión de errores del circuito, alteración de la placa para el caso, revisión de software. Después de eso, el dispositivo será similar a un producto y, una vez completado, se convertirá en un producto en el sentido literal de la palabra. En las siguientes partes del artículo, consideraremos las etapas y las principales dificultades de la transición de un diseño a un producto terminado, trabajaremos en el empaque, consideraremos los costos de varias soluciones y operaciones, la optimización y también veremos el resultado final. Source: https://habr.com/ru/post/es386899/
All Articles