P ❱
❮❮
♥á♦ ③♠ ♦s rt
Pr♦t♦ rçã♦ ♣rs♥t♦ ♦ rs♦
♥♥r trô♥ ♦♠♣tçã♦
s♦ P♦té♥ ❯♥rs r
♦ ♦ ♥r♦ ♦♠♦ ♣rt ♦s rqst♦s
♥ssár♦s à ♦t♥çã♦ ♦ tít♦ ♥♥r♦
r♥t♦rs ♠♦♥ ♦♠♥s ♦st
ss♥r♦ ♦ P①♦t♦
♦ ♥r♦
t♠r♦
Implementacao e Avaliacao do Balanceamento Integrado em Baterias
de Ion-Lıtio
Ignacio de Azambuja Midosi Ricart
PROJETODEGRADUACAO SUBMETIDO AO CORPODOCENTE DO CURSO
DE ENGENHARIA ELETRONICA E DE COMPUTACAO DA ESCOLA PO-
LITECNICA DA UNIVERSIDADE FEDERAL DO RIO DE JANEIRO COMO
PARTE DOS REQUISITOS NECESSARIOS PARA A OBTENCAO DO GRAU
DE ENGENHEIRO ELETRONICO E DE COMPUTACAO
Autor:
Ignacio de Azambuja Midosi Ricart
Orientador:
Prof. Alessandro Jacoud Peixoso, D. Sc.
Orientador:
Prof. Ramon Romankevicius Costa, D. Sc.
Examinador:
Prof. Antonio Candea Leite, D. Sc.
Examinador:
Prof Eduardo Vieira Leao Nunes, D. Sc.
Rio de Janeiro
Outubro de 2015
ii
UNIVERSIDADE FEDERAL DO RIO DE JANEIRO
Escola Politecnica - Departamento de Eletronica e de Computacao
Centro de Tecnologia, bloco H, sala H-217, Cidade Universitaria
Rio de Janeiro - RJ CEP 21949-900
Este exemplar e de propriedade da Universidade Federal do Rio de Janeiro, que
podera incluı-lo em base de dados, armazenar em computador, microfilmar ou adotar
qualquer forma de arquivamento.
E permitida a mencao, reproducao parcial ou integral e a transmissao entre bibli-
otecas deste trabalho, sem modificacao de seu texto, em qualquer meio que esteja
ou venha a ser fixado, para pesquisa academica, comentarios e citacoes, desde que
sem finalidade comercial e que seja feita a referencia bibliografica completa.
Os conceitos expressos neste trabalho sao de responsabilidade do(s) autor(es).
iii
DEDICATORIA
Dedico este trabalho aos meus colegas do LEAD, LABCON e do curso de Enge-
nharia Eletronica que me deram apoio e contribuıram para a minha formacao tanto
profissional quanto pessoal.
iv
AGRADECIMENTO
Agradeco a minha famılia, minha namorada e meus colegas por me darem suporte
v
RESUMO
No GSCAR (Grupo de Simulacao e Controle em Automacao e Robotica) da
COPPE/UFRJ sao desenvolvidos projetos de robotica para centros de pesquisa e
indutria. Um dos robos e o veıculo submarino de operacao remota (ROV - Remotely
Operated Vehicle) LUMA - Light Underwater Mobile Asset, utilizado para fazer
inspecoes de dutos e barragens.
Atualmente deseja-se utilizar celulas de LiFePo4 nele por serem mais leves
e fornecerem mais corrente, dando maior autonomia ao robo. No entando, a faixa
de operacao delas e muito mais restrita do que de outras tecnologias de celulas, nao
sendo recomendado utiliza-las sem um sistema de monitoramento de bateria (BMS
- Battery Management System). Este seria capaz de controlar a correte de carga e
descarga, a temperatura e a tensao do conjunto de celulas.
A compra de tal sistema juntamente com as celulas customizadas para serem
embarcados no LUMA inviabilizaria o projeto. Como solucao para esse problema, e
proposto o desenvolvimento de um sistema de monitoramento de bateria proprios.
Um dos maiores desafios encontrados no desenvolvimento de um BMS e o
desbalanceamento da bateria, fenomeno que ocorre quando as celulas do conjunto
apresentam diferentes estados de carga. Neste trabalho e desenvolvido um prototipo
capaz de realizar manualmente o balanceamento de uma bateria. O projeto engloba
o desenvolvimento de uma placa de circuito impresso que sera acoplada a uma
inteligencia embarcada. Ao final deste projeto sao propostas melhorias ao prototiopo
para que o BMS juntamente com celulas de LiFePo4 sejam embarcados em projetos
do GSCAR e, principalmente, no ROV LUMA.
Para testar o algoritmo de balanceamento, comandos sao enviados serial-
mente por um computador e interpretados por um microcontrolador conectado a
placa Arduino MEGA2560. Este habilita o chaveamento dos reles responsaveis por
distribuir 4 celulas de LiFePo4 entre uma carga primaria e secundaria. A tensao
de cada uma delas e obtida a cada segundo e transmitida por um segundo micro-
controlador a uma interface grafica denominada Processing. Ao final do projeto sao
apresentados dados experimentais e tambem sao abordadas futuras melhorias para
se obter um sistema automatizado.
vi
Palavras-Chave:ROV, Balanceamento Integrado, Reles, Arduino, LiFePo4.
vii
SIGLAS
BMS - Battery Management System
GSCAR - Grupo de Simulacao e Controle em Automacao e Robotica
SoC - State of Charge
IC - Integrated Circuit
Op Amp - Operational Amplifier
GND - Ground
PWM - Pulse Width Modulation
V - Volt
A - Amper
mA - mili Amper
HIGH - Nıvel logico na saıda de portas digitais. No microcontrolador MEGA2560
e representado eletricamente como um sinal entre 5V e 3V
LOW - Nıvel logico na saıda de portas digitais. No microcontrolador MEGA2560
e representado eletricamente como um sinal entre 1,5V e 0V
MOSFET -Metal-oxide-semiconductor field-effect transistor ou transistor de efeito
de campo metal-oxido-semicondutor (TECMOS)
Arduino MEGA2560 - Placa de circuito impresso do Arduino utilizado, a qual
possui o microcontrolador ATmega2560 conectado a ela.
IDE - Integrated Development Environment
viii
MHz - Megahertz
ADC - Analog-to-Digital Converter
D.d.p. - Diferenca de potencial
SPI - Serial Peripheral Interface
I2C - Inter Integrated Circuit
UART - Universal Asynchronous Receiver/Transmitter
USB - Universal Serial Bus
ix
Sumario
1 Introducao 1
1.1 Descricao do Problema . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Revisao Bibliografica . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Resultados Obtidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Organizacao do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Principais Parametros das Celulas e Balanceamento 7
2.1 Caracterısticas Basicas e Parametros de Celulas de Ion-Lıtio . . . . . 7
2.1.1 Tensao em Circuito Aberto . . . . . . . . . . . . . . . . . . . . 8
2.1.2 Capacidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.3 Estado de Carga . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.4 Temperatura . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Tipos de Balanceamento . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Balanceamento Passivo . . . . . . . . . . . . . . . . . . . . . . 11
2.2.2 Balanceamento Ativo . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.3 Balanceamento Integrado . . . . . . . . . . . . . . . . . . . . . 13
3 Placa de Balanceamento Desenvolvida 15
3.1 Especificacao dos Reles de Chaveamento . . . . . . . . . . . . . . . . 15
3.2 Sinais de Comando do Microcontrolador . . . . . . . . . . . . . . . . 16
3.3 Conexoes para Assegurar Modularidade . . . . . . . . . . . . . . . . . 17
3.4 Circuito de Condicionamento para Aquisicao de Tensao . . . . . . . . 18
3.5 Layout da Placa de Balanceamento . . . . . . . . . . . . . . . . . . . 21
x
4 Microcontrolador e Software Embarcado 23
4.1 Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2.1 Balanceamento Manual . . . . . . . . . . . . . . . . . . . . . . 25
4.2.2 Balanceamento Automatico via Contagem de Coulomb . . . . 26
5 Experimentos e Proposta de Aprimoramento 28
5.1 Descricao da Bancada de Teste . . . . . . . . . . . . . . . . . . . . . 28
5.2 Testes Preliminares . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.3 Teste do Chaveamento . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.4 Balanceamento Manual . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.5 Problemas Encontrados . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.6 Proposta de Aprimoramentos . . . . . . . . . . . . . . . . . . . . . . 37
6 Conclusoes 41
6.1 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Bibliografia 43
A Placa de Balanceamento Integrado 46
A.1 Layout da Placa de Balanceamento . . . . . . . . . . . . . . . . . . . 46
A.2 Logica do Chaveamento . . . . . . . . . . . . . . . . . . . . . . . . . 50
A.3 Circuito RC paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
B Carga e Descarga 54
B.1 Tecnicas de Carga e Descarga . . . . . . . . . . . . . . . . . . . . . . 54
B.2 Circuito para Carga e Descarga . . . . . . . . . . . . . . . . . . . . . 55
C Codigo do Arduino 57
C.1 Codigo do Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
xi
Lista de Figuras
2.1 Grafico de Tensao x Tempo de uma Celula de LiFePo4 sob carga e
depois no perıodo de relaxamento . . . . . . . . . . . . . . . . . . . . 8
2.2 Grafico de OCV x SoC de uma celula de LiFePo4. . . . . . . . . . . 8
2.3 Demonstracao de 2 celulas desbalanceadas . . . . . . . . . . . . . . . 11
2.4 Esquematizacao do Balanceamento Integrado . . . . . . . . . . . . . . 13
2.5 Esquematizacao do Balanceamento Integrado . . . . . . . . . . . . . . 14
3.1 Configuracao dos Pinos do Rele CPC1907B . . . . . . . . . . . . . . . 17
3.2 Placa de Reles com a nomenclatura presente na Placa de Balanceamento 17
3.3 Esquematico da Placa de Rele com a celula 1 - E possıvel ver os blocos
representando os reles com os resistores pull-up, os pinos devidamente
demarcadas nos reles de acordo com a Figura 3.1, o Op Amp em con-
figuracao do subtrator alem dos conectores das conexoes de entrada
(em curto) e os conectores das ligacoes de saıda no canto direito inferior 19
3.4 Esquematizacao da Aquisicao via Amp Op em modo Subtrator . . . . 20
3.5 Bloco dos Conectores no Esquematico do Circuito . . . . . . . . . . . 22
4.1 Placa de hardware open-source Arduino MEGA 2560 . . . . . . . . . 24
5.1 Montagem dos circuitos para realizar os Experimentos com a Decada
e a Resistencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.2 Diagrama de blocos da montagem utilizada nos testes . . . . . . . . . 30
5.3 Demonstracao das conexoes realizadas na Placa durante os testes pre-
liminares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.4 Demonstracao das conexoes realizadas na Placa . . . . . . . . . . . . 32
5.5 Circuito utilizado para validar o funcionamento da Placa de Balan-
ceamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
xii
5.6 Grafico apresentado pelo Osciloscopio ao alternar a conexaao da celula
1 com a celula 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.7 Pulso de corrente do carregador . . . . . . . . . . . . . . . . . . . . . 33
5.8 Experimento 1 - Curva de Tensao em cada celula com a Placa de
Balanceamento sob carga . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.9 Grafico apresentado no Canal 2 do Osciloscopio ao alocar a celula 2
no lugar da 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.10 Experimento 1 - Curva de Tensao x Celulas sobrepostas com a Placa
de Balanceamento sob carga . . . . . . . . . . . . . . . . . . . . . . . 35
5.11 Experimento 2 - Grafico de Tensao gerado durante o balanceamento
manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.12 Proposta para evitar a interrupcao da alimentacao durante o chavea-
mento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
A.1 Alocacao das Tarefas na Placa de Balanceamento . . . . . . . . . . . 47
A.2 Layout da Placa de Balanceamento no Eagle . . . . . . . . . . . . . . 48
A.3 Layout da Placa de Balanceamento no Eagle com Plano de GND . . . 49
A.4 Face Frontal da Placa de Balanceamento com componentes soldados . 49
A.5 Face Traseira da Placa de Balanceamento com componentes soldados 50
A.6 Circuito RC em Paralelo com Rele . . . . . . . . . . . . . . . . . . . 52
B.1 Esquematico do Circuito Regulador de Corrente Controlado por PWM 55
B.2 Circuito e logica dos reles utilizados no regulador de corrente para
alternar entre Carga e Descarga . . . . . . . . . . . . . . . . . . . . . 56
xiii
Lista de Tabelas
4.1 Acionamento dos reles de chaveamento em cada configuracao . . . . . 25
xiv
Capıtulo 1
Introducao
Em sistemas dependentes de uma alimentacao para se locomover, busca-
se a maior autonomia possıvel quando a energia e fornecida atraves de baterias.
Essa independencia e atingida atraves da juncao de: elevada densidade de potencia,
seguranca, baixo volume, baixa densidade e uso eficiente [1]. Visando obter essa
performance otima, o emprego de diferentes composicoes quımicas foi estudado ate
desenvolverem as celulas de ıon-lıtio.
Dentre as diferentes composicoes de celulas de ıon-lıtio, deseja-se utilizar
LiFePo4 por apresentarem maior densidade de energia. No entanto, a sua faixa
de operacao e muito restrita, sendo necessario monitorar a temperatura, tensao -
dentre outras grandezas - durante sua utilizacao. Em funcao disso, e necessario um
sistema de monitoramento de bateria (BMS ), garantindo o controle da operacao e
gerenciando de maneira segura e eficiente o uso da energia [1].
A principal tarefa de um BMS e garantir a otimizacao do uso da energia
armazenada e minimizar qualquer chance de dano [2], utilizando sensores de tensao,
corrente e temperatura; controladores de carga, temperatura e atuadores [1]. Esses
sistemas sao responsaveis por garantir a manutencao da tensao e da temperatura
dentro do limite, informar o estado de carga da bateria, tempo de operacao restante
e realizar o balanceamento das celulas.
A compra do conjunto composto por celulas de LiFePo4 e o BMS e inviavel
para ser empregado no ROV LUMA por ser muito caro. A solucao seria desenvolver
o proprio sistema constituıdo por modulos de aquisicao de tensao, balanceamento e
controle de carga e descarga.
1
1.1 Descricao do Problema
No grupo GSCAR sao desenvolvidos projetos na area de robotica para aplicacoes
nas mais diversas areas como: expedicoes marıtimas, inspecao de dutos, inspecao de
plataforma de petroleo, entre outras. Para realizar tais tarefas, sao utilizados siste-
mas dependentes de uma alimentacao interna, portanto, estes apresentam limitacoes
tanto no tempo de atuacao/operacao quanto os proprios componentes embarcados
no robo.
Por exemplo, ha o ROV (veıculo operado remotamente) Luma -Light Un-
derwater Mobile Asset - desenvolvido no laboratorio de controle, onde sua geometria
e especıfica para expedicoes em grandes profundidades e deve, portanto, suportar os
efeitos causados pela alta pressao. Inicialmente utilizou-se uma bateria de NiMH
como alimentacao, mas serao trocadas por LiFePo4, por apresentarem uma reducao
de 40% - 50% no peso, 20% - 30% no volume e um leve aumento na eficiencia, alem
de reduzir custos [3].
Por se tratar de baterias sem qualquer eletronica embutida, e indispensavel
garantir a operacao dentro dos limites de temperatura, tensao e corrente [1]. Estes
cuidados servem tanto para prolongar a vida util da bateria quanto por questoes de
seguranca. Em funcao disso, pretende-se criar um BMS, o qual implemente tecnicas
de estimacao de carga, balanceamento de celulas e controle da alimentacao, para ser
embarcado no ROV.
A compra de um sistema de monitoramento com celulas de LiFePo4 custo-
mizados para serem embarcados no Luma seria muito caro. Como solucao para esse
problema e proposto o desenvolvimento de um BMS proprio. Neste trabalho, o foco
e no desenvolvimento de um prototipo capaz de balancear as celulas de LiFePo4,
implementando a tecnica proposta em [4], a qual consiste em separar a alimentacao
de um conjunto de celulas entre 2 circuitos eletricos distintos atraves do chaveamento
de reles.
1.2 Revisao Bibliografica
O avanco da tecnologia proporcionou o desenvolvimento de baterias mais le-
ves e capazes de fornecer mais energia. Uma apresentacao sobre os tipos de baterias,
2
a tecnologia empregada e suas respectivas vantagens e desvantagens e desenvolvida
em [5]. Neste, sao consideradas caracterısticas quımicas e aplicabilidade de cada
tecnologia. Como as antigas baterias do ROV LUMA sao de nıquel-metal-hidreto,
um estudo comparando celulas de ıon-lıtio e nıquel-metal-hidreto sao realizados em
[3], apresentando as vantagens com essa troca.
A estreita faixa de operacao das celulas de ıon-lıtio, dentre elas as de LiFePo4,
motiva o desenvolvimento de sistemas de monitoramento de bateria, garantindo o
uso eficiente e seguro da energia delas. Foi considerada a pesquisa realizada em
[1], por estudar as funcoes fundamentais nestes sistemas: aquisicao de tensao nas
celulas, estimacao do estado de carga, balanceamento de baterias e diagnosticacao
de falhas.
Em [6] e desenvolvido um BMS utilizando celulas de LiFePo4 e balancea-
mento ativo, sao apresentados conceitos essenciais desses sistemas e caracterısticas
basicas de celulas como: especificacoes eletricas, temperatura, tensao em circuito
aberto, taxa de auto-descarga e estado de carga, complementando o estudo para o
desenvolvimento do proprio BMS no GSCAR.
Um dos algoritmos de estimacao de carga desenvolvidos no presente projeto
visa utilizar a contagem de Coulomb por sua simplicidade, como discutida em [6],
[7] e [8]. No entanto, existem na literatura tecnicas baseadas na implementacao de
filtro de Kalman e modelos eletricos para estimacao de carga sao abordados em [9]
e [10].
Estas estimativas do estado de cargas sao utilizadas juntamente com o balan-
ceamento para tornar o sistema de alimentacao autonomo. Os metodos de balance-
amento normalmente implementados sao divididos em 3 grupos: passivo, estudado
em [11] e [12], ativo, estudado em [13], [14] e [15] utilizando conversores (indutores
e transformadores) ou capacitores, interligando-os atraves de reles. Em [14] e [16]
sao realizadas pesquisas comparando o balanceamento passivo e o ativo.
O balanceamento integrado e um conceito desenvolvido em [4], onde sao
alimentadas 2 cargas simultaneamente atraves da distribuicao de celulas entre estas.
Esta abordagem e testada no decorrer deste projeto, avaliando sua aplicabilidade em
BMS. Na pratica, esta topologia permite conectar um conjuntos de celulas formado
por diversas celulas independentemente entre 2 circuitos. No caso do ROV LUMA,
3
um circuito primario seria representado pela eletronica de potencia formada pelos
motores e o secundario pela inteligencia embarcada. Neste caso, a alimentacao do
circuito primario exigiria muito mais corrente da bateria do que o secundario.
Vale a pena ressaltar que para outras aplicacoes os circuitos nao necessaria-
mente demandam corrente, eles tambem podem ser geradores de maneira a carregar
as baterias.
1.3 Objetivos
O objetivo principal deste trabalho e validar o funcionamento de uma topolo-
gia de balanceamento recentemente proposta, denominada balanceamento integrado
[4]. O objetivo especıfico e desenvolver e implementar um sistema microcontrolado
modular capaz de distribuir diversas celulas entre 2 cargas, fornecendo a alimentacao
para estas e balanceando as celulas simultaneamente.
Este objetivo e atingido definindo um prototipo, projetando a placa de cir-
cuito impresso, testando os conceitos desse balanceamento na pratica e, por fim,
interpretando os resultados obtidos durante os experimentos.
Inicialmente, precisa-se estudar caracterısticas de sistemas de monitoramento
de bateria, celulas de LiFePo4 e topologias de balanceamento para entao, definir
os parametros relevantes ao experimento e como medi-los. A partir deste ponto,
sao definidos os componentes, a comunicacao e tecnica de aquisicao de tensao que
sao implementados. Finalmente, os componentes sao conectados a placa e a logica
e gravada no microcontrolador.
Os testes sao realizados na placa de balanceamento avaliando os conceitos
propostos em [4] sobre modularidade e logica de acionamento dos reles e monitorando
as variacoes de tensao, nas celulas e na carga, atraves da interface grafica Processing
e de um osciloscopio.
O grande desafio desse trabalho e entao desenvolver uma placa capaz de re-
alizar o balanceamento integrado conectada a duas cargas resistivas denominadas
primaria e secundaria, uma vez que ha possibilidades de uma interrupcao na ali-
mentacao ou curto-circuito entre as celulas durante o chaveamento.
4
1.4 Resultados Obtidos
A Placa de Balanceamento funcionou como esperado: recebendo os comandos
de acionamento provenientes do microcontrolador, chaveando os reles como especi-
ficado e monitorando a variacao de tensao nas celulas e/ou nas cargas.
Os principais conceitos do balanceamento foram analisados utilizando 4 celulas
de LiFePo4. Estas eram conectadas as cargas primaria e secundaria de acordo com
os comandos enviados pelo computador. Suas tensoes apresentavam oscilacao por
centenas de milissegundos durante os chaveamentos, estabilizando posteriormente.
Um dos experimentos consiste em um balanceamento, como descrito na Secao
5.4, avaliando a conexao da carga secundaria com uma corrente baixa - da ordem
de dezenas de mA - e a primaria com alta - aproximadamente 1A - para equalizar a
carga da bateria.
A alimentacao das cargas era interrompida nos instantes de chaveamento,
como ilustrado nas Figuras 5.6 e 5.9. Em funcao disso, foi proposto um novo al-
goritmo de chaveamento e a inclusao de 2 capacitores e reles na placa. A imple-
mentacao dessa proposta exige o reprojeto do layout e reprogramacao do microcon-
trolador.
Ao final sao especificados valores comerciais de capacitores que atendam as
necessidades do ROV Luma, exemplificando uma aplicacao pratica.
1.5 Organizacao do Trabalho
Sao apresentadas no capıtulo 2 tensao em circuito aberto, capacidade, estado
de carga e temperatura. Estes sao parametros essenciais sobre celulas, utilizados
em BMS. Em sequencia, ha a apresentacao do conceito de balanceamento e suas
diferentes topologias, priorizando o balanceamento integrado, por ser implementado
na placa de balanceamento.
No capıtulo 3, o foco do projeto e o desenvolvimento desta placa. Inicialmente
explicando as caracterısticas relevantes nos reles de chaveamento utilizados e qual o
metodo de ativacao. Em seguida, aborda-se a modularidade desse conceito, deter-
minando quais os pre-requisitos e como atende-los. Finalmente, sao apresentando
tecnicas de aquisicao de tensao, definindo qual a implementada.
5
Levando em consideracao essas informacoes, o layout da placa e desenvol-
vido, ilustrando na Secao A.1 o resultado final e tambem a placa com componentes
conectados, como mostram as Figuras A.3 e A.4.
No capıtulo 4 ha a apresentacao do microcontrolador utilizado, expondo suas
caracterısticas e motivo de sua escolha. Posteriormente sao descritos dois algorit-
mos de balanceamento integrado. O primeiro algoritmo consiste em uma logica para
apenas realizar testes, portanto, demanda menos processamento e nao realiza ba-
lanceamento automatico. E necessaria a transmissao de um sinal composto pelas
tensoes para o microcontrolador, o qual aciona os reles. Ja o segundo foi idealizado
para aplicacoes reais, mas nao foi finalizado.
Os experimentos, resultados praticos dos ensaios e propostas de aprimora-
mento sao apresentados no capıtulo 5. Primeiramente realizando os testes prelimi-
nares com chaveamento em circuito aberto, evoluindo ate realizar um balanceamento
manual com celulas de LiFePo4, onde uma decada de resistencia - variando entre
11kΩ e 10Ω - representa a carga primaria e um resistor de 100Ω a secundaria. Ao
final, sao exibidas propostas as dificuldades apresentadas durante os testes. Dentre
elas, a interrupcao da alimentacao e a mais crıtica por impossibilitar qualquer acao
do sistema por um perıodo.
Finalmente, no capıtulo 6, sao feitas as conclusoes sobre o trabalho e as
sugestoes para trabalhos futuros e melhorias na placa desenvolvida.
6
Capıtulo 2
Principais Parametros das Celulas
e Balanceamento
Neste capıtulo, sao abordados parametros fundamentais sobre celulas de ıon-
lıtio, descrevendo seus comportamentos e importancia em um sistema de monito-
ramento de bateria. Em seguida, aborda-se um problema sempre presente nestas
celulas, o desbalanceamento do estado de carga. Os tipos de topologia capazes de
balancear um sistema sao expostos posteriormente, enfatizando o balanceamento
integrado. Este sera implementado no sistema para que seja possıvel validar seu
funcionamento.
2.1 Caracterısticas Basicas e Parametros de Celulas
de Ion-Lıtio
Por apresentarem uma faixa de operacao restrita tanto na tensao quanto
na temperatura, as celulas de ıon-lıtio necessitam de um BMS, garantindo uma
operacao segura e uso eficiente da energia. No entanto, o sistema precisa dispor de
dados relevantes para executar essas funcoes [1].
Os principais parametros de celulas utilizados sao: Tensao em Circuito Aberto,
Capacidade, Estado de Carga e Temperatura.
7
2.1.1 Tensao em Circuito Aberto
Definido em ingles como Open Circuit Voltage - OCV, esse parametro carac-
teriza a curva de tensao da celula ao longo do tempo quando a mesma se encontra
relaxada. Por relaxada, entende-se um ∆t no qual nao ha carga sendo aplicada e a
tensao esta estabilizada na celula. Em [6], considera-se um ∆t de 30 minutos para
obter o OCV.
Figura 2.1: Grafico de Tensao x Tempo de uma Celula de LiFePo4 sob carga e
depois no perıodo de relaxamento
Apos aplicar diversos pulsos de corrente na bateria, e possıvel mapear a sua
curva de OCV, semelhante a Figura 2.2. Esses dados sao utilizados juntamente com
a corrente para estimar a capacidade util de cada celula e, ao final, apresentar o
estado de carga [6].
Figura 2.2: Grafico de OCV x SoC de uma celula de LiFePo4.
8
2.1.2 Capacidade
Juntamente com o material da celula, a capacidade media e sempre especi-
ficada nos involucros de baterias. Esta informacao representa quanto de corrente
uma celula e idealmente capaz de fornecer em uma hora.
E possıvel encontrar celulas de mesmo material, no entanto com capacidades
diferentes. Isto ocorre pela diferenca no volume do pack (conjunto de celulas), pois
cada tecnologia apresenta uma densidade energetica nominal (em Wh/Kg) e uma
energia especıfica (em Wh/L) propria [17].
Por convencao, a corrente com a qual o pack e carregado ou descarregado e
expressa em funcao da capacidade. Exemplificando, aplicar carga de 1C em uma
bateria implica no carregamento ou descarregamento desta em uma hora. Realizando
este procedimento na metade do tempo, ou seja, com o dobro da corrente, caracteriza
uma carga de 2C. Essa taxa e conhecida como C rate e tambem e empregada para
definir os limites de carga e descarga na bateria [6].
2.1.3 Estado de Carga
Tambem conhecido como State of Charge (SoC), o estado de carga representa
percentualmente a capacidade util restante em relacao a total da celula. Normal-
mente apresentado graficamente em funcao da tensao da celula.
Analisando o SoC e a corrente aplicada a carga, e possıvel estimar o tempo
de operacao restante e evitar sobrecarga ou descarga excessiva nas celulas [6]. Como
consequencia disso, a vida util da celula e prolongada, algo desejavel em projetos
onde a bateria representa uma parcela significativa do custo total.
Os metodos mais utilizados para definir o estado de carga sao a tabela do
Estado de Carga em funcao da OCV, a Contagem de Coulomb e a utilizacao de
circuitos equivalentes as celulas ou modelos matematicos com filtro de Kalman.
A tabela consiste no mapeamento do SoC sob C rates diferentes com tempos
de relaxamento longos, em torno de 30 minutos, para a tensao na celula estabilizar.
Essas medidas nao sao exatas em funcao da variacao dos parametros durante a
operacao, como exemplo pode-se citar a temperatura, a capacidade e a resistencia
interna da bateria. Este metodo e utilizado para determinar o SoC inicial da celula
rapidamente. Uma abordagem similar a esta e vista tambem em [6].
9
A contagem de Coulomb e o metodo mais implementado, onde a carga res-
tante e calculada integrando-se a corrente circulante na bateria em funcao do tempo.
E um metodo simples aplicavel em sistemas on-board, caso seja fornecido o estado
inicial das celulas utilizadas. No entanto, esse metodo e implementado em malha
aberta, sujeito a ruıdos nas medicoes e nao considera o envelhecimento da celula,
como abordado em [6], [7] e [8].
O ideal para estimar o SoC e a juncao de um circuito equivalente ou modelo
matematico com um filtro de Kalman nao linear ([9] e [10]), pois consideraria mais
parametros durante as estimativas. A dificuldade esta em definir os parametros,
pois inicialmente e fundamental equacionar a curva de OCV para cada uma das
celulas e, posteriormente, calibrar os modelos capazes de simular o comportamento
da bateria. Por fim, os parametros sao utilizados pelo filtro de Kalman para obter
o valor do SoC.
2.1.4 Temperatura
A temperatura e o parametro mais importante em relacao a seguranca, pois
afeta a estrutura quımica das celulas tanto durante o uso quanto no armazenamento,
podendo torna-la inutilizavel [6]. Experimentos certificadores disto sao validados em
[18], [19] e [20].
Carga ou descarga de baterias em baixas temperaturas resultara no aumento
da resistencia interna. Ja em altas temperaturas, ocorre o inverso. Como con-
sequencia direta de qualquer uma destas condicoes, a capacidade da celula diminui
e a taxa de auto-descarga aumenta [6].
2.2 Tipos de Balanceamento
Apesar de todo o avanco tecnologico, celulas, ainda que compradas do mesmo
fabricante e lote, jamais terao comportamentos identicos [21]. Essas divergencias
ficam em evidencia apos ciclos de carga e descarga ou com o passar do tempo devido
ao envelhecimento [12]. Este efeito e denominado desbalanceamento de carga ou
desbalanceamento simplesmente.
O desbalanceamento ocorre quando as celulas que compoem uma bateria
10
apresentam diferentes estados de carga. Isto e causado nao so pela diferenca da
capacidade das celulas, mas tambem da resistencia interna, degradacao quımica e/ou
temperatura entre as celulas e ambiente, resultando na diminuicao da capacidade
util da bateria a medida em que for se agravando [12].
Exemplificando, o carregamento da bateria ocorrera ate uma das celulas atin-
gir o SOC maximo (100%), independente de quantas o atingirem simultaneamente.
Em um sistema alimentado por 2 celulas, a operacao sera encerrada assim que a pri-
meira carregar totalmente. Caso o processo continue, esta celula sofrera sobrecarga
e, consequentemente, a vida util reduzira ou ela se tornara inutilizavel. O mesmo
problema ocorre durante a descarga. Este problema esta ilustrado na Figura 2.3.
Figura 2.3: Demonstracao de 2 celulas desbalanceadas
Como solucao para garantir uma carga/descarga completa do sistema de ma-
neira segura, foram desenvolvidos diversos metodos de balanceamento. Estes sao
divididos em 3 grupos: Balanceamento Passivo, Balanceamento Ativo, Balancea-
mento Integrado.
2.2.1 Balanceamento Passivo
O metodo mais simples, barato e, portanto, mais utilizado e o balanceamento
passivo. Este consiste em utilizar um elemento resistivo para dissipar, sob forma
11
de calor, o excesso de energia das celulas de maior tensao no pack. A desvantagem
desta aplicacao e o nao aproveitamento da energia dissipada [12].
O algoritmo de balanceamento pode ser divido em 2 abordagens. Balancea-
mento por mınimo ou balanceamento por medias [11].
No primeiro metodo, o algoritmo pode atuar tanto na descarga quanto na
recarga. Ele consiste em identificar a celula de menor SoC a cada perıodo determi-
nado e, entao, conectar as demais aos elementos resistivos atraves de reles. Ao final,
todas apresentarao o mesmo estado de carga com uma margem de aproximadamente
5% do SoC em relacao a celula de menor tensao, como realizado em [11] e em [12].
O balanceamento por medias consiste em calcular estado de carga medio das
celulas a partir das estimativas de SoC e entao, conectar as celulas com estado de
carga a cima da media aos elementos resistivos. Este metodo so pode ser executado
durante a recarga, pois as cargas primaria e secundaria nao fornecem energia as
celulas.
Quando o pack de celulas apresenta o SoC proximo da media, ocorrem cha-
veamentos com maior frequencia em funcao das tensoes oscilarem muito proximas
da media. Para evitar isso, define-se o perıodo ou diferenca de carga mınimo para
realizar o balanceamento. Por exemplo, definir um perıodo 1 minuto entre cada con-
junto de chaveamento ou apenas realiza-lo caso alguma celula exceda 5% do estado
de carga medio.
2.2.2 Balanceamento Ativo
Como solucao para reduzir o desperdıcio de energia das celulas durante o
balanceamento, foi desenvolvido o balanceamento ativo. Neste, parte da carga das
celulas e transferida das mais para as menos carregadas atraves de conversores (in-
dutores e transformadores) ou conectando a capacitores atraves de reles, como apre-
sentado em [13], [14] e [15].
O circuito eletrico necessario para esse sistema e bem mais denso, complexo e
caro, motivando estudos para torna-lo mais viavel e rentavel. Pesquisas comparando
a eficiencia entre balanceamento passivo e ativo sao apresentadas em [14] e [16].
12
2.2.3 Balanceamento Integrado
Ao contrario das outras topologias de balanceamento, no integrado nao ha
conversao ou dissipacao de energia como forma de balancear. O balanceamento
ocorre conectando celulas a cargas primaria ou secundaria, onde circulam corrente.
Tambem existe a possibilidade de desconectar celulas das cargas, caso ocorra alguma
falha nelas. Este conceito e proposto em [4].
Figura 2.4: Esquematizacao do Balanceamento Integrado
Esse metodo consiste em realizar a conexao serial de inumeras celulas atraves
de modulos compostos por 7 reles conectados conforme a Figura 2.4.
Com essa proposta, e possıvel utilizar celulas com capacidades muito discre-
pantes sem comprometer a alimentacao do sistema; desconectar celulas defeituosas
do circuito; obter um banco de celulas reserva e balancea-las durante a operacao.
Alem disso, possui alta eficiencia por apresentar apenas a resistencia interna dos
reles como elementos dissipativos.
Na Figura 2.5, observa-se a conexao do modulo dos reles a celula e uma
possıvel distribuicao para alimentar as cargas primaria e secundaria.
A definicao do acionamento dos reles em cada placa depende da carga a qual a
celula atual e a seguinte estao conectadas. As possıveis configuracoes serao descritas
na Secao A.2
Supondo um sistema eletrico formado por uma placa solar, um BMS com-
posto por 6 celulas de LiFePo4 e uma eletronica para ativar turbinas, a qual de-
mande uma alimentacao de 15V. Com esta topologia de balanceamento e possıvel
definir arbitrariamente 4 celulas de LiFePo4 para alimentarem o sistema enquanto
as outras 2 celulas sao recarregadas atraves da placa solar. A medida em que es-
sas celulas forem recarregando, realiza-se um conjunto de chaveamentos na placa
de balanceamento para conectar a celula completamente carregada no conjunto res-
13
Figura 2.5: Esquematizacao do Balanceamento Integrado
ponsavel pela alimentacao da eletronica, enquanto que as 2 de menor tensao serao
conectadas a placa solar para serem recarregadas.
Para um caso em que o circuito primario e o secundario demandem uma
corrente de alimentacao, o balanceamento ocorre em funcao da diferenca entre essa
alimentacao. Celulas mais descarregadas sao “poupadas”sendo alocadas no circuito
de menor corrente ou desconectadas, enquanto as que possuırem maior SoC sao
conectadas ao circuito que demandar mais corrente da bateria. Eventualmente o
estado de carga destas celulas passara a ser inferior ao das desconectadas ou alocadas
no outro circuito. Nesses instantes ocorre o chaveamento para garantir que ao final
da operacao todas as celulas apresentem o mesmo estado de carga, garantindo celulas
balanceadas e um maior tempo de funcionamento do sistema.
Nesse projeto sera sempre considerado que o circuito primario demanda uma
corrente maior do que o secundario. Tambem sera utilizada a notacao de carga
primaria e carga secundaria para se referir ao circuito primario e ao circuito se-
cundario, respectivamente.
Algumas situacoes devem ser consideradas ao implementar este balancea-
mento, pois durante o chaveamento pode ocorrer brevemente a formacao de curto-
circuito ou a interrupcao da alimentacao nas cargas. Como solucao, e proposta uma
nova placa ao final do projeto na Secao 5.6.
14
Capıtulo 3
Placa de Balanceamento
Desenvolvida
Neste projeto, e desenvolvida a placa de balanceamento, responsavel por
receber os sinais de comando provenientes do microcontrolador, atuar nos reles de
chaveamento e obter a tensao nas celulas, permitindo a monitoracao delas durante
experimentos.
O processo de criacao da placa e descrito neste capıtulo de acordo com os
itens listados a seguir.
1. Especificacao dos Reles
2. Sinais de Comando do Microcontrolador
3. Conexoes Para Assegurar Modularidade
4. Aquisicao de Tensao
5. Desenvolvimento do Layout da Placa
3.1 Especificacao dos Reles de Chaveamento
Anterior a definicao de marcas e modelos dos reles de chaveamento, deve-
se especificar primeiramente quais caracterısticas sao relevantes em um rele. Estes
devem apresentar baixa resistencia interna, alta velocidade de chaveamento, isola-
mento entre entrada/saıda, bidirecionalidade, baixa corrente de ativacao e suportar
15
tensoes da ordem de 20V e correntes de 3A. E desejavel que estes suportem altas
tensoes (ate 60V, por exemplo), correntes de (5A) e sejam de estado solido para
atenderem as necessidades do ROV LUMA.
A necessidade de ser bidirecional reside na possibilidade da carga primaria e
secundaria fornecerem ou drenarem energia do pack de celulas, substituindo estas
por painel solar, por exemplo. Caso seja usado rele unidirecional, a operacao e
limitada a um dos casos: apenas recarga ou descarga.
E preferıvel um rele de estado solido a um eletromecanico, por ser mais
compacto, possuir maior vida util, necessitar de uma menor corrente de ativacao e
nao apresentar partes moveis - maior robustez fısica.
Levando em consideracao todas as condicoes acima citadas, foi escolhido o
rele CPC1907B da empresa IXYS. Dentre suas especificacoes, deve-se destacar:
• Resistencia interna = 0, 06Ω
• Corrente na carga = ±6ADC
• 5000Vrms de isolamento na entrada/saıda
• Nao apresenta partes moveis
• Terminais em SMD e compacto
• Corrente de ativacao entre 1,5 e 5mA
• Velocidade de chaveamento ao ativar = valor tıpico 2,7ms e maximo 5ms
• Velocidade de chaveamento ao desativar = valor tıpico 0,14ms e maximo 1ms
• Limite de tensao quando nao ativado = 60V
3.2 Sinais de Comando do Microcontrolador
O sinal digital proveniente do microcontrolador pode ser eletricamente cor-
respondente a uma tensao entre 3V e 5V (HIGH) ou entre 1, 5V e 0V (LOW). Nesse
trabalho foi utilizada a ativacao das portas dos reles em nıvel logico baixo. Sendo
assim, como mostrado na Figura 3.3, o pino 2 do rele e conectado a um resistor em
16
Figura 3.1: Configuracao dos Pinos do Rele CPC1907B
serie com uma fonte de 5V e o 3 ao microcontrolador como apresentado na pinagem
da Figura 3.1. Esta configuracao e utilizada para forcar um estado - nıvel logico alto,
no caso - quando nenhum sinal for aplicado a saida/entrada, evitando um estado
indefinido nos pinos, o qual poderia gerar chaveamentos indesejaveis.
3.3 Conexoes para Assegurar Modularidade
Como apresentado na Figura 2.5, e possıvel conectar um modulo em serie com
diversos outros. A nomenclatura utilizada na placa de balanceamento e apresentada
na Figura 3.2.
Figura 3.2: Placa de Reles com a nomenclatura presente na Placa de Balanceamento
As conexoes da carga primaria, secundaria e da celula de cada modulo foram
dividas entre entrada e saıda. A primeira e composta por Primario - In, Secundario
- In e Cell-, enquanto a segunda apresenta os conectores Primario - Out, Secundario
- Out e Mid.
Os conectores Primario - In, Secundario - In e Cell- do primeiro modulo
17
precisam ser interligados para garantir que as cargas estejam referenciadas a um
mesmo GND, como sera mencionado no comeco da Secao 3.4 e ilustrado na Figura
2.5. A operacao nao e prejudicada por este procedimento, mas a modularidade sim.
Caso nao houvesse interconexao, seria possıvel acoplar diversas placas, contemplando
um sistema composto por mais de 4 celulas.
A ligacao das placas as cargas ocorre conectando o terminal da carga primaria
ao Primario - In do primeiro modulo e ao Primario - Out do ultimo. De maneira
identica ocorre com a secundaria.
3.4 Circuito de Condicionamento para Aquisicao
de Tensao
A aquisicao de tensao fornece dados ao controlador, o qual atua nos reles,
garantindo uma operacao dentro dos limites eletricos da bateria, e determinando o
SoC das celulas.
Por haver cargas e ligacao de celulas em serie, e essencial realizar as medicoes
em relacao a um mesmo referencial. Isto ocorre conectando o terra - GND - entre
as cargas primaria, secundaria e o microcontrolador.
Uma abordagem para realizar medicoes utiliza um conversor analogico di-
gital com referencia interna (ADS1015 ou ADS1115), o qual se comunica com o
microcontrolador via I2C. Ele atuaria como um comparador com 12 ou 16 bits de
resolucao (ADS1015 ou ADS1115 respectivamente), onde cada circuito integrado te-
ria 2 entradas. Cada conversor mede entre 2.0V e 5.5V dependendo da alimentacao
no IC.
A abordagem utilizada na placa consiste em realizar a afericao com os ampli-
ficadores operacionais LM833N. Sao utilizados 2 componentes contendo 2 Op Amps
cada, os quais sao conectados as 4 celulas em modo subtrator como apresentado na
Figura 3.4, transmitindo seus sinais de saıda aos ADCs do microcontrolador.
Por apresentar baixo ruıdo de tensao na entrada, o LM833N e ideal para
esta aplicacao. Vale a pena ressaltar a necessidade de resistores da ordem de 100kΩ
conectados as entradas do amplificador no lugar de R, como visto na Figura 3.4,
para aproxima-lo do comportamento ideal.
18
Figura 3.3: Esquematico da Placa de Rele com a celula 1 - E possıvel ver os blocos
representando os reles com os resistores pull-up, os pinos devidamente demarcadas
nos reles de acordo com a Figura 3.1, o Op Amp em configuracao do subtrator alem
dos conectores das conexoes de entrada (em curto) e os conectores das ligacoes de
saıda no canto direito inferior
A alimentacao do LM833N ocorre atraves dos pinos de +V cc e −V ee. Essas
tensoes sao os valores limitantes do sinal de entrada tanto em V+ quanto em V−,
de modo que estas precisam ser superiores a −V ee e inferiores a +V cc.
19
Figura 3.4: Esquematizacao da Aquisicao via Amp Op em modo Subtrator
A tensao +V cc precisa ser suficientemente grande a ponto de a diferenca de
potencial eletrico das 4 celulas em serie nao ultrapassa-la. Do contrario, haveria
saturacao e as medicoes seriam prejudicadas.
Como sao utilizadas 4 celulas de LiFePo4, o ideal e fornecer uma tensao em
+V cc quatro vezes superior ao maximo delas. Como este nıvel pode atingir ate 4,2V
(Figura 2.2, [1] e [22]), o ideal seria utilizar uma alimentacao proxima de 18,2V em
+V cc e conectar o −V ee ao GND.
Os sinais de saıda no amplificadores operacionais LM833N corresponde a
diferenca de potencial entre V+ e V− em relacao a −V ee, como ilustrado na Figura
3.3, garantindo uma medicao referenciada com o microcontrolador.
Independente dos Op Amps, os ADCs do microcontrolador aceitam 5V de
d.d.p na entrada. Em funcao disso, a tensao na carga primaria nao pode ser ob-
tida atraves do microcontrolador sem o acrescimo de um divisor resistivo. Como
alternativa, pode-se realizar a soma algebrica do potencial de cada celula alocada
na carga. Como alternativa a esse metodo, utilizou-se um osciloscopio para avaliar
as variacoes de tensao nelas durante o chaveamento.
Para calcular a corrente circulante nas cargas primaria e secundario, foi conec-
tado um resistor de precisao a cada uma. No entanto, a tensao neles nao apresenta
uma amplitude suficientemente alta para ser transmitida aos ADCs do microcontro-
lador. Uma abordagem normalmente utilizada consiste em elevar o sinal de tensao
no resistor atraves de um Op Amp, resultando em um acrescimo de ruıdo. Um ou-
tro metodo para realizar diretamente a medicao de corrente e utilizar um sensor de
20
efeito Hall - como o ACS712.
3.5 Layout da Placa de Balanceamento
Apos especificar todas as condicoes necessarias, precisa-se criar o Layout
da Placa de Balanceamento integrando todos os pontos anteriormente abordados.
Para essa funcao foi utilizado o Software Eagle (Easily Applicable Graphical Layout
Editor).
De maneira resumida, foram considerados os seguintes aspectos:
1. Necessidade de manter a referencia entre o microcontrolador, a fonte de ali-
mentacao dos amplificadores operacionais e as cargas primaria e secundaria;
2. Conectores para as 4 celulas, sinais de acionamento do microcontrolador, ali-
mentacoes, cargas primaria e secundaria e sinais de saıda dos amplificadores
operacionais;
3. Divisao da placa em 4 quadrantes (2 frontais e 2 traseiros)
4. Ativacao dos Reles em LOW
O projeto de layout se inicia a partir da esquematizacao do circuito, definindo
quais componentes sao utilizados e interligando resistores, blocos, conectores e Amp
Ops.
O esquema foi dividida em 5 grandes blocos:
1. Contendo os conectores
2. Contendo o modulo de chaveamento 1 com a celula 1 e o Op Amp subtrator
3. Contendo o modulo de chaveamento 2 com a celula 2 e o Op Amp subtrator
4. Contendo o modulo de chaveamento 3 com a celula 3 e o Op Amp subtrator
5. Contendo o modulo de chaveamento 4 com a celula 4 e o Op Amp subtrator
Observa-se na Figura 3.5 os conectores do sinal analogico, microcontrolador,
alimentacao, celulas e resistores de precisao. Os demais compoem os modulos de
21
Figura 3.5: Bloco dos Conectores no Esquematico do Circuito
chaveamento, o conector entre eles e os amplificadores operacionais, como na Figura
3.3. Optou-se por distribuir os componentes em 2 faces, otimizando o espaco. Em
cada uma foi criado um plano de GND, cujas vantagens sao:
• Ter o GND distribuıdo continuamente pela placa facilita o roteamento do
circuito, pois e a conexao mais comum em um circuito.
• Aumentar a resistencia mecanica da placa
• Diminuir a impedancia de todas as conexoes de GND, isso reduz a conducao
de ruıdos indesejados
• Criar uma capacitancia distribuıda para cada ligacao no circuito, reduzindo a
propagacao de ruıdo
22
Capıtulo 4
Microcontrolador e Software
Embarcado
Nesse capıtulo e apresentado o microcontrolador utilizado juntamente com os
algoritmos de balanceamento desenvolvidos. Inicialmente sao abordadas as carac-
terısticas as quais o microcontrolador precisaria atender para viabilizar o balance-
amento. Posteriormente, 2 algoritmos de balanceamento sao descritos. O primeiro
visa uma aplicacao imediata para validar o balanceamento integrado, ja o segundo
seria para a implementacao futura no BMS do ROV LUMA.
4.1 Microcontrolador
O microcontrolador utilizado no projeto e o ATmega2560 da ATMEL, com
oscilador de 16 MHz; 54 pinos de entrada/saıda de sinal digital, das quais 16 podem
ser utilizadas como entradas analogicas e 15 como saıda de sinal modulado por
largura de pulso; e realiza comunicacao via UART, I2C e/ou SPI.
Este foi escolhido principalmente pela disponibilidade de portas de entrada/saıda,
pois cada celula de LiFePO4 esta conectada a uma placa contendo 7 reles CPC1907B.
Logo, sao utilizados 28 reles para distribuir 4 celulas entre as cargas primaria e se-
cundaria. Como abordado na Secao 3.2, cada rele e ativado atraves de um sinal
digital, portanto sao necessario 28 sinais independentes provenientes das portas di-
gitais do microcontrolador. Juntamente com estes sinais, sao necessarios sinais para
comunicacao e ADCs, demandando ao menos 36 portas digitais.
23
Figura 4.1: Placa de hardware open-source Arduino MEGA 2560
Um solucao alternativa a demanda excessiva por portas seria empregar um
IC Shift Register (74HC595, por exemplo) ao sistema. Ligando 3 portas do micro-
controlador ao IC, e possıvel obter ate 8 de saıda.
O microcontrolador esta conectado a placa de Arduino MEGA2560. Esta
dispoe de um modulo conversor UART-USB que e utilizado para receber os sinais
de balanceamento transmitidos por um computador, realizar a comunicacao com a
interface grafica responsavel pelo monitoramento das tensoes e gravar o codigo-fonte
no microcontrolador.
4.2 Software
O codigo implementado no microcontrolador foi escrito na linguagem C/C++,
utilizando bibliotecas desenvolvidas para a plataforma Arduino. Estas possuem di-
versas funcoes pre-definidas, conferindo agilidade no desenvolvimento de codigos,
diferentemente da linguagem de programacao em baixo nıvel implementada em mi-
crocontroladores.
Neste projeto, a funcao do microcontrolador e validar o funcionamento de
uma topologia de balanceamento integrado. Para tal, foram desenvolvidas duas
logicas de acionamento dos reles de chaveamento, o balanceamento manual e o ba-
lanceamento automatico via contagem de coulomb.
A interface grafica Processing e utilizada para monitorar as tensoes das celulas
nos experimentos desenvolvidos nas Secoes 5.3 e 5.4. Esta interface foi desenvolvida
24
para interfacear computador e placas de Arduino. Sua programacao e realizada
atraves de bibliotecas semelhantes as do Arduino. Seu codigo foi desenvolvido em
[11].
4.2.1 Balanceamento Manual
Este metodo foi implementado no codigo-fonte do microcontrolador por ser
simplista. Consiste em definir entre 4 tensoes recebidas qual a celula com menor
tensao e conecta-la a carga secundaria. As demais celulas sao conectadas a carga
primaria. Por convencao, nesse projeto a carga secundaria demandara sempre uma
corrente menor do que a primaria.
Com as celulas ja conectadas a placa de balanceamento, e transmitido via
comunicacao serial do computador ao microcontrolador um sinal responsavel por
ativar os reles de maneira a distribuir as celulas entre a carga primaria e secundaria.
Apos a recepcao deste sinal, o Arduino MEGA executa a funcao “chaveamento(
tensao1, tensao2, tensao3, tensao4)”, onde o menor valor de tensao transmitido
definira qual a unica celula que sera conectada a carga secundaria, desencadeando
no chaveamento dos reles dos 4 modulos, alocando as celulas em seus respectivos
lugares, conectando primeiramente a de menor tensao e posteriormente as outras.
O codigo desenvolvido contempla as 4 possıveis distribuicoes de celulas. Isso e
realizado atraves da ativacao dos reles de acordo com as 12 possibilidades abordados
na Apendice A.2.
Os reles ativos em cada configuracao esta especificado de acordo com a Tabela
4.1
Carga Primaria Carga Secundaria Reles Acionados
Celulas Celulas Placa 1 Placa 2 Placa 3 Placa 4
1 2, 3 e 4 S2, S4 e S6 S1 e S5 S1 e S5 S3 e S5
2 1, 3 e 4 S3, S5 e S7 S2, S4 e S6 S1 e S5 S3 e S5
3 1, 2 e 4 S1 e S5 S3, S5 e S7 S2, S4 e S6 S3 e S5
4 1, 2 e 3 S1 e S5 S1 e S5 S3, S5 e S7 S2 e S6
Tabela 4.1: Acionamento dos reles de chaveamento em cada configuracao
Como a frequencia do oscilador no microcontrolador (16 Mhz) e muito maior
25
do que a de ativacao tıpica do rele CPC1907B (370 Hz), conforme comentado na
Secao 3.1 e Subsecao 4.1 respectivamente, o sinal de comando e transmitido para
todos reles antes de qualquer um ser efetivamente acionado, gerando assim uma
sequencia de chaveamentos em tempos aleatorios. Isto pode gerar um curto-circuito
das celulas e danificar os equipamentos.
Para exemplificar esta situacao, e suposta uma distribuicao conforme a da
Figura 2.5. Observando a conexao entre a placa 3 e 4, pode haver um curto na
celula 4 caso o rele S5 da placa 4 seja ativado antes da desativacao do S6 da placa
4 e o S7 da placa 3. A solucao implementada para evitar esta situacao consiste
em gerar um delay de 7 milissegundos entre cada ativacao/desativacao, ao custo de
aumentar o perıodo do chaveamento de todos modulos. Isto gerou a necessidade de
um aprimoramento descrito na Secao 5.6.
4.2.2 Balanceamento Automatico via Contagem de Coulomb
Esta segunda abordagem foi pensada sob um aspecto mais generico e proximo
da implementacao de um BMS, considerando a utilizacao das fontes reguladores de
corrente descritas no Apendice B.2 como cargas primarias.
Nesse metodo, as condicoes iniciais necessarias sao o SoC inicial de cada
celula; numero de pulsos de corrente totais em cada ciclo e com cada PWM; numero
de pulsos ja realizados desde a carga ou a descarga; e a correspondencia entre o
PWM da saıda do microcontrolador e a fonte reguladora de corrente.
Esses dados sao utilizados para estimar o SoC atraves da contagem de Cou-
lomb, calculando a energia remanescente nas celulas e, consequentemente, o tempo
de operacao. No entanto, precisa-se gerar pulsos de corrente com tempos de relaxa-
mento semelhantes e de 1 segundo para simplificar a conta da integral comentada
na Subsecao 2.1.3 e garantir uma estimativa mais exata.
Para dispor das condicoes iniciais, e essencial realizar ciclos de carga e des-
carga em cada uma das celulas com as possıveis saıdas das fontes reguladoras de
corrente. Os resultados obtidos sao consolidados em um software para realizar o
algoritmo de busca. Este retorna: o estado de carga correspondente a uma tensao,
a linha correspondente na planilha, qual o ciclo e o numero de pulsos restantes e
totais desse ciclo.
26
Esse algoritmo de busca poderia ter sido implementado no software Matlab,
mas por preferencia propria utilizou-se o editor de planilhas Microsoft Excel.
De maneira resumida, o algoritmo de busca desenvolvido considera apenas
ciclos completos de carga e/ou descarga, e busca a tensao fornecida apenas em
instantes onde a corrente e igual a 0 na carga. Com esta consideracao, o experimento
reduz a influencia da resistencia interna durante a busca.
O codigo-fonte deste metodo de balanceamento foi parcialmente desenvolvido.
Ja existem rotinas para identificar o numero de celulas, as quais serao conectadas a
carga secundaria, e definir a distribuicao.
O algoritmo de chaveamento dos reles ainda nao foi escrito. O ideal seria criar
uma estrutura no codigo que represente os reles em cada modulo e entao, executar
uma funcao responsavel por identificar a configuracao a qual sera implementada
para ativar/desativar os reles automaticamente.
27
Capıtulo 5
Experimentos e Proposta de
Aprimoramento
Este capıtulo se reserva aos testes realizados para verificar a aplicabilidade
do balanceamento integrado. Inicialmente e descrita a bancada de teste e o fluxo de
dados durante o experimento. Posteriormente, sao exibidos os testes e resultados
obtidos.
5.1 Descricao da Bancada de Teste
A bancada e constituıda por um notebook, a placa de balanceamento, duas
placas de Arduino MEGA2560 commicrocontroladores, um osciloscopio Rigol DS1102C,
uma fonte de alimentacao ICEL PS-4001, uma decada de resistencia e um resistor.
A montagem do experimento esta representada na Figura 5.1, onde e possıvel
observar 4 celulas conectadas a placa de balanceamento e 2 placas de Arduino
MEGA2560. Uma das placas e responsavel por acionar os reles do chaveamento
em funcao do sinal recebido do computador, a outra transmite a interface grafica
Processing os sinais de tensao, medidos pelos conversores ADCs, para serem moni-
torados.
No Processing, esse dados sao exibidos e paralelamente escritos em um ar-
quivo de texto. Apos o teste, estes dados sao utilizados pelo editor de planilhas,
gerando os Graficos 5.8 e 5.10.
O osciloscopio DS1102C foi configurado para a monitoracao da tensao nas
28
Figura 5.1: Montagem dos circuitos para realizar os Experimentos com a Decada e
a Resistencia
cargas primarias e secundarias nos instantes do chaveamento, detectando o momento
no qual havia variacao na carga secundaria e entao, disponibilizando no visor graficos
semelhantes aos ilustrados nas Figuras 5.9 e 5.6.
A fonte PS-4001 e responsavel pela alimentacao dos amplificadores opera-
cionais com 18, 2V, como especificado na Secao 3.4. Tanto a saıda da decada de
resistencia quanto o microcontrolador foram conectados ao GND da fonte, dessa
maneira garante-se um sistema sob a mesma referencia. Esta decada, a qual repre-
senta a carga primaria, apresenta um alcance de valores de 0Ω ate 11kΩ e, para
29
realizar o teste do chaveamento e o balanceamento manual, seu valor era alterado
manualmente entre 11kΩ - para simular circuito aberto - e 10Ω - uma carga primaria.
A placa de balanceamento e composta por quatro modulos, como explicado
na Secao 3.3. Estes sao interligados conectando os sinais de saıda do modulo atual
aos de entrada do proximo. Ao final, as cargas primaria e secundaria sao conectadas
ao sistema conforme mostrado na Figura 2.5. Caso desejado, pode-se aumentar ou
reduzir o numero de celulas no sistema. Para isto, e necessario retirar ou acrescentar
os modulos intermediarios.
Como explicado anteriormente, o primeiro modulo possui suas entradas em
curto-circuito para garantir que o sistema esteja no mesmo referencial de GND.
Apenas o primeiro e ultimo modulos possuem conexao direta com as cargas primaria
e secundaria, todas os demais - intermediarios - nao sao conectadas a elementos
externos.
Figura 5.2: Diagrama de blocos da montagem utilizada nos testes
5.2 Testes Preliminares
Inicialmente foram realizados testes sem carga conforme para verificar o fun-
cionamento dos modulos, realizando a ativacao dos reles e medindo a tensao em
cada uma das cargas. Na carga secundaria deveria haver uma d.d.p correspondente
30
a soma da tensao das celulas conectadas a ela e na carga primaria haveria a soma
das tensoes das demais celulas. Na Figura 5.3 e possıvel observar a montagem para
esses testes, onde a tensao apresentada no canal 2 seria equivalente a soma de tensao
das celulas 1 e 4, enquanto no canal 1 seria das celulas 2 e 3.
Figura 5.3: Demonstracao das conexoes realizadas na Placa durante os testes preli-
minares
Os primeiros testes foram realizados com pilhas em circuito aberto, ao inves
de celulas de LiFePo4, pois sao mais baratas de repor e seguras caso ocorresse um
curto-circuito. Os modulos foram inter-conectados como destacado na Figura 5.4
com o numero 1 e os reles acionados atraves dos conectores marcados com o numero
2.
Durante os testes, foi identificado um problema ao conectar a celula do ter-
ceiro modulo a carga secundaria, nao obtendo a soma das tensoes das pilhas 1, 2 e
4 na primaria. Apos diversos testes, percebeu-se uma solda mal realizada, que foi
resolvido apos conectar novamente todos os componentes. Apos essa etapa, foram
realizados os experimentos com celulas de LiFePo4.
Na Figura 5.6, as celulas 1, 2 e 3 estao conectadas ao canal 2 do Osciloscopio e
a celula 4 no canal 1. Ao realizar o chaveamento para trocar as celulas 1 e 4 de carga,
fica evidenciado a variacao de tensao no Canal 1 e 2 do oscilocopio, apresentando
uma interrupcao na alimentacao do sistema durante aproximadamente 75ms. Em
31
funcao disso, e proposto na Secao 5.6 uma solucao com a utilizacao de capacitores.
Figura 5.4: Demonstracao das conexoes realizadas na Placa
Figura 5.5: Circuito utilizado para validar o funcionamento da Placa de Balancea-
mento
5.3 Teste do Chaveamento
Para o experimento utilizando cargas, sao conectados aos modulos o resistor
de 100Ω como carga secundaria e a decada de resistencia como primaria. Por nao
dispor de uma fonte de corrente para gerar uma onda quadrada como a apresentada
32
Figura 5.6: Grafico apresentado pelo Osciloscopio ao alternar a conexaao da celula
1 com a celula 4
na Figura 5.7, a decada tera sua resistencia alternada entre 10Ω e 100kΩ simu-
lando este comportamento. Todas as celulas conectadas a ela apresentarao variacao
de tensao, enquanto que a celula conectada ao resistor apresentara uma queda de
tensao quase nula por estar sujeita a uma corrente contınua baixa (aproximadamente
30mA). Este comportamento do sistema esta representado na Figura 5.8.
Figura 5.7: Pulso de corrente do carregador
No primeiro instante - entre 1s e 213s - da Figura 5.8, a celula 1 esta conectada
a carga secundaria e todas as demais a primaria. Isto e percebido tendo em vista
que todas as demais celulas tem suas tensoes alteradas de acordo com a alteracao
da resistencia na carga primaria, enquanto que a celula 1, conectada a um resistor
de 100Ω, apresenta variacao de tensao desprezıvel.
Com aproximadamente 11kΩ na carga primaria, circula uma corrente baixa,
simulando um circuito-aberto, pois gera uma queda de tensao desprezıvel. Ja com
10Ω, ha uma diferenca de potencial acentuada devido ao fluxo de aproximadamente
1A.
33
Figura 5.8: Experimento 1 - Curva de Tensao em cada celula com a Placa de Ba-
lanceamento sob carga
Figura 5.9: Grafico apresentado no Canal 2 do Osciloscopio ao alocar a celula 2 no
lugar da 3
Proximo de 213 segundos, e transmitido o sinal de comando do computador
ao Arduino, acionando os modulos de chaveamento para conectar a celula 2 a carga
secundaria e, consequentemente, a celula 1 na primaria. A tensao passa a oscilar
em todas as celulas exceto na 2 ate aproximadamente 580 segundos, pois esta foi
realocada. Este processo se repete ate que todas as 4 celulas tenham sido conectadas
34
a carga secundaria indivualmente.
A variacao da tensao das celulas esta ilustrada na Figura 5.8, ja a Figura
5.10 representa todas as tensoes sobrepostas, facilitando a visualizacao do instante
no qual a resistencia da decada alterna e a tensao de todas as celulas conectadas a
ela variam.
Figura 5.10: Experimento 1 - Curva de Tensao x Celulas sobrepostas com a Placa
de Balanceamento sob carga
5.4 Balanceamento Manual
Para simular um balanceamento, a descarga das celulas ocorre por 300 se-
gundos com a decada a 10Ω - perıodo ativo - e alterna para mais 120 segundos com
11kΩ - perıodo de relaxamento -, concluindo um perıodo de descarga. Durante cada
perıodo de relaxamento e realizado uma medicao da tensao das celulas e entao e
alocada na carga secundaria a celula com menor tensao. No grafico da Figura 5.11
e ilustrada a curva de tensao durante este teste.
No primeiro instante deste balanceamento, a celula 3, por apresentar menor
tensao, esta conectada a carga secundaria e as demais a primaria. Apos 406 segundos
ocorre o final do perıodo ativo, definido pela alteracao da resistencia da decada para
11kΩ. Como a tensao da celula 4 passa a ser o menor dentre todas, esta e chaveada
no lugar da 3 para ser conectada a carga secundaria.
A distribuicao e inalterada ate o terceiro perıodo de descarga, onde a tensao
da celula 3 se torna inferior as outras e e, portanto, conectada a carga secundaria.
Apos 1600 segundos, a celula 4 apresenta novamente a menor tensao e substitui a 3.
35
Com esse experimento foi possıvel conectar, durante o perıodo de relaxa-
mento, a celula de menor tensao na carga secundaria em cada perıodo de descarga.
Este processo poderia ocorrer ate que uma das celulas atingisse a tensao mınima
limite, garantindo a utilizacao da bateria de maneira mais eficiente possıvel e que
as celulas estivessem o menos desbalanceadas possıvel.
Caso a decada e a resistencia fossem trocadas por circuitos para recarregar a
bateria, o mesmo algoritmo pode ser implementado. A unica alteracao seria que a
celula com maior estado de carga passaria a ser alocada no circuito que fornecesse
menor corrente, enquanto as outras recarregariam mais rapidamente por estarem re-
cebendo uma corrente maior. Durante cada perıodo de relaxamento seria necessario
medir a tensao das celulas para entao realizar o chaveamento necessario.
Vale a pena ressaltar o fato de as celulas 3 e 4 ja estarem proximas da faixa nao
linear da curva de OCV, ilustrada na Figura 2.2, e, portanto, a queda de tensao nas
duas e sempre superior as demais, demonstrando que ambas ja estao abaixo de 10%
do SoC. Para este caso, ao final do experimento haveria uma desbalanceamento das
demais celulas em relacao a 3 e 4, pois estas nao estavam minimamente carregadas
a ponte de ser possıvel as celulas 1 e 2 serem conectadas a carga secundaria.
Figura 5.11: Experimento 2 - Grafico de Tensao gerado durante o balanceamento
manual
36
5.5 Problemas Encontrados
Durante os experimentos, ocorre variacao na tensao das cargas primarias e
secundarias por 2 motivos: uma corrente e aplicada ou chaveamento dos reles. Os
graficos ilustrados nas Figuras 5.8, 5.10 e 5.11 refletem a influencia do primeiro nas
celulas. O segundo motivo e observado nas Figuras 5.6 e 5.9.
Dependendo do sistema em que esta topologia de balanceamento esteja im-
plementada, pode ser inaceitavel a tensao de alimentacao das cargas primaria e/ou
secundaria atingirem 0V em qualquer instante durante a operacao.
Foi identificado que o modulo de conectores dos circuitos, apresentado na
Figura A.3, nao estava conectado aos devidos terminais. Estes conectores devem
apresentar a tensao e a corrente nas cargas primaria e secundaria.
Um outro problema encontrado e ja mencionado nesse projeto se refere ao
curto-circuito presente na entrada do primeiro modulo de chaveamento. Isso impos-
sibilita a conexao de placas de balanceamento em serie. E necessario criar um outro
layout em que nao haja este curto e o primeiro modulo receba sinais de uma placa
externa.
5.6 Proposta de Aprimoramentos
A solucao proposta para o problema descrito na Secao 5.5 consiste em incluir
um conversor DC-DC, 2 capacitores em paralelo aos circuitos primario e secundario
e 2 reles entre cada capacitor e a placa de balanceamento, conforme ilustrado na
Figura 5.12.
Durante a operacao, os novos reles desconectarao a placa de balanceamento
das cargas primaria e secundaria no perıodo de chaveamento, possibilitando a im-
plementacao de um algoritmo mais eficiente de chaveamento. Os capacitores ficarao
responsaveis por alimentar as cargas nesse perıodo e os conversores garantirao a
alimentacao do microcontrolador e dos circuitos de chaveamento.
Para esta nova configuracao, e considerado:
• frequencia do oscilador no microcontrolador igual a 16 MHz;
• tempo de ativacao e desativacao dos reles CPC1907B igual a - no maximo -
37
Figura 5.12: Proposta para evitar a interrupcao da alimentacao durante o chavea-
mento
5ms e 1ms, respectivamente;
• com 1 perıodo do oscilador (clock) e possıvel enviar o sinal de comando do
microcontrolador para 1 registrador, o qual possui 7 portas usadas para ativar
os reles de 1 modulo;
• os reles dos capacitores tambem sao CPC1907B.
Baseando-se nessas consideracoes, sao necessario 4 perıodos de clock para
realizar a ativacao ou desativacao de todos os CPC1907Bs, os quais ocorrem em 250
ns. Este tempo e suficiente para transmitir o comando de acionamento de todos os
reles antes de qualquer um efetivamente ativar.
A solucao proposta consiste em:
i Identificar qual a configuracao necessaria para balanceamento;
38
ii Escrever a configuracao dos reles em uma variavel;
iii Desconectar a placa de balanceamento do sistema, passando a utilizar os capa-
citores como alimentacao;
iv Desativar todos os reles, por seguranca;
v Ativar os reles de acordo com a variavel auxiliar;
vi Reconectar a placa de balanceamento ao sistema.
Neste caso, o algoritmo de chaveamento nao necessita de um atraso entre cada
ativacao de rele, pois os comandos de acionamentos serao transmitidos simultanea-
mente. Esta abordagem e possıvel por nao haver carga e, em funcao da desativacao
previa dos reles, nao haveria risco de causar curto-circuito.
Em iv, e necessario 1ms e em v e vi, 5ms, totalizando 11ms, nos quais os
capacitores precisam fornecer energia aos circuitos. Tambem deve-se especificar
qual a tensao mınima neles. Aplicando estes dados a Equacao A.5, obtem-se o valor
do capacitor. Sendo Vcc e R a tensao e a resistencia da carga.
Supondo um sistema em que a tensao mınima de alimentacao na carga
primaria seja 45V e a bateria apresente 48V, uma carga de 10Ω e 11ms de cha-
veamento para o balanceamento, obtem-se o valor do capacitor conectado a carga
primaria
45 = 48e−0.011
10C1
ln45
48=
−0.011
10C1
C1 = 17100µF (5.1)
No caso de uma carga secundaria, supoe-se uma alimentacao mınima de 10V
e que a bateria apresente 12V em seus terminais. Os demais dados sao semelhantes
a situacao anterior.
Tem-se portanto
39
10 = 12e−0.011
10C2
ln10
12=
−0.011
10C2
C2 = 6000µF (5.2)
Os valores comerciais para os capacitores C1 e C2 seria 18000µF e 6800µF ,
respectivamente.
40
Capıtulo 6
Conclusoes
No decorrer desse projeto, projetou-se uma placa de balanceamento capaz
de conectar 4 celulas em 2 cargas definidas como primaria e secundaria, atraves do
acionamento de reles distribuıdos em 4 modulos. Este conceito foi elaborado em [4],
mas sem qualquer experimento pratico.
O balanceamento integrado e viavel por possibilitar a ligacao de celulas ar-
bitrariamente entre 2 circuitos com perdas apenas nas trilhas, nas resistencias in-
ternas dos reles e no conversor DC-DC. As maiores preocupacoes sao: possıveis
curto-circuitos e picos de tensao gerados durante os chaveamentos.
Na placa desenvolvida, a primeira situacao foi contornado gerando um atraso
de 7ms entre a transmissao de cada comando de ativacao. A segunda pode ser
evitada atraves da utilizacao de capacitores, suavizando a subida ou descida do
nıvel de tensao.
Os experimentos foram realizados sob uma corrente de 1A, com tensao nas
cargas atingindo no maximo 12V. O ROV Luma exigiria reprojeto de trilhas, al-
teracao dos componentes e utilizacao de dissipadores para atender as especificacoes
mınimas - 10A e 48V. Atualmente, essa restruturacao resultaria no aumento da
placa e, em projetos com restricao de espaco, isso seria um problema.
A placa de balanceamento desenvolvido nao pode ser utilizada em um BMS,
pois a alimentacao das cargas e interrompida durante o chaveamento. Uma nova
placa e proposta na Secao 5.6 para contornar essa situacao. A sua logica de chave-
amento seria mais eficiente, chaveando o sistema em menos tempo, evitando curto-
circuitos e picos de tensao nas cargas durante o chaveamento.
41
Nao e possıvel definir se o balanceamento integrado e mais viavel do que
qualquer outra topologia. Pode-se utilizar este prototipo juntamente com o desen-
volvido em [11] para comparar o balanceamento integrado e o passivo sob as mesmas
correntes, comparando a energia fornecida, energia dissipada, tempo de operacao e
densidade de componentes por area.
De maneira resumida, o conceito de balanceamento integrado e funcional,
mas a placa de balanceamento projetada nao e capaz de realiza-lo eficientemente.
Deve-se realizar as alteracoes citadas na Secao 5.6.
6.1 Trabalhos Futuros
Com os conhecimentos adquiridos, e possıvel desenvolver um BMS em aplicacoes
reais. Este estimaria o estado de carga, utilizaria um carregador autonomo, descrito
na Secao B.2, e implementaria o balanceamento integrado.
Para o sistema e interessante destacar possıveis melhorias e correcoes. Dentre
elas pode-se citar:
• Trocar os resistores de corrente Rsense por sensores de efeito Hall e adicionar
sensores de temperatura;
• Dimensionar corretamente os conectores das placas inter-modulos, conectar as
trilhas das cargas aos conectores e eliminar o curto-circuito do Primario-in,
Cell- e Secundario-in com GND no primeiro modulo das placas de balancea-
mento;
• Terminar de escrever o codigo-fonte para realizar o balanceamento integrado
automaticamente, implementando uma estimacao de carga mais eficiente e
com a possibilidade de desconectar celulas de ambas cargas;
• Implementar um algoritmo de estimacao de carga que possa ser executado pela
placa Arduino MEGA2560.
42
Referencias Bibliograficas
[1] LU, L., HAN, X., LI, J., et al., “A review on the key issues for lithium-ion
battery management in electric vehicles”, Journal of Power Sources, v. 226,
pp. 272–288, 2013.
[2] BERGVELD, H. J., KRUIJT, W. S., NOTTEN, P. H. L., Battery Management
Systems Design by Modelling, 2001.
[3] ADITYA, J. P., FERDOWSI, M., “Comparison of NiMH and Li-ion batteries
in automotive applications”, 2008 IEEE Vehicle Power and Propulsion Confe-
rence, VPPC 2008, pp. 1–6, 2008.
[4] MUENZEL, V., HOOG, J. D., BRAZIL, M., et al., “Battery Management
using Secondary Loads : A Novel Integrated Approach”, World Congress of
the International Federation of Automatic Control, pp. 3924–3929, 2014.
[5] LINDEN, D., REDDY, T. B., Handbook of Batteries, 2001.
[6] FISK, H., LEIJGA RD, J., A Battery Management Unit. M.Sc. dissertation,
Chalmers University of Technology, 2010.
[7] EARLE, G., KIEWICZ-SCHLANSKER, W., “LiFePO4 Battery Pack Per-Cell
Management System LiFePO4 Battery Pack Per-Cell Management System”,
v. Lafayette College, 2011.
[8] YAN, J., XU, G., QIAN, H., et al., “Robust state of charge estimation for
hybrid electric vehicles: Framework and algorithms”, Energies, v. 3, n. 10,
pp. 1654–1672, 2010.
43
[9] HE, W., WILLIARD, N., CHEN, C., et al., “State of charge estimation for
electric vehicle batteries using unscented kalman filtering”, Microelectronics
Reliability, v. 53, n. 6, pp. 840–847, Jun. 2013.
[10] TIAN, Y., XIA, B., SUN, W., et al., “A modi fi ed model based state of
charge estimation of power lithium-ion batteries using unscented Kalman fi
lter”, Journal of Power Sources, v. 270, pp. 619–626, 2014.
[11] FIGUEIRO, A. A., Controle do Balanceamento de Bateria e Estimacao de
Estado de Carga. M.Sc. dissertation, Universidade Federal do Rio de Janeiro,
2015.
[12] III, W. S., Lithium-based battery system management and balancing. M.Sc. dis-
sertation, Purdue University, 2011.
[13] BARONTI, F., RONCELLA, R., SALETTI, R., “Performance comparison of
active balancing techniques for lithium-ion batteries”, Journal of Power Sour-
ces, v. 267, pp. 603–609, Dec. 2014.
[14] WELSH, J. D., A Comparison of Active and Passive Cell Balancing Techniques
for Series / Parallel Battery Packs. M.Sc. dissertation, Ohio State University,
2009.
[15] JOEL, W., III, S., Lithium-based Battery System Management and Balancing.
M.Sc. dissertation, Purdue University, 2011.
[16] DAOWD, M., OMAR, N., BOSSCHE, P. V. D., et al., “Passive and Active
Battery Balancing comparison based on MATLAB Simulation”, Vehicle Power
and Propulsion Conference (VPPC), IEEE, pp. 1–7, 2011.
[17] AMIRAULT, J., CHIEN, J., GARG, S., et al., “The Electric Vehicle Battery
Landscape : Opportunities and Challenges”, p. 42, 2009.
[18] ZHANG, S. S., “The effect of the charging protocol on the cycle life of a Li-ion
battery”, Journal of Power Sources, v. 161, pp. 1385–1391, 2006.
[19] LI, J., LYU, C., WANG, L., et al., “Remaining capacity estimation of Li-ion
batteries based on temperature sample entropy and particle fi lter”, Journal of
Power Sources, v. 268, pp. 895–903, 2014.
44
[20] PATTIPATI, B., BALASINGAM, B., AVVARI, G., et al., “Open Circuit Vol-
tage Characterization of Lithium-ion Batteries”, Journal of Power Sources,
v. 269, pp. 317–333, Jul. 2014.
[21] ZHENG, Y., OUYANG, M., LU, L., et al., “On-line equalization for lithium-
ion battery packs based on charging cell voltages: Part 1. Equalization based
on remaining charging capacity estimation”, Journal of Power Sources, v. 247,
pp. 676–686, 2014.
[22] RAO, R., VRUDHULA, S., RAKHMATOV, D. N., “Battery Modeling for
Energy-Aware System Design”, IEEE Computer Society, v. 36, n. 12, pp. 77–87,
2003.
[23] HUSSEIN, A. A. H., BATARSEH, I., “An overview of generic battery models”,
IEEE Power and Energy Society General Meeting, pp. 1–6, 2011.
45
Apendice A
Placa de Balanceamento Integrado
A.1 Layout da Placa de Balanceamento
Na face frontal estao dispostos 2 modulos de reles, os LM833Ns, conectores
do sinais transmitidos pelo microcontrolador, da alimentacao, das celulas, dos sinais
analogicos; e no verso ha outros 2 modulos de reles (Figura A.1).
46
Figura A.1: Alocacao das Tarefas na Placa de Balanceamento
47
Figura A.2: Layout da Placa de Balanceamento no Eagle
48
Figura A.3: Layout da Placa de Balanceamento no Eagle com Plano de GND
Figura A.4: Face Frontal da Placa de Balanceamento com componentes soldados
49
Figura A.5: Face Traseira da Placa de Balanceamento com componentes soldados
A.2 Logica do Chaveamento
Existem 12 possıveis configuracoes das placas de reles para realizar as ligacoes
de n celulas entre o circuito primario, o secundario e simplesmente desconecta-la de
ambos
1. tanto a celula atual quanto a seguinte ligadas ao primario. Nesse caso e ne-
cessario ativar os reles S1 e S5 - conexao entre Placas 2 e 3 ;
2. a celula atual ligada ao primario e a seguinte ligada ao secundario. Nesse caso
e necessario ativar os reles S3, S5 e S7- conexao entre Placas 3 e 4 ;
3. a celula atual ligada ao primario e a seguinte desligada dos circuitos. Nesse
caso e necessario ativar os reles S3 e S5;
4. a celula atual ligada ao secundario e a seguinte ligada ao primario. Nesse caso
e necessario ativar os reles S2, S4 e S6 - conexao entre Placas 1 e 2 ;
5. tanto a celula atual quanto a seguinte ligadas ao secundario. Nesse caso e
necessario ativar os reles S1 e S2 ou S2, S6 e S7;
50
6. a celula atual ligada ao secundario e a seguinte desligada dos circuitos. Nesse
caso e necessario ativar os reles S2 e S6;
7. a celula atual desligada dos circuitos e a seguinte ligada ao primario. Nesse
caso e necessario ativar os reles S2, S4 e S5;
8. a celula atual desligada dos circuitos e a seguinte ligada ao secundario. Nesse
caso e necessario ativar os reles S2, S5 e S7;
9. a celula atual e a seguinte desligadas dos circuitos. Nesse caso e necessario
ativar os reles S2 e S5;
10. a ultima celula ligada ao primario. Nesse caso e necessario ativar os reles S3
e S5;
11. a ultima celula ligada ao secundario. Nesse caso e necessario ativar os reles S2
e S6;
12. a ultima celula desligada dos circuitos. Nesse caso e necessario ativar os reles
S2 e S5.
Sendo mais objetivo ainda, pode-se definir o objetivo de cada rele como:
• S1 - Responsavel por conectar a celula do modulo atual e seguinte em serie
(conexao entre Placas 2 e 3);
• S2 - Responsavel por conduzir a corrente presente na carga primaria (conexao
entre Placas 3 e 4);
• S3 - (1) Responsavel por conduzir a corrente do primario para a saıda central,
entre os reles S4 e S7 denominada mid (sem exemplo na Figura 2.5) ou (2)
conduzir a corrente da celula da placa para o primario (conexao entre Placas
3 e 4);
• S4 - Responsavel por realizar curto-circuito entre a tensao da carga primaria
e a de mid (conexao entre Placas 1 e 2);
• S5 - Responsavel por conduzir a corrente presente no secundario (conexao
entre Placas 1, 2 e 3);
51
• S6 - (1) Responsavel por conduzir a corrente do secundario para a saıda mid
(sem exemplo na Figura 2.5) ou (2) conduzir a corrente da celula da placa
para o secundario (conexao entre Placas 4 e 5);
• S7 - Responsavel por realizar curto-circuito entre a tensao da carga secundaria
e a de mid (conexao entre Placas 3 e 4).
A.3 Circuito RC paralelo
Na Secao 5.6, a utilizacao de um circuito RC em paralelo e proposta para
evitar a interrupcao da alimentacao quando houver chaveamento.
De maneira simplificada, o circuito sera representado conforme ilustrado na
Figura A.6
Figura A.6: Circuito RC em Paralelo com Rele
Supondo que o rele ilustrado seja desconectado do circuito no instante t(0),
sendo a tensao Vc(t) no capacitor igual a tensao Vcc na bateria. Em t(0+), o circuito
fica reduzido a um capacitor C descarregando a uma corrente ic atraves do resistor
R.
A corrente na malha e equacionada por
52
ic(t)− ir(t) = 0
CdVc(t)
dt=
Vc(t)
RdVc(t)
Vc(t)=
dt
RCt∫
0
dVc(τ)
Vc(τ)dτ =
t∫
0
dτ
RCdτ
ln(Vc(t)) =−t
RC+K
Vc(t) = Ke−t
RC (A.1)
Tem-se como condicoes iniciais
ic(0+) = −
Vcc
R(A.2)
Vc(0+) = Vc(0
−) = Vcc (A.3)
Aplicando A.3 em A.1 obtem-se
Vc(0) = K = V cc (A.4)
Substituindo em A.1, conclui-se finalmente
Vc(t) = Vcce−t
RC para t ≥ t(0) (A.5)
53
Apendice B
Carga e Descarga
B.1 Tecnicas de Carga e Descarga
Em funcao do comportamento nao linear das celulas de ıon-lıtio, surgiram
diferentes metodos de carga e descarga que priorizam parametros diferentes, por
exemplo: o tempo necessario para recarregar, a medicao de OCV e o ajuste fino
do estado de carga. Em [6], sao abordados 4 procedimentos. Recarga com tensao
constante, corrente constante, pulso de corrente e um metodo hıbrido.
Os mais utilizados sao o pulso de corrente e o metodo hıbrido. No primeiro,
aplica-se uma onda quadrada, cujos picos duram ∆tp segundos e ha ∆tr segundos
de relaxamento. Esse metodo e utilizado para coletar dados sobre a dinamica de
uma celula e tambem recarrega com OCV mais preciso.
A variacao de tensao apresentada na curva, o tempo de decaimento de tensao
na celula e a diferenca no nıvel medio entre a recarga e a descarga compoem as
informacoes sobre a dinamica de uma celula [11]. Com estas, e possıvel estimar
parametros para o modelo matematico ou circuito equivalente abordados em [23]
No caso de um ajuste fino, os pulsos devem apresentar um ∆tr que permita o
retorno ao regime estacionario. Dessa maneira, a recarga sera mais lenta, no entanto
garantira o maior armazenamento de energia e a estimacao mais exata.
Ja o metodo hıbrido, carrega a bateria com tensao constante proxima a 90%
do estado de carga. Apos esta etapa, aplica-se uma corrente constante ate o termino
do carregamento da celula. Com esse procedimento, a carga ocorre mais rapidamente
em relacao as outras abordagens e de maneira mais precisa.
54
B.2 Circuito para Carga e Descarga
Para realizar os experimentos e futuramente empregar o projeto como um
BMS, e desejavel utilizar um sistema automatizado capaz de carregar e descarregar
as celulas de LiFePo4.
Utilizando como base o regulador de corrente projetado em [11], foi desenvol-
vida mais uma placa com esta funcao para substituir a carga primaria ou secundaria
em testes. O esquematico do regulador pode ser visto na Figura B.1 e a ligacao dos
reles para alternar entre carga e descarga do circuito esta representado na Figura
B.2.
Figura B.1: Esquematico do Circuito Regulador de Corrente Controlado por PWM
Dividindo em processos, o circuito pode ser representado primeiramente por
uma diferenca de potencial de 12V em relacao a Vref modulada de acordo com
um PWM enviado pelo microcontrolador ao opto-acoplador PC817. Em seguida, o
sinal, uma onda quadrada com amplitude de 12V, sera atenuado no divisor resistivo
representado pelo trimpot de 2kΩ. Esse sinal atenuado entao e passado ao CI do
Amp Op LM358, configurado como buffer, cuja saıda e filtrada pelo circuito RC. O
sinal eletrico gerado na saıda do filtro e proporcional ao ciclo de trabalho do PWM,
de maneira que a tensao esteja aproximadamente contınua e possa ser comparada
por um segundo Amp Op em relacao a medida no resistor de 0, 5Ω. Sua saıda atua
diretamente na porta (gate) de um MOSFET, regulando o potencial no resistor em
relacao a saıda do circuito RC e fornecendo uma corrente de ate 1,5A.
55
Esse modulo de carga e descarga pode ser conectado a placa de balanceamento
integrado, mas ainda precisa de alguns ajustes, pois o algoritmo consiste em mapear
as celulas entre 2 circuitos. Quando usados como primario e secundario, o sistema
parou de funcionar, pois o GND de cada um estava variando. Portanto, deve-
se repensar no projeto para garantir a manutencao da referencia entre todos os
circuitos (aquisicao de tensao, balanceamento, arduino e os 2 circuitos reguladores
de corrente).
Figura B.2: Circuito e logica dos reles utilizados no regulador de corrente para
alternar entre Carga e Descarga
56
Apendice C
Codigo do Arduino
C.1 Codigo do Arduino
O codigo de um placa de Arduino e divido 4 partes:
1. Declaracao dos pinos, definindo fisicamente onde saira/entrara cada sinal da
placa;
2. Declaracao de funcoes e variaveis. Similar a linguagem C;
3. Funcao void setup() responsavel por inicializar os pinos entre pinos de entrada
e pinos de saıda, habilitar a comunicacao, e inicializar as demais variaveis ou
funcoes. Como exemplo, o pino de entrada e usado nos conversores analogico-
digital para receber a tensao nas celulas, a qual varia entre 0 (0V) e 1023 (5V),
e o pino de saıda e usado para enviar o sinal aos reles para ativa-los ou nao;
4. Parte principal do codigo - void loop() - onde as funcoes sao chamadas e o
codigo e executado rotineiramente.
57
[fontsize = \tiny]
//Criado por Ignacio Ricart
//Codigo para realizar o Balanceamento Integrado Manualmente
//---- Variaveis de teste
char data;
//----CHAVEAMENTO
//----Portas de Cada Rele para as 4 celulas
const int P1R1 = 22;
const int P1R2 = 23;
const int P1R3 = 24;
const int P1R4 = 25;
const int P1R5 = 26;
const int P1R6 = 27;
const int P1R7 = 28;
const int P2R1 = 35;
const int P2R2 = 34;
const int P2R3 = 33;
const int P2R4 = 32;
const int P2R5 = 31;
const int P2R6 = 30;
const int P2R7 = 29;
const int P3R1 = 36;
const int P3R2 = 37;
const int P3R3 = 38;
const int P3R4 = 39;
const int P3R5 = 40;
const int P3R6 = 41;
const int P3R7 = 42;
const int P4R1 = 46;
const int P4R2 = 47;
const int P4R3 = 48;
const int P4R4 = 49;
const int P4R5 = 50;
const int P4R6 = 51;
const int P4R7 = 52;
//----Saıda do primario e secundario para ter o controle da tens~ao em cada uma
const int saida_prim = 0;
const int saida_sec = 1;
const int cell1 = 1;
const int cell2 = 5;
const int cell3 = 0;
const int cell4 = 4;
//----Matriz de chaveamento
char primario_secundario[4];
const int capacidade_carga[] = 690, 660, 620, 710; //METODO 3
const int capacidade_descarga[] = 690, 660, 600, 700; //METODO 3
const int n_cell_primario = 3; //METODO 3
const int n_cell_secundario = 1; //METODO 3
int n_celulas = n_cell_primario + n_cell_secundario;
int corrente_menor;//METODO 2
float corrente1, corrente2;//METODO 2
float tempo_estimado_prim[n_cell_primario + n_cell_secundario];//METODO 2
58
float tempo_estimado_sec[n_cell_primario + n_cell_secundario];//METODO 2
//----FONTE DE CORRENTE
//----Pinos da Fonte de Corrente Controlada
float pulso_convert1[] = 532, 590, 646, 702, 760, 818, 874, 932, 990;//----PWM de 90 a 170
float pulso_convert2[] = 530, 591, 649, 709, 767, 824, 882, 942, 1000;//----PWM de 50 a 130
//----Variaveis para Processing
long Leitura_Corrente,Output; // these are just variables for storing values
long Leitura_Tensao1,Leitura_Tensao2,Leitura_Tensao3, Leitura_Tensao4;
void setup()
Serial.begin(9600);// Serial pro Processing
Serial1.begin(9600);// Serial pro Matlab
//---- ATIVAC~AO DOS RELES OCORRE EM LOW !!!!
//----Saida Controle Rele 1
pinMode(P1R1, OUTPUT);
pinMode(P1R2, OUTPUT);
pinMode(P1R3, OUTPUT);
pinMode(P1R4, OUTPUT);
pinMode(P1R5, OUTPUT);
pinMode(P1R6, OUTPUT);
pinMode(P1R7, OUTPUT);
digitalWrite(P1R1, HIGH);
digitalWrite(P1R2, HIGH);
digitalWrite(P1R3, HIGH);
digitalWrite(P1R4, HIGH);
digitalWrite(P1R5, HIGH);
digitalWrite(P1R6, HIGH);
digitalWrite(P1R7, HIGH);
//----Saida Controle Rele 2
pinMode(P2R1, OUTPUT);
pinMode(P2R2, OUTPUT);
pinMode(P2R3, OUTPUT);
pinMode(P2R4, OUTPUT);
pinMode(P2R5, OUTPUT);
pinMode(P2R6, OUTPUT);
pinMode(P2R7, OUTPUT);
digitalWrite(P2R1, HIGH);
digitalWrite(P2R2, HIGH);
digitalWrite(P2R3, HIGH);
digitalWrite(P2R4, HIGH);
digitalWrite(P2R5, HIGH);
digitalWrite(P2R6, HIGH);
digitalWrite(P2R7, HIGH);
//----Saida Controle Rele 3
pinMode(P3R1, OUTPUT);
pinMode(P3R2, OUTPUT);
pinMode(P3R3, OUTPUT);
pinMode(P3R4, OUTPUT);
pinMode(P3R5, OUTPUT);
pinMode(P3R6, OUTPUT);
pinMode(P3R7, OUTPUT);
59
digitalWrite(P3R1, HIGH);
digitalWrite(P3R2, HIGH);
digitalWrite(P3R3, HIGH);
digitalWrite(P3R4, HIGH);
digitalWrite(P3R5, HIGH);
digitalWrite(P3R6, HIGH);
digitalWrite(P3R7, HIGH);
//----Saida Controle Rele 4
pinMode(P4R1, OUTPUT);
pinMode(P4R2, OUTPUT);
pinMode(P4R3, OUTPUT);
pinMode(P4R4, OUTPUT);
pinMode(P4R5, OUTPUT);
pinMode(P4R6, OUTPUT);
pinMode(P4R7, OUTPUT);
digitalWrite(P4R1, HIGH);
digitalWrite(P4R2, HIGH);
digitalWrite(P4R3, HIGH);
digitalWrite(P4R4, HIGH);
digitalWrite(P4R5, HIGH);
digitalWrite(P4R6, HIGH);
digitalWrite(P4R7, HIGH);
//----Entradas Analogicas
pinMode(saida_prim, INPUT);
pinMode(saida_sec, INPUT);
pinMode(cell1, INPUT);
pinMode(cell2, INPUT);
pinMode(cell3, INPUT);
pinMode(cell4, INPUT);
void chaveamento1(int SOC1, int SOC2, int SOC3, int SOC4)//Utilizado durante DESCARGA APENAS!!!!
int SOC[] = SOC1, SOC2, SOC3, SOC4; //SOC varia de 0 a 100
// char atual; //n~ao utilizado
// char seguinte; // n~ao utilizado
// int minIndex, minValue_prim,minValue_sec;
// const int valores_minimos = 2;
// int indices_minimos[valores_minimos];
int soc_minimo;
int indice_soc_minimo;
//----Situac~oes de Chaveamento
// atual = ’P’ , seguinte = ’P’ => S1 e S5 em LOW
// atual = ’P’ , seguinte = ’S’ => S3, S5 e S7 em LOW
// atual = ’P’ , seguinte = ’D’ => S3 e S5 em LOW
// atual = ’S’ , seguinte = ’P’ => S2, S4 e S6 em LOW
// atual = ’S’ , seguinte = ’S’ => S1 e S2 ou S2, S6 e S7 em LOW
// atual = ’S’ , seguinte = ’D’ => S2 e S6 em LOW
// atual = ’D’ , seguinte = ’P’ => S2, S4 e S5 em LOW
// atual = ’D’ , seguinte = ’S’ => S2, S5 e S7 em LOW
// atual = ’D’ , seguinte = ’D’ => S2 e S5 em LOW
// ultima celula = ’P’ => S3 e S5 em LOW
// ultima celula = ’S’ => S2 e S6 em LOW
//---- CHAVEAMENTO PARA DESCARGA
//---- METODO 1
//----Definir o SOC mınimo entre as celulas e alocar a celula de menor SOC no secundario (assumidamente a menor corrente)
soc_minimo = 100;// Evitar a reutilizac~ao da variavel soc_minimo em outros ciclos
60
Serial.print("n_celulas ");
Serial.println(n_celulas);
for (int i=0; i<n_celulas; ++i)
Serial.print("SOC");
Serial.print(i);
Serial.print(" = ");
Serial.println(SOC[i]);
if(i==0)
soc_minimo = SOC[i];
indice_soc_minimo = i;
if (SOC[i] < soc_minimo)
soc_minimo = SOC[i];
indice_soc_minimo = i;
Serial.print("indice do SoC mınimo: ");
Serial.println(indice_soc_minimo);
Serial.print("valor do SoC mınimo: ");
Serial.println(soc_minimo);
//----Alocar as celulas
for (int i=0; i<sizeof(SOC)-1; ++i)
if(i!=soc_minimo)
primario_secundario[i] = ’P’;
else
primario_secundario[i] = ’S’;
//----Realizar o chaveamento
//----Celula do secundario tem prioridade para n~ao suspender a atividade
//----No caso desse projeto so havera uma celula no secundario, mas ja tem o codigo para mais de 1
//----Metodo 1.1
//----Ja considero que apenas uma celula estara no secundario. Portanto posso prever todas as outras conex~oes
//----LIGAC~AO DO SECUNDARIO TEM PRIORIDADE
if(indice_soc_minimo == 0)
Serial.print("indice_soc_minimo dentro do metodo : ");
Serial.println(0);
// atual = ’S’ , seguinte = ’P’ => S2, S4 e S6 em LOW
digitalWrite(P1R1, HIGH);
delay(10);
digitalWrite(P1R2, LOW);
delay(10);
digitalWrite(P1R3, HIGH);
delay(10);
digitalWrite(P1R4, LOW);
delay(10);
digitalWrite(P1R5, HIGH);
delay(10);
digitalWrite(P1R6, LOW);
delay(10);
digitalWrite(P1R7, HIGH);
delay(10);
61
// atual = ’P’ , seguinte = ’P’ => S1 e S5 em LOW
digitalWrite(P2R1, LOW);
delay(10);
digitalWrite(P2R2, HIGH);
delay(10);
digitalWrite(P2R3, HIGH);
delay(10);
digitalWrite(P2R4, HIGH);
delay(10);
digitalWrite(P2R5, LOW);
delay(10);
digitalWrite(P2R6, HIGH);
delay(10);
digitalWrite(P2R7, HIGH);
delay(10);
// atual = ’P’ , seguinte = ’P’ => S1 e S5 em LOW
digitalWrite(P3R1, LOW);
delay(10);
digitalWrite(P3R2, HIGH);
delay(10);
digitalWrite(P3R3, HIGH);
delay(10);
digitalWrite(P3R4, HIGH);
delay(10);
digitalWrite(P3R5, LOW);
delay(10);
digitalWrite(P3R6, HIGH);
delay(10);
digitalWrite(P3R7, HIGH);
delay(10);
// ultima celula = ’P’ => S3 e S5 em LOW
digitalWrite(P4R1, HIGH);
delay(10);
digitalWrite(P4R2, HIGH);
delay(10);
digitalWrite(P4R3, LOW);
delay(10);
digitalWrite(P4R4, HIGH);
delay(10);
digitalWrite(P4R5, LOW);
delay(10);
digitalWrite(P4R6, HIGH);
delay(10);
digitalWrite(P4R7, HIGH);
delay(10);
else if(indice_soc_minimo == 1)
Serial.print("indice_soc_minimo dentro do metodo : ");
Serial.println(1);
// atual = ’S’ , seguinte = ’P’ => S2, S4 e S6 em LOW
digitalWrite(P2R1, HIGH);
delay(10);
digitalWrite(P2R2, LOW);
delay(10);
digitalWrite(P2R3, HIGH);
delay(10);
digitalWrite(P2R4, LOW);
delay(10);
digitalWrite(P2R5, HIGH);
delay(10);
digitalWrite(P2R6, LOW);
delay(10);
62
digitalWrite(P2R7, HIGH);
delay(10);
// atual = ’P’ , seguinte = ’S’ => S3, S5 e S7 em LOW
digitalWrite(P1R1, HIGH);
delay(10);
digitalWrite(P1R2, HIGH);
delay(10);
digitalWrite(P1R3, LOW);
delay(10);
digitalWrite(P1R4, HIGH);
delay(10);
digitalWrite(P1R5, LOW);
delay(10);
digitalWrite(P1R6, HIGH);
delay(10);
digitalWrite(P1R7, LOW);
delay(10);
// atual = ’P’ , seguinte = ’P’ => S1 e S5 em LOW
digitalWrite(P3R1, LOW);
delay(10);
digitalWrite(P3R2, HIGH);
delay(10);
digitalWrite(P3R3, HIGH);
delay(10);
digitalWrite(P3R4, HIGH);
delay(10);
digitalWrite(P3R5, LOW);
delay(10);
digitalWrite(P3R6, HIGH);
delay(10);
digitalWrite(P3R7, HIGH);
delay(10);
// ultima celula = ’P’ => S3 e S5 em LOW
digitalWrite(P4R1, HIGH);
delay(10);
digitalWrite(P4R2, HIGH);
delay(10);
digitalWrite(P4R3, LOW);
delay(10);
digitalWrite(P4R4, HIGH);
delay(10);
digitalWrite(P4R5, LOW);
delay(10);
digitalWrite(P4R6, HIGH);
delay(10);
digitalWrite(P4R7, HIGH);
delay(10);
else if(indice_soc_minimo == 2)
Serial.print("indice_soc_minimo dentro do metodo : ");
Serial.println(2);
// atual = ’S’ , seguinte = ’P’ => S2, S4 e S6 em LOW
digitalWrite(P3R1, HIGH);
delay(10);
digitalWrite(P3R2, LOW);
delay(10);
digitalWrite(P3R3, HIGH);
delay(10);
digitalWrite(P3R4, LOW);
delay(10);
digitalWrite(P3R5, HIGH);
63
delay(10);
digitalWrite(P3R6, LOW);
delay(10);
digitalWrite(P3R7, HIGH);
delay(10);
// atual = ’P’ , seguinte = ’P’ => S1 e S5 em LOW
digitalWrite(P1R1, LOW);
delay(10);
digitalWrite(P1R2, HIGH);
delay(10);
digitalWrite(P1R3, HIGH);
delay(10);
digitalWrite(P1R4, HIGH);
delay(10);
digitalWrite(P1R5, LOW);
delay(10);
digitalWrite(P1R6, HIGH);
delay(10);
digitalWrite(P1R7, HIGH);
delay(10);
// atual = ’P’ , seguinte = ’S’ => S3, S5 e S7 em LOW
digitalWrite(P2R1, HIGH);
delay(10);
digitalWrite(P2R2, HIGH);
delay(10);
digitalWrite(P2R3, LOW);
delay(10);
digitalWrite(P2R4, HIGH);
delay(10);
digitalWrite(P2R5, LOW);
delay(10);
digitalWrite(P2R6, HIGH);
delay(10);
digitalWrite(P2R7, LOW);
delay(10);
// ultima celula = ’P’ => S3 e S5 em LOW
digitalWrite(P4R1, HIGH);
delay(10);
digitalWrite(P4R2, HIGH);
delay(10);
digitalWrite(P4R3, LOW);
delay(10);
digitalWrite(P4R4, HIGH);
delay(10);
digitalWrite(P4R5, LOW);
delay(10);
digitalWrite(P4R6, HIGH);
delay(10);
digitalWrite(P4R7, HIGH);
delay(10);
else if(indice_soc_minimo == 3)
Serial.print("indice_soc_minimo dentro do metodo : ");
Serial.println(3);
// ultima celula = ’S’ => S2 e S6 em LOW
digitalWrite(P4R1, HIGH);
delay(10);
digitalWrite(P4R2, LOW);
delay(10);
digitalWrite(P4R3, HIGH);
delay(10);
64
digitalWrite(P4R4, HIGH);
delay(10);
digitalWrite(P4R5, HIGH);
delay(10);
digitalWrite(P4R6, LOW);
delay(10);
digitalWrite(P4R7, HIGH);
delay(10);
// atual = ’P’ , seguinte = ’P’ => S1 e S5 em LOW
digitalWrite(P1R1, LOW);
delay(10);
digitalWrite(P1R2, HIGH);
delay(10);
digitalWrite(P1R3, HIGH);
delay(10);
digitalWrite(P1R4, HIGH);
delay(10);
digitalWrite(P1R5, LOW);
delay(10);
digitalWrite(P1R6, HIGH);
delay(10);
digitalWrite(P1R7, HIGH);
delay(10);
// atual = ’P’ , seguinte = ’P’ => S1 e S5 em LOW
digitalWrite(P2R1, LOW);
delay(10);
digitalWrite(P2R2, HIGH);
delay(10);
digitalWrite(P2R3, HIGH);
delay(10);
digitalWrite(P2R4, HIGH);
delay(10);
digitalWrite(P2R5, LOW);
delay(10);
digitalWrite(P2R6, HIGH);
delay(10);
digitalWrite(P2R7, HIGH);
delay(10);
// atual = ’P’ , seguinte = ’S’ => S3, S5 e S7 em LOW
digitalWrite(P3R1, HIGH);
delay(10);
digitalWrite(P3R2, HIGH);
delay(10);
digitalWrite(P3R3, LOW);
delay(10);
digitalWrite(P3R4, HIGH);
delay(10);
digitalWrite(P3R5, LOW);
delay(10);
digitalWrite(P3R6, HIGH);
delay(10);
digitalWrite(P3R7, LOW);
delay(10);
/*
//----METODO 2
//---- Definir a menor corrente, o tempo de operac~ao sob cada corrente e a partir daı alocar as celulas
corrente1 = pulso_convert1[(Output - 90)/10];
65
corrente2 = pulso_convert2[(Output - 50)/10];
if (corrente1 > corrente2)
corrente_menor = 2;
else
corrente_menor = 1;
//---- METODO 2.1
//----Estimar o tempo de operac~ao para ambos os circuitos
//----DESNECESSARIO
for (int i=0; i<4; ++i)
for (int circuito=1; circuito<=2; ++circuito)
if (circuito == 1 && Rele_descarga == HIGH)
tempo_estimado_prim[i] = (capacidade_descarga[i]*SOC[i])/(100*corrente1);
else if (circuito == 1 && Rele_descarga == LOW)
tempo_estimado_prim[i] = (capacidade_carga[i]*SOC[i])/(100*corrente1);
else if (circuito == 2 && Rele_descarga == HIGH)
tempo_estimado_sec[i] = (capacidade_descarga[i]*SOC[i])/(100*corrente2);
else if (circuito == 2 && Rele_descarga == LOW)
tempo_estimado_sec[i] = (capacidade_carga[i]*SOC[i])/(100*corrente2);
//---- METODO 2.2
//----Estimar o tempo de operac~ao individualmente
//----DESNECESSARIO
for (int i=0; i<4; ++i)
if (primario_secundario[i] == ’P’ && Rele_descarga == LOW)
tempo_estimado_prim[i] = (capacidade_carga[i]*SOC[i])/(100*corrente1);
else if (primario_secundario[i] == ’S’ && Rele_descarga == LOW)
tempo_estimado_sec[i] = (capacidade_carga[i]*SOC[i])/(100*corrente2);
else if (primario_secundario[i] == ’P’ && Rele_descarga == HIGH)
tempo_estimado_prim[i] = (capacidade_descarga[i]*SOC[i])/(100*corrente1);
else if (primario_secundario[i] == ’S’ && Rele_descarga == HIGH)
tempo_estimado_sec[i] = (capacidade_descarga[i]*SOC[i])/(100*corrente2);
else //(status_celula[i] == ’D’)
//NADA
66
//----Algoritmo para encontrar os ’valores_minimos’ menores tempos de operac~ao dentre as ’n_celulas’ indices;
//----TALVEZ SEJA DESNECESSARIO, VALENDO MAIS A PENA CALCULAR O TEMPO DE OPERAC~AO PARA CADA CELULA NO PRIMARIO OU SECUNDARIO E A PARTIR DAI REALIZAR O BALANCEA
for(int i=0; i<valores_minimos; ++i)
minIndex = i;
minValue_prim = tempo_estimado_prim[i];
minValue_sec = tempo_estimado_sec[i];
for (int j=i+1; j<n_celulas; ++j)
if (tempo_estimado_prim[j]<minValue_prim)
minValue_prim = tempo_estimado_prim[j];
indices_minimos[i] = j;
else if (tempo_estimado_sec[j]<minValue_sec)
minValue_sec = tempo_estimado_sec[j];
indices_minimos[i] = j;
//Serial.println();
//Serial.println(analogRead(saida));
*/
void loop()
if (Serial.available() > 0)
data = Serial.read();
if (data == ’0’)
chaveamento1(10,20,30,40);
Serial.println("Primeira celula");
else if (data == ’1’)
chaveamento1(20,10,30,40);
Serial.println("Segunda celula");
else if (data == ’2’)
chaveamento1(30,20,10,40);
Serial.println("Terceira celula");
else if (data == ’3’)
chaveamento1(40,20,30,10);
Serial.println("Ultima celula");
delay(1000);
67