Índice:

Arduino LTC6804 BMS - Parte 2: Placa de equilíbrio: 5 etapas
Arduino LTC6804 BMS - Parte 2: Placa de equilíbrio: 5 etapas

Vídeo: Arduino LTC6804 BMS - Parte 2: Placa de equilíbrio: 5 etapas

Vídeo: Arduino LTC6804 BMS - Parte 2: Placa de equilíbrio: 5 etapas
Vídeo: Модернизация ИБП APC 650, часть 2 - установка LiFePo4 аккумулятора, обновление логики 2024, Novembro
Anonim
Arduino LTC6804 BMS - Parte 2: Placa de equilíbrio
Arduino LTC6804 BMS - Parte 2: Placa de equilíbrio

A parte 1 está aqui

Um sistema de gerenciamento de bateria (BMS) inclui a funcionalidade para detectar parâmetros importantes do pacote de bateria, incluindo tensões de célula, corrente de bateria, temperaturas de célula, etc. Se algum deles estiver fora de uma faixa predefinida, o pacote pode ser desconectado de sua carga ou carregador, ou outra ação apropriada pode ser tomada. Em um projeto anterior (https://www.instructables.com/id/Arduino-LTC6804-Battery-Management-System/), discuti meu design BMS, que é baseado no chip Linear Technology LTC6804 Monitor de bateria multicelular e um microcontrolador Arduino. Este projeto estende o projeto BMS adicionando balanceamento de pacote de bateria.

As baterias são construídas a partir de células individuais em configurações paralelas e / ou em série. Por exemplo, um pacote 8p12s seria construído usando 12 conjuntos conectados em série de 8 células conectadas em paralelo. Haveria um total de 96 células no pacote. Para melhor desempenho, todas as 96 células devem ter propriedades semelhantes, no entanto, sempre haverá alguma variação entre as células. Por exemplo, algumas células podem ter menor capacidade do que outras células. À medida que o pacote é carregado, as células de menor capacidade atingirão sua tensão máxima de segurança antes do resto do pacote. O BMS detectará essa alta tensão e interromperá o carregamento adicional. O resultado será que grande parte da bateria não estará totalmente carregada quando o BMS interromper o carregamento devido à voltagem mais alta da célula mais fraca. Uma dinâmica semelhante pode acontecer durante a descarga, quando as células de maior capacidade não podem descarregar completamente porque o BMS desconecta a carga quando a bateria mais fraca atinge seu limite de baixa tensão. O pacote é, portanto, tão bom quanto suas baterias mais fracas, como uma corrente sendo tão forte quanto seu elo mais fraco.

Uma solução para esse problema é usar uma prancha de equilíbrio. Embora existam muitas estratégias para equilibrar o pacote, as placas de equilíbrio "passivas" mais simples são projetadas para sangrar parte da carga das células de tensão mais alta quando o pacote está quase cheio. Enquanto alguma energia é desperdiçada, a embalagem pode, como um todo, armazenar mais energia. O sangramento é feito dissipando alguma energia por meio de uma combinação de resistor / chave controlada por um microcontrolador. Este instrutível descreve um sistema de balanceamento passivo compatível com o BMS arduino / LTC6804 de um projeto anterior.

Suprimentos

Você pode solicitar o Balance Board PCB da PCBWays aqui:

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

Etapa 1: Teoria de Operação

Teoria de Operação
Teoria de Operação

A página 62 da folha de dados LTC6804 discute o balanceamento de células. Existem duas opções: 1) usando os MOSFETS de canal N internos para drenar a corrente das células altas, ou 2) usar os MOSFETS internos para controlar interruptores externos que transportam a corrente de drenagem. Eu uso a segunda opção porque posso projetar meu próprio circuito de purga para lidar com corrente mais alta do que poderia ser feito usando os interruptores internos.

Os MOSFETS internos estão disponíveis através dos pinos S1-S12, enquanto as próprias células são acessadas através dos pinos C0-C12. A imagem acima mostra um dos 12 circuitos de sangria idênticos. Quando Q1 está ligado, a corrente fluirá de C1 para o aterramento através de R5, dissipando parte da carga na célula 1. Selecionei um resistor de 6 Ohms e 1 Watt, que deve ser capaz de lidar com vários miliampéres de corrente de sangria. um LED adicionado para que o usuário possa ver quais células estão se equilibrando a qualquer momento.

Os pinos S1-S12 são controlados pelo CFGR4 e os primeiros 4 bits dos grupos de registro CFGR5 (consulte as páginas 51 e 53 da folha de dados LTC6804). Esses grupos de registros são definidos no código do Arduino (discutido abaixo) na função balance_cfg.

Etapa 2: Esquemático

Esquemático
Esquemático

O esquema para o quadro de equilíbrio BMS foi projetado usando Eagle CAD. É bastante simples. Existe um circuito de purga para cada segmento da série de baterias. Os interruptores são controlados por sinais do LTC6804 através do cabeçalho JP2. A corrente de sangria flui da bateria através do cabeçalho JP1. Observe que a corrente de sangria flui para o próximo segmento inferior da bateria, então, por exemplo, C9 sangra em C8, etc. O símbolo de escudo do Arduino Uno é colocado no esquema para o layout de PCB descrito na Etapa 3. Uma imagem de resolução mais alta é fornecida no arquivo zip. A seguir está a lista de peças (por algum motivo, o recurso de upload de arquivo Instructables não está funcionando para mim …)

Descrição das peças do pacote do dispositivo do valor da quantidade

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, Q6,, Q9, Q10, Q11, Q12 P-Channel Mosfet 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 12 200 R-US_R0805 R0805 R1, R2, R3, R28, R29, R30, R31, R32, R33, R34, R35, R36 RESISTOR, símbolo americano

Etapa 3: Layout PCB

Layout PCB
Layout PCB

O layout é determinado principalmente pelo design do sistema BMS principal discutido em um instrutível separado (https://www.instructables.com/id/Arduino-LTC6804-Battery-Management-System/). Os cabeçalhos JP1 e JP2 devem corresponder aos cabeçalhos correspondentes no BMS. Os Mosfets, resistores de purga e LEDs são organizados de maneira lógica no escudo do Arduino Uno. Os arquivos Gerber foram criados usando Eagle CAD e os PCBs foram enviados para a Sierra Circuits para fabricação.

O arquivo anexado "Gerbers Balance Board.zip.txt" é na verdade um arquivo zip contendo os Gerbers. Você pode simplesmente excluir a parte.txt do nome do arquivo e, em seguida, descompactá-lo como um arquivo zip normal.

Envie-me uma mensagem se você gostaria de obter um PCB, ainda posso ter algum sobrando.

Etapa 4: Montagem de PCB

Os PCBs da placa de equilíbrio foram soldados à mão usando uma estação de solda com temperatura controlada Weller WESD51 com uma ponta de "chave de fenda" ETB ET série 0,093 e solda de 0,3 mm. Embora pontas menores possam parecer melhores para trabalhos complexos, elas não retêm o calor e, na verdade, tornam o trabalho mais difícil. Use uma caneta de fluxo para limpar as almofadas de PCB antes de soldar. A solda de 0,3 mm funciona bem para peças SMD de solda manual. Coloque um pouco de solda em uma almofada e, em seguida, coloque a peça com uma pinça ou estilete e prenda a almofada. A almofada restante pode então ser soldada sem que a peça se mova. Certifique-se de não superaquecer a peça ou as almofadas do PCB. Como a maioria dos componentes é bastante grande para os padrões SMD, o PCB é bastante fácil de montar.

Etapa 5: Código

Código
Código

O código completo do Arduino é fornecido no instrutível anterior vinculado a acima. Aqui, chamarei sua atenção para a seção que controla o balanceamento celular. Conforme mencionado acima, S1-S12 são controlados pelo CFGR4 e os primeiros 4 bits dos grupos de registro CFGR5 no LTC6804 (consulte as páginas 51 e 53 da folha de dados LTC6804). A função de loop do código do Arduino detecta o segmento de pacote de bateria de maior tensão e coloca seu número na variável cellMax_i. Se a voltagem de cellMax_i for maior que CELL_BALANCE_THRESHOLD_V, o código irá chamar a função balance_cfg (), passando o número do segmento alto, cellMax_i. A função balance_cfg define os valores do registro LTC6804 apropriado. Uma chamada para LTC6804_wrcfg, em seguida, grava esses valores no IC, ativando o pino S associado a cellMax_i.

Recomendado: