Tutorial: Mostrar a Temperatura Ambiente com o Arduino em um display LCD 16x2

Este tutorial mostra uma maneira interessante de fazer a leitura da temperatura ambiente com o Arduino, e exibi-la em um display LCD 16x2 (em graus Celsius), utilizando conceitos básicos de sua programação e o sensor de temperatura LM35DZ.

Para isto, serão necessários os seguintes componentes:

- 1 placa Arduino

- 1 display LCD 16x2

- 1 potenciômetro de 10K

- 1 sensor de temperatura LM35

- Jumpers para conexão

Este sensor captura a temperatura externa e converte-a em um valor de tensão correspondente. No circuito, conectamos a saída Vo do sensor a porta analógica A0 do Arduino, que por sua vez, converte este sinal em um valor (float) de temperatura e assim, exibe no LCD. O potenciômetro de 10K ajusta o contraste do display.

 

A seguir, monte o circuito abaixo com o Arduino e os outros componentes:

 

Então, abra a IDE do Arduino e digite o seguinte código:

 

#include  <LiquidCrystal.h>         // Inclui a biblioteca para utilizar o LCD.

#define          sensor           0        // Define o pino A0 como “sensor”

 

int  Ventrada;           // Variável para ler o sinal do pino do Arduino

float  Temperatura; // Variável que recebe o valor convertido para temperatura.

 

LiquidCrystal  lcd    (12, 11, 5, 4, 3, 2); 

/* Esta função acima declara quais os pinos do Arduino serão utilizados para o controle do LCD */

 

void  setup()

{

  lcd.begin(16, 2);                            // Diz para o Arduino que o display é 16x2.

  lcd.print("Temperatura: ");           // Manda o texto para a tela do display

}

 

void  loop()

{

  Ventrada = analogRead (sensor);  /*  Manda o Arduino ler o pino e armazena

 o valor em “Ventrada”. */

  Temperatura=(500*Ventrada)/1023;  /* Converte o valor de tensão em

temperatura e armazena na variável “Temperatura” */

  lcd.setCursor(0, 1);           // Move o cursor do display para a segunda linha.

  lcd.print(Temperatura);    // Exibe o valor de temperatura no display.

  lcd.print(" C");         // Escreve “C” para dizer que a escala é Celsius.

 

  delay(1000); /* Aguarda 1 segundo para efetuar uma nova leitura de

temperatura. */

}

 

Finalmente, faça o Upload para o seu Arduino.

 

O seu projeto para indicar temperatura está pronto !!! Esperamos que tenha gostado. Qualquer dúvida, poste aqui mesmo.

Obs: o sensor LM35DZ converte temperaturas na faixa de -55ºC até 150ºC.

 

Para quem quiser, esta é a explicação para o cálculo de conversão de tensão para temperatura feita no software:

Neste sensor, para cada 1ºC recebido, sua saída é acrescida em 10mV, isto em uma faixa de 0 a 5V, com 10 bits de resolução para conversão Analógica/Digital (1024 valores diferentes para representar a temperatura). Assim, o valor máximo (1023, pois é de 0 a 1023) corresponderá aos 5V. A metade corresponderá a 511 ou 2,5V, e assim por diante. Para efeitos de cálculo, haveria 5V na saída do sensor para uma temperatura de 500ºC ( o que é diferente na prática). Porém, esta consideração nos permite generalizar isto para a seguinte regra de três:

Temperatura  ----- Ventrada

         500ºC  ----- 1023              (valores máximos)

 

Assim, teremos:

 

Temperatura = (500*Ventrada)/1023, e este valor é exibido no display.

 

Até a próxima !!!

 

Links de Referência:

- arduino.cc/en/Tutorial/LiquidCrystal

- LCD com o Arduino

- "Datasheet" do sensor LM35

 

Exibições: 9181

Tags: 16x2, Arduino, Display, Sensor, Temperatura, Tutorial., de

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de leandro claudino de araujo em 19 maio 2013 às 12:47

ola amigos, estou montando uma mini estufa de morangos, e gostaria de além de controla a temperatura, gostaria que quando chegasse a uma temperatura acima de x fosse ligado um modulo de rele onde ligara um cooler uma bomba de água e luz , variando a ligação desse modulo conforme a temperatura EX:

(temp. < 15°c)  ligar luz  

(temp. > 30°c)  ligar cooler

(humid. < 40%)  ligar ligar bomba de água 

arduino mega 2560

lcd 16x2

mudulo rele com 4 saídas

sensor DHT11

Comentário de Fabiano Anhaia em 13 abril 2013 às 1:39
Caros amigos preciso de ajuda. Eu preciso q o arduino leia temperaturas negativas, pois estou montando uma mini geladeira com celula peltier. Minhas duvidas são as seguintes:
1 a porta analógica do arduino lê tensão negativa?
2 com essa programação acima eu conseguiria ler temperaturas negativas ou precisaria ser feita alguma alteração?
Obs: eu li no datasheet do lm35 q para ler temperatura negativa eu preciso de uma fonte simétrica com tensão negativa.
Obrigado pela ajuda de todos.
Comentário de Pedro Henrique Fechener Waksman em 14 março 2013 às 16:30

as leituras negativas, pesquisando um pouco na internet, no site do arduino memso fala isso, vem da liguagem da programação quando estoura um inteiro ou conversão direta de valores tipo de float para inteiro as vezes da isso. Note que no exemplo eu troquei a funcao para float, assim elimina as leituras negativas. Bom eu acho que era isso, apesar do exemplo original do topico tambem está em Float.

Comentário de Pedro Henrique Fechener Waksman em 14 março 2013 às 16:26

só complementando, pra quem ainda ta iniciando e nao tem muito material ou nao entende muito dos termos mais tecnicos, como eu. Consegui estabilizar muito bem a conta fazendo uma média de 10 leituras (5 por segundo). A função que faz o calculo é a simplificação desta: "Leitura * 500 / 1023", simplificada por 20, resulta em: "(Leitura * 25) / 51.15"  o código ficou assim:

 

// include the library code:
#include <LiquidCrystal.h>

int voltas;
int valor;

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  Serial.begin(9600);
  voltas = 0;
  valor = 0;
 
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("Inicializando!");  
}

void loop() {
  if (voltas < 10){
    valor = valor + analogRead(A0);
    voltas = voltas + 1;
  }
 
  if (voltas == 10 ){
      float vLido = valor / 10;
      float temperatura = LeituraParaGraus(vLido);
      
      Serial.print("Teste 1: ");
      Serial.print(temperatura);
      Serial.println(" C");
      
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Temperatura: ");
      lcd.setCursor(0, 1);
      lcd.print(temperatura);
      lcd.print(" C");
      
      voltas = 0;
      valor = 0.00;
  }
 
  delay(200);        // delay in between reads for stability
}

float LeituraParaGraus(float Leitura){
  return (Leitura * 25) / 51.15;
}

Comentário de José Carlos dos Santos Jesus em 6 março 2013 às 23:18

Olá Pedro,

     Obrigado por sua resposta. Eu busquei um aparelho de estufa que indica a temperatura e a umidade relativa e tentei "calibrar" a fórmula de conversão em função deste aparelho e o resultado que mais aproximou foi mudar na fórmula o valor de 500 para 519.  Usei também uma biblioteca para o LM35 e plotei o resultados dos dois métodos lado a lado no LCD.  Descobri que você colocar um capacitor de 100 pF entre  os pinos Gnd e +VS do LM35  reduzir os ruídos e estabiliza mais as leituras da temperatura.

Comentário de Pedro Henrique Fechener Waksman em 6 março 2013 às 22:42

Se eu nao entendi errado, quando voce liga ele, ele fica meio "doido", lendo temperaturas meio fora, tipo, -20, depois 22 mas ai estabiliza. Reparei tambem que a voltagem fornecida nao sai precisa, baixei o valor da multiplicacao de 500 para 430 ficou perfeito, ta identico ao que mostra no AR aqui. :)

Comentário de José Carlos dos Santos Jesus em 4 março 2013 às 8:54

Prezados companheiros,

        Eu sou novato em arduido apesar de ser velhos com eletrônica e programação. Eu ao montar este experimento no arduino obtive um resultado curioso. Tudo funcionou perfeitamente com exceção do valor da temperatura ambiente mostrada na tela de LCD.  Sempre mostra uma temperatura acima da realidade. Já verifiquei a fórmula de conversão de tensão para temperatura e na programação do arduino me parece que tudo esta perfeito.  

       Alguém com mais experiência pode me dar uma dica do que esta acontecendo?

Um abraço a todos

José Carlos

Comentário de Sydney Vianna Pinto Júnior em 22 dezembro 2012 às 1:44

Se substituir:

Temperatura=(500*Ventrada)/1023

por: 

Temperatura= (Ventrada* 0.0049);
Temperatura= Temperatura*100;

A temperatura será mostrada com mais precisão.

:)

Comentário de Ricardo H.P. Barroso em 12 outubro 2012 às 0:07

como é feita a conexão com o LCD, na imagem ele parece esta solto ?

Comentário de danilo carnielo em 2 outubro 2012 às 12:44

obrigado pela dia mais tambem conseguimos mostrar hora ee temperatura, ex: mostra hora e temperatura.

tenho um relogio aqui apenas parte eletronica com led e gostaria de colocar Arduino junto pra funcionar.

Publicidade

Convide um amigo para o Lab!

 Loja Lab de Garagem

Novo!

Garagino Rev1

Por: R$ 29,00

Ou em até 6x de

R$ 5,18 

Servo - Motor Grande - 360º

Por: R$ 57,00

Ou em até 13x de

R$ 5,02

 

Starter Kit

(com Arduino Uno REV3 Original)

Por: R$  149,00

Ou em até 18x de

R$ 9,93

Kit Completo de Ferramentas - Avançado

Por: R$ 540,00

Ou em até 18x de

R$ 35,99

© 2013   Criado por Marcelo Rodrigues.

Badges  |  Relatar um incidente  |  Termos de serviço