Tutoriais

Voltímetro e Medidor Gráfico de Bateria com Arduino

Eletrogate 9 de maio de 2024

Introdução

No post de hoje, iremos fazer um Voltímetro com medidor de nível bateria! Para seu funcionamento, o projeto utiliza os conceitos de um divisor de tensão. Acompanhe a leitura:

O que é um Voltímetro?

Um voltímetro é um instrumento que mede a diferença de potencial (DDP) entre dois pontos distintos de um circuito elétrico. A DDP é o que nós chamamos comumente de Tensão.

Voltímetro analógico

Nesse momento você pode estar se perguntando “mas, e o multímetro? Também não mede tensão?”

Sim! Mas com uma pequena diferença: o multímetro é um equipamento capaz de medir diversas grandezas, como corrente, resistência, e até mesmo capacitância (em alguns modelos), além, é claro, da tensão. Quando um equipamento mede apenas uma grandeza, como a tensão, por exemplo, damos o nome de voltímetro (para aqueles que medem apenas corrente ou resistência, damos o nome de amperímetro e ohmímetro, respectivamente).

Fonte: mundoeducacao.uol.com.br

O que é um Divisor de Tensão?

Em um circuito elétrico, um divisor de tensão é um circuito baseado em dois resistores em série, afim de obter um nível específico da tensão em que o circuito é alimentado (Tensão de entrada).

Para isso, temos essa fórmula:

Diagrama de um circuito divisor de tensão:

Fonte: khanacademy


Como fazer o cálculo dos resistores e da tensão máxima de entrada

Para fazer o cálculo dos resistores que iremos utilizar, basta utilizar a fórmula apresentada acima.

*Lembre-se que Vsaída pode ser no máximo 5 volts, pois é o máximo de tensão que o Arduino pode receber como entrada, sem danificar a placa.

Nesse caso, utilizamos um resistor de 1kOhms e um de 330Ohms. Ficando assim:

Você também pode manipular os valores de resistores para utilizar faixas maiores de tensão, obedecendo sempre a tensão máxima de saída de 5 volts (qualquer valor acima disso poderá danificar o Arduino permanentemente).

 


Diagrama do circuito e código

Diagrama esquemático:

Código utilizado:

Importante: como estamos utilizando um display OLED 128×64, será preciso incluir a biblioteca “Adafruit SSD1306”. Você a encontra no gerenciador de bibliotecas da IDE.

//inclui a biblioteca necessária
#include <Adafruit_SSD1306.h>

//define o tamanho, o endereço e o tipo de display utilizado
#define SCREEN_WIDTH 128 
#define SCREEN_HEIGHT 64 
#define OLED_RESET -1 
#define SCREEN_ADDRESS 0x3C 
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// variáveis para o controle do projeto
#define vmax   20.0    // máximo de tensão que pode ser colocada no circuito
#define Vbat 9       //tensao que a bateria deve ter quando estiver totalmente carregada  
int x = 0;

float     tensao = 0.0;   //armazena a tensão lida
 
void setup()
{
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // declara o endereço do display
  display.clearDisplay(); //limpa o display
} 


void loop()
{
  
  tensao = (analogRead(A1)*vmax)/1023.0; //define o valor da variavel tensao
  
  //desenha no display todos os valores necessários
  display.clearDisplay();
  display.fillRect(0, 0, 128, 15, WHITE); 
  display.drawLine(64, 15, 64, 64, WHITE);
  display.drawLine(64, 0, 64, 15, BLACK);
  display.setTextSize(1);
  display.setTextColor(BLACK,WHITE); 
  display.setCursor(8,4); 
  display.print("Tensao");
  display.setTextSize(1);
  display.setTextColor(BLACK,WHITE); 
  display.setCursor(70,4); 
  display.print("Nivel");
  display.setTextSize(2); 
  display.setTextColor(1); 
  display.setCursor(2,30); 
  display.print(tensao); // escreve no display a tensão lida pelo arduino
  display.setTextSize(2); 
  display.setTextColor(1); 
  display.setCursor(51,30); 
  display.print("V");
  display.setTextSize(2); 
  display.setTextColor(1); 
  display.setCursor(70,30); 
  display.print(x);       // escreve no display a porcentagem da bateria de acordo com a tensão lida
  display.setTextSize(2); 
  display.setTextColor(1); 
  display.setCursor(100,30); 
  display.print("%");
  display.display();
  
  delay(800);

  x = 100*tensao/Vbat; // calcula a porcentagem da bateria de acordo com a tensão lida e com a tensão que a bateria deve ter quando carregada
  
}

Explicações do código

#define Vbat 9

Nessa linha, é muito importante que você altere o valor “9”, pelo valor da bateria que você irá medir.
Por exemplo, como foi utilizada uma bateria de 9 volts, os trechos do código onde “vbat” é usado, também recebem o valor 9. Se fosse utilizada uma pilha de 1,5 volts, seria necessário mudar o valor para 1.5 (sempre utilizando ponto ao invés de vírgula).

tensao = (analogRead(A1)*vmax)/1023.0;

Aqui, a variável “tensao” é dada pela leitura da porta analógica A1, e assim é multiplicada pelo valor da Tensão de entrada (informada acima). Esse valor deve ser dividido por 1023, que corresponde ao valor máximo mapeado pelo Arduino nas portas analógicas.

x = 100*tensao/batcar;

X é o valor em % do nível da bateria. Ele é calculado utilizando a seguinte regra de 3:

 


Sobre o Autor


Arthur Almeida

Estudante do Ensino médio, aficionado por criar novos projetos eletrônicos e automações, principalmente com o Arduino. No meu tempo livre eu gosto de pesquisar sobre novas tecnologias e tento criar projetos com elas.


Eletrogate

9 de maio de 2024

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!

Eletrogate Robô

Assine nossa newsletter e
receba  10% OFF  na sua
primeira compra!