Neste post vamos ver como fazer um voltímetro digital com display lcd e um Arduino Uno. No caso apresentado será feito uma leitura de 0 a 5 V, que é o valor máximo suportado pela entrada analógica do microcontrolador.
No vídeo abaixo é mostrado o passo a passo de como ligar o Arduino ao display e o código fonte para. Foi utilizado o Tinkercad para simulação e testes do circuito.
Código
Abaixo é apresentado o código utilizado para leitura do AD.
// include the library code:
#include <LiquidCrystal.h>
float read = 0;
float volt = 0;
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 13, en = 11, d4 = 7, d5 = 6, d6 = 5, d7 = 4;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("Voltimetro");
}
void loop() {
read = analogRead(A0);
volt = read * 0.00488759;
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(volt);
lcd.setCursor(4, 1);
// print the number of seconds since reset:
lcd.print("V");
}
Leitura de outras faixa de tensão
Uma dúvida que pode surgir é como fazer a leitura de tensões maiores do que 5 Volts?
Para isso devemos usar circuitos divisores de tensão e limitar a tensão de saída em 5 Volts ou um pouco abaixo de 5 Volts, de forma a não danificar a entrada do conversor do microcontrolador.
Abaixo é apresentado um exemplo de circuito divisor de tensão para ler tensões de 0 a 24 Volts.
Neste circuito é importante utilizar resistores de precisão para não afetar a leitura do AD, e também será necessário recalcular o valor de saída que será mostrado no display LCD.
Abaixo é mostrado a linha de código com a alteração para leitura de tensão até 24 V.
void loop() {
read = analogRead(A0);
volt = read * 0.02387;
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(volt);
lcd.setCursor(5, 1);
// print the number of seconds since reset:
lcd.print("V");
}
Para encontrar o valor da variável volt, basta dividir a o valor da tensão de 24 Volts por 1023. Para ajustar o valor correto, use um multímetro digital e compare o valor da leitura do multímetro com o valor mostrado no display do Arduino.
Neste caso é importante notar que quando aumentamos a tensão máxima de leitura, o valor da tensão por bit também aumenta. Para melhorar isso é necessário utilizar um conversor com uma resolução maior.
Simulação
Abaixo é possível simular o circuito:
Conclusão
Neste post vimos como usar o conversor AD do Arduino para fazer leitura de tensão, e vimos como ler tensões maiores usando circuito divisores de tensão.
Não foram explorados outros tópicos importantes sobre conversores AD, como a taxa de amostragem, que pode ser algo crítico dependendo do projeto.
Abaixo segue link para documentação do display LCD do Arduino e para calculadora onde é possível projetar circuito divisores de tensão com mais facilidade.