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