■▼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