Neste tutorial, vais aprender a usar um LM35 sensor de temperatura analógico com Arduino. Incluí um diagrama de ligação e códigos de exemplo para te ajudar a começar!
Na primeira parte deste artigo, podes encontrar as especificações e o pinout do LM35. De seguida, vamos ver como ligar o sensor ao Arduino.
O primeiro exemplo de código pode ser usado para obter leituras de temperatura do sensor e mostrar os resultados no Monitor Serial. No segundo exemplo, vou mostrar-te como usar a tensão de referência interna de 1,1 V do Arduino para obter leituras mais precisas. Por fim, vamos ver como mostrar a temperatura num I2C LCD para criar um termómetro autónomo.
Materiais
Componentes de hardware
| LM35 analog temperature sensor (TO-92) | × 1 | Amazon |
| Arduino Uno | × 1 | Amazon |
| Breadboard | × 1 | Amazon |
| Jumper wires | ~ 10 | Amazon |
| 16×2 character I2C LCD | × 1 | Amazon |
| USB cable type A/B | × 1 | Amazon |
Software
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Sobre o LM35
O LM35 é um sensor de temperatura em graus Celsius barato e de precisão fabricado pela Texas Instruments. Fornece uma tensão de saída linearmente proporcional à temperatura em graus Celsius e, por isso, é muito fácil de usar com o Arduino.
O sensor não necessita de calibração ou ajuste externo para fornecer precisões de ±0,5°C à temperatura ambiente e ±1°C na faixa de temperatura de −50°C a +155°C.
Uma das desvantagens do sensor é que ele requer uma tensão de polarização negativa para ler temperaturas negativas. Portanto, se isso for necessário para o teu projeto, recomendo usar o DS18B20 ou o TMP36. O TMP36 da Analog Devices é muito semelhante ao LM35 e pode medir temperaturas de -40°C a 125°C sem componentes externos.
Podes encontrar um tutorial dedicado para o TMP36 e DS18B20 aqui:
- TMP36 analog temperature sensor with Arduino tutorial
- The complete guide for DS18B20 digital temperature sensors with Arduino
O fator de escala de saída do LM35 é 10 mV/°C e fornece uma tensão de saída de 250 mV a 25°C (ver figura abaixo).

Note que o sensor funciona numa faixa de tensão de 4 a 30 V e que a tensão de saída é independente da tensão de alimentação.
O LM35 faz parte de uma série de sensores de temperatura analógicos vendidos pela Texas Instruments. Outros membros da série incluem:
- LM335 – tensão de saída diretamente proporcional à temperatura absoluta a 10 mV/°K.
- LM34 – tensão de saída linearmente proporcional à temperatura em Fahrenheit a 10 mV/°F.
Pinout do LM35
O LM35 vem em 4 tipos de embalagem diferentes, mas o tipo mais comum é o pacote de transistor TO-92 de 3 pinos.

O pinout do sensor é o seguinte:

Note que o pino 1 (+V S ) é o pino mais à esquerda quando o lado plano do sensor (com o texto impresso) está virado para ti.
| Nome | Pino | Descrição |
|---|---|---|
| +V S | 1 | Pino de alimentação positiva (4 – 30 V) |
| V OUT | 2 | Saída analógica do sensor de temperatura |
| GND | 3 | Pino de terra do dispositivo, ligar ao terminal negativo da fonte de alimentação |
Podes encontrar as especificações do LM35 na tabela abaixo.
Especificações do sensor de temperatura analógico LM35
| Tensão de alimentação | 4 V a 30 V |
| Corrente de funcionamento | 60 µA |
| Faixa de temperatura | -55°C a +155°C |
| Precisão garantida | ±0,5°C a +25°C ±1°C de -55°C a +150°C |
| Fator de escala de saída | 10 mV/°C |
| Tensão de saída a 25°C | 250 mV |
| Autoaquecimento | <0,1°C em ar parado |
| Pacote | TO-92 de 3 pinos |
| Fabricante | Texas Instruments |
Para mais informações, podes também consultar o datasheet aqui:
Ligação – Ligação do sensor de temperatura analógico LM35 ao Arduino
Ligar um LM35 ao Arduino é muito fácil, pois só precisas de ligar 3 pinos. Começa por ligar o pino +V S ao output de 5 V do Arduino e o pino GND ao terra.
De seguida, liga o pino do meio (V OUT ) a qualquer uma das entradas analógicas do Arduino. Neste caso, usei o pino de entrada analógica A0.

As ligações também estão indicadas na tabela abaixo:
Ligações do sensor de temperatura analógico LM35
| LM35 | Arduino |
|---|---|
| Pino 1 (+V S ) | 5 V |
| Pino 2 (V OUT ) | Pino A0 |
| Pino 3 (GND) | GND |
Converter a tensão de saída do LM35 em temperatura
Para converter a tensão de saída do sensor em temperatura em graus Celsius, podes usar a seguinte fórmula:
Temperatura (°C) = V OUT / 10
com V OUT em milivolt (mV). Portanto, se a saída do sensor for 750 mV, a temperatura é 75°C.
Como podes ver no diagrama de ligação acima, a saída do LM35 está ligada a uma das entradas analógicas do Arduino. O valor dessa entrada analógica pode ser lido com a função analogRead(). No entanto, esta função não retorna realmente a tensão de saída do sensor.
As placas Arduino contêm um conversor analógico-digital (ADC) multicanal de 10 bits, que mapeia tensões de entrada entre 0 e a tensão de funcionamento (5 V ou 3,3 V) em valores inteiros entre 0 e 1023. Num Arduino Uno, por exemplo, isto dá uma resolução entre leituras de 5 volts / 1024 unidades, ou 0,0049 volts (4,9 mV) por unidade.
Portanto, se usares analogRead() para ler a tensão numa das entradas analógicas do Arduino, obterás um valor entre 0 e 1023.
Para converter este valor de volta para a tensão de saída do sensor, podes usar:
V OUT = leitura do ADC * (Vref / 1024)
Vamos usar estas fórmulas nos exemplos de código abaixo.
Exemplo de código do sensor de temperatura analógico LM35 com Arduino
Com o seguinte código de exemplo, podes ler a temperatura de um sensor LM35 e mostrar no Monitor Serial.
/* LM35 analog temperature sensor with Arduino example code. More info: https://www.makerguides.com */
// Define to which pin of the Arduino the output of the LM35 is connected:
#define sensorPin A0
void setup() {
// Begin serial communication at a baud rate of 9600:
Serial.begin(9600);
}
void loop() {
// Get a reading from the temperature sensor:
int reading = analogRead(sensorPin);
// Convert the reading into voltage:
float voltage = reading * (5000 / 1024.0);
// Convert the voltage into the temperature in degree Celsius:
float temperature = voltage / 10;
// Print the temperature in the Serial Monitor:
Serial.print(temperature);
Serial.print(" \xC2\xB0"); // shows degree symbol
Serial.println("C");
delay(1000); // wait a second between readings
}
Deverás ver a seguinte saída no Monitor Serial:

Certifica-te de que a taxa de transmissão (baud rate) do Monitor Serial está também definida para 9600.
Como o código funciona
Primeiro, defini a que pino do Arduino o pino V OUT do sensor está ligado. Neste caso, usamos o pino analógico A0. A instrução #define pode ser usada para dar um nome a um valor constante. O compilador substituirá todas as referências a esta constante pelo valor definido quando o programa for compilado. Portanto, em todo o lado onde menciones sensorPin, o compilador substituirá por A0 quando o programa for compilado.
// Define to which pin of the Arduino the output of the LM35 is connected: #define sensorPin A0
Na secção setup do código, iniciamos a comunicação serial com uma taxa de 9600 baud.
void setup() {
// Begin serial communication at a baud rate of 9600:
Serial.begin(9600);
}
Na secção loop do código, começamos por fazer uma leitura do sensor com a função analogRead(pin).
// Get a reading from the temperature sensor: int reading = analogRead(sensorPin);
De seguida, usamos as fórmulas que mencionei anteriormente no artigo para converter a leitura em tensão e depois em temperatura.
// Convert the reading into voltage: float voltage = reading * (5000 / 1024.0); // Convert the voltage into the temperature in degree Celsius: float temperature = voltage / 10;
Por fim, os resultados são impressos no Monitor Serial:
// Print the temperature in the Serial Monitor:
Serial.print(temperature);
Serial.print(" \xC2\xB0"); // shows degree symbol
Serial.println("C");
Melhorar a precisão das leituras
Como usamos a tensão de referência padrão do Arduino para a entrada analógica (ou seja, o valor usado como topo da faixa de entrada), a resolução máxima que obtemos do ADC é 5000/1024 = 4,88 mV ou 0,49°C.
Se quisermos uma precisão maior, podemos usar a referência interna de 1,1 V do Arduino. Esta tensão de referência pode ser alterada usando a função analogReference().
Com 1,1 V como tensão de referência, obtemos uma resolução de 1100/1024 = 1,07 mV ou 0,11°C. Note que isto limita a faixa de temperatura que podemos medir a 0 a 110 graus Celsius.
Realcei as linhas que precisas de adicionar/alterar no código abaixo:
/* LM35 analog temperature sensor with Arduino example code. More info: https://www.makerguides.com */
// Define to which pin of the Arduino the output of the LM35 is connected:
#define sensorPin A0
void setup() {
// Begin serial communication at a baud rate of 9600:
Serial.begin(9600);
// Set the reference voltage for analog input to the built-in 1.1 V reference:
analogReference(INTERNAL);
}
void loop() {
// Get a reading from the temperature sensor:
int reading = analogRead(sensorPin);
// Convert the reading into voltage:
float voltage = reading * (1100 / 1024.0);
// Convert the voltage into the temperature in degree Celsius:
float temperature = voltage / 10;
// Print the temperature in the Serial Monitor:
Serial.print(temperature);
Serial.print(" \xC2\xB0"); // shows degree symbol
Serial.println("C");
delay(1000); // wait a second between readings
}

Exemplo de código LM35 com LCD I2C e Arduino
Se quiseres fazer um termómetro autónomo que não precise de computador, pode ser útil saber como mostrar as leituras de temperatura num ecrã LCD.
Com o código de exemplo abaixo, podes mostrar as leituras de temperatura num 16×2 character I2C LCD.
Ligar o LCD I2C é bastante fácil, como podes ver no diagrama de ligação abaixo. Podes consultar o meu tutorial detalhado sobre How to control a character I2C LCD with Arduino para mais informações. Se quiseres usar um LCD padrão sem I2C, dá uma vista de olhos em How to use a 16×2 character LCD with Arduino.

As ligações também estão indicadas na tabela abaixo:
Ligações do LCD I2C
| LCD de caracteres I2C | Arduino |
|---|---|
| GND | GND |
| VCC | 5 V |
| SDA | A4 |
| SCL | A5 |
Note que o sensor de temperatura LM35 está ligado da mesma forma que antes.
Instalar as bibliotecas Arduino necessárias
Para usar um LCD I2C, precisas de instalar a LiquidCrystal_I2C biblioteca Arduino.
Para instalar esta biblioteca, vai a Tools > Manage Libraries (Ctrl + Shift + I no Windows) no IDE do Arduino. O Library Manager abrirá e atualizará a lista de bibliotecas instaladas.

Agora procura por ‘liquidcrystal_i2c’ e procura a biblioteca de Frank de Brabander . Seleciona a versão mais recente e depois clica em Install.

Exemplo de código LM35 com LCD I2C
/* LM35 analog temperature sensor with I2C LCD and Arduino example code.
https://www.makerguides.com */
// Include the required Arduino libraries:
#include "LiquidCrystal_I2C.h"
// Create a new instance of the LiquidCrystal_I2C class:
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Degree symbol:
byte Degree[] = {
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
B00000
};
// Define to which pin of the Arduino the output of the LM35 is connected:
#define sensorPin A0
void setup() {
// Start the LCD and turn on the backlight:
lcd.init();
lcd.backlight();
// Create a custom character:
lcd.createChar(0, Degree);
}
void loop() {
// Get a reading from the temperature sensor:
int reading = analogRead(sensorPin);
// Convert the reading into voltage:
float voltage = reading * (5000 / 1024.0);
// Convert the voltage into the temperature in degree Celsius:
float temperature = voltage / 10;
// Print the temperature on the LCD;
lcd.setCursor(0, 0);
lcd.print("Temperature:");
lcd.setCursor(0, 1);
lcd.print(temperature);
lcd.write(0); // print the custom character
lcd.print("C");
delay(1000); // wait a second between readings
}
Deverás ver a seguinte saída no LCD:

Conclusão
Neste tutorial, mostrei-te como usar um sensor de temperatura analógico LM35 com Arduino. Se quiseres aprender mais sobre outros sensores de temperatura, consulta os artigos abaixo.
- The complete guide for DS18B20 digital temperature sensors with Arduino
- How to use DHT11 and DHT22 sensors with Arduino
- TMP36 analog temperature sensor with Arduino tutorial
- How to control a character I2C LCD with Arduino
Se tiveres alguma dúvida, sugestão, ou se achares que falta algo neste tutorial, por favor deixa um comentário abaixo.

