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:
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
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
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).

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
}#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:

https://www.arduino.cc/reference/pt/language/functions/analog-io/analogread/
http://hyperphysics.phy-astr.gsu.edu/hbase/electric/voldiv.html
https://adrianoaoli.com/eletronica/calculadora-resistores-em-paralelo.html
|
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!