- Por que precisamos de um testador de capacidade da bateria?
- Componentes necessários
- Diagrama de circuito do testador de capacidade da bateria Arduino
- Programa Arduino para medir a capacidade da bateria
- Melhorias de precisão
- Construindo e testando o circuito
Com o advento da tecnologia, nossos aparelhos e aparelhos eletrônicos estão se tornando cada vez menores, com aplicativos mais funcionais e complexos. Com este aumento de complexidade, a necessidade de energia do circuito também aumentou e em nossa busca para tornar o dispositivo o mais pequeno e portátil possível, precisamos de uma bateria que possa fornecer alta corrente por um longo período de tempo e ao mesmo tempo, pesar muito menos para que o dispositivo permaneça portátil. Se você quiser saber mais sobre baterias, também pode ler este artigo sobre terminologias básicas de baterias.
Entre muitos tipos diferentes de baterias disponíveis, baterias de chumbo-ácido, baterias de Ni-Cd e baterias de Ni-MH não são adequadas, pois pesam mais ou não podem fornecer a corrente necessária para nossa aplicação, isso nos deixa com as baterias de íon-lítio que pode fornecer alta corrente, mantendo o peso baixo e tamanho compacto. Anteriormente, também construímos um carregador de bateria 18650 e um módulo de reforço e um sistema de monitoramento de bateria baseado em IoT, você pode verificá-los se estiver interessado.
Por que precisamos de um testador de capacidade da bateria?
Existem muitos fornecedores de baterias no mercado vendendo versões baratas de baterias de íon-lítio alegando especificações bizarras com um preço muito baixo, o que é bom demais para ser verdade. Quando você compra essas células, elas não funcionam de forma alguma ou, se funcionarem, a capacidade de carga ou o fluxo de corrente é tão baixo que não podem funcionar com a aplicação. Então, como testar uma bateria de lítio se a célula não for uma dessas cópias baratas? Um dos métodos é medir a tensão de circuito aberto sem carga e com carregamento, mas isso não é nada confiável.
Portanto, vamos construir um testador de capacidade da bateria 18650 para uma célula de íons de lítio 18650 que descarregará uma célula 18650 totalmente carregada através de um resistor enquanto mede a corrente que flui através do resistor para calcular sua capacidade. Se você não obtiver a capacidade da bateria reivindicada enquanto a voltagem da célula estiver dentro dos limites especificados, essa célula está com defeito e você não deve usá-la, pois o estado de carga da célula se esgotará em uma taxa muito rápida sob carga, criando um loop de corrente local, se usado em uma bateria, resultando em aquecimento e possível incêndio. Então, vamos pular direto para ele.
Componentes necessários
- Arduino Nano
- LCD de 16 × 2 caracteres
- LM741 OPAMP IC
- Resistor de 2,2Ω, 5 Watts
- 7805 IC regulador de tensão positiva
- Fonte de alimentação 12V
- Potenciômetro Trimmer 10kΩ
- Capacitor 0,47uF
- 33kΩ Resistor
- Conector DC Power Barrel Jack
- Terminais de parafuso PCB
- IRF540N N-Channel Mosfet IC
- Perfboard
- Kit de Solda
- Dissipadores de calor
Diagrama de circuito do testador de capacidade da bateria Arduino
O diagrama de circuito completo para o testador de capacidade da bateria 18650 é mostrado abaixo. A explicação do circuito é a seguinte-
Unidade computacional e de exibição:
Este circuito é dividido em duas partes, a primeira é uma fonte baixa de 5 V para Arduino Nano e tela LCD alfanumérica 16 × 2 e suas conexões para exibir os resultados das medições de corrente e tensão em tempo real. O circuito é alimentado pela fonte de alimentação de 12V usando SMPS ou você pode usar uma bateria de 12V assim como a corrente maximin será em torno de 60-70mA para alimentar o Arduino e a tela LCD.
Para reduzir a tensão para 5 V, usaremos um regulador de tensão linear que pode levar até 35 V e precisa de pelo menos 7,5 V de alimentação de entrada para fornecer alimentação de 5 V regulada e a tensão em excesso é dissipada como calor, portanto, se sua entrada tensão LM7805 Regulador de tensão IC é mais de 12 V, então considere adicionar um dissipador de calor para que ele não seja danificado. O LCD é alimentado por uma fonte de 5 V do 7805 e está conectado ao Arduino e funcionando no modo de 4 bits. Também adicionamos um potenciômetro de limpador de 10k Ω para controlar o contraste do display LCD.
Circuito de corrente de carga constante:
Em segundo lugar, está o circuito de carga de corrente constante baseado em PWM para tornar a corrente de carga que flui através do resistor controlável por nós e constante, de modo que não haja erro aparecendo devido à variação da corrente com o tempo conforme a tensão da célula diminui. Consiste em LM741 OPAMP IC e MOSFET IRF540N N-Channel, que controla a corrente que flui através do MOSFET ligando e desligando o MOSFET de acordo com o nível de tensão definido por nós.
O op-amp está funcionando no modo comparador,então neste modo. a saída do op-amp será alta sempre que a tensão do pino não inversor do op-amp for maior do que o pino inversor. Da mesma forma, se a tensão no pino inversor do amplificador operacional for maior do que no pino não inversor, a saída do amplificador operacional será reduzida. No circuito fornecido, o nível de tensão do pino não inversor é controlado pelo pino D9 PWM do Arduino NANO, que muda na frequência de 500 Hz que é então passada através do filtro de circuito RC passa baixa com valor de resistência 33kΩ e capacitor tendo uma capacitância de 0,47 uF, para fornecer um sinal DC quase constante no pino não inversor. O pino inversor é conectado ao resistor de carga, que lê a tensão através do resistor e do GND comum. O pino de saída do OPAMP é conectado ao terminal do gate do MOSFET para ligá-lo ou desligá-lo.O OPAMP tentará igualar as tensões em ambos os terminais, alternando o MOSFET conectado, de forma que a corrente que flui através do resistor seja proporcional ao valor PWM que você configurou no pino D9 do NANO. Neste projeto, a corrente máxima, limitei meu circuito é 1,3A, o que é razoável, pois a célula que tenho é 10A como sua classificação de corrente máxima
Medição de tensão:
A tensão máxima de uma célula Li-Ion típica totalmente carregada é de 4,1 V a 4,3 V, que é inferior ao limite de tensão de 5 V dos pinos de entrada analógica do Arduino Nano, que tem mais de 10kΩ de resistência interna para que possamos conectar diretamente o Ligue-se a qualquer um dos pinos de entrada analógica sem se preocupar com a corrente que flui através deles. Portanto, neste projeto, precisamos medir a tensão da célula para que possamos determinar se a célula está na faixa de operação de tensão correta e se está totalmente descarregada ou não.
Precisamos medir a corrente que flui através do resistor também, pois não podemos usar o shunt de corrente, pois a complexidade do circuito aumentará e o aumento da resistência no caminho de carga diminuirá a taxa de descarga da célula. O uso de resistores shunt menores exigirá um circuito amplificador adicional para tornar a leitura da tensão proveniente dele, legível para o Arduino.
Portanto, lemos diretamente a tensão no resistor de carga e, em seguida, usando a Lei de Ohm, dividimos a tensão obtida pelo valor do resistor de carga para fazer com que a corrente flua através dele. O terminal negativo do resistor é conectado diretamente ao GND, então podemos assumir com segurança que a tensão que estamos lendo no resistor é a queda de tensão no resistor.
Programa Arduino para medir a capacidade da bateria
Agora, depois de finalizar o circuito de hardware, passamos para a programação do Arduino. Agora, se você não tem o Arduino IDE instalado em seu PC, o que está fazendo aqui! Vá para o site oficial do Arduino e baixe e instale o IDE do Arduino ou você pode codificar em qualquer outro editor também, mas esse é um assunto para outro dia, por enquanto, continuemos com o IDE do Arduino. Agora estamos usando o Arduino Nano, então certifique-se de ter selecionado a placa Arduino Nano acessando FERRAMENTAS> PLACAS e selecionando ARDUINO NANO lá, agora selecione o processador correto do seu nano acessando FERRAMENTAS> PROCESSADORe enquanto você estiver lá, selecione também a porta à qual seu Arduino está conectado no seu PC. Estamos usando o Arduino para conduzir o LCD alfanumérico 16 × 2 conectado a ele e para medir a tensão da célula e a corrente fluindo através do resistor de carga, conforme explicado na seção anterior, começamos nosso código declarando os arquivos de cabeçalho para conduzir 16 × 2 Ecrã LCD alfanumérico. Você pode pular esta seção para obter o código totalmente preparado e servido no final da página, mas tenha paciência enquanto dividimos o código em pequenas seções e tentamos explicar.
Agora que o arquivo de cabeçalho está definido, passamos para a declaração das variáveis, usaremos no código para calcular a tensão e a corrente. Além disso, temos que definir os pinos que estamos usando para conduzir o LCD e os pinos que usaremos para fornecer saída PWM e ler as tensões analógicas provenientes da célula e do resistor também nesta seção.
#incluir
Agora vindo para a parte de configuração, se você deseja manter seu Arduino conectado ao seu PC o tempo todo e monitorar o progresso usando o Serial Monitor e inicializar a tela LCD aqui. Ele também exibirá uma mensagem de boas-vindas “Circuito de teste de capacidade da bateria” na tela por 3 segundos.
void setup () {Serial.begin (9600); lcd.begin (16, 2); lcd.setCursor (0, 0); // Coloque o cursor na primeira coluna e na primeira linha. lcd.print ("Capacidade da bateria"); lcd.setCursor (0,1); lcd.print ("Circuito de teste"); atraso (3000); lcd.clear (); }
Agora, não precisamos declarar o pino PWM do Arduino como saída, pois a função AnalogWrite que vamos usar em nosso loop principal cuida dessa parte. Você precisa definir o valor PWM a ser escrito nesse pino no código. Selecione o valor PWM cuidadosamente de acordo com a corrente de descarga necessária em sua aplicação. Um valor muito alto de PWM resultará em alta corrente com uma queda de alta tensão na célula de íons de lítio e um valor muito baixo de PWM resultará em um alto tempo de descarga da célula. Na função de loop principal, estaremos lendo as tensões nos pinos A0 e A1, pois o Arduino tem um ADC de 10 bits a bordo, portanto, devemos obter valores de saída digital variando de 0 a 1023, que precisaremos reduzir para o Faixa de 0-5 V multiplicando-a por 5,0 / 1023,0. Certifique-se de medir corretamente a tensão entre os pinos 5V e GND do Arduino Nano usando um voltímetro ou multímetro calibrado, pois na maioria das vezes a tensão regulada não é exatamente 5,0V e mesmo uma pequena diferença nesta tensão de referência resultaria em erros de rastejamento nas leituras de tensão, então meça a tensão correta e substitua 5,0 no multiplicador dado acima.
Agora, para explicar a lógica do código, medimos continuamente a voltagem da célula e se a voltagem da célula está acima do limite superior especificado por nós no código, a mensagem de erro é mostrada no LCD para que você saiba se a célula está sobrecarregado ou há algo errado com a conexão e a energia para o pino da porta do MOSFET é interrompida para que nenhuma corrente possa fluir através do resistor de carga. É crucial que você carregue totalmente sua célula antes de conectá-la à placa do testador de capacidade para que possa calcular sua capacidade de carga total.
analogWrite (MOSFET_Pin, PWM_VALUE); // lê a entrada no pino analógico 0: int sensorValue_voltage_Cell = analogRead (A0); // Converta a leitura analógica (que vai de 0 a 1023) para uma tensão (0 a 5V): float voltage = sensorValue_voltage_Cell * (5.08 / 1023.0); Serial.print ("VOLTAGEM:"); Serial.println (voltagem); // Aqui a tensão está sendo impressa no Monitor Serial lcd.setCursor (0, 0); // Coloque o cursor na primeira coluna e na primeira linha. lcd.print ("Voltagem:"); // Imprime a leitura da tensão na tela lcd.print (voltage); atraso (100); int sensorValue_Shunt_Resistor = analogRead (A1); float voltage1 = sensorValue_Shunt_Resistor * (5.08 / 1023.0); corrente flutuante = tensão1 / resistor; Serial.print ("Atual:"); Serial.println (atual); lcd.setCursor (0, 1);// Coloque o cursor na primeira coluna e na segunda linha (a contagem começa em 0!). lcd.print ("Atual:"); lcd.print (atual);
Agora, se a tensão da célula está dentro dos limites superior e inferior de tensão especificados por nós, o Nano irá ler o valor da corrente pelo método especificado acima e multiplicá-lo pelo tempo passado durante as medições e armazená-lo na variável de capacidade que definimos anteriormente em unidades mAh. Durante todo esse tempo, os valores de corrente e tensões em tempo real são exibidos na tela LCD anexada e, se desejar, também podem ser visualizados no monitor serial. O processo de descarregar a célula continuará até que a tensão da célula alcance abaixo do limite inferior especificado por nós no programa e então a capacidade total da célula é exibida na tela LCD e o fluxo de corrente através do resistor é interrompido puxando a porta MOSFET pino baixo.
else if (tensão> BAT_LOW && voltage <BAT_HIGH) {// Verifique se a tensão da bateria está dentro do limite seguro millisPassed = millis () - previousMillis; mA = atual * 1000,0; Capacidade = Capacidade + (mA * (millisPassed / 3600000,0)); // 1 hora = 3600000ms para convertê-lo em unidades de mAh previousMillis = millis (); atraso (1000); lcd.clear (); }
Melhorias de precisão
É, sem dúvida, uma maneira boa o suficiente para ler tensão e corrente, mas não é perfeita. A relação entre a tensão real e a tensão ADC medida não é linear e isso resultará em algum erro nas medições das tensões e correntes.
Se você deseja aumentar a precisão do resultado, deve representar graficamente os valores ADC obtidos ao aplicar várias fontes de tensão conhecidas em um gráfico e, a seguir, determinar a equação do multiplicador a partir dele usando o método que desejar. Dessa forma, a precisão será melhorada e você obterá resultados muito próximos dos reais.
Além disso, o MOSFET que usamos não é um MOSFET de nível lógico, então ele precisa de mais de 7 V para ligar totalmente o canal atual e se aplicarmos 5 V diretamente a ele, as leituras de corrente seriam imprecisas. Mas você pode usar um nível lógico IRL520N N-Channel MOSFET para eliminar o uso de uma fonte de 12 V e trabalhar diretamente com os níveis lógicos de 5 V que você tem com seu Arduino.
Construindo e testando o circuito
Agora, como projetamos e testamos diferentes seções de nosso circuito em uma placa de ensaio e depois de nos certificarmos de que todas elas estão funcionando como pretendido, usamos uma Perfboard para soldar todos os componentes, pois é um método muito mais profissional e confiável para testar o circuito. Se desejar, você pode projetar seu próprio PCB no AutoCAD Eagle, EasyEDA ou Proteus ARES ou qualquer outro software de sua preferência. O Arduino Nano, o LCD alfanumérico 16 × 2 e o LM741 OPAMP são montados no Bergstik feminino para que possam ser reutilizados posteriormente.
Forneci uma alimentação de 12 V através de um conector DC Barrel Jack para o Circuito de Corrente de Carga Constante e, com a ajuda do LM7805, o 5 V para o Nano e a tela LCD são fornecidos. Agora ligue o circuito e ajuste o potenciômetro do trimmer para definir o nível de contraste da tela LCD, você deve ver a mensagem de boas-vindas na tela LCD agora, e então se o nível de tensão da célula estiver na faixa de trabalho, então a corrente - a tensão e a corrente da bateria serão exibidas lá.
Este é um teste muito básico para calcular a capacidade da célula que você está usando e pode ser melhorado pegando os dados e armazenando-os em um arquivo Excel para fazer o pós-processamento dos dados e a visualização por métodos gráficos. No mundo atual, baseado em dados, esta curva de descarga de célula pode ser usada para construir modelos preditivos precisos da bateria para simular e ver a resposta da bateria sob condição de carga sem testes do mundo real, usando software como NI LabVIEW, MATLAB Simulink, etc..e muitos mais aplicativos esperam por você. Você pode encontrar o funcionamento completo deste projeto no vídeo abaixo. Se você tiver alguma dúvida sobre este projeto, escreva-a na seção de comentários abaixo ou use nossos fóruns. Vá e divirta-se com ele e, se desejar, podemos orientá-lo na seção de comentários abaixo sobre como proceder a partir daqui. Até então Adios !!!