Super Capacitor para Backup do Arduino

Versão 1.0 em 04/02/2020 – Ricardo Zelenovsky

 

Proposta:

Uma solução com super capacitor para que o Arduino funcione por alguns segundos após o corte de energia.

 

Importante:

O texto aqui apresentado apenas relata o experimento realizado pelo autor, sem qualquer responsabilidade nas suas aplicações. O leitor pode usar trechos deste texto, desde que cite a origem. É vedado o uso comercial. Correções e sugestões são bem-vindas.

O autor recomenda o livro “Arduino: Guia Avançado para Projetos”, veja no final deste estudo.

 

Texto Completo:

Aos que se interessarem sobre o uso do Arduino Mega alimentado pelo acendedor de cigarros de um carro, com super capacitor para backup de energia e recurso para auto desligamento, baixe o texto completo em:

Zele_Estudo_01_v01.pdf

 

Ambientação:

O que é exposto a seguir foi desenvolvido para um projeto que será embarcado em um carro, sendo que os 12 V do carro serão aplicados à entrada VIN do Arduino. Essa entrada VIN supre o regulador interno de 5 V que gera a alimentação para todo o Arduino. O sítio do Arduino [1] indica que VIN deve estar na faixa de 7 V até 12 V (limites são de 6 V e 20 V).

 O projeto exige que, após o carro ser desligado, o Arduino ainda funcione por alguns segundos, sustentado por um super capacitor, e depois se desliga. Aqui abordamos a solução com super capacitor. No artigo anterior descrevemos a solução para o auto desligamento e no próximo vamos abordar a proteção quando se usa a alimentação do carro e alguns recursos para monitoramento e alerta de energia.

 

Solução para o Backup de Energia com Super Capacitor

 Para o projeto citado, há a necessidade de que o Arduino funcione, por no mínimo 5 segundos, após o desligamento do carro. Esse período de 5 segundos é para o programa realizar algumas operações de armazenamento. A primeira ideia que surge é a de usar uma bateria recarregável. Porém, o uso diário do carro vai provocar uma grande quantidade de ciclos de carga/descarga e assim demandar uma troca periódica dessas baterias, além do inconveniente de um circuito especial só para controlar a carga. A solução mais simples, já que o espaço de tempo é bem curto, é usar um super capacitor [2].

 Após o desligamento do carro e a conclusão das operações, não há mais a necessidade de o Arduino continuar ligado.  Para isso foi usado o recurso para permitir que o Arduino se auto desligue. Esse auto desligamento oferece duas vantagens. A primeira é diminuir a amplitude dos ciclos de carga/descarga do super capacitor, já que este não será exaurido completamente. A segunda vantagem é impedir que o processador opere com alimentação próxima ao seu limite inferior de tensão, que é uma condição problemática, como se demonstra a seguir.

 Os processadores trazem internamente um circuito de “Brownout Reset”. O termo Brownout significa queda de energia. Em outras palavras, este circuito mantém ativo o Reset do processador enquanto a alimentação está abaixo de um determinado nível. Isto evita que ele funcione de forma errática com uma tensão abaixo do mínimo necessário. Por exemplo, um circuito deste tipo entra em ação toda vez que o leitor liga ou desliga seu computador, seu Arduino etc.

 Entretanto, foi observado que o Arduino fica errático quando a tensão fornecida pelo super capacitor se aproxima do mínimo especificado pelo fabricante. Este fato foi inesperado, já que o processador usado no Arduino tem um bom circuito para o Brownout Reset. Salvo melhor argumentação, pode-se tentar explicar isso pelo comportamento do super capacitor. Quando a tensão cai abaixo do mínimo especificado, o circuito de Brownout coloca o processador em Reset e ao entrar em Reset, o consumo de corrente (do processador) cai. Com a diminuição no dreno de corrente, a tensão fornecida pelo super capacitor aumenta um pouco, o suficiente para desativar o Brownout e assim tudo se repete. O circuito de Brownout é construído com um ciclo de histerese, mas, aparentemente, com o uso de super capacitores estamos indo além dos limites deste ciclo.

 Como a alimentação era de 12 V (do carro), deveríamos selecionar um super capacitor com tensão de operação um pouco acima de 12 V. No mercado nacional não foi possível encontrar um dispositivo próximo desse valor de tensão. Entretanto, é abundante a disponibilidade de super capacitor de 5,5 V. Então, a solução foi combinar dois em série para chegar à tensão de 11 V. É claro que precisaremos reduzir os 12 V disponíveis no carro.

Sobre o valor nominal da capacitância do super capacitor, poderíamos fazer um cálculo cuidadoso verificando a corrente consumida pelo circuito e assim calcular seu valor em função da curva de descarga.  Entretanto, não faremos isto. Vamos simplificar! Queremos o funcionamento de pelo menos 5 segundos e depois o Arduino se autodesliga. Como estavam num bom preço os super capacitores de 1,0F/5,5V, estes foram selecionados. Usamos dois desses em série e medimos na prática por quanto tempo eles sustentaram o circuito. As medições, apresentadas mais adiante, indicaram um tempo bem superior aos 5 segundos. É preciso lembrar que o resultado da associação em série de dois capacitores idênticos, é um capacitor com metade da capacitância. Chegamos então a um super capacitor equivalente de 0,5F/11,0V. Ao longo do texto, apesar de estarmos associando dois super capacitores, usaremos o termo no singular.

 Precisamos de adicionar um circuito que garanta a carga do super capacitor enquanto o carro estiver ligado e sua pronta atuação quando a energia for cortada. A Figura 1 apresenta esta solução. O circuito de proteção, que será estudado no próximo Blog, é composto por F1 (fusível de 2 A), D4 e D1. Após o diodo D1, a tensão é de 11,3 V, ainda acima da especificação (11,0 V) do super capacitor. Para reduzi-la para abaixo de 11,0 V, colocamos em série o diodo D3, que força uma queda de 0,7 V, reduzindo assim a tensão para 10,6 V.

 Quando se liga o carro com o super capacitor completamente descarregado, ele se comporta, momentaneamente, como um curto circuito para a terra e provavelmente vai provocar a queima do fusível de 2 A. Para evitar que isso aconteça, colocamos um pequeno resistor em série (vide R1) com o circuito de carga do super capacitor. Considerando alimentação de 12 V e o limite de corrente de 2 A do fusível, chegamos a 6 Ω, que seria o valor mínimo para o resistor. Esse resistor pesa também no tempo de carga do super capacitor. Para não ficarmos próximo do limite, sugerimos um resistor entre 47 Ω e 100 Ω. Foi usado um de 68 Ω, que estava disponível na caixa de componentes.

 

Fig. 1. Detalhamento do circuito de backup de energia para o Arduino usando super capacitor.

 

Os diodos D3 e D5 garantem a correta operação da carga e descarga do capacitor. Enquanto a fonte de 12 V está ligada, o diodo D3 está polarizado diretamente e permite a carga do super capacitor com a tensão de 10,6 V. Sob essas condições o diodo D5 está cortado e não permite que o super capacitor forneça energia ao Arduino. Note que nessas condições tanto o anodo como o catodo de D5 estão submetidos a uma tensão de 10,6 V. Assim, ele não conduz.

 Quando a fonte de 12 V é desligada, o diodo D3 passa a estar reversamente polarizado (entra em corte) ao mesmo tempo em que D5 fica diretamente polarizado e alimenta o Arduino. A queda de tensão de 0,7 V sobre D5 faz com que a tensão inicial fornecida pelo super capacitor completamente carregado seja de 9,9 V (10,6 – 0,7). Agora, à medida que o Arduino drena corrente do super capacitor, a tensão vai caindo em uma exponencial que tende a zero.

 O diodo D2 foi colocado mais por um capricho que por necessidade real. A intenção foi diminuir a variação de tensão quando o super capacitor entra em ação. Quando a alimentação de 12 V está ligada, temos VIN = 10,6 V. Quando a alimentação é desligada, o super capacitor entra em ação fornecendo 9,9 V. Uma diferença de 0,7 V entre um estado e o outro. Sem o diodo D2, esta variação seria de 1,4 V. O que não é realmente um problema. Além disso, o capacitor eletrolítico de 47µF/24V foi adicionado para suavizar a transição de tensão quando a alimentação pelo super capacitor é acionada.

 

Existe uma preocupação: quanto tempo leva para o super capacitor apresentar problemas devido ao uso continuado? Vamos descobrir na prática.

 

Testes com a Solução Proposta

 

Ensaio 1: Carga do Super Capacitor

Este primeiro ensaio foi feito para determinar o tempo de carga do super capacitor usando R1 = 68 Ω. Com o super capacitor completamente descarregado, foi ligada a alimentação de 12 V e se acompanhou a evolução da tensão, como mostrado na Figura 2. A linha azul (carga do capacitor) mostra a tensão sobre o capacitor (VCAP) e o momento aproximado em que esta chegou a 90% do valor máximo (9,5 V). A linha vermelha mostra a alimentação de 12 V. Note que as escalas verticais são diferentes:

  • A curva azul está com escala de 0 a 10 V;
  • A curva vermelha está com escala de 0 a 20 V;

Medimos 86 segundos para o super capacitor se carregar em 90% do valor máximo, que é de 10,6 V. O cálculo teórico indicou o tempo de carga de 78 segundos. Algo bem razoável!

 

Fig. 2. Tempo de carga do super capacitor, indicando 86 segundos para chegar em 90% da tensão de 10,6 V. A linha vermelha (em escala diferente) indica a alimentação de 12 V.

 

Isto significa que se o carro permanecer ligado por mais de 86 segundos, teremos uma excelente carga no super capacitor. É preciso lembrar que pela especificação do projeto, o Arduino se auto desliga e, por isso, nunca se exaure completamente a carga do super capacitor. Por isso, talvez 30 segundos de carro ligado já sejam suficientes. Faremos este ensaio quando as placas PCB chegarem da China e o circuito for montado.

 

Ensaio 2: Super Capacitor Trabalhando como back up de alimentação

Este ensaio foi feito para verificar o comportamento do super capacitor enquanto este supre energia para o circuito. O Arduino foi preparado com um programa elementar que apenas acende o led que está ligado ao pino 13 (led), ou seja, coloca esse pino em nível alto. Veja listagem logo abaixo.

 

Listagem 1

void setup() {

  pinMode(13,OUTPUT);     //Configurar pino 13 como saída

  digitalWrite(13,HIGH);      //Acender led (pino13 = HIGH)

  while(1);                           //Laço infinito

}

void loop() {}

 

O circuito da Figura 3 deixa claro os pontos do circuito que foram acompanhados com o osciloscópio. O Canal A (azul) mede a tensão sobre o super capacitor e o Canal B (vermelho) acompanha o estado do pino 13. Quando este pino vai a zero, significa que o Arduino desligou por falta de energia (Brownout). Para este ensaio, a alimentação de 12 V foi mantida durante um longo tempo de forma a garantir uma boa carga no super capacitor. Depois ela foi desligada e se disparou o osciloscópio.

 

Fig. 3. Conexão dos canais do osciloscópio para realizar medições enquanto o super capacitor sustenta a alimentação do Arduino.

 

A Figura 4 apresenta as medições realizadas.  A linha vertical mais à esquerda marca o instante em que a alimentação de 12 V foi cortada. Nota-se uma súbita queda na tensão VCAP (linha azul) e depois o decaimento exponencial esperado. A tensão sobre o pino 13 (linha vermelha), é claro, vai caindo à medida que a tensão VCAP cai. O limite parece ser VCAP = 5,4 V (VIN = 4,7 V). Quando VCAP chega em 5,4 V, como se pode constatar na figura, surge o comportamento errático do Arduino (oscilação da linha vermelha). A conclusão foi a de que o super capacitor conseguiu sustentar o Arduino por 23 segundos. Para termos uma margem de segurança, vamos considerar como limite VCAP = 6,0 V, o que resulta em 15 segundos, bem acima do mínimo (5,0 segundos) exigido pelo projeto.

 

Fig. 4. Resultado do ensaio para verificar quanto tempo o super capacitor é capaz de sustentar a alimentação do Arduino Mega.

 

Foi surpresa esse comportamento errático do Arduino Mega. Para melhor estudá-lo foi feita uma segunda medição usando uma janela de tempo maior, como mostrado na Figura 5. Constatamos o funcionamento por 24 segundos. A faixa considerada segura agora foi de 16 segundos. O comportamento errático durou 52 segundos, após o qual o Arduino se desligou definitivamente (Reset forçado por Brownout). Durante esta fase errática, se pode ver que o pino 13 ficou oscilando entre os dois níveis lógicos.

Como já foi comentado, esse comportamento pode ser explicado pela ação do super capacitor. Aparentemente, quando VCAP = 5,4 V (VIN = 4,7 V) o circuito de Brownout forçou o Reset do Arduino. Com o Arduino parado, o consumo de corrente caiu e a tensão no super capacitor subiu um pouco (5,7 V), o suficiente para desativar o Brownout e assim o Arduino voltou a funcionar, novamente drenando energia do super capacitor. O ciclo se repetiu até VCAP chegar em 5,1 V. É muito perigoso para o restante do circuito que o Arduino fique com este comportamento estranho durante 52 segundos. A solução deste problema é um benefício extra fornecido pelo recurso de auto desligamento do Arduino, visto no artigo anterior.

 

Figura 5. Resultado do ensaio para verificar duração do comportamento errático do Arduino quando a alimentação é fornecida pelo super capacitor.

 

A Figura 6 apresenta com mais detalhes o valor de VCAP (em azul) e a tensão sobre o pino 13 (em vermelho) durante o início desta fase errática. É possível ver que a tensão em VCAP sobe cada vez que o pino 13 vai a zero.

 

Fig. 6. Trecho da fase errática do Arduino medida com uma maior resolução temporal.

 

 Conclusão

Os ensaios comprovaram que o circuito proposto permitiu que o super capacitor, completamente carregado, sustentasse o Arduino de forma segura por aproximadamente 16 segundos. Ficou bem acima da exigência do projeto. Foi surpresa o comportamento errático do Arduino quando a tensão no super capacitor fica abaixo de 5,4 V. Felizmente, para este projeto, o circuito se auto desliga após 5 segundos. Evita-se assim esta fase errática do Arduino e a exaustão da carga do super capacitor. Fica a recomendação de que não é bom deixar o Arduino funcionar até a exaustão da carga do super capacitor.

 Em outro ensaio, que não está apresentado aqui, foi possível ver que apenas a presença do recurso para auto desligamento já era suficiente para evitar essa fase errática, pois quando o Arduino se desliga pela primeira vez, este circuito impede o religamento.

 

No próximo Blog vamos abordar a parte de proteção quando se usa a alimentação a partir do acendedor de cigarros do carro e uma forma de alertar quando a energia é desligada e ainda recurso para verificar a tensão no super capacitor.

 

Referências

[1] https://store.arduino.cc/usa/mega-2560-r3

[2] https://batteryuniversity.com/learn/article/whats_the_role_of_the_s...

 

 O autor recomenda o livro 

Exibições: 1430

Comentar

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

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

Comentário de Ricardo Zelenovsky em 17 fevereiro 2020 às 7:47

Oi Flavio Hernan, você tem razão.

Minha hipótese de 12V na tensão disponibilizada pelo carro é simplista. Uma solução seria substituir o diodo D1 por um regulador de 9V (7809) ou usar o LM317 para disponibilizar uma tensão que não sobrecarregasse o super capacitor. Obrigado.

Comentário de Flavio Hernan em 16 fevereiro 2020 às 22:59

A tensão do carro é variável, quando o motor estiver em funcionamento a tensão da bateria pode ficar entre 13,5V e 14,5V.

Também a queda de tensão dos diodos vai de 0,5V a 0,7V isso pode colocar em risco os super capacitores.

No pior caso você teria 13,5V sobre o super capacitor.

Comentário de José Gustavo Abreu Murta em 9 fevereiro 2020 às 12:29

Eu ainda não tenho super capacitores.

"O temor é que o super capacitor apresenta uma grande queda na tensão assim que entra em uso, como se pode ver na quarta figura deste Blog" 

Não sabia disso. Obrigado. 

Comentário de Ricardo Zelenovsky em 9 fevereiro 2020 às 10:16

Oi José Gustavo

Como estamos com o circuito sendo alimentado por um carro, o consumo do Arduino e o baixo desempenho de seu regulador  não foram motivos de preocupação. É boa a ideia de usar o super capacitor para sustentar os 5V. O temor é que o super capacitor apresenta uma grande queda na tensão assim que entra em uso, como se pode ver na quarta figura deste Blog. Seria então preciso carregá-lo com algo acima de 5V, digamos 7V ou 8V. Por isso preferi derivar a carga dos 12 V.

Como afirmei no Blog, fiz testes de bancada e tudo parece funcionar bem. Assim que meu PCB chegar da China farei ensaios no carro. A placa já estava à caminho antes da crise do Corona Virus. Porém, está demorando muito, já tenho 60 dias de espera. Começo a ficar em dúvida.

Obrigado pelos comentários.

Ricardo.

Comentário de José Gustavo Abreu Murta em 9 fevereiro 2020 às 9:22

Interessante projeto. Obrigado por compartilhar. 

Minha sugestão - mantenha o 5V com os super-capacitores.

O regulador linear interno do Arduino é pouco eficiente e perde energia. 

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço