Sensor de Nível de Carga de Bateria com Arduino

Uma das grandes preocupações em um projeto que será alimentado por baterias é saber justamente quando estas estão prestes a descarregar. Existe uma forma simples de mensurar isso, então, vamos à prática.

Figura 1 - Nível de bateria e Arduino

O sensor

Existem algumas informações que são cruciais para montar esse circuito, a primeira são as propriedades da bateria em uso, por exemplo, para esse experimento usaremos duas baterias de chumbo ácido seladas de 6 V, capacidade de 4.5 Ah, em flutuação de 6.75 a 6.90 V, em cíclico de 7.05 a 7.2 V, cada. Como serão duas baterias em série, os valores que usaremos são de 12 V, capacidade de 4.5 Ah, em flutuação de 13.5 a 13.8 V, em cíclico de 14.1 a 14.4 V, total.

Na outra ponta, utilizaremos uma porta analógica do Arduino, que no caso do Arduino Uno, operam em uma resolução de 10 bits e 5 V.

Figura 2 - Esquema de um Divisor de Tensão e sua fórmula

O sensor em si, consiste em um divisor de tensão, como observado na Figura 2, é um simples arranjo de dois resistores e a capacidade de leitura da tensão entre eles. Essa tensão de saída (V_OUT) será sempre uma fração da tensão de entrada (V_IN) em relação aos valores dos resistores R1 e R2.

A primeira precaução que devemos tomar é que o valor de V_OUT nunca ultrapasse o valor de 5 V, que é limite de operação da porta analógica do Arduino. Então primeiro devemos encontrar uma razão desse valor na tensão da bateria que usaremos, mas não a tensão nominal da bateria, que é de 12 V. Por segurança usaremos o valor máximo que a bateria pode atingir quando carregada ou em variação de tensão, que é de 14.4 V, aqui vamos arredondar (Sempre para cima) para 15 V.

Sendo assim, a razão é 3 (15V / 5V = 3). No entanto, por máxima precaução, já que um erro vai causar danos ao Arduino, usaremos 4 como razão.

Figura 3 - Circuito parcialmente montado

Observe na Figura 3 que utilizamos um CI (Circuito Integrado), o L7805, um regulador de tensão, e dois capacitores cerâmicos, C1 (0.33 uF) e C2 (0.1 uF), estes três elementos servem apenas para transformar a tensão de 12 V que chega da bateria, em 5 V, e assim alimentar o Arduino. Sendo assim, explicações mais detalhadas sobre eles estão fora do nosso escopo.

Para simplificarmos o entendimento, utilizaremos 4 (Nossa razão calculada) diferentes resistores de 1 MR cada (Continue lendo e entenda o porquê de 1 MR). Se, calcularmos, utilizando a fórmula do divisor de tensão, a tensão resultante (V_OUT) em cada um dos pontos P1, P2, P3, P4 e P5, teriamos (Lembre-se que resistores em série tem seu valor somado):
  1. Vout = R2 / R1 + R2 * Vin => Vout = 4000000R / (0R + 4000000R) * 12V => Vout = 12V
  2. Vout = R2 / R1 + R2 * Vin => Vout = 3000000R / (1000000R + 3000000R) * 12V => Vout = 9V
  3. Vout = R2 / R1 + R2 * Vin => Vout = 2000000R / (2000000R + 2000000R) * 12V => Vout = 6V
  4. Vout = R2 / R1 + R2 * Vin => Vout = 1000000R / (3000000R + 1000000R) * 12V => Vout = 3V
  5. Vout = R2 / R1 + R2 * Vin => Vout = 0R / (4000000R + 0R) * 12V => Vout = 0V
Note que tudo se trata de um jogo de balancear os valores dos resistores para R1 ou R2, e para nossas necessidades, faremos a leitura em P4, que terá uma leitura de tensão em no máximo 3 V, como mostra o cálculo, e os valores de R1 e R2 são 3 MR e 1 MR, respectivamente.

O circuito

Então já temos a lista de materiais:
  • 1x - Arduino
  • 2x - Bateria de Chumbo Ácido Selada de 6V
  • 1x - CI L7805
  • 1x - Capacitor de cerâmica de 0.33 uF
  • 2x - Capacitor de cerâmica de 0.1 uF (Continue lendo e entenda o porquê de 2x)
  • 4x - Resistores de 1 MR
Figura 4 - Circuito montado

Chegou a hora de abordarmos os dois pontos que ficam sem explicação, o primeiro é o porquê dos resistores de 1 MR. O valor dos resistores foram escolhidos em função da drenagem de corrente, que naturalmente ocorre no nosso sistema de medição nível de carga. Note que poderiam ser 4 resistores de 5 KR, ou 4 de 1 KR, ou 4 de 330 R, ou até mesmo 4 de 1 R, já que para o cálculo do divisor de tensão, o resultado final seria o mesmo, calcule você mesmo. O que muda é a quantidade de corrente que seria perdida nesse sistema. Veja, por exemplo, se fossem 4 resistores de 1KR, segundo a Lei de Ohm, a perda seria: U = R * i => 12V = 4000R * i => i = 12V / 4000R => i = 3mA; de 3 mA constantes, mas como escolhemos 4 resistores de 1 MR, temos: U = R * i => 12V = 4000000R * i => i = 12V / 4000R => i = 0.003 mA; 0.003 mA de perda constante. Então, 0.003 mA, em especial para uma bateria com as características que estamos utilizando (4.5 Ah de capacidade), é um valor muito bom. Poderíamos usar resistores de 10 MR (Seria 0.0003 mA) se fossemos utilizar baterias com pouca capacidade.

No entanto, existem limites para uso dos resistores. Para baixo, se utilizássemos resistores muito pequenos, perderíamos mais corrente e a depender do tipo, danificar a própria bateria, já que cada tipo possui uma limite máximo de drenagem de corrente (Da nossa é 45 A/5s). Para cima, usar resistores muito grandes, teremos problemas com a capacidade de leitura por parte do Arduino.

Segundo o Datasheet do ATmega328 (Usado no Arduino Uno, por exemplo) recomenda-se que a impedância de saída do circuito conectado ao pino de entrada analógico, seja de até 10 KR para a leitura de bons resultados. Valores mais altos, como demonstrado no paragrafo anterior, fornecem menos corrente, e assim afeta o poder de carregar o Capacitor de Amostra e Retenção que é ligado ao pino analógico. Significa que o tempo para o ADC (Analog to Digital Converter | Conversor do Analógico para o Digital) relatar um valor estável, será maior, afetando assim a capacidade de obter leituras na frequência ou momento desejado.

Há também a corrente de fuga de cada pino (Analógicos e Digitais), segundo o Datasheet, é de cerca ±0.001 mA. Significa que nosso divisor de tensão, com 4 resistores de 1 MR, não somente levará mais tempo para ser lido, como também pode não ser preciso ou nunca ser lido com precisão, não importando quanto tempo esperemos ou a frequência repitamos a medição.

É por isso que entra em cena o capacitor C3 (0.1 uF) em paralelo ao menor resistor (R2), com a função de auxiliar ao Capacitor de Amostra e Retenção e filtrar o efeito de capacitância parasítica que pode afetar as outras portas analógicas.

Creio já ter ficado claro, mas não custa nada ressaltar, esse circuito foi montado para ler o nível de carga de uma bateria de 12 V, utilizando o Arduino. Baterias de outras tensões, especialmente para maiores tensões, requerem diferentes configurações.

O Código

Para a Vout já temos toda a informação necessária para calcular seu valor, sendo esta apenas uma relação proporcional entre o máximo de tensão que chegará na porta (3V, como calculado), em relação aos 5 V máximos da porta analógica, dividida em uma resolução de 1024 pontos.

Para o Vin, basta aplicar a fórmula do divisor de tensão. Por fim, sabendo a capacidade nominal da bateria (12 V) e o que está propriamente sendo lido dela (Vin), é possível calcular a porcentagem de carga da bateria.
Sensor de Nível de Carga de Bateria com Arduino Sensor de Nível de Carga de Bateria com Arduino Reviewed by AJ Alves on quarta-feira, janeiro 20, 2016 Rating: 5

Nenhum comentário:

Tecnologia do Blogger.