Carregador p/ Bateria Selada Qualquer Voltagem

https://storage.ning.com/topology/rest/1.0/file/get/704112577?profi...
CARREGADOR QUALQUER VOLTAGEM

BATERIA SELADA

As baterias chumbo-ácidas seladas caracterizam-se por pedirem carga por voltagem constante, em contraste com as comuns.

Muitos exemplos existem por aí de projetos desenvolvidos para 12 volts. Minha tarefa era a de construir um carregador para uma GPU (Ground Power Unit) de helicópteros, que utilizam baterias de 28 volts. Acabei com um projeto que pode ser facilmente adaptado para qualquer voltagem e amperagem.

As pesquisas me levaram a circuitos utilizando o Arduino. O problema que sempre observo, é que essa placa de desenvolvimento virou uma parafernália entre projetistas que pouco entendem de eletrônica, e em seus projetos encontro muitos problemas.

Neste ponto é que eu devo afirmar que não sou engenheiro eletrônico, nem tampouco programador em C++. Conheço um tanto de eletrônica por hobby e ainda vou gatinhando nos sketch de Arduino.

A idéia deste circuito não é totalmente original. Como quase tudo que fazemos, sempre estudamos os projetos dos outros.

Quando se lida com voltagens mais altas como neste caso, há a necessidade de isolar bastante o Arduino para protege-lo das consequências dele experimentar fatais picos de tensão. Foi isso que tentei fazer aqui, e é nisso que me diferenciei dos outros projetos que consultei na net.

O carregador baseia-se em um Arduino Mini mas pode-se utilizar qualquer outro. O programa irá faze-lo disparar um Mosfet de canal P em PWM. Quando digo PWM quero dizer uma série de pulsos gerados pelo sketch, mantendo constante o pico de voltagem de carga. A corrente obedecerá a resistencia interna da bateria, que aumenta rápida porem gradativamente com o processo de carga. Note-se que se se pretende fazer um carregador para baterias que sejam totalmente descarregadas, haverá com certeza a necessidade de se limitar a corrente nos primeiros minutos de carga. As instruções simplesmente emitem um pulso de duração inversamente proporcional a voltagem da bateria, interrompe para medir a voltarem e volta a carregar, sucessivamente. Tentei comentar bastante o sketch e espero que assim ele tenha ficado intuitivo. Passo agora a descrever o circuito

O Mosfet que usei foi o 9630, ok para as correntes de carga de minhas bateiras de 27 Ah. Outros modelos de canal P podem ser utilizados, adequando o circuito a diferentes cargas. O Arduino é alimentado por uma fonte de 6 VDC conectada ao pino Vin. Um diodo zener é utilizado para “ler” a tensão da bateria. No meu caso usei um  de 30V, abaixo portanto de minha voltagem de flutuação que será 32,2V (14 x 2,3). Isso me permite ajustar bem o sketch. Esse valor de zener poderá ser alterado para outras voltagens de baterias. Como o pino só pode receber até 5v, nesse ponto estará presente somente a tensão que exceder a tensão zener. Para esse sinal chegar com boa isolação ao Arduino, utilizei um LM358, conectado no modo de zero ganho, como seguidor de tensão. Devido a altíssima impedâncias dos pinos de entrada, ele pode ler a tensão através de um resistor de 3M e entregar quase a mesma voltagem ao pino A3. O microprocessador irá mandar o sinal de PWM através do pino D3 que por sua vez está conectado a um acoplador ótico. O transistor do acoplador irá trazer o Gate do Mosfet a zero, disparando-o. Como no meu caso a tensão é superior a tensão máxima daquele Gate, tive de acrescentar um pequeno circuito com um Zener para ajuste dessa variável, aproveitando também para alimentar o OpAmp. Esse diodo pode ser jumpeado nos casos em que a tensão da fonte seja adequada ao Mosfet. Para cargas maiores poder-se-ia facilmente juntar ao sketch um controle de temperatura do dissipador, usando-se o sensor adequado.

Não gosto muito daquelas placas universais com furinhos, acho mais fácil fazer logo um PCB, no fim do texto estão os arquivos de Eagle para quem precisar.

Aqui vai também o meu Sketch:

int LED1 = 8; // LED vermelho no pino 8
int LED2 = 9; // LED verde no pino 9
int y;
int choff = 1500; // tempo desligado para deixar a tensão da bateria estabilizar e ler y
long chon; //Tempo carregando
long CP = 550; //variável que determinará o estado de carga final
long Volt; // um número que mostrará o progresso do carregamento no monitor
void setup() {

pinMode(3, OUTPUT);
digitalWrite(3, LOW);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);

Serial.begin(9600);
delay(500);
y = analogRead(3); // ler a diferença entre a tensão zener e a carga da bateria

}

void loop() {
// Mostras no monitor, usadas para depurar e ajustar variáveis
Serial.print("CP = ");
Serial.println(CP);

CP = 550;
if (y <= CP)
chon = ((CP - y) * 100); // calcula o tempo transformando inversamente o valor de y em mils
else chon = 1000; // ajusta o tempo para 1 segundo, a bateria é considerada carregada, mantém a flutuação.
// É preciso ajustar o valor de chon para manter a corrente média de flutuação que a bateria requer.

digitalWrite(3, HIGH);

Volt = map(y, 0, 1023, 0, 5000); // vai publicar excesso de tensão zener em milivolts
Serial.print(y);
Serial.print(" ");
Serial.print ("Voltage: ");
Serial.print(Volt);
Serial.print(" ");

// gerencia os LEDs que indicam o esdato da carga
if (y > CP) digitalWrite(LED2, LOW);
if (y > CP) digitalWrite(LED1, HIGH); // Vermelho aceso bateria carregando
if (y <= CP) digitalWrite(LED2, HIGH);// Verde aceso bateria pronta
if (y <= CP) digitalWrite(LED1, LOW);

Serial.print("chon = ");
Serial.print(chon);
Serial.print(" ");
delay(chon); // Carrega durante o pulso chon
digitalWrite(3, LOW); // Desliga o Mosfet
delay (300);
y = analogRead(3); // lê a diferença entre a voltagem do Zener e a carga atual

delay(choff); // Tempo desligado do PWM

}

CarregadorQualquerVoltagem.ino

Arquivos de Eagle:

CarregadorGPUVer7.0.sch

CarregadorGPUVer7.0.brd

Exibições: 104

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de José Gustavo Abreu Murta em 10 janeiro 2019 às 10:32

O controle de corrente é essencial em qualquer carregador de baterias. 

Não use o seu carregador sem controlar a corrente, pois poderá danificar a bateria. 

Se estiver interessado no assunto, recomendo esse site fantástico:

https://batteryuniversity.com/learn/

Comentário de Pedro L Ribeiro em 10 janeiro 2019 às 10:25

Jose Gustavo

A minha fonte limita a corrente, fora do escopo do Arduino. Mas pode-se facilmente criar um circuito utilizando-se um daqueles shields com sensor hall, e adicionar código. Vou estudar e publicar um adendo; acho boa idéia poder monitorar a corrente. Como você mesmo postou, é fácil encontrar alternativas para carregar uma bateria de 12 V. O problema que se apresenta, é quando se quer carregar voltagens diferentes. Por exemplo no caso de coletores solares, geralmente se utilizam baterias em série, com voltagens de 24, 48 volts, etc.

Comentário de José Gustavo Abreu Murta em 10 janeiro 2019 às 7:26

Bom dia Pedro, 

Como o seu circuito controla a corrente de carga ? Não entendi. 

Se não controlar a corrente de carga, poderá danificar a sua bateria.

Não sou engenheiro também, mas sou especialista em eletrônica (40 anos de estudos). 

No meu tópico tem muitas informações importantes de como se deve carregar uma bateria de chumbo selada:

http://labdegaragem.com/forum/topics/carregador-de-bateria-selada-d...

Obrigado. 

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço