



Neste tutorial, veremos a aplicação do Display LCD (Liquid Crystal Display, em inglês) usado para representar um medidor de temperatura que será dado pelo LM35. Para deixar o projeto mais visual possível, utilizaremos também 2 LED’s para indiciar se a temperatura está acima ou abaixo da temperatura padrão.
Veja só o protótipo final montado:




Você irá precisar de:
Sabemos que existem diversos outros sensores no mercado. Então, porque utilizamos o sensor LM35 neste tutorial? E qual a diferença deste componente para os outros existentes?
O LM35 é um CI de baixo custo e de baixa tensão que requer uma fonte de alimentação de +4 VDC a +20 VDC. Isso é ideal porque podemos alimentar o sensor com a saída de +5 V do Arduino. Sua acurácia para 25°C é ± 0.4 (vide datasheet) enquanto que, à -10 °C o sensor pode variar em ± 0.5 na medição.
Já a pinagem do componente, o LM35 possui apenas 3 pinos, 2 para a fonte de alimentação e um para a saída analógica. O pino de saída fornece uma saída de tensão analógica que é linearmente proporcional à temperatura em graus Celsius.
Segue abaixo ilustração dos pinos:

O circuito do medidor de temperatura que construímos está mostrado abaixo:


Tensão no pino em MiliVolts = (leitura do ADC) * (5000/1024) Esta fórmula converte o número 0-1023 do ADC em 0-5000Mv (= 5V)
Se estiver usando um Arduino de 3,3 V, você terá que escrever esta fórmula:Tensão no pino em MiliVolts = (leitura do ADC) * (3300/1024) Esta fórmula converte o número 0-1023 do ADC em 0-3300Mv (= 3,3V)
Então, para converter milivolts em temperatura, use esta fórmula:Temperatura °C = [(tensão analógica em Mv) – 500] / 10
temperatura = (tensao) * 100.0
onde, tensao = (valorSensor/1024.0)*5.0
Ou seja, para uma tensão de 0.29 volts teríamos um valor de 29° C. Para converter a temperatura em °C para Fahrenheit, basta fazer:Temp em °F = (temperatura*9)/5 + 32;
No entanto, não precisa se preocupar com os cálculos pois eles estão todos prontos no código para você usar em seu projeto./*
Projeto Medidor de Temperatura Eletrogate
Tutorial programando um sensor de temperatura LM35 e um display LCD
Criado por Flávio Babos (https://flaviobabos.com.br/arduino/)
*/
//Inclua a biblioteca do LCD
#include <LiquidCrystal.h>
//Defina as portas do Arduino para cada pino do LCD
const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
//Defina a temperaturaC ambiente do lugar em que estiver para que as LED's acendam com base nisso
int tempPadrao = 24;
//Array que desenha o simbolo de grau
byte a[8]= {B00110,B01001,B00110,B00000,B00000,B00000,B00000,B00000,};
//declare a variável de leitura do sensor
const int sensorLM35 = A0;
int i;
float temperaturaC = 0;
void setup() {
//Inicializa comunicação serial
Serial.begin(9600);
//Método de percorrer os pinos e ao mesmo tempo declara-los como saída
for(i=8; i<12; i++){
pinMode(i, OUTPUT);
}
//Inicializa o LCD e posteriormente exibe a temperaturaC e a tensão
lcd.begin(16, 2);
lcd.print("Temp: ");
lcd.setCursor(0, 2);
lcd.print("Tensao: ");
lcd.setCursor(12, 2);
lcd.print("V");
//Atribui a "1" o valor do array "A", que desenha o simbolo de grau
lcd.createChar(1, a);
//Coloca o cursor na coluna 7, linha 1
lcd.setCursor(10,0);
//Escreve o simbolo de grau
lcd.write(1);
}
void loop() {
//Variável que faz a leitura do sensor
int valorSensor = analogRead(sensorLM35);
//Conversao da leitura do sensor em tensão V
float tensao = (valorSensor/1024.0)*5.0;
//Divide a variavel temperaturaC por 8, para obter precisão na medição
temperaturaC = (tensao) * 100.0;
//Conversão de Celsius para Fahrenheit
float temperaturaF = (temperaturaC*9)/5 + 32;
//mostra no monitor serial o valor lido
Serial.print("Valor do sensor: ");
Serial. print(valorSensor);
//Mostra no monitor serial a tensão lida
Serial.print(", Tensao (V): ");
Serial.print(tensao);
//Mostra no monitor serial os graus lidos
Serial.print(", Celsius: ");
Serial.print(temperaturaC);
//Printa no serial monitor o valor convertido
Serial.print(", Fahrenheit: ");
Serial.println(temperaturaF);
delay(100);
lcd.setCursor(6, 0);
//Escreve no display o valor da temperaturaC
lcd.print(temperaturaC,1);
lcd.setCursor(8, 1);
//Escreve no display o valor da tensão
lcd.print(tensao,2);
if(temperaturaC < tempPadrao){ //se a temperaturaC lida for inferior a 27 °C
digitalWrite(10, HIGH); //apaga led da porta 10
digitalWrite(11, LOW); //apaga led da porta 11
}else if(temperaturaC >= tempPadrao){ //se a temperaturaC lida estiver entre 27 ºC e 31 ºC
digitalWrite(10, HIGH); //acende led da porta 10
digitalWrite(11, HIGH); //apaga led da porta 11
delay(1000);
}
}
A programação passo a passo do medidor de temperatura
Defina as portas do LCD a serem usadas
const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd(rs, en, d4, d5, d6, d7);Use esta imagem como parâmetro para fazer as ligações em seu componente:

int tempPadrao = 24;
byte a[8]= {B00110,B01001,B00110,B00000,B00000,B00000,B00000,B00000,};
const int sensorLM35 = A0;
int i;
float temperaturaC = 0;
Essas são as variáveis universais declaradas antes do setup (). Para a temperatura que está representando o ambiente (no caso utilizamos 24 °C), faça a primeira medição e adeque o valor de acordo com a temperatura do ambiente em que estiver e alterando, posteriormente, a variável tempPadrao.
Já para desenhar o caractere de grau “°”, declare uma variável byte e defina-a como um array “a” de 8 elementos.
Além disso, não se esqueça de determinar a porta que o seu LM35 estiver conectado e defina-o como leitura const int. Ademais declare a variável temperatura como float.
Setup de inicialização
void setup() {
Serial.begin(9600);
for(i=8; i<12; i++){
pinMode(i, OUTPUT);
}
Inicie a comunicação serial em 9600 e declare os pinos utilizados aqui como OUTPUT em um laço de repetição for para economizar linha de código e otimizar sua programação.
Leitura do LCD
lcd.begin(16, 2);
lcd.print("Temp: ");
lcd.setCursor(0, 2);
lcd.print("Tensao: ");
lcd.setCursor(12, 2);
lcd.print("V");
lcd.createChar(1, a);
lcd.setCursor(10,0);
lcd.write(1);
}
Inicialize o LCD de forma a exibir a temperatura e a tensão coletada do sensor. Da mesma forma, escreva os símbolos de medição que representam o grau e a tensão (V).
Loop do programa
void loop() {
int valorSensor = analogRead(sensorLM35);
float tensao = (valorSensor/1024.0)*5.0;
temperaturaC = (tensao) * 100.0;
float temperaturaF = (temperaturaC*9)/5 + 32;
É aqui que o código irá: coletar as informações do sensor em valorSensor, transformar o valor lido em uma tensão, fazer a conversão de tensão em temperatura °C e transformar essa temperatura em °F.
Monitor Serial
Serial.print("Valor do sensor: ");
Serial. print(valorSensor);
Serial.print(", Tensao (V): ");
Serial.print(tensao);
Serial.print(", Celsius: ");
Serial.print(temperaturaC);
Serial.print(", Fahrenheit: ");
Serial.println(temperaturaF);
delay(100);
Essas linhas de comando são escritas para você poder acompanhar as leituras exibidas na tela do seu computador e validar as leituras exibidas no LCD e LED’s.
Os valores deverão aparecer da seguinte forma em seu monitor serial:

lcd.setCursor(6, 0); lcd.print(temperaturaC,1); lcd.setCursor(8, 1); lcd.print(tensao,2);Já essas linhas de código são cruciais para exibir, no display, a temperatura até então calculada e a tensão gerada pelo sensor. Para fazer isso use lcd.setCursor(coluna, linha) onde o primeiro atributo se refere a coluna e o segundo a linha do LCD. Acendendo os LED’s
if(temperaturaC < tempPadrao){
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
}else if(temperaturaC >= tempPadrao){
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
delay(1000);
}
}
Agora entra em jogo a temperatura padrão que você definiu no começo no código. Para nós aqui da eletrogate, a temperatura está em 27 °C mas para você, essa temperatura pode variar para mais ou para menos. Portanto, certifique-se de que a temperatura ambiente esteja condizente e use condicional if () para acender/apagar seus LED’s.

Hoje aprendemos a construir um sistema de medição da temperatura ambiente e da temperatura corporal com um display LCD e um LM35. Nesse sentido, para ajudar você na sua caminhada de programação, recomendamos utilizar o mapa mental abaixo que contém as principais funções utilizadas nos códigos do Arduino IDE:

|
Neste tutorial, veremos a aplicação do Display LCD (Liquid Crystal Display, em inglês) usado para representar um medidor de temperatura que será dado pelo LM35. Para deixar o projeto mais visual possível, utilizaremos também 2 LED’s para indiciar se a temperatura está acima ou abaixo da temperatura padrão.
Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200