Aula 42: Usando o Sensor de Temperatura LM35 | Curso Arduino Passo a Passo
Nesta lição, aprenderemos a usar o sensor de temperatura LM35 com um Arduino para medir e exibir a temperatura em graus Celsius, Fahrenheit e Kelvin. Este sensor fornece uma tensão que é proporcional à temperatura, permitindo que leamos e processemos facilmente os dados em nosso programa Arduino. Ao final deste tutorial, você será capaz de implementar ações baseadas na temperatura em seus projetos.

O sensor de temperatura LM35 possui três pinos: o pino da esquerda é para a fonte de alimentação, o pino do meio fornece uma tensão correspondente à temperatura e o pino da direita é para o terra. O sensor opera em uma faixa de tensão de 4 a 30 volts e fornece uma saída de 10 milivolts por grau Celsius. Essa precisão permite leituras de temperatura precisas em várias aplicações.
Hardware Explicado
O componente principal deste projeto é o sensor de temperatura LM35. Ele é projetado para fornecer uma saída de tensão analógica que é diretamente proporcional à temperatura em graus Celsius. O sensor é adequado para uma ampla gama de temperaturas, de -55°C a +150°C, tornando-o versátil para diferentes ambientes.
O LM35 requer uma potência mínima (60 microamperes) e opera em uma ampla faixa de tensão. Sua impedância de saída é baixa, permitindo que ele interfira diretamente com os pinos de entrada analógica do Arduino sem circuitos adicionais. Essa simplicidade no design torna o LM35 uma excelente escolha para tarefas de medição de temperatura.
Detalhes da Ficha Técnica
| Fabricante | Texas Instruments |
|---|---|
| Número da peça | LM35 |
| Tensão de Lógica/IO | 4-30 V |
| Corrente de saída (por canal) | 1 mA máximo |
| Faixa de temperatura | -55 a +150 °C |
| Tensão de saída | 10 mV/°C |
| Precisão | ±0,5 °C a 25 °C |
| Pacote | TO-92 |
- Garanta um fornecimento de energia adequado entre 4V e 30V para leituras precisas.
- A tensão de saída é diretamente proporcional à temperatura (10 mV/°C).
- Use capacitores de desacoplamento perto do pino de energia para estabilização.
- Mantenha a polaridade correta ao conectar para evitar danos.
- Certifique-se de fazer boas conexões para evitar entradas flutuantes, que podem causar leituras errôneas.
Instruções de Fiação

Para conectar o sensor de temperatura LM35, conecte o pino da esquerda (VCC) à saída de 5V no Arduino. O pino do meio (Saída) deve ser conectado ao pino de entrada analógica.A0, que usaremos para ler a temperatura. Por fim, conecte o pino correto (Terra) a um dos pinos de terra no Arduino. Certifique-se de que todas as conexões estejam seguras para evitar problemas durante a operação.
Ao fazer a ligação, lembre-se de que o LM35 pode ser alimentado com uma tensão de alimentação entre 4V e 30V, mas usar 5V é suficiente para aplicações com Arduino. Se você observar leituras de temperatura inesperadas, confira as conexões e assegure-se de que o sensor está devidamente alimentado.
Exemplos de Código e Passo a Passo
No código Arduino, definimos o pino de entrada analógica para ler a voltagem de saída do LM35 com o identificadorinPin, que está definido paraA0. Além disso, definimos uma constanteLM35_FACTORdefina para 0,01 para representar a saída do sensor por grau Celsius.
const int inPin = A0; // can change
const float LM35_FACTOR = 0.01; // do not change
Esta configuração nos permite ler a temperatura de maneira simples. Em seguida, inicializamos a comunicação serial nosetup()função para começar a enviar dados de temperatura ao monitor serial.
void setup() {
Serial.begin(9600);
Serial.println("Robojax LM35 for Arduino");
}
Dentro doloop()função, lemos continuamente a temperatura e a imprimimos em diferentes unidades. AprintTemperature()a função aceita um parâmetro de caractere para especificar o formato de temperatura desejado, permitindo que exibamos a temperatura em Celsius, Fahrenheit ou Kelvin.
void loop() {
printTemperature('C');
printTemperature('F');
printTemperature('K');
delay(1000); // Wait for 1000ms
}
Para tomar uma ação com base na temperatura, podemos verificar se a temperatura excede um determinado limite usando ogetTemperature()função. Esta função calcula a temperatura média em um número específico de amostras.
Para mais detalhes, assista ao vídeo associado para uma walkthrough completa do código (no vídeo às 10:15).
Demonstração / O que Esperar
Quando o sensor LM35 estiver devidamente conectado e o código do Arduino for carregado, você deverá ver a temperatura exibida em Celsius, Fahrenheit e Kelvin no monitor serial. Se você aplicar calor ao sensor, observará que as leituras de temperatura aumentam de acordo.
Esteja ciente de que a fiação incorreta pode levar a leituras de temperatura irregulares, como valores extremamente altos ou baixos. Sempre certifique-se de que o sensor está conectado corretamente para evitar esses problemas (no vídeo às 12:30).
Marcação de Títulos do Vídeo
- 00:00- Introdução ao LM35
- 02:30- Instruções de Fiação
- 05:00- Explicação do Código
- 10:15- Demonstração de Leitura de Temperatura
- 12:30- Problemas Comuns e Soluções
++
/*
* Robojax Arduino Step-by-Step Course
* Part 4: Temperature Sensors
* Lesson 42: Introduction to LM35
* This Arduino sketch is to use LM35 to measure temperature
* This code has two ways to get temperature
* 1-To print the temperature either in C, F or K on the serial monitor
* 2-To return the value in C, F and K
*
Please watch video instruction here https://youtu.be/DRIC4wDu878
This code is available at http://robojax.com/course1/?vid=lecture37
with over 100 lectures free on YouTube. Watch it here http://robojax.com/L/?id=338
Get the code for the course: http://robojax.com/L/?id=339
* Written by Ahmad Shamshiri on May 08, 2020 at 02:45 in Ajax, Ontario, Canada
* in Ajax, Ontario, Canada. www.robojax.com
*
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const int inPin =A0;//can change
const int iteration = 1000; //can change (see video)
const float LM35_FACTOR =0.01;// do not change
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
Serial.begin(9600);
Serial.println("Robojax LM35 for Arduino");
delay(500);
}
// the loop routine runs over and over again forever:
void loop() {
//robojax.com LM35 Code for Arduino
printTemperature('C');
Serial.println();
printTemperature('F');
Serial.println();
printTemperature('K');
Serial.println();
Serial.println();
// Serial.print(" Temperature: ");
// printDegree();
// Serial.print(getTemperature('C'));
if(getTemperature('C') >87)
{
// do something here (watch video)
}
// Serial.println();
delay(1000);//Wait for 1000ms (change it if you want)
}
/*
* getTemperature()
* @brief gets the average temperature
* @param average temperature
* @param "type" is character
* C = Celsius
* K = Kelvin
* F = Fahrenheit
* @return returns one of the values above
* Written by Ahmad Shamshiri for robojax.com
* on May 08, 2020 at 02:36 in Ajax, Ontario, Canada
*/
float getTemperature(char type)
{
// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
float value,voltage,temperature;//define variables
int sensorValue;
float averageTemperature =0;
for(int i=0; i< iteration; i++)
{
sensorValue = analogRead(inPin);//read analog value
voltage = sensorValue * (5.0 / 1023.0); //convert it to voltage
temperature = voltage / LM35_FACTOR; //convert voltage to temperature
averageTemperature += temperature;//add
}
averageTemperature /=iteration;
if(type =='F')
{
value = averageTemperature *9/5 + 32;//convert to Fahrenheit
}else if(type =='K')
{
value = averageTemperature + 273.15;//convert to Kelvin
}else{
value = averageTemperature;// return Celsius
}
return value ;
}//getTemperature()
/*
* printTemperature()
* @brief prints temperature on serial monitor
* @param charact type
* @param "type" is character
* C = Celsius
* K = Kelvin
* F = Fahrenheit
* @return none
* Written by Ahmad Shamshiri for robojax.com
* on May 08, 2020 at 02:45 in Ajax, Ontario, Canada
*/
void printTemperature(char type)
{
// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
float value;
float temp = getTemperature(type);
Serial.print(temp);
printDegree();
if(type =='F')
{
Serial.print("F");
}else if(type =='K')
{
Serial.print("K");
}else{
Serial.print("C");
}
}//printTemperature()
/*
* @brief prints degree symbol on serial monitor
* @param none
* @return returns nothing
* Written by Ahmad Shamshiri on July 13, 2019
* for Robojax Tutorial Robojax.com
*/
void printDegree()
{
Serial.print("\\xC2");
Serial.print("\\xB0");
}
Coisas que você pode precisar
-
AmazonasPurchase LM35 from Amazonamzn.to
-
eBayPurchase LM35 from eBayebay.us
Recursos e referências
-
Folha de dadosLM35 Datasheetti.com
Arquivos📁
Nenhum arquivo disponível.