sexta-feira, 18 de julho de 2025

2EL - B - Projeto 10 - Medidor de temperatura com LM35 e Arduìno

P10 – MEDIDOR DE     TEMPERATURALEONARDO HENRIQUE ARAUJO, MARIA FERNANDA VARUSSA DOS SANTOS, VICTOR GABRIEL MARTINS SILVA SOUZA e WESLEY DE OLIVEIRA PIRES

 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.
Este projeto te possibilita fazer medições em qualquer ambiente que estiver, do seu próprio corpo e de objetos ao seu redor (aproxime um isqueiro no sensor e veja como a temperatura aumenta drasticamente).
Além disso, com este tutorial você irá entender a lógica por trás da programação do LCD e do LM35 e no final desde artigo, iremos te recomendar um mapa mental das principais funções utilizadas com Arduino e os principais artigos aqui do blog sobre programação em C/C++ para te ajudar durante a construção dos seus projetos.
Materiais Necessários para o Projeto Medidor de Temperatura com Arduino:
  • 1x Uno R3 + Cabo Usb para Arduino (pode ser qualquer modelo, neste passo-a-passo usamos o Uno)
  • 1x Display LCD 16×2 com Backlight Azul
  • 1x Sensor Temperatura LM35DZ
  • 2x LED Difuso 5mm Vermelho
  • 2x Jumpers – Macho/Macho – 20 Unidades de 20cm
  • 1x Potênciometro Linear 10kΩ
  • 1x Protoboard 830 Pontos (no caso usamos 2 para ilustrar melhor o pequeno LM35)
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:
Sensor de temperatura LM35
Esquema dos pinos do sensor LM35
A saída varia de 0 V – 1,75 V, quando alimentado por uma única fonte de alimentação. Uma saída de 0 V corresponde a uma temperatura de 0°C, e a saída aumenta 10 Mv para cada aumento de grau na temperatura.
O circuito do medidor de temperatura que construímos está mostrado abaixo:
Lembre-se de que você pode usar qualquer tensão entre 2,7 V e 5,5 V como fonte de alimentação. Para este exemplo, estamos utilizando uma fonte de 5 V, mas observe que você pode utilizar uma fonte de 3,3 V com a mesma facilidade. Não importa qual fonte você use, a leitura de tensão analógica variará de cerca de 0 V (terra) a cerca de 1,75 V.
Se estiver usando um Arduino de 5 V e conectando o sensor diretamente a um pino analógico, você pode usar estas fórmulas para transformar a leitura analógica de 10 bits em uma temperatura:
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)

Como medir a temperatura
Usar o LM35 é fácil, basta conectar o pino esquerdo à alimentação (2,7-5,5 V) e o pino direito ao GND. Então, o pino do meio terá uma tensão analógica que é diretamente proporcional (linear) à temperatura. 
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.

Código utilizado no projeto
Abaixo está o código utilizado no 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: Use esta imagem como parâmetro para fazer as ligações em seu componente: Esquema de pinos do display LCD.

Variáveis do projeto
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
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
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
É 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
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.
Medidor de temperatura – Monitor Serial
Não se esqueça de inserir um delay () entre a exibição dos valores no monitor serial e a exibição deles no LCD.
Acendendo os LED’s
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.

No projeto o LM35 foi substituído pelo módulo sensor de temperatura termistor NTC, que é um módulo compacto e de baixo custo. É muito sensível à temperatura ambiente. Geralmente é utilizado para detectar a temperatura do ambiente. Através do ajuste do potenciômetro, é possível alterar o limite de detecção de temperatura. A saída AO pode ser conectada diretamente ao microcontrolador para detectar temperaturas altas e baixas, detectando mudanças de temperatura no ambiente. A faixa de detecção de temperatura do módulo varia entre 20 e 80 graus Celsius. Este módulo pode ser substituído por um sensor de temperatura da linha para controlar a temperatura da água, do tanque de água, etc.
O datasheet do módulo NTC Arduino KY_028 está disponível em: Sensor NTC KY_028.

O datasheet da placa Arduino UNO R3 está disponível em: Manual Arduino® UNO R3.

O desenho técnico da base do projeto está disponível em: 25_08_01 Base_Medidor_Temperatura_LMVW .

Referência : Flavio Babos

© Direitos de autor. 2025: Gomes; Sinésio Raimundo. Última atualização: 20/06/2025

Nenhum comentário:

Postar um comentário