implementação e avaliação do balanceamento

Propaganda
■▼P▲❊▼❊◆❚❆➬➹❖ ❊ ❆❱❆▲■❆➬➹❖ ❉❖ ❇❆▲❆◆❈❊❆▼❊◆❚❖ ■◆❚❊●❘❆❉❖
❊▼ ❇❆❚❊❘■❆❙ ❉❊ ❮❖◆✲▲❮❚■❖
■❣♥á❝✐♦ ❞❡ ❆③❛♠❜✉❥❛ ▼✐❞♦s✐ ❘✐❝❛rt
Pr♦❥❡t♦ ❞❡ ●r❛❞✉❛çã♦ ❛♣r❡s❡♥t❛❞♦ ❛♦ ❈✉rs♦
❞❡
❊♥❣❡♥❤❛r✐❛
❞❛
❊s❝♦❧❛
❊❧❡trô♥✐❝❛
P♦❧✐té❝♥✐❝❛✱
❡
❞❡
❈♦♠♣✉t❛çã♦
❯♥✐✈❡rs✐❞❛❞❡
❋❡❞❡r❛❧
❞♦ ❘✐♦ ❞❡ ❏❛♥❡✐r♦✱ ❝♦♠♦ ♣❛rt❡ ❞♦s r❡q✉✐s✐t♦s
♥❡❝❡ssár✐♦s à ♦❜t❡♥çã♦ ❞♦ tít✉❧♦ ❞❡ ❊♥❣❡♥❤❡✐r♦✳
❖r✐❡♥t❛❞♦r❡s✿ ❘❛♠♦♥ ❘♦♠❛♥❦❡✈✐❝✐✉s ❈♦st❛
❆❧❡ss❛♥❞r♦ ❏❛❝♦✉❞ P❡✐①♦t♦
❘✐♦ ❞❡ ❏❛♥❡✐r♦
❙❡t❡♠❜r♦ ❞❡ ✷✵✶✺
Implementação e Avaliação do Balanceamento Integrado em Baterias
de Íon-Lı́tio
Ignácio de Azambuja Midosi Ricart
PROJETO DE GRADUAÇÃO SUBMETIDO AO CORPO DOCENTE DO CURSO
DE ENGENHARIA ELETRÔNICA E DE COMPUTAÇÃO DA ESCOLA POLITÉCNICA DA UNIVERSIDADE FEDERAL DO RIO DE JANEIRO COMO
PARTE DOS REQUISITOS NECESSÁRIOS PARA A OBTENÇÃO DO GRAU
DE ENGENHEIRO ELETRÔNICO E DE COMPUTAÇÃO
Autor:
Ignácio de Azambuja Midosi Ricart
Orientador:
Prof. Alessandro Jacoud Peixoso, D. Sc.
Orientador:
Prof. Ramon Romankevicius Costa, D. Sc.
Examinador:
Prof. Antônio Candea Leite, D. Sc.
Examinador:
Prof Eduardo Vieira Leão Nunes, D. Sc.
Rio de Janeiro
Outubro de 2015
ii
UNIVERSIDADE FEDERAL DO RIO DE JANEIRO
Escola Politécnica - Departamento de Eletrônica e de Computação
Centro de Tecnologia, bloco H, sala H-217, Cidade Universitária
Rio de Janeiro - RJ CEP 21949-900
Este exemplar é de propriedade da Universidade Federal do Rio de Janeiro, que
poderá incluı́-lo em base de dados, armazenar em computador, microfilmar ou adotar
qualquer forma de arquivamento.
É permitida a menção, reprodução parcial ou integral e a transmissão entre bibliotecas deste trabalho, sem modificação de seu texto, em qualquer meio que esteja
ou venha a ser fixado, para pesquisa acadêmica, comentários e citações, desde que
sem finalidade comercial e que seja feita a referência bibliográfica completa.
Os conceitos expressos neste trabalho são de responsabilidade do(s) autor(es).
iii
DEDICATÓRIA
Dedico este trabalho aos meus colegas do LEAD, LABCON e do curso de Engenharia Eletrônica que me deram apoio e contribuı́ram para a minha formação tanto
profissional quanto pessoal.
iv
AGRADECIMENTO
Agradeço a minha famı́lia, minha namorada e meus colegas por me darem suporte
v
RESUMO
No GSCAR (Grupo de Simulação e Controle em Automação e Robótica) da
COPPE/UFRJ são desenvolvidos projetos de robótica para centros de pesquisa e
indútria. Um dos robôs é o veı́culo submarino de operação remota (ROV - Remotely
Operated Vehicle) LUMA - Light Underwater Mobile Asset, utilizado para fazer
inspeções de dutos e barragens.
Atualmente deseja-se utilizar células de LiF eP o4 nele por serem mais leves
e fornecerem mais corrente, dando maior autonomia ao robô. No entando, a faixa
de operação delas é muito mais restrita do que de outras tecnologias de células, não
sendo recomendado utilizá-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 tensão do conjunto de células.
A compra de tal sistema juntamente com as células customizadas para serem
embarcados no LUMA inviabilizaria o projeto. Como solução para esse problema, é
proposto o desenvolvimento de um sistema de monitoramento de bateria próprios.
Um dos maiores desafios encontrados no desenvolvimento de um BMS é o
desbalanceamento da bateria, fenômeno que ocorre quando as células do conjunto
apresentam diferentes estados de carga. Neste trabalho é desenvolvido um protótipo
capaz de realizar manualmente o balanceamento de uma bateria. O projeto engloba
o desenvolvimento de uma placa de circuito impresso que será acoplada a uma
inteligência embarcada. Ao final deste projeto são propostas melhorias ao protótiopo
para que o BMS juntamente com células de LiF eP o4 sejam embarcados em projetos
do GSCAR e, principalmente, no ROV LUMA.
Para testar o algoritmo de balanceamento, comandos são enviados serialmente por um computador e interpretados por um microcontrolador conectado à
placa Arduino MEGA2560. Este habilita o chaveamento dos relés responsáveis por
distribuir 4 células de LiF eP o4 entre uma carga primária e secundária. A tensão
de cada uma delas é obtida a cada segundo e transmitida por um segundo microcontrolador à uma interface gráfica denominada Processing. Ao final do projeto são
apresentados dados experimentais e também são abordadas futuras melhorias para
se obter um sistema automatizado.
vi
Palavras-Chave:ROV, Balanceamento Integrado, Relés, Arduino, LiF eP o4 .
vii
SIGLAS
BMS - Battery Management System
GSCAR - Grupo de Simulação e Controle em Automação e Robótica
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 lógico na saı́da de portas digitais. No microcontrolador MEGA2560
é representado eletricamente como um sinal entre 5V e 3V
LOW - Nı́vel lógico na saı́da de portas digitais. No microcontrolador MEGA2560
é representado eletricamente como um sinal entre 1,5V e 0V
MOSFET - Metal-oxide-semiconductor field-effect transistor ou transistor de efeito
de campo metal-óxido-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. - Diferença de potencial
SPI - Serial Peripheral Interface
I 2 C - Inter Integrated Circuit
UART - Universal Asynchronous Receiver/Transmitter
USB - Universal Serial Bus
ix
Sumário
1 Introdução
1
1.1
Descrição do Problema . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2
Revisão Bibliográfica . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.4
Resultados Obtidos . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.5
Organização do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . .
5
2 Principais Parâmetros das Células e Balanceamento
2.1
2.2
7
Caracterı́sticas Básicas e Parâmetros de Células de Íon-Lı́tio . . . . .
7
2.1.1
Tensão em Circuito Aberto . . . . . . . . . . . . . . . . . . . .
8
2.1.2
Capacidade . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.1.3
Estado de Carga . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.1.4
Temperatura . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
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
Especificação dos Relés de Chaveamento . . . . . . . . . . . . . . . . 15
3.2
Sinais de Comando do Microcontrolador . . . . . . . . . . . . . . . . 16
3.3
Conexões para Assegurar Modularidade . . . . . . . . . . . . . . . . . 17
3.4
Circuito de Condicionamento para Aquisição de Tensão . . . . . . . . 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 Automático via Contagem de Coulomb . . . . 26
5 Experimentos e Proposta de Aprimoramento
28
5.1
Descrição 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 Conclusões
6.1
41
Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Bibliografia
43
A Placa de Balanceamento Integrado
46
A.1 Layout da Placa de Balanceamento . . . . . . . . . . . . . . . . . . . 46
A.2 Lógica do Chaveamento . . . . . . . . . . . . . . . . . . . . . . . . . 50
A.3 Circuito RC paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
B Carga e Descarga
54
B.1 Técnicas de Carga e Descarga . . . . . . . . . . . . . . . . . . . . . . 54
B.2 Circuito para Carga e Descarga . . . . . . . . . . . . . . . . . . . . . 55
C Código do Arduino
57
C.1 Código do Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
xi
Lista de Figuras
2.1
Gráfico de Tensão x Tempo de uma Célula de LiF eP o4 sob carga e
depois no perı́odo de relaxamento . . . . . . . . . . . . . . . . . . . .
8
2.2
Gráfico de OCV x SoC de uma célula de LiF eP o4 . . . . . . . . . . .
8
2.3
Demonstração de 2 células desbalanceadas . . . . . . . . . . . . . . . 11
2.4
Esquematização do Balanceamento Integrado . . . . . . . . . . . . . . 13
2.5
Esquematização do Balanceamento Integrado . . . . . . . . . . . . . . 14
3.1
Configuração dos Pinos do Relé CPC1907B . . . . . . . . . . . . . . . 17
3.2
Placa de Relés com a nomenclatura presente na Placa de Balanceamento 17
3.3
Esquemático da Placa de Relé com a célula 1 - É possı́vel ver os blocos
representando os relés com os resistores pull-up, os pinos devidamente
demarcadas nos relés de acordo com a Figura 3.1, o Op Amp em configuração do subtrator além dos conectores das conexões de entrada
(em curto) e os conectores das ligações de saı́da no canto direito inferior 19
3.4
Esquematização da Aquisição via Amp Op em modo Subtrator . . . . 20
3.5
Bloco dos Conectores no Esquemático 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 Década
e a Resistência
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.2
Diagrama de blocos da montagem utilizada nos testes . . . . . . . . . 30
5.3
Demonstração das conexões realizadas na Placa durante os testes preliminares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.4
Demonstração das conexões realizadas na Placa . . . . . . . . . . . . 32
5.5
Circuito utilizado para validar o funcionamento da Placa de Balanceamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
xii
5.6
Gráfico apresentado pelo Osciloscópio ao alternar a conexãao da célula
1 com a célula 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.7
Pulso de corrente do carregador . . . . . . . . . . . . . . . . . . . . . 33
5.8
Experimento 1 - Curva de Tensão em cada célula com a Placa de
Balanceamento sob carga . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.9
Gráfico apresentado no Canal 2 do Osciloscópio ao alocar a célula 2
no lugar da 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.10 Experimento 1 - Curva de Tensão x Células sobrepostas com a Placa
de Balanceamento sob carga . . . . . . . . . . . . . . . . . . . . . . . 35
5.11 Experimento 2 - Gráfico de Tensão gerado durante o balanceamento
manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.12 Proposta para evitar a interrupção da alimentação durante o chaveamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
A.1 Alocação 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 Relé . . . . . . . . . . . . . . . . . . . 52
B.1 Esquemático do Circuito Regulador de Corrente Controlado por PWM 55
B.2 Circuito e lógica dos relés utilizados no regulador de corrente para
alternar entre Carga e Descarga . . . . . . . . . . . . . . . . . . . . . 56
xiii
Lista de Tabelas
4.1
Acionamento dos relés de chaveamento em cada configuração . . . . . 25
xiv
Capı́tulo 1
Introdução
Em sistemas dependentes de uma alimentação para se locomover, buscase a maior autonomia possı́vel quando a energia é fornecida através de baterias.
Essa independência é atingida através da junção de: elevada densidade de potência,
segurança, baixo volume, baixa densidade e uso eficiente [1]. Visando obter essa
performance ótima, o emprego de diferentes composições quı́micas foi estudado até
desenvolverem as células de ı́on-lı́tio.
Dentre as diferentes composições de células de ı́on-lı́tio, deseja-se utilizar
LiF eP o4 por apresentarem maior densidade de energia. No entanto, a sua faixa
de operação é muito restrita, sendo necessário monitorar a temperatura, tensão dentre outras grandezas - durante sua utilização. Em função disso, é necessário um
sistema de monitoramento de bateria (BMS ), garantindo o controle da operação e
gerenciando de maneira segura e eficiente o uso da energia [1].
A principal tarefa de um BMS é garantir a otimização do uso da energia
armazenada e minimizar qualquer chance de dano [2], utilizando sensores de tensão,
corrente e temperatura; controladores de carga, temperatura e atuadores [1]. Esses
sistemas são responsáveis por garantir a manutenção da tensão e da temperatura
dentro do limite, informar o estado de carga da bateria, tempo de operação restante
e realizar o balanceamento das células.
A compra do conjunto composto por células de LiF eP o4 e o BMS é inviável
para ser empregado no ROV LUMA por ser muito caro. A solução seria desenvolver
o próprio sistema constituı́do por módulos de aquisição de tensão, balanceamento e
controle de carga e descarga.
1
1.1
Descrição do Problema
No grupo GSCAR são desenvolvidos projetos na área de robótica para aplicações
nas mais diversas áreas como: expedições marı́timas, inspeção de dutos, inspeção de
plataforma de petróleo, entre outras. Para realizar tais tarefas, são utilizados sistemas dependentes de uma alimentação interna, portanto, estes apresentam limitações
tanto no tempo de atuação/operação quanto os próprios componentes embarcados
no robô.
Por exemplo, há o ROV (veı́culo operado remotamente) Luma -Light Underwater Mobile Asset - desenvolvido no laboratório de controle, onde sua geometria
é especı́fica para expedições em grandes profundidades e deve, portanto, suportar os
efeitos causados pela alta pressão. Inicialmente utilizou-se uma bateria de N iM H
como alimentação, mas serão trocadas por LiF eP o4 , por apresentarem uma redução
de 40% - 50% no peso, 20% - 30% no volume e um leve aumento na eficiência, além
de reduzir custos [3].
Por se tratar de baterias sem qualquer eletrônica embutida, é indispensável
garantir a operação dentro dos limites de temperatura, tensão e corrente [1]. Estes
cuidados servem tanto para prolongar a vida útil da bateria quanto por questões de
segurança. Em função disso, pretende-se criar um BMS, o qual implemente técnicas
de estimação de carga, balanceamento de células e controle da alimentação, para ser
embarcado no ROV.
A compra de um sistema de monitoramento com células de LiF eP o4 customizados para serem embarcados no Luma seria muito caro. Como solução para esse
problema é proposto o desenvolvimento de um BMS próprio. Neste trabalho, o foco
é no desenvolvimento de um protótipo capaz de balancear as células de LiF eP o4 ,
implementando a técnica proposta em [4], a qual consiste em separar a alimentação
de um conjunto de células entre 2 circuitos elétricos distintos através do chaveamento
de relés.
1.2
Revisão Bibliográfica
O avanço da tecnologia proporcionou o desenvolvimento de baterias mais le-
ves e capazes de fornecer mais energia. Uma apresentação sobre os tipos de baterias,
2
a tecnologia empregada e suas respectivas vantagens e desvantagens é desenvolvida
em [5]. Neste, são consideradas caracterı́sticas quı́micas e aplicabilidade de cada
tecnologia. Como as antigas baterias do ROV LUMA são de nı́quel-metal-hidreto,
um estudo comparando células de ı́on-lı́tio e nı́quel-metal-hidreto são realizados em
[3], apresentando as vantagens com essa troca.
A estreita faixa de operação das células de ı́on-lı́tio, dentre elas as de LiF eP o4 ,
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 funções fundamentais nestes sistemas: aquisição de tensão nas
células, estimação do estado de carga, balanceamento de baterias e diagnosticação
de falhas.
Em [6] é desenvolvido um BMS utilizando células de LiF eP o4 e balanceamento ativo, são apresentados conceitos essenciais desses sistemas e caracterı́sticas
básicas de células como: especificações elétricas, temperatura, tensão em circuito
aberto, taxa de auto-descarga e estado de carga, complementando o estudo para o
desenvolvimento do próprio BMS no GSCAR.
Um dos algoritmos de estimação 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 técnicas baseadas na implementação de
filtro de Kalman e modelos elétricos para estimação de carga são abordados em [9]
e [10].
Estas estimativas do estado de cargas são utilizadas juntamente com o balanceamento para tornar o sistema de alimentação autônomo. Os métodos de balanceamento normalmente implementados são 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 através de relés. Em [14] e [16]
são realizadas pesquisas comparando o balanceamento passivo e o ativo.
O balanceamento integrado é um conceito desenvolvido em [4], onde são
alimentadas 2 cargas simultaneamente através da distribuição de células entre estas.
Esta abordagem é testada no decorrer deste projeto, avaliando sua aplicabilidade em
BMS. Na prática, esta topologia permite conectar um conjuntos de células formado
por diversas células independentemente entre 2 circuitos. No caso do ROV LUMA,
3
um circuito primário seria representado pela eletrônica de potência formada pelos
motores e o secundário pela inteligência embarcada. Neste caso, a alimentação do
circuito primário exigiria muito mais corrente da bateria do que o secundário.
Vale a pena ressaltar que para outras aplicações os circuitos não necessariamente demandam corrente, eles também podem ser geradores de maneira a carregar
as baterias.
1.3
Objetivos
O objetivo principal deste trabalho é validar o funcionamento de uma topolo-
gia de balanceamento recentemente proposta, denominada balanceamento integrado
[4]. O objetivo especı́fico é desenvolver e implementar um sistema microcontrolado
modular capaz de distribuir diversas células entre 2 cargas, fornecendo a alimentação
para estas e balanceando as células simultaneamente.
Este objetivo é atingido definindo um protótipo, projetando a placa de circuito impresso, testando os conceitos desse balanceamento na prática e, por fim,
interpretando os resultados obtidos durante os experimentos.
Inicialmente, precisa-se estudar caracterı́sticas de sistemas de monitoramento
de bateria, células de LiF eP o4 e topologias de balanceamento para então, definir
os parâmetros relevantes ao experimento e como medi-los. A partir deste ponto,
são definidos os componentes, a comunicação e técnica de aquisição de tensão que
são implementados. Finalmente, os componentes são conectados à placa e a lógica
é gravada no microcontrolador.
Os testes são realizados na placa de balanceamento avaliando os conceitos
propostos em [4] sobre modularidade e lógica de acionamento dos relés e monitorando
as variações de tensão, nas células e na carga, através da interface gráfica Processing
e de um osciloscópio.
O grande desafio desse trabalho é então desenvolver uma placa capaz de realizar o balanceamento integrado conectada a duas cargas resistivas denominadas
primária e secundária, uma vez que há possibilidades de uma interrupção na alimentação ou curto-circuito entre as células 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 relés como especificado e monitorando a variação de tensão nas células e/ou nas cargas.
Os principais conceitos do balanceamento foram analisados utilizando 4 células
de LiF eP o4 . Estas eram conectadas às cargas primária e secundária de acordo com
os comandos enviados pelo computador. Suas tensões apresentavam oscilação por
centenas de milissegundos durante os chaveamentos, estabilizando posteriormente.
Um dos experimentos consiste em um balanceamento, como descrito na Seção
5.4, avaliando a conexão da carga secundária com uma corrente baixa - da ordem
de dezenas de mA - e a primária com alta - aproximadamente 1A - para equalizar a
carga da bateria.
A alimentação das cargas era interrompida nos instantes de chaveamento,
como ilustrado nas Figuras 5.6 e 5.9. Em função disso, foi proposto um novo algoritmo de chaveamento e a inclusão de 2 capacitores e relés na placa. A implementação dessa proposta exige o reprojeto do layout e reprogramação do microcontrolador.
Ao final são especificados valores comerciais de capacitores que atendam às
necessidades do ROV Luma, exemplificando uma aplicação prática.
1.5
Organização do Trabalho
São apresentadas no capı́tulo 2 tensão em circuito aberto, capacidade, estado
de carga e temperatura. Estes são parâmetros essenciais sobre células, utilizados
em BMS. Em sequência, há a apresentação 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 é o desenvolvimento desta placa. Inicialmente
explicando as caracterı́sticas relevantes nos relés de chaveamento utilizados e qual o
método de ativação. Em seguida, aborda-se a modularidade desse conceito, determinando quais os pré-requisitos e como atendê-los. Finalmente, são apresentando
técnicas de aquisição de tensão, definindo qual a implementada.
5
Levando em consideração essas informações, o layout da placa é desenvolvido, ilustrando na Seção A.1 o resultado final e também a placa com componentes
conectados, como mostram as Figuras A.3 e A.4.
No capı́tulo 4 há a apresentação do microcontrolador utilizado, expondo suas
caracterı́sticas e motivo de sua escolha. Posteriormente são descritos dois algoritmos de balanceamento integrado. O primeiro algoritmo consiste em uma lógica para
apenas realizar testes, portanto, demanda menos processamento e não realiza balanceamento automático. É necessária a transmissão de um sinal composto pelas
tensões para o microcontrolador, o qual aciona os relés. Já o segundo foi idealizado
para aplicações reais, mas não foi finalizado.
Os experimentos, resultados práticos dos ensaios e propostas de aprimoramento são apresentados no capı́tulo 5. Primeiramente realizando os testes preliminares com chaveamento em circuito aberto, evoluindo até realizar um balanceamento
manual com células de LiF eP o4 , onde uma década de resistência - variando entre
11kΩ e 10Ω - representa a carga primária e um resistor de 100Ω a secundária. Ao
final, são exibidas propostas às dificuldades apresentadas durante os testes. Dentre
elas, a interrupção da alimentação é a mais crı́tica por impossibilitar qualquer ação
do sistema por um perı́odo.
Finalmente, no capı́tulo 6, são feitas as conclusões sobre o trabalho e as
sugestões para trabalhos futuros e melhorias na placa desenvolvida.
6
Capı́tulo 2
Principais Parâmetros das Células
e Balanceamento
Neste capı́tulo, são abordados parâmetros fundamentais sobre células de ı́onlı́tio, descrevendo seus comportamentos e importância em um sistema de monitoramento de bateria. Em seguida, aborda-se um problema sempre presente nestas
células, o desbalanceamento do estado de carga. Os tipos de topologia capazes de
balancear um sistema são expostos posteriormente, enfatizando o balanceamento
integrado. Este será implementado no sistema para que seja possı́vel validar seu
funcionamento.
2.1
Caracterı́sticas Básicas e Parâmetros de Células
de Íon-Lı́tio
Por apresentarem uma faixa de operação restrita tanto na tensão quanto
na temperatura, as células de ı́on-lı́tio necessitam de um BMS, garantindo uma
operação segura e uso eficiente da energia. No entanto, o sistema precisa dispor de
dados relevantes para executar essas funções [1].
Os principais parâmetros de células utilizados são: Tensão em Circuito Aberto,
Capacidade, Estado de Carga e Temperatura.
7
2.1.1
Tensão em Circuito Aberto
Definido em inglês como Open Circuit Voltage - OCV, esse parâmetro carac-
teriza a curva de tensão da célula ao longo do tempo quando a mesma se encontra
relaxada. Por relaxada, entende-se um ∆t no qual não há carga sendo aplicada e a
tensão está estabilizada na célula. Em [6], considera-se um ∆t de 30 minutos para
obter o OCV.
Figura 2.1: Gráfico de Tensão x Tempo de uma Célula de LiF eP o4 sob carga e
depois no perı́odo de relaxamento
Após aplicar diversos pulsos de corrente na bateria, é possı́vel mapear a sua
curva de OCV, semelhante à Figura 2.2. Esses dados são utilizados juntamente com
a corrente para estimar a capacidade útil de cada célula e, ao final, apresentar o
estado de carga [6].
Figura 2.2: Gráfico de OCV x SoC de uma célula de LiF eP o4 .
8
2.1.2
Capacidade
Juntamente com o material da célula, a capacidade média é sempre especi-
ficada nos invólucros de baterias. Esta informação representa quanto de corrente
uma célula é idealmente capaz de fornecer em uma hora.
É possı́vel encontrar células de mesmo material, no entanto com capacidades
diferentes. Isto ocorre pela diferença no volume do pack (conjunto de células), pois
cada tecnologia apresenta uma densidade energética nominal (em Wh/Kg) e uma
energia especı́fica (em Wh/L) própria [17].
Por convenção, a corrente com a qual o pack é carregado ou descarregado é
expressa em função 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 é conhecida como C rate e também é empregada para
definir os limites de carga e descarga na bateria [6].
2.1.3
Estado de Carga
Também conhecido como State of Charge (SoC), o estado de carga representa
percentualmente a capacidade útil restante em relação à total da célula. Normalmente apresentado graficamente em função da tensão da célula.
Analisando o SoC e a corrente aplicada à carga, é possı́vel estimar o tempo
de operação restante e evitar sobrecarga ou descarga excessiva nas células [6]. Como
consequência disso, a vida útil da célula é prolongada, algo desejável em projetos
onde a bateria representa uma parcela significativa do custo total.
Os métodos mais utilizados para definir o estado de carga são a tabela do
Estado de Carga em função da OCV, a Contagem de Coulomb e a utilização de
circuitos equivalentes às células ou modelos matemáticos 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 tensão na célula estabilizar.
Essas medidas não são exatas em função da variação dos parâmetros durante a
operação, como exemplo pode-se citar a temperatura, a capacidade e a resistência
interna da bateria. Este método é utilizado para determinar o SoC inicial da célula
rapidamente. Uma abordagem similar a esta é vista também em [6].
9
A contagem de Coulomb é o método mais implementado, onde a carga restante é calculada integrando-se a corrente circulante na bateria em função do tempo.
É um método simples aplicável em sistemas on-board, caso seja fornecido o estado
inicial das células utilizadas. No entanto, esse método é implementado em malha
aberta, sujeito a ruı́dos nas medições e não considera o envelhecimento da célula,
como abordado em [6], [7] e [8].
O ideal para estimar o SoC é a junção de um circuito equivalente ou modelo
matemático com um filtro de Kalman não linear ([9] e [10]), pois consideraria mais
parâmetros durante as estimativas. A dificuldade está em definir os parâmetros,
pois inicialmente é fundamental equacionar a curva de OCV para cada uma das
células e, posteriormente, calibrar os modelos capazes de simular o comportamento
da bateria. Por fim, os parâmetros são utilizados pelo filtro de Kalman para obter
o valor do SoC.
2.1.4
Temperatura
A temperatura é o parâmetro mais importante em relação à segurança, pois
afeta a estrutura quı́mica das células tanto durante o uso quanto no armazenamento,
podendo torná-la inutilizável [6]. Experimentos certificadores disto são validados em
[18], [19] e [20].
Carga ou descarga de baterias em baixas temperaturas resultará no aumento
da resistência interna. Já em altas temperaturas, ocorre o inverso. Como consequência direta de qualquer uma destas condições, a capacidade da célula diminui
e a taxa de auto-descarga aumenta [6].
2.2
Tipos de Balanceamento
Apesar de todo o avanço tecnológico, células, ainda que compradas do mesmo
fabricante e lote, jamais terão comportamentos idênticos [21]. Essas divergências
ficam em evidência após ciclos de carga e descarga ou com o passar do tempo devido
ao envelhecimento [12]. Este efeito é denominado desbalanceamento de carga ou
desbalanceamento simplesmente.
O desbalanceamento ocorre quando as células que compõem uma bateria
10
apresentam diferentes estados de carga. Isto é causado não só pela diferença da
capacidade das células, mas também da resistência interna, degradação quı́mica e/ou
temperatura entre as células e ambiente, resultando na diminuição da capacidade
útil da bateria à medida em que for se agravando [12].
Exemplificando, o carregamento da bateria ocorrerá até uma das células atingir o SOC máximo (100%), independente de quantas o atingirem simultaneamente.
Em um sistema alimentado por 2 células, a operação será encerrada assim que a primeira carregar totalmente. Caso o processo continue, esta célula sofrerá sobrecarga
e, consequentemente, a vida útil reduzirá ou ela se tornará inutilizável. O mesmo
problema ocorre durante a descarga. Este problema está ilustrado na Figura 2.3.
Figura 2.3: Demonstração de 2 células desbalanceadas
Como solução para garantir uma carga/descarga completa do sistema de maneira segura, foram desenvolvidos diversos métodos de balanceamento. Estes são
divididos em 3 grupos: Balanceamento Passivo, Balanceamento Ativo, Balanceamento Integrado.
2.2.1
Balanceamento Passivo
O método mais simples, barato e, portanto, mais utilizado é o balanceamento
passivo. Este consiste em utilizar um elemento resistivo para dissipar, sob forma
11
de calor, o excesso de energia das células de maior tensão no pack. A desvantagem
desta aplicação é o não aproveitamento da energia dissipada [12].
O algoritmo de balanceamento pode ser divido em 2 abordagens. Balanceamento por mı́nimo ou balanceamento por médias [11].
No primeiro método, o algoritmo pode atuar tanto na descarga quanto na
recarga. Ele consiste em identificar a célula de menor SoC a cada perı́odo determinado e, então, conectar as demais aos elementos resistivos através de relés. Ao final,
todas apresentarão o mesmo estado de carga com uma margem de aproximadamente
5% do SoC em relação à célula de menor tensão, como realizado em [11] e em [12].
O balanceamento por médias consiste em calcular estado de carga médio das
células a partir das estimativas de SoC e então, conectar as células com estado de
carga à cima da média aos elementos resistivos. Este método só pode ser executado
durante a recarga, pois as cargas primária e secundária não fornecem energia às
células.
Quando o pack de células apresenta o SoC próximo da média, ocorrem chaveamentos com maior frequência em função das tensões oscilarem muito próximas
da média. Para evitar isso, define-se o perı́odo ou diferença de carga mı́nimo para
realizar o balanceamento. Por exemplo, definir um perı́odo 1 minuto entre cada conjunto de chaveamento ou apenas realizá-lo caso alguma célula exceda 5% do estado
de carga médio.
2.2.2
Balanceamento Ativo
Como solução para reduzir o desperdı́cio de energia das células durante o
balanceamento, foi desenvolvido o balanceamento ativo. Neste, parte da carga das
células é transferida das mais para as menos carregadas através de conversores (indutores e transformadores) ou conectando a capacitores através de relés, como apresentado em [13], [14] e [15].
O circuito elétrico necessário para esse sistema é bem mais denso, complexo e
caro, motivando estudos para torná-lo mais viável e rentável. Pesquisas comparando
a eficiência entre balanceamento passivo e ativo são apresentadas em [14] e [16].
12
2.2.3
Balanceamento Integrado
Ao contrário das outras topologias de balanceamento, no integrado não há
conversão ou dissipação de energia como forma de balancear. O balanceamento
ocorre conectando células a cargas primária ou secundária, onde circulam corrente.
Também existe a possibilidade de desconectar células das cargas, caso ocorra alguma
falha nelas. Este conceito é proposto em [4].
Figura 2.4: Esquematização do Balanceamento Integrado
Esse método consiste em realizar a conexão serial de inúmeras células através
de módulos compostos por 7 relés conectados conforme a Figura 2.4.
Com essa proposta, é possı́vel utilizar células com capacidades muito discrepantes sem comprometer a alimentação do sistema; desconectar células defeituosas
do circuito; obter um banco de células reserva e balanceá-las durante a operação.
Além disso, possui alta eficiência por apresentar apenas a resistência interna dos
relés como elementos dissipativos.
Na Figura 2.5, observa-se a conexão do módulo dos relés à célula e uma
possı́vel distribuição para alimentar as cargas primária e secundária.
A definição do acionamento dos relés em cada placa depende da carga a qual a
célula atual e a seguinte estão conectadas. As possı́veis configurações serão descritas
na Seção A.2
Supondo um sistema elétrico formado por uma placa solar, um BMS composto por 6 células de LiF eP o4 e uma eletrônica para ativar turbinas, a qual demande uma alimentação de 15V. Com esta topologia de balanceamento é possı́vel
definir arbitrariamente 4 células de LiF eP o4 para alimentarem o sistema enquanto
as outras 2 células são recarregadas através da placa solar. À medida em que essas células forem recarregando, realiza-se um conjunto de chaveamentos na placa
de balanceamento para conectar a célula completamente carregada no conjunto res13
Figura 2.5: Esquematização do Balanceamento Integrado
ponsável pela alimentação da eletrônica, enquanto que as 2 de menor tensão serão
conectadas à placa solar para serem recarregadas.
Para um caso em que o circuito primário e o secundário demandem uma
corrente de alimentação, o balanceamento ocorre em função da diferença entre essa
alimentação. Células mais descarregadas são “poupadas”sendo alocadas no circuito
de menor corrente ou desconectadas, enquanto as que possuı́rem maior SoC são
conectadas ao circuito que demandar mais corrente da bateria. Eventualmente o
estado de carga destas células passará a ser inferior ao das desconectadas ou alocadas
no outro circuito. Nesses instantes ocorre o chaveamento para garantir que ao final
da operação todas as células apresentem o mesmo estado de carga, garantindo células
balanceadas e um maior tempo de funcionamento do sistema.
Nesse projeto será sempre considerado que o circuito primário demanda uma
corrente maior do que o secundário. Também será utilizada a notação de carga
primária e carga secundária para se referir ao circuito primário e ao circuito secundário, respectivamente.
Algumas situações devem ser consideradas ao implementar este balanceamento, pois durante o chaveamento pode ocorrer brevemente a formação de curtocircuito ou a interrupção da alimentação nas cargas. Como solução, é proposta uma
nova placa ao final do projeto na Seção 5.6.
14
Capı́tulo 3
Placa de Balanceamento
Desenvolvida
Neste projeto, é desenvolvida a placa de balanceamento, responsável por
receber os sinais de comando provenientes do microcontrolador, atuar nos relés de
chaveamento e obter a tensão nas células, permitindo a monitoração delas durante
experimentos.
O processo de criação da placa é descrito neste capı́tulo de acordo com os
itens listados a seguir.
1. Especificação dos Relés
2. Sinais de Comando do Microcontrolador
3. Conexões Para Assegurar Modularidade
4. Aquisição de Tensão
5. Desenvolvimento do Layout da Placa
3.1
Especificação dos Relés de Chaveamento
Anterior à definição de marcas e modelos dos relés de chaveamento, deve-
se especificar primeiramente quais caracterı́sticas são relevantes em um relé. Estes
devem apresentar baixa resistência interna, alta velocidade de chaveamento, isolamento entre entrada/saı́da, bidirecionalidade, baixa corrente de ativação e suportar
15
tensões da ordem de 20V e correntes de 3A. É desejável que estes suportem altas
tensões (até 60V, por exemplo), correntes de (5A) e sejam de estado sólido para
atenderem às necessidades do ROV LUMA.
A necessidade de ser bidirecional reside na possibilidade da carga primária e
secundária fornecerem ou drenarem energia do pack de células, substituindo estas
por painel solar, por exemplo. Caso seja usado relé unidirecional, a operação é
limitada a um dos casos: apenas recarga ou descarga.
É preferı́vel um relé de estado sólido a um eletromecânico, por ser mais
compacto, possuir maior vida útil, necessitar de uma menor corrente de ativação e
não apresentar partes móveis - maior robustez fı́sica.
Levando em consideração todas as condições acima citadas, foi escolhido o
relé CPC1907B da empresa IXYS. Dentre suas especificações, deve-se destacar:
• Resistência interna = 0, 06Ω
• Corrente na carga = ±6ADC
• 5000Vrms de isolamento na entrada/saı́da
• Não apresenta partes móveis
• Terminais em SMD e compacto
• Corrente de ativação entre 1,5 e 5mA
• Velocidade de chaveamento ao ativar = valor tı́pico 2,7ms e máximo 5ms
• Velocidade de chaveamento ao desativar = valor tı́pico 0,14ms e máximo 1ms
• Limite de tensão quando não ativado = 60V
3.2
Sinais de Comando do Microcontrolador
O sinal digital proveniente do microcontrolador pode ser eletricamente cor-
respondente a uma tensão entre 3V e 5V (HIGH) ou entre 1, 5V e 0V (LOW). Nesse
trabalho foi utilizada a ativação das portas dos relés em nı́vel lógico baixo. Sendo
assim, como mostrado na Figura 3.3, o pino 2 do relé é conectado a um resistor em
16
Figura 3.1: Configuração dos Pinos do Relé CPC1907B
série com uma fonte de 5V e o 3 ao microcontrolador como apresentado na pinagem
da Figura 3.1. Esta configuração é utilizada para forçar um estado - nı́vel lógico alto,
no caso - quando nenhum sinal for aplicado à saida/entrada, evitando um estado
indefinido nos pinos, o qual poderia gerar chaveamentos indesejáveis.
3.3
Conexões para Assegurar Modularidade
Como apresentado na Figura 2.5, é possı́vel conectar um módulo em série com
diversos outros. A nomenclatura utilizada na placa de balanceamento é apresentada
na Figura 3.2.
Figura 3.2: Placa de Relés com a nomenclatura presente na Placa de Balanceamento
As conexões da carga primária, secundária e da célula de cada módulo foram
dividas entre entrada e saı́da. A primeira é composta por Primário - In, Secundário
- In e Cell-, enquanto a segunda apresenta os conectores Primário - Out, Secundário
- Out e Mid.
Os conectores Primário - In, Secundário - In e Cell- do primeiro módulo
17
precisam ser interligados para garantir que as cargas estejam referenciadas a um
mesmo GND, como será mencionado no começo da Seção 3.4 e ilustrado na Figura
2.5. A operação não é prejudicada por este procedimento, mas a modularidade sim.
Caso não houvesse interconexão, seria possı́vel acoplar diversas placas, contemplando
um sistema composto por mais de 4 células.
A ligação das placas às cargas ocorre conectando o terminal da carga primária
ao Primário - In do primeiro módulo e ao Primário - Out do último. De maneira
idêntica ocorre com a secundária.
3.4
Circuito de Condicionamento para Aquisição
de Tensão
A aquisição de tensão fornece dados ao controlador, o qual atua nos relés,
garantindo uma operação dentro dos limites elétricos da bateria, e determinando o
SoC das células.
Por haver cargas e ligação de células em série, é essencial realizar as medições
em relação a um mesmo referencial. Isto ocorre conectando o terra - GND - entre
as cargas primária, secundária e o microcontrolador.
Uma abordagem para realizar medições utiliza um conversor analógico digital com referência interna (ADS1015 ou ADS1115), o qual se comunica com o
microcontrolador via I 2 C. Ele atuaria como um comparador com 12 ou 16 bits de
resolução (ADS1015 ou ADS1115 respectivamente), onde cada circuito integrado teria 2 entradas. Cada conversor mede entre 2.0V e 5.5V dependendo da alimentação
no IC.
A abordagem utilizada na placa consiste em realizar a aferição com os amplificadores operacionais LM833N. São utilizados 2 componentes contendo 2 Op Amps
cada, os quais são conectados às 4 células 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 tensão na entrada, o LM833N é ideal para
esta aplicação. Vale a pena ressaltar a necessidade de resistores da ordem de 100kΩ
conectados às entradas do amplificador no lugar de R, como visto na Figura 3.4,
para aproximá-lo do comportamento ideal.
18
Figura 3.3: Esquemático da Placa de Relé com a célula 1 - É possı́vel ver os blocos
representando os relés com os resistores pull-up, os pinos devidamente demarcadas
nos relés de acordo com a Figura 3.1, o Op Amp em configuração do subtrator além
dos conectores das conexões de entrada (em curto) e os conectores das ligações de
saı́da no canto direito inferior
A alimentação do LM833N ocorre através dos pinos de +V cc e −V ee. Essas
tensões são os valores limitantes do sinal de entrada tanto em V + quanto em V −,
de modo que estas precisam ser superiores à −V ee e inferiores à +V cc.
19
Figura 3.4: Esquematização da Aquisição via Amp Op em modo Subtrator
A tensão +V cc precisa ser suficientemente grande a ponto de a diferença de
potencial elétrico das 4 células em série não ultrapassá-la. Do contrário, haveria
saturação e as medições seriam prejudicadas.
Como são utilizadas 4 células de LiF eP o4 , o ideal é fornecer uma tensão em
+V cc quatro vezes superior ao máximo delas. Como este nı́vel pode atingir até 4,2V
(Figura 2.2, [1] e [22]), o ideal seria utilizar uma alimentação próxima de 18,2V em
+V cc e conectar o −V ee ao GND.
Os sinais de saı́da no amplificadores operacionais LM833N corresponde à
diferença de potencial entre V + e V − em relação à −V ee, como ilustrado na Figura
3.3, garantindo uma medição referenciada com o microcontrolador.
Independente dos Op Amps, os ADCs do microcontrolador aceitam 5V de
d.d.p na entrada. Em função disso, a tensão na carga primária não pode ser obtida através do microcontrolador sem o acréscimo de um divisor resistivo. Como
alternativa, pode-se realizar a soma algébrica do potencial de cada célula alocada
na carga. Como alternativa a esse método, utilizou-se um osciloscópio para avaliar
as variações de tensão nelas durante o chaveamento.
Para calcular a corrente circulante nas cargas primária e secundário, foi conectado um resistor de precisão a cada uma. No entanto, a tensão neles não apresenta
uma amplitude suficientemente alta para ser transmitida aos ADCs do microcontrolador. Uma abordagem normalmente utilizada consiste em elevar o sinal de tensão
no resistor através de um Op Amp, resultando em um acréscimo de ruı́do. Um outro método para realizar diretamente a medição de corrente é utilizar um sensor de
20
efeito Hall - como o ACS712.
3.5
Layout da Placa de Balanceamento
Após especificar todas as condições necessárias, precisa-se criar o Layout
da Placa de Balanceamento integrando todos os pontos anteriormente abordados.
Para essa função foi utilizado o Software Eagle (Easily Applicable Graphical Layout
Editor ).
De maneira resumida, foram considerados os seguintes aspectos:
1. Necessidade de manter a referência entre o microcontrolador, a fonte de alimentação dos amplificadores operacionais e as cargas primária e secundária;
2. Conectores para as 4 células, sinais de acionamento do microcontrolador, alimentações, cargas primária e secundária e sinais de saı́da dos amplificadores
operacionais;
3. Divisão da placa em 4 quadrantes (2 frontais e 2 traseiros)
4. Ativação dos Relés em LOW
O projeto de layout se inicia a partir da esquematização do circuito, definindo
quais componentes são utilizados e interligando resistores, blocos, conectores e Amp
Ops.
O esquema foi dividida em 5 grandes blocos:
1. Contendo os conectores
2. Contendo o módulo de chaveamento 1 com a célula 1 e o Op Amp subtrator
3. Contendo o módulo de chaveamento 2 com a célula 2 e o Op Amp subtrator
4. Contendo o módulo de chaveamento 3 com a célula 3 e o Op Amp subtrator
5. Contendo o módulo de chaveamento 4 com a célula 4 e o Op Amp subtrator
Observa-se na Figura 3.5 os conectores do sinal analógico, microcontrolador,
alimentação, células e resistores de precisão. Os demais compõem os módulos de
21
Figura 3.5: Bloco dos Conectores no Esquemático 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 espaço. Em
cada uma foi criado um plano de GND, cujas vantagens são:
• Ter o GND distribuı́do continuamente pela placa facilita o roteamento do
circuito, pois é a conexão mais comum em um circuito.
• Aumentar a resistência mecânica da placa
• Diminuir a impedância de todas as conexões de GND, isso reduz a condução
de ruı́dos indesejados
• Criar uma capacitância distribuı́da para cada ligação no circuito, reduzindo a
propagação de ruı́do
22
Capı́tulo 4
Microcontrolador e Software
Embarcado
Nesse capı́tulo é apresentado o microcontrolador utilizado juntamente com os
algoritmos de balanceamento desenvolvidos. Inicialmente são abordadas as caracterı́sticas às quais o microcontrolador precisaria atender para viabilizar o balanceamento. Posteriormente, 2 algoritmos de balanceamento são descritos. O primeiro
visa uma aplicação imediata para validar o balanceamento integrado, já o segundo
seria para a implementação futura no BMS do ROV LUMA.
4.1
Microcontrolador
O microcontrolador utilizado no projeto é 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 analógicas e 15 como saı́da de sinal modulado por
largura de pulso; e realiza comunicação via UART, I 2 C e/ou SPI.
Este foi escolhido principalmente pela disponibilidade de portas de entrada/saı́da,
pois cada célula de LiF eP O4 está conectada a uma placa contendo 7 relés CPC1907B.
Logo, são utilizados 28 relés para distribuir 4 células entre as cargas primária e secundária. Como abordado na Seção 3.2, cada relé é ativado através de um sinal
digital, portanto são necessário 28 sinais independentes provenientes das portas digitais do microcontrolador. Juntamente com estes sinais, são necessários sinais para
comunicação e ADCs, demandando ao menos 36 portas digitais.
23
Figura 4.1: Placa de hardware open-source Arduino MEGA 2560
Um solução alternativa à demanda excessiva por portas seria empregar um
IC Shift Register (74HC595, por exemplo) ao sistema. Ligando 3 portas do microcontrolador ao IC, é possı́vel obter até 8 de saı́da.
O microcontrolador está conectado à placa de Arduino MEGA2560. Esta
dispõe de um módulo conversor UART-USB que é utilizado para receber os sinais
de balanceamento transmitidos por um computador, realizar a comunicação com a
interface gráfica responsável pelo monitoramento das tensões e gravar o código-fonte
no microcontrolador.
4.2
Software
O código implementado no microcontrolador foi escrito na linguagem C/C++,
utilizando bibliotecas desenvolvidas para a plataforma Arduino. Estas possuem diversas funções pré-definidas, conferindo agilidade no desenvolvimento de códigos,
diferentemente da linguagem de programação em baixo nı́vel implementada em microcontroladores.
Neste projeto, a função do microcontrolador é validar o funcionamento de
uma topologia de balanceamento integrado. Para tal, foram desenvolvidas duas
lógicas de acionamento dos relés de chaveamento, o balanceamento manual e o balanceamento automático via contagem de coulomb.
A interface gráfica Processing é utilizada para monitorar as tensões das células
nos experimentos desenvolvidos nas Seções 5.3 e 5.4. Esta interface foi desenvolvida
24
para interfacear computador e placas de Arduino. Sua programação é realizada
através de bibliotecas semelhantes as do Arduino. Seu código foi desenvolvido em
[11].
4.2.1
Balanceamento Manual
Este método foi implementado no código-fonte do microcontrolador por ser
simplista. Consiste em definir entre 4 tensões recebidas qual a célula com menor
tensão e conectá-la à carga secundária. As demais células são conectadas à carga
primária. Por convenção, nesse projeto a carga secundária demandará sempre uma
corrente menor do que a primária.
Com as células já conectadas à placa de balanceamento, é transmitido via
comunicação serial do computador ao microcontrolador um sinal responsável por
ativar os relés de maneira a distribuir as células entre a carga primária e secundária.
Após a recepção deste sinal, o Arduino MEGA executa a função “chaveamento(
tensao1, tensao2, tensao3, tensao4)”, onde o menor valor de tensão transmitido
definirá qual a única célula que será conectada à carga secundária, desencadeando
no chaveamento dos relés dos 4 módulos, alocando as células em seus respectivos
lugares, conectando primeiramente a de menor tensão e posteriormente as outras.
O código desenvolvido contempla as 4 possı́veis distribuições de células. Isso é
realizado através da ativação dos relés de acordo com as 12 possibilidades abordados
na Apêndice A.2.
Os relés ativos em cada configuração está especificado de acordo com a Tabela
4.1
Carga Primária
Carga Secundária
Relés Acionados
Células
Células
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 relés de chaveamento em cada configuração
Como a frequência do oscilador no microcontrolador (16 Mhz) é muito maior
25
do que a de ativação tı́pica do relé CPC1907B (370 Hz), conforme comentado na
Seção 3.1 e Subseção 4.1 respectivamente, o sinal de comando é transmitido para
todos relés antes de qualquer um ser efetivamente acionado, gerando assim uma
sequência de chaveamentos em tempos aleatórios. Isto pode gerar um curto-circuito
das células e danificar os equipamentos.
Para exemplificar esta situação, é suposta uma distribuição conforme a da
Figura 2.5. Observando a conexão entre a placa 3 e 4, pode haver um curto na
célula 4 caso o relé S5 da placa 4 seja ativado antes da desativação do S6 da placa
4 e o S7 da placa 3. A solução implementada para evitar esta situação consiste
em gerar um delay de 7 milissegundos entre cada ativação/desativação, ao custo de
aumentar o perı́odo do chaveamento de todos módulos. Isto gerou a necessidade de
um aprimoramento descrito na Seção 5.6.
4.2.2
Balanceamento Automático via Contagem de Coulomb
Esta segunda abordagem foi pensada sob um aspecto mais genérico e próximo
da implementação de um BMS, considerando a utilização das fontes reguladores de
corrente descritas no Apêndice B.2 como cargas primárias.
Nesse método, as condições iniciais necessárias são o SoC inicial de cada
célula; número de pulsos de corrente totais em cada ciclo e com cada PWM; número
de pulsos já realizados desde a carga ou a descarga; e a correspondência entre o
PWM da saı́da do microcontrolador e a fonte reguladora de corrente.
Esses dados são utilizados para estimar o SoC através da contagem de Coulomb, calculando a energia remanescente nas células e, consequentemente, o tempo
de operação. No entanto, precisa-se gerar pulsos de corrente com tempos de relaxamento semelhantes e de 1 segundo para simplificar a conta da integral comentada
na Subseção 2.1.3 e garantir uma estimativa mais exata.
Para dispor das condições iniciais, é essencial realizar ciclos de carga e descarga em cada uma das células com as possı́veis saı́das das fontes reguladoras de
corrente. Os resultados obtidos são consolidados em um software para realizar o
algoritmo de busca. Este retorna: o estado de carga correspondente a uma tensão,
a linha correspondente na planilha, qual o ciclo e o número de pulsos restantes e
totais desse ciclo.
26
Esse algoritmo de busca poderia ter sido implementado no software Matlab,
mas por preferência própria 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 tensão fornecida apenas em
instantes onde a corrente é igual a 0 na carga. Com esta consideração, o experimento
reduz a influência da resistência interna durante a busca.
O código-fonte deste método de balanceamento foi parcialmente desenvolvido.
Já existem rotinas para identificar o número de células, as quais serão conectadas à
carga secundária, e definir a distribuição.
O algoritmo de chaveamento dos relés ainda não foi escrito. O ideal seria criar
uma estrutura no código que represente os relés em cada módulo e então, executar
uma função responsável por identificar a configuração a qual será implementada
para ativar/desativar os relés 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 é descrita a bancada de teste e o fluxo de
dados durante o experimento. Posteriormente, são exibidos os testes e resultados
obtidos.
5.1
Descrição da Bancada de Teste
A bancada é constituı́da por um notebook, a placa de balanceamento, duas
placas de Arduino MEGA2560 com microcontroladores, um osciloscópio Rigol DS1102C,
uma fonte de alimentação ICEL PS-4001, uma década de resistência e um resistor.
A montagem do experimento está representada na Figura 5.1, onde é possı́vel
observar 4 células conectadas à placa de balanceamento e 2 placas de Arduino
MEGA2560. Uma das placas é responsável por acionar os relés do chaveamento
em função do sinal recebido do computador, a outra transmite à interface gráfica
Processing os sinais de tensão, medidos pelos conversores ADCs, para serem monitorados.
No Processing, esse dados são exibidos e paralelamente escritos em um arquivo de texto. Após o teste, estes dados são utilizados pelo editor de planilhas,
gerando os Gráficos 5.8 e 5.10.
O osciloscópio DS1102C foi configurado para a monitoração da tensão nas
28
Figura 5.1: Montagem dos circuitos para realizar os Experimentos com a Década e
a Resistência
cargas primárias e secundárias nos instantes do chaveamento, detectando o momento
no qual havia variação na carga secundária e então, disponibilizando no visor gráficos
semelhantes aos ilustrados nas Figuras 5.9 e 5.6.
A fonte PS-4001 é responsável pela alimentação dos amplificadores operacionais com 18, 2V, como especificado na Seção 3.4. Tanto a saı́da da década de
resistência quanto o microcontrolador foram conectados ao GND da fonte, dessa
maneira garante-se um sistema sob a mesma referência. Esta década, a qual representa a carga primária, apresenta um alcance de valores de 0Ω até 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 primária.
A placa de balanceamento é composta por quatro módulos, como explicado
na Seção 3.3. Estes são interligados conectando os sinais de saı́da do módulo atual
aos de entrada do próximo. Ao final, as cargas primária e secundária são conectadas
ao sistema conforme mostrado na Figura 2.5. Caso desejado, pode-se aumentar ou
reduzir o número de células no sistema. Para isto, é necessário retirar ou acrescentar
os módulos intermediários.
Como explicado anteriormente, o primeiro módulo possui suas entradas em
curto-circuito para garantir que o sistema esteja no mesmo referencial de GND.
Apenas o primeiro e último módulos possuem conexão direta com as cargas primária
e secundária, todas os demais - intermediários - não são 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 módulos, realizando a ativação dos relés e medindo a tensão em
cada uma das cargas. Na carga secundária deveria haver uma d.d.p correspondente
30
à soma da tensão das células conectadas à ela e na carga primária haveria a soma
das tensões das demais células. Na Figura 5.3 é possı́vel observar a montagem para
esses testes, onde a tensão apresentada no canal 2 seria equivalente à soma de tensão
das células 1 e 4, enquanto no canal 1 seria das células 2 e 3.
Figura 5.3: Demonstração das conexões realizadas na Placa durante os testes preliminares
Os primeiros testes foram realizados com pilhas em circuito aberto, ao invés
de células de LiF eP o4 , pois são mais baratas de repor e seguras caso ocorresse um
curto-circuito. Os módulos foram inter-conectados como destacado na Figura 5.4
com o número 1 e os relés acionados através dos conectores marcados com o número
2.
Durante os testes, foi identificado um problema ao conectar a célula do terceiro módulo à carga secundária, não obtendo a soma das tensões das pilhas 1, 2 e
4 na primária. Após diversos testes, percebeu-se uma solda mal realizada, que foi
resolvido após conectar novamente todos os componentes. Após essa etapa, foram
realizados os experimentos com células de LiF eP o4 .
Na Figura 5.6, as células 1, 2 e 3 estão conectadas ao canal 2 do Osciloscópio e
a célula 4 no canal 1. Ao realizar o chaveamento para trocar as células 1 e 4 de carga,
fica evidenciado a variação de tensão no Canal 1 e 2 do oscilocópio, apresentando
uma interrupção na alimentação do sistema durante aproximadamente 75ms. Em
31
função disso, é proposto na Seção 5.6 uma solução com a utilização de capacitores.
Figura 5.4: Demonstração das conexões realizadas na Placa
Figura 5.5: Circuito utilizado para validar o funcionamento da Placa de Balanceamento
5.3
Teste do Chaveamento
Para o experimento utilizando cargas, são conectados aos módulos o resistor
de 100Ω como carga secundária e a década de resistência como primária. Por não
dispor de uma fonte de corrente para gerar uma onda quadrada como a apresentada
32
Figura 5.6: Gráfico apresentado pelo Osciloscópio ao alternar a conexãao da célula
1 com a célula 4
na Figura 5.7, a década terá sua resistência alternada entre 10Ω e 100kΩ simulando este comportamento. Todas as células conectadas a ela apresentarão variação
de tensão, enquanto que a célula conectada ao resistor apresentará uma queda de
tensão quase nula por estar sujeita a uma corrente contı́nua baixa (aproximadamente
30mA). Este comportamento do sistema está 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 célula 1 está conectada
à carga secundária e todas as demais à primária. Isto é percebido tendo em vista
que todas as demais células tem suas tensões alteradas de acordo com a alteração
da resistência na carga primária, enquanto que a célula 1, conectada a um resistor
de 100Ω, apresenta variação de tensão desprezı́vel.
Com aproximadamente 11kΩ na carga primária, circula uma corrente baixa,
simulando um circuito-aberto, pois gera uma queda de tensão desprezı́vel. Já com
10Ω, há uma diferença de potencial acentuada devido ao fluxo de aproximadamente
1A.
33
Figura 5.8: Experimento 1 - Curva de Tensão em cada célula com a Placa de Balanceamento sob carga
Figura 5.9: Gráfico apresentado no Canal 2 do Osciloscópio ao alocar a célula 2 no
lugar da 3
Próximo de 213 segundos, é transmitido o sinal de comando do computador
ao Arduino, acionando os módulos de chaveamento para conectar a célula 2 à carga
secundária e, consequentemente, a célula 1 na primária. A tensão passa a oscilar
em todas as células exceto na 2 até aproximadamente 580 segundos, pois esta foi
realocada. Este processo se repete até que todas as 4 células tenham sido conectadas
34
à carga secundária indivualmente.
A variação da tensão das células está ilustrada na Figura 5.8, já a Figura
5.10 representa todas as tensões sobrepostas, facilitando a visualização do instante
no qual a resistência da década alterna e a tensão de todas as células conectadas a
ela variam.
Figura 5.10: Experimento 1 - Curva de Tensão x Células sobrepostas com a Placa
de Balanceamento sob carga
5.4
Balanceamento Manual
Para simular um balanceamento, a descarga das células ocorre por 300 se-
gundos com a década 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 é realizado uma medição da tensão das células e então é
alocada na carga secundária a célula com menor tensão. No gráfico da Figura 5.11
é ilustrada a curva de tensão durante este teste.
No primeiro instante deste balanceamento, a célula 3, por apresentar menor
tensão, está conectada à carga secundária e as demais à primária. Após 406 segundos
ocorre o final do perı́odo ativo, definido pela alteração da resistência da década para
11kΩ. Como a tensão da célula 4 passa a ser o menor dentre todas, esta é chaveada
no lugar da 3 para ser conectada à carga secundária.
A distribuição é inalterada até o terceiro perı́odo de descarga, onde a tensão
da célula 3 se torna inferior às outras e é, portanto, conectada à carga secundária.
Após 1600 segundos, a célula 4 apresenta novamente a menor tensão e substitui a 3.
35
Com esse experimento foi possı́vel conectar, durante o perı́odo de relaxamento, a célula de menor tensão na carga secundária em cada perı́odo de descarga.
Este processo poderia ocorrer até que uma das células atingisse a tensão mı́nima
limite, garantindo a utilização da bateria de maneira mais eficiente possı́vel e que
as células estivessem o menos desbalanceadas possı́vel.
Caso a década e a resistência fossem trocadas por circuitos para recarregar a
bateria, o mesmo algoritmo pode ser implementado. A única alteração seria que a
célula com maior estado de carga passaria a ser alocada no circuito que fornecesse
menor corrente, enquanto as outras recarregariam mais rapidamente por estarem recebendo uma corrente maior. Durante cada perı́odo de relaxamento seria necessário
medir a tensão das células para então realizar o chaveamento necessário.
Vale a pena ressaltar o fato de as células 3 e 4 já estarem próximas da faixa não
linear da curva de OCV, ilustrada na Figura 2.2, e, portanto, a queda de tensão nas
duas é sempre superior às demais, demonstrando que ambas já estão abaixo de 10%
do SoC. Para este caso, ao final do experimento haveria uma desbalanceamento das
demais células em relação a 3 e 4, pois estas não estavam minimamente carregadas
a ponte de ser possı́vel as células 1 e 2 serem conectadas à carga secundária.
Figura 5.11: Experimento 2 - Gráfico de Tensão gerado durante o balanceamento
manual
36
5.5
Problemas Encontrados
Durante os experimentos, ocorre variação na tensão das cargas primárias e
secundárias por 2 motivos: uma corrente é aplicada ou chaveamento dos relés. Os
gráficos ilustrados nas Figuras 5.8, 5.10 e 5.11 refletem a influência do primeiro nas
células. O segundo motivo é observado nas Figuras 5.6 e 5.9.
Dependendo do sistema em que esta topologia de balanceamento esteja implementada, pode ser inaceitável a tensão de alimentação das cargas primária e/ou
secundária atingirem 0V em qualquer instante durante a operação.
Foi identificado que o módulo de conectores dos circuitos, apresentado na
Figura A.3, não estava conectado aos devidos terminais. Estes conectores devem
apresentar a tensão e a corrente nas cargas primária e secundária.
Um outro problema encontrado e já mencionado nesse projeto se refere ao
curto-circuito presente na entrada do primeiro módulo de chaveamento. Isso impossibilita a conexão de placas de balanceamento em série. É necessário criar um outro
layout em que não haja este curto e o primeiro módulo receba sinais de uma placa
externa.
5.6
Proposta de Aprimoramentos
A solução proposta para o problema descrito na Seção 5.5 consiste em incluir
um conversor DC-DC, 2 capacitores em paralelo aos circuitos primário e secundário
e 2 relés entre cada capacitor e a placa de balanceamento, conforme ilustrado na
Figura 5.12.
Durante a operação, os novos relés desconectarão a placa de balanceamento
das cargas primária e secundária no perı́odo de chaveamento, possibilitando a implementação de um algoritmo mais eficiente de chaveamento. Os capacitores ficarão
responsáveis por alimentar as cargas nesse perı́odo e os conversores garantirão a
alimentação do microcontrolador e dos circuitos de chaveamento.
Para esta nova configuração, é considerado:
• frequência do oscilador no microcontrolador igual a 16 MHz;
• tempo de ativação e desativação dos relés CPC1907B igual a - no máximo -
37
Figura 5.12: Proposta para evitar a interrupção da alimentação durante o chaveamento
5ms e 1ms, respectivamente;
• com 1 perı́odo do oscilador (clock) é possı́vel enviar o sinal de comando do
microcontrolador para 1 registrador, o qual possui 7 portas usadas para ativar
os relés de 1 módulo;
• os relés dos capacitores também são CPC1907B.
Baseando-se nessas considerações, são necessário 4 perı́odos de clock para
realizar a ativação ou desativação de todos os CPC1907Bs, os quais ocorrem em 250
ns. Este tempo é suficiente para transmitir o comando de acionamento de todos os
relés antes de qualquer um efetivamente ativar.
A solução proposta consiste em:
i Identificar qual a configuração necessária para balanceamento;
38
ii Escrever a configuração dos relés em uma variável;
iii Desconectar a placa de balanceamento do sistema, passando a utilizar os capacitores como alimentação;
iv Desativar todos os relés, por segurança;
v Ativar os relés de acordo com a variável auxiliar;
vi Reconectar a placa de balanceamento ao sistema.
Neste caso, o algoritmo de chaveamento não necessita de um atraso entre cada
ativação de relé, pois os comandos de acionamentos serão transmitidos simultaneamente. Esta abordagem é possı́vel por não haver carga e, em função da desativação
prévia dos relés, não haveria risco de causar curto-circuito.
Em iv, é necessário 1ms e em v e vi, 5ms, totalizando 11ms, nos quais os
capacitores precisam fornecer energia aos circuitos. Também deve-se especificar
qual a tensão mı́nima neles. Aplicando estes dados à Equação A.5, obtém-se o valor
do capacitor. Sendo Vcc e R a tensão e a resistência da carga.
Supondo um sistema em que a tensão mı́nima de alimentação na carga
primária seja 45V e a bateria apresente 48V, uma carga de 10Ω e 11ms de chaveamento para o balanceamento, obtém-se o valor do capacitor conectado à carga
primária
45 = 48e
ln
−0.011
10C1
−0.011
45
=
48
10C1
C1 = 17100µF
(5.1)
No caso de uma carga secundária, supõe-se uma alimentação mı́nima de 10V
e que a bateria apresente 12V em seus terminais. Os demais dados são semelhantes
à situação anterior.
Tem-se portanto
39
10 = 12e
ln
−0.011
10C2
−0.011
10
=
12
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
Conclusões
No decorrer desse projeto, projetou-se uma placa de balanceamento capaz
de conectar 4 células em 2 cargas definidas como primária e secundária, através do
acionamento de relés distribuı́dos em 4 módulos. Este conceito foi elaborado em [4],
mas sem qualquer experimento prático.
O balanceamento integrado é viável por possibilitar a ligação de células arbitrariamente entre 2 circuitos com perdas apenas nas trilhas, nas resistências internas dos relés e no conversor DC-DC. As maiores preocupações são: possı́veis
curto-circuitos e picos de tensão gerados durante os chaveamentos.
Na placa desenvolvida, a primeira situação foi contornado gerando um atraso
de 7ms entre a transmissão de cada comando de ativação. A segunda pode ser
evitada através da utilização de capacitores, suavizando a subida ou descida do
nı́vel de tensão.
Os experimentos foram realizados sob uma corrente de 1A, com tensão nas
cargas atingindo no máximo 12V. O ROV Luma exigiria reprojeto de trilhas, alteração dos componentes e utilização de dissipadores para atender às especificações
mı́nimas - 10A e 48V. Atualmente, essa restruturação resultaria no aumento da
placa e, em projetos com restrição de espaço, isso seria um problema.
A placa de balanceamento desenvolvido não pode ser utilizada em um BMS,
pois a alimentação das cargas é interrompida durante o chaveamento. Uma nova
placa é proposta na Seção 5.6 para contornar essa situação. A sua lógica de chaveamento seria mais eficiente, chaveando o sistema em menos tempo, evitando curtocircuitos e picos de tensão nas cargas durante o chaveamento.
41
Não é possı́vel definir se o balanceamento integrado é mais viável do que
qualquer outra topologia. Pode-se utilizar este protótipo juntamente com o desenvolvido em [11] para comparar o balanceamento integrado e o passivo sob as mesmas
correntes, comparando a energia fornecida, energia dissipada, tempo de operação e
densidade de componentes por área.
De maneira resumida, o conceito de balanceamento integrado é funcional,
mas a placa de balanceamento projetada não é capaz de realizá-lo eficientemente.
Deve-se realizar as alterações citadas na Seção 5.6.
6.1
Trabalhos Futuros
Com os conhecimentos adquiridos, é possı́vel desenvolver um BMS em aplicações
reais. Este estimaria o estado de carga, utilizaria um carregador autônomo, descrito
na Seção B.2, e implementaria o balanceamento integrado.
Para o sistema é interessante destacar possı́veis melhorias e correções. 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-módulos, conectar as
trilhas das cargas aos conectores e eliminar o curto-circuito do Primário-in,
Cell- e Secundário-in com GND no primeiro módulo das placas de balanceamento;
• Terminar de escrever o código-fonte para realizar o balanceamento integrado
automaticamente, implementando uma estimação de carga mais eficiente e
com a possibilidade de desconectar células de ambas cargas;
• Implementar um algoritmo de estimação de carga que possa ser executado pela
placa Arduino MEGA2560.
42
Referências Bibliográficas
[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 Conference, 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., LEIJGÅ 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] FIGUEIRÓ, A. A., Controle do Balanceamento de Bateria e Estimação 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. dissertation, Purdue University, 2011.
[13] BARONTI, F., RONCELLA, R., SALETTI, R., “Performance comparison of
active balancing techniques for lithium-ion batteries”, Journal of Power Sources, 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 Voltage 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 lithiumion 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
Apêndice A
Placa de Balanceamento Integrado
A.1
Layout da Placa de Balanceamento
Na face frontal estão dispostos 2 módulos de relés, os LM833Ns, conectores
do sinais transmitidos pelo microcontrolador, da alimentação, das células, dos sinais
analógicos; e no verso há outros 2 módulos de relés (Figura A.1).
46
Figura A.1: Alocação 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
Lógica do Chaveamento
Existem 12 possı́veis configurações das placas de relés para realizar as ligações
de n células entre o circuito primário, o secundário e simplesmente desconectá-la de
ambos
1. tanto a célula atual quanto a seguinte ligadas ao primário. Nesse caso é necessário ativar os relés S1 e S5 - conexão entre Placas 2 e 3 ;
2. a célula atual ligada ao primário e a seguinte ligada ao secundário. Nesse caso
é necessário ativar os relés S3, S5 e S7- conexão entre Placas 3 e 4 ;
3. a célula atual ligada ao primário e a seguinte desligada dos circuitos. Nesse
caso é necessário ativar os relés S3 e S5;
4. a célula atual ligada ao secundário e a seguinte ligada ao primário. Nesse caso
é necessário ativar os relés S2, S4 e S6 - conexão entre Placas 1 e 2 ;
5. tanto a célula atual quanto a seguinte ligadas ao secundário. Nesse caso é
necessário ativar os relés S1 e S2 ou S2, S6 e S7;
50
6. a célula atual ligada ao secundário e a seguinte desligada dos circuitos. Nesse
caso é necessário ativar os relés S2 e S6;
7. a célula atual desligada dos circuitos e a seguinte ligada ao primário. Nesse
caso é necessário ativar os relés S2, S4 e S5;
8. a célula atual desligada dos circuitos e a seguinte ligada ao secundário. Nesse
caso é necessário ativar os relés S2, S5 e S7;
9. a célula atual e a seguinte desligadas dos circuitos. Nesse caso é necessário
ativar os relés S2 e S5;
10. a última célula ligada ao primário. Nesse caso é necessário ativar os relés S3
e S5;
11. a última célula ligada ao secundário. Nesse caso é necessário ativar os relés S2
e S6;
12. a última célula desligada dos circuitos. Nesse caso é necessário ativar os relés
S2 e S5.
Sendo mais objetivo ainda, pode-se definir o objetivo de cada relé como:
• S1 - Responsável por conectar a célula do módulo atual e seguinte em série
(conexão entre Placas 2 e 3);
• S2 - Responsável por conduzir a corrente presente na carga primária (conexão
entre Placas 3 e 4);
• S3 - (1) Responsável por conduzir a corrente do primário para a saı́da central,
entre os relés S4 e S7 denominada mid (sem exemplo na Figura 2.5) ou (2)
conduzir a corrente da célula da placa para o primário (conexão entre Placas
3 e 4);
• S4 - Responsável por realizar curto-circuito entre a tensão da carga primária
e a de mid (conexão entre Placas 1 e 2);
• S5 - Responsável por conduzir a corrente presente no secundário (conexão
entre Placas 1, 2 e 3);
51
• S6 - (1) Responsável por conduzir a corrente do secundário para a saı́da mid
(sem exemplo na Figura 2.5) ou (2) conduzir a corrente da célula da placa
para o secundário (conexão entre Placas 4 e 5);
• S7 - Responsável por realizar curto-circuito entre a tensão da carga secundária
e a de mid (conexão entre Placas 3 e 4).
A.3
Circuito RC paralelo
Na Seção 5.6, a utilização de um circuito RC em paralelo é proposta para
evitar a interrupção da alimentação quando houver chaveamento.
De maneira simplificada, o circuito será representado conforme ilustrado na
Figura A.6
Figura A.6: Circuito RC em Paralelo com Relé
Supondo que o relé ilustrado seja desconectado do circuito no instante t(0),
sendo a tensão Vc (t) no capacitor igual à tensão Vcc na bateria. Em t(0+ ), o circuito
fica reduzido a um capacitor C descarregando a uma corrente ic através do resistor
R.
A corrente na malha é equacionada por
52
ic (t) − ir (t) = 0
Vc (t)
dVc (t)
=
dt
R
dVc (t)
dt
=
Vc (t)
RC
t
Z
Zt
dVc (τ )
dτ
dτ =
dτ
Vc (τ )
RC
C
0
0
−t
+K
ln(Vc (t)) =
RC
−t
Vc (t) = Ke RC
(A.1)
Tem-se como condições iniciais
ic (0+ ) = −
Vcc
R
Vc (0+ ) = Vc (0− ) = Vcc
(A.2)
(A.3)
Aplicando A.3 em A.1 obtém-se
Vc (0) = K = V cc
(A.4)
Substituindo em A.1, conclui-se finalmente
−t
Vc (t) = Vcc e RC
53
para t ≥ t(0)
(A.5)
Apêndice B
Carga e Descarga
B.1
Técnicas de Carga e Descarga
Em função do comportamento não linear das células de ı́on-lı́tio, surgiram
diferentes métodos de carga e descarga que priorizam parâmetros diferentes, por
exemplo: o tempo necessário para recarregar, a medição de OCV e o ajuste fino
do estado de carga. Em [6], são abordados 4 procedimentos. Recarga com tensão
constante, corrente constante, pulso de corrente e um método hı́brido.
Os mais utilizados são o pulso de corrente e o método hı́brido. No primeiro,
aplica-se uma onda quadrada, cujos picos duram ∆tp segundos e há ∆tr segundos
de relaxamento. Esse método é utilizado para coletar dados sobre a dinâmica de
uma célula e também recarrega com OCV mais preciso.
A variação de tensão apresentada na curva, o tempo de decaimento de tensão
na célula e a diferença no nı́vel médio entre a recarga e a descarga compõem as
informações sobre a dinâmica de uma célula [11]. Com estas, é possı́vel estimar
parâmetros para o modelo matemático ou circuito equivalente abordados em [23]
No caso de um ajuste fino, os pulsos devem apresentar um ∆tr que permita o
retorno ao regime estacionário. Dessa maneira, a recarga será mais lenta, no entanto
garantirá o maior armazenamento de energia e a estimação mais exata.
Já o método hı́brido, carrega a bateria com tensão constante próxima a 90%
do estado de carga. Após esta etapa, aplica-se uma corrente constante até o término
do carregamento da célula. Com esse procedimento, a carga ocorre mais rapidamente
em relação às 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, é desejável utilizar um sistema automatizado capaz de carregar e descarregar
as células de LiF eP o4 .
Utilizando como base o regulador de corrente projetado em [11], foi desenvolvida mais uma placa com esta função para substituir a carga primária ou secundária
em testes. O esquemático do regulador pode ser visto na Figura B.1 e a ligação dos
relés para alternar entre carga e descarga do circuito está representado na Figura
B.2.
Figura B.1: Esquemático do Circuito Regulador de Corrente Controlado por PWM
Dividindo em processos, o circuito pode ser representado primeiramente por
uma diferença de potencial de 12V em relação 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, será atenuado no divisor resistivo
representado pelo trimpot de 2kΩ. Esse sinal atenuado então é passado ao CI do
Amp Op LM358, configurado como buffer, cuja saı́da é filtrada pelo circuito RC. O
sinal elétrico gerado na saı́da do filtro é proporcional ao ciclo de trabalho do PWM,
de maneira que a tensão esteja aproximadamente contı́nua e possa ser comparada
por um segundo Amp Op em relação à medida no resistor de 0, 5Ω. Sua saı́da atua
diretamente na porta (gate) de um MOSFET, regulando o potencial no resistor em
relação à saı́da do circuito RC e fornecendo uma corrente de até 1,5A.
55
Esse módulo de carga e descarga pode ser conectado à placa de balanceamento
integrado, mas ainda precisa de alguns ajustes, pois o algoritmo consiste em mapear
as células entre 2 circuitos. Quando usados como primário e secundário, o sistema
parou de funcionar, pois o GND de cada um estava variando. Portanto, devese repensar no projeto para garantir a manutenção da referência entre todos os
circuitos (aquisição de tensão, balanceamento, arduino e os 2 circuitos reguladores
de corrente).
Figura B.2: Circuito e lógica dos relés utilizados no regulador de corrente para
alternar entre Carga e Descarga
56
Apêndice C
Código do Arduino
C.1
Código do Arduino
O código de um placa de Arduino é divido 4 partes:
1. Declaração dos pinos, definindo fisicamente onde sairá/entrará cada sinal da
placa;
2. Declaração de funções e variáveis. Similar à linguagem C;
3. Função void setup() responsável por inicializar os pinos entre pinos de entrada
e pinos de saı́da, habilitar a comunicação, e inicializar as demais variáveis ou
funções. Como exemplo, o pino de entrada é usado nos conversores analógicodigital para receber a tensão nas células, a qual varia entre 0 (0V) e 1023 (5V),
e o pino de saı́da é usado para enviar o sinal aos relés para ativá-los ou não;
4. Parte principal do código - void loop() - onde as funções são chamadas e o
código é executado rotineiramente.
57
[fontsize = \tiny]
//Criado por Ignácio Ricart
//Código para realizar o Balanceamento Integrado Manualmente
//---- Variáveis de teste
char data;
//----CHAVEAMENTO
//----Portas de Cada Relé para as 4 células
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 primário e secundário 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}; //MÉTODO 3
const int capacidade_descarga[] = {690, 660, 600, 700}; //MÉTODO 3
const int n_cell_primario = 3; //MÉTODO 3
const int n_cell_secundario = 1; //MÉTODO 3
int n_celulas = n_cell_primario + n_cell_secundario;
int corrente_menor;//MÉTODO 2
float corrente1, corrente2;//MÉTODO 2
float tempo_estimado_prim[n_cell_primario + n_cell_secundario];//MÉTODO 2
58
float tempo_estimado_sec[n_cell_primario + n_cell_secundario];//MÉTODO 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
//----Variáveis 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
//---- ATIVAÇ~
AO DOS RELÉS OCORRE EM LOW !!!!
//----Saida Controle Relé 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 Relé 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 Relé 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 Relé 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 Analógicas
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;
//----Situaç~
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 célula = ’P’ => S3 e S5 em LOW
// ultima célula = ’S’ => S2 e S6 em LOW
//---- CHAVEAMENTO PARA DESCARGA
//---- MÉTODO 1
//----Definir o SOC mı́nimo entre as células e alocar a célula de menor SOC no secundário (assumidamente a menor corrente)
soc_minimo = 100;// Evitar a reutilizaç~
ao da variável 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 células
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
//----Célula do secundário tem prioridade para n~
ao suspender a atividade
//----No caso desse projeto só haverá uma célula no secundário, mas já tem o código para mais de 1
//----Método 1.1
//----Já considero que apenas uma célula estará no secundário. Portanto posso prever todas as outras conex~
oes
//----LIGAÇ~
AO DO SECUNDÁRIO 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 célula = ’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 célula = ’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 célula = ’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 célula = ’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);
}
}
/*
//----MÉTODO 2
//---- Definir a menor corrente, o tempo de operaç~
ao sob cada corrente e a partir daı́ alocar as células
corrente1 = pulso_convert1[(Output - 90)/10];
65
corrente2 = pulso_convert2[(Output - 50)/10];
if (corrente1 > corrente2)
{
corrente_menor = 2;
}
else
{
corrente_menor = 1;
}
//---- MÉTODO 2.1
//----Estimar o tempo de operaç~
ao para ambos os circuitos
//----DESNECESSÁRIO
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);
}
}
}
//---- MÉTODO 2.2
//----Estimar o tempo de operaç~
ao individualmente
//----DESNECESSÁRIO
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 operaç~
ao dentre as ’n_celulas’ indices;
//----TALVEZ SEJA DESNECESSÁRIO, VALENDO MAIS A PENA CALCULAR O TEMPO DE OPERAÇ~
AO PARA CADA CÉLULA NO PRIMÁRIO OU SECUNDÁRIO E A PARTIR DAÍ 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
Download