Desenvolvimento de um banco de potência para um laptop. Do layout ao produto final. Parte dois

Na última parte do artigo sobre o desenvolvimento do PowerBank para um laptop, decidimos por um layout fabricado, medimos a eficiência e entendemos o que fazer em seguida. E então foi necessário reviver o pedaço de ferro. Portanto, apresento a sua atenção a parte dois: layout do software.



A quebra entre as peças acabou sendo bastante grande - todas as forças foram lançadas no projeto de uma bateria externa de carregamento rápido, que agora está coletando suporte no boomstarter . Vamos continuar. Para entender quais microcircuitos teremos que programar, examinaremos o diagrama de blocos do layout.Aqui é claro que teremos que escrever um software para o controle MK (STM32F042), além de configurar o sistema de controle da bateria de íon de lítio + o carregador (BQ40Z60). Comecei com o segundo, porque considerava essa parte a mais difícil. Para programar o controlador BQ40Z60, precisamos: - Os adaptadores EV2400 e EV2300 ( prontos ou domésticos). Deixei o EV2300 de projetos anteriores, então o usei. - Programa







Estúdio de gerenciamento de bateria (bqStudio) .
O adaptador é conectado via SMBus, para a conexão deixei pontos de solda nas linhas SMBD e SMBC (não é a solução mais prática - então percebi que precisava instalar o conector).

Depois de dançar com um pandeiro, o BQ40Z60 decidiu usar o Battery Management Studio. O motivo disso foi o modo de suspensão no qual o controlador entra quando não há pull-up no barramento SMBus e nenhum acesso a ele. Ele acorda ao conectar a memória.
Em seguida, ajustaremos diretamente o chip BQ40Z60. Dizer que ele tem muitos registros é não dizer nada. Um milhão de configurações. Como a configuração é um processo longo e complicado (é necessário um artigo separado para descrição), descreverei-a brevemente.

Após o início, a janela principal do Battery Management Studio é exibida.

A guia Memória de dados contém um grande número de campos nos quais devemos inserir os parâmetros da bateria e os modos de operação do controlador.

Na guia Química, você pode tentar encontrar calibrações prontas para as células usadas.


Para o meu YOKU LP 5558115 3500mAh, não havia calibrações prontas (a propósito, as calibrações são atualizadas constantemente ). Encontrado YOKU LP 656193 4000mAh semelhante. Tendo percebido que ainda não sei nada sobre os pacotes disponíveis, escolhi esse perfil.

Em seguida, na guia Memória de dados, eu configurei:
Calibração: valores de calibração para voltímetros (células, baterias e um adaptador externo), resistência do sensor de corrente, valores de calibração para o sensor de temperatura.
Definições:inclusão de proteções, termistores, LEDs, modo de suspensão, configuração da bateria.
Proteções: ajuste dos limites de proteção (tensão, tempo, temperatura), ajuste dos limites de tensão do adaptador externo.
Falha permanente: definir limites para erros irreversíveis (de modo que não seja possível uma operação adicional da bateria).
Algoritmo de carga avançado: configuração do carregador (correntes, tensões para diferentes faixas de temperatura, sinal do fim da carga, balanceamento).
Medição de gás: configuração da unidade para determinar o nível de carga (capacidade da placa de identificação / tensão da célula, resistência do fio, estatística).
Potência: configurando os modos de operação do controlador.
Status do PF:Status de falha permanente status do bit
Dados do sistema: campos para dados do fabricante.
Configuração do SBS: configuração dos limites do acionador de alarme, informações básicas da bateria (número de série, data de produção, fabricante, nome, química).
Suporte de LED: configuração do modo da luz indicadora de LED.
Caixa preta : caixa preta (histórico de alterações nos bits de status da proteção).
Vida útil : estatísticas da bateria.
Ra Table: uma tabela de resistências internas da célula.

Durante o processo de instalação, não alterei todos os campos, mas isso foi suficiente para iniciar.

Com essa parte do circuito, havia apenas um batente de hardware conectado à saída do microcircuito 21-AFEFUSE. Aconteceu assim:
Eu estava rasgando o circuito da placa de depuração, exceto o microcircuito de proteção secundária e o fusível queimado. O BQ40Z60 possui 21 pinos AFEFUSE para queimar um fusível (como eu pensava). Então olhei para a quinta página da folha de dados do BQ40Z60. Vi o

tipo de saída Output na tabela e, com a consciência limpa, o deixei pairando no ar. Os problemas surgiram após a soldagem da placa: eu resolvi todas as configurações (e na época havia muitas dúvidas), mas não funcionou - os transistores de carga e descarga não foram ligados. Após 2 dias de dúvida / deliberação / tentativa e erro, notei que o bit FUSE_EN não estava definido e decidi "perguntar às pessoas" e, quando publiquei uma pergunta, veio um insight

Observando a placa de circuito da placa de depuração, sugeri que o pino AFEFUSE também pode ser uma entrada, o que foi confirmado na seção 9.3.2.4 p.24, que diz que se o pino não for usado, ele deverá ser conectado ao terra. Eu fiz isso com uma pinça e funcionou. Após 5 minutos, eles me responderam no e2e.com - a resposta é clara e correta, eu expressei meu “phi” sobre o erro na tabela de saída - eles prometeram corrigi-lo em versões futuras da documentação.
Para encerrar as configurações do controlador, executei 2 ciclos de treinamento de carga / descarga + relaxamento (levou um total de 30 horas).

Agora vamos prosseguir com a programação do STM32F042. No estágio de simulação, este processador não exigiu muito:
- Controle o conversor de tensão, processe os botões.
- Vá o mais longe possível para dormir, para não descarregar a bateria.
- Leia os principais parâmetros da bateria no controlador (tensão, corrente, nível de carga, temperatura, estado atual, número de ciclos, tempo para carga / descarga completa) e envie-os para o PC via USART (uma vez que o conversor CP2102 já estava na placa). Embora o processador contenha USB embutido, eu não o usei no layout e foi feito um layout para o 051 MK, mas não consegui comprá-lo.

O controle do conversor foi reduzido para definir duas conclusões (modo de ativação e operação), fornecendo o PWM (com filtragem RC subsequente) à saída da configuração de frequência de conversão do chip LTC3780 (como resultado, defina a frequência para um máximo de 400 kHz) e a entrada de monitoramento de sinal PowerGood. Mas mesmo aqui eu consegui pisar no ancinho. O bug estava flutuando e ocorreu quando o Power Bank se deitou por um longo tempo, expresso no fato de que ele simplesmente não foi ligado. O problema foi que primeiro liguei a interrupção no sinal PowerGood do LTC3780 e depois liguei o próprio chip (EN). Aconteceu que a interrupção foi acionada antes mesmo do início do conversor e o desligou. Reorganizou os eventos em alguns locais e adicionou um atraso - o problema desapareceu. Caso contrário, essa funcionalidade foi fácil.

Decidiu-se criar uma interface de usuário com 1 botão e 5 (6) LEDs (embora houvesse 2 botões e 10 LEDs na placa de layout). Funciona da seguinte forma:
O dispositivo está desligado -> pressão curta (<500 ms) - animação do nível de carga em 4 LEDs.
O dispositivo está desligado -> pressão longa (> 500 ms) - liga o dispositivo (o quinto LED acende).
O dispositivo está desligado -> conectando a memória -> animação do nível de carga em 4 LEDs até o final do processo de carregamento.
O dispositivo está ligado -> pressão curta - animação do nível de carga em 4 LEDs.
Dispositivo ligado -> pressão longa - desligue o dispositivo.
Dispositivo desligado -> consumo de corrente inferior a 50 mA por mais de 3 min. - desligue o dispositivo.
Isso permitiu remover 27 elementos do dispositivo.

Eu já tinha experiência na implementação de modos de suspensão no STM32F0xx, por isso não contei com uma grande comissão aqui. Para otimizar o consumo, substituí o 3.3V LDO pelo mcp1703 por uma corrente baixa do meu próprio consumo (era necessário não interromper a depuração, mas instalá-lo imediatamente). Tamanho, preço, consumo, kit de carroceria - tudo menos que o LP2951.
Agradecemos à Hardegor pela edição do LDO para os íons de lítio 4. O Mcp1703 não pode ser usado devido à baixa tensão de entrada. Eu usei o LiFePo4 para química - não existe esse problema. Seja cuidadoso!!!
-Quando o dispositivo é desligado, o MK está no modo STANDBY e responde apenas ao pressionar um botão ou à conexão da memória. O consumo neste modo é de 108 μA (100 deles consome BQ40Z60).
-Quando o dispositivo é ligado, o processador na maioria das vezes (exceto nos momentos de indicação e busca do BQ40Z60) fica no modo STOP com um consumo de 1,5 mA (1 mA é um LED). No momento da interrogação e indicação, o consumo atual varia de 4,5 a 9 mA.
- Quando um USB MK é conectado no modo RUN de 48 MHz, o consumo é de 15 mA. No futuro, ligarei o MK neste modo a partir do USB.

O maior problema em potencial foi a pesquisa BQ40Z60. Eu não trabalhei com o SMBus e até o último esperava que o SMBus fosse I2C 1v1 (em parte porque o nível físico é o mesmo para eles), mas aconteceu que o nível do canal é muito diferente e isso criou várias dificuldades. Aqui não descreverei as diferenças entre SMBus e I2C, mas fornecerei um link para um artigo bastante competente . Na fase de layout, não me envolvi na luta contra o SMBus (a propósito, como programador, sou muito mais fraco que um projetista de circuitos) e, como os comandos de envio e recebimento de bytes no SMBus e I2C eram completamente idênticos, usei apenas eles. Como resultado, li SOC, SOH, Current, CellVolt, TimeToFull, TimeToEmpty do BQ40Z60. Dependendo dos valores dos registros, o modo de operação foi alterado (avisos foram emitidos, ocorreu qualquer desligamento).

Bem, no lado do PC, é claro, era necessário um programa que pudesse exibir os dados lidos da bateria de uma forma conveniente. Como eu só podia usar GUIs no Borland C ++ Builder e o fazia por um longo tempo, pedi ao programador para esboçar uma depuração simples para mim. Para um rápido chicote, saiu o seguinte:


Esse é todo o trabalho realizado na fase de layout. Além disso, nos planos (e desde que descrevo as operações que já foram concluídas, parte do trabalho já foi realizado), a transferência de especificações técnicas para o projetista para o desenvolvimento / fabricação do pacote PowerBank, correção / revisão de erros do circuito, alteração da placa para o caso, revisão de software. Depois disso, o dispositivo será semelhante a um produto e, após a conclusão, se tornará um produto no sentido literal da palavra. Nas partes seguintes do artigo, consideraremos as etapas e as principais dificuldades da transição de um layout para um produto acabado, trabalharemos em embalagens, consideraremos os custos de várias soluções e operações, otimizaremos e também veremos o resultado final.

Source: https://habr.com/ru/post/pt386899/


All Articles