Olá pessoal, em meu primeiro post aqui no blog irei ensinar
como fazer um leitor de tensão utilizando o arduino e além da leitura serial,
ele mostra os valores num display 5110 da nokia com uma barra de progresso (Bar
Graph).
Material necessário:
1 – Um Arduino, qualquer modelo.
2 – Um display do nokia 5110 Vermelho.
3 – Um potenciômetro de 10k (opcional).
Pra que vai servir?
Medir tensões de 0 a 5Volts, como se fosse um multi teste.
Atenção, o arduino só suporta tensões de até 5V no máximo,
não insira tensões maiores que essa na sua entrada analógica.
Primeiro passo: Ligar as entradas.
Nós podemos ligar a entrada de tensão em uma fonte, em
pilhas, baterias ou na própria saída do arduino. Nesse exemplo vamos utilizar a
saída do arduino.
Caso você não tenha um potenciômetro, coloque um fio saindo
do 5V ou do 3,3V do arduino diretamente para a porta analógica A0.
Se você for medir a tensão de uma pilha ou bateria, ligue o
polo positivo na porta A0 e o negativo no GND do arduino.
Caso você tenha um potenciômetro B10K, ligue da seguinte
forma:
Segundo passo: o código.
Vamos preparar o arduino para a leitura serial de tensão.
Pronto, com esse simples código já temos um leitor com saída
pela serial, faça o teste antes dos próximos passos.
Terceiro passo: Incluir o display.
Esse display além de muito útil e simples é também muito
barato, até mais que um 16x2. Com ele podemos fazer pequenos desenhos e
apresentar textos na tela. Ele era utilizado nos extintos celulares da nokia
modelo 5110, hoje ele é amplamente utilizado em conjunto com o arduino.
Link do Datasheet:
https://www.sparkfun.com/datasheets/LCD/Monochrome/Nokia5110.pdf
Download biblioteca LCD5110_graph.h:
http://www.rinkydinkelectronics.com/library.php?id=47
Download biblioteca LCD5110_graph.h:
http://www.rinkydinkelectronics.com/library.php?id=47
Ligação do display:
// SCLK
- Pin 3 (clock)
// MOSI - Pin 4 (DN<MOSI>)
// DC
- Pin 5 (D/C)
// RST
- Pin 6 (reset)
// CS - Pin 7 (SCE)
Essas são as portas de comunicação e precisam ser declaradas
no código, as demais não precisam, ligue-as da seguinte forma:
// Led – 3,3V
com um resistor para led, pode ser o de 470 ohms.
// VCC – 3,3V
(Atenção, não ligue em 5V)
// GND – GND
do arduino (terra).
Resultado:
Mais detalhes nos comentários do código abaixo:
| ||
//parcerias: | ||
//http://viciadosemarduino.blogspot.com.br/ | ||
//http://sttamp.com/loja | ||
// | ||
//Versão original do código: | ||
//http://educ8s.tv/LightMeter/SimpleLDR.ino | ||
//https://www.youtube.com/watch?v=gauKjcuN2K4 | ||
// | ||
// Leitor de tensão utilizando arduino + display nokia 5110 VERMELHO + potênciometro 10k. | ||
// | ||
//download biblioteca LCD5110_graph.h: | ||
//http://www.rinkydinkelectronics.com/library.php?id=47 | ||
// | ||
// Ligue os pinos do lcd dessa maneira: | ||
// SCK - Pin 3 | ||
// MOSI - Pin 4 | ||
// DC - Pin 5 | ||
// RST - Pin 6 | ||
// CS - Pin 7 | ||
// | ||
#include <LCD5110_Graph.h> // inclui a biblioteca do display 5110 | ||
LCD5110 myGLCD(3,4,5,6,7); // define a sequência de ligação do display | ||
extern unsigned char SmallFont[]; // define tamanho da fonte | ||
extern unsigned char TinyFont[]; | ||
int Tenpin = A0; // cria variavel de leitura na porta A0 | ||
char tenstring [6]; // define tamanho da string | ||
String str; | ||
int tensao = 0; | ||
double val; // cria variavel val | ||
double vall;// cria variavel vall | ||
void setup(){ | ||
myGLCD.InitLCD(); | ||
myGLCD.setFont(SmallFont); | ||
Serial.begin(9600); // inicia comunicação serial | ||
pinMode(A0,INPUT); // define porta analogica A0 como a entrada da leitura | ||
} | ||
void loop(){ | ||
val = analogRead(A0); // Realiza a leitura | ||
Serial.print("Tensao :"); // imprime a palavra tensão | ||
vall = (val* 5.00/1023.00); // transforma leitura de bits para volts | ||
Serial.println(vall); // imprime vall, valor já em volts | ||
delay(1000); // tempo de aguardo até a proxima leitura, em milisegundos | ||
myGLCD.clrScr(); // limpa lcd | ||
myGLCD.update(); // atualiza lcd | ||
tensao = analogRead(Tenpin); | ||
tensao = map(val, 0, 1023, 0, 255); // define a relação entre bits de entrada e de saida no display | ||
str = String(vall)+"V"; // imprime na tela o valor em volts + a letra V | ||
str.toCharArray(tenstring,6); // define o tamanho da string d voltagem | ||
myGLCD.print("Tensao",CENTER,5); // define localização da palavra tensão (5 é a linha onde inicia) | ||
myGLCD.print(tenstring,CENTER,15); // define localização tensão lida (15 é a linha onde inicia) | ||
//inicia processo de impressão da barra | ||
printBar(); | ||
fillBar(tensao); | ||
myGLCD.update(); | ||
delay(100); | ||
} | ||
void printBar() //imprimindo a barra | ||
{ | ||
myGLCD.drawRect(0, 35, 63, 40); // ponto de inicio, borda de cima, comprimento total de pixels, borda de baixo | ||
myGLCD.update(); | ||
} | ||
void fillBar(int percent) | ||
{ | ||
percent = map(percent, 0, 1023, 0, 255); // relação da porcentagem de volts por pixels da barra | ||
myGLCD.drawLine(1, 36, percent, 36); //define as ultimas linhas do display para exibir a barra de porcentagem | ||
myGLCD.drawLine(1, 37, percent, 37); // onde 1 é a coluna de inicio, 36,37,38 e 39 são as linhas. | ||
myGLCD.drawLine(1, 38, percent, 38); | ||
myGLCD.drawLine(1, 39, percent, 39); | ||
} |
Nenhum comentário:
Postar um comentário