Neste tutorial, vais aprender a usar um TMP36 sensor de temperatura analógico com Arduino. Incluí um diagrama de ligação e vários exemplos de código para te ajudar a começar!
Na primeira parte deste artigo, podes encontrar as especificações e informações sobre os sensores TMP35, TMP36 e TMP37. 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 exibir a temperatura num LCD I2C para criar um termómetro autónomo.
Materiais
Componentes de hardware
| TMP36 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 os sensores de temperatura analógicos TMP35/TMP36/TMP37
Os TMP35/TMP36/TMP37 são sensores de temperatura centígrada de baixa tensão e precisão fabricados pela Analog Devices. Fornecem uma saída de tensão linearmente proporcional à temperatura em graus Celsius (°C) e, por isso, são muito fáceis de usar com o Arduino. Além disso, são precisos, não se desgastam e são muito baratos!
Os sensores TMP35/TMP36/TMP37 não requerem qualquer calibração externa para fornecer uma precisão típica de ±1°C a +25°C e ±2°C na faixa de temperatura de −40°C a +125°C.
A diferença entre o TMP35, TMP36 e TMP37 está na faixa de operação da temperatura e no fator de escala da saída. O TMP35 mede temperaturas de 10°C a 125°C e fornece uma saída de 250 mV a 25°C. Este sensor é funcionalmente compatível com o LM35 da Texas Instruments. Consulta o LM35 analog temperature sensor with Arduino tutorial para mais detalhes.
O TMP36 mede temperaturas de -40°C a 125°C, fornece uma saída de 750 mV a 25°C e funciona até +125°C com uma alimentação única de 2,7 V. Este sensor é funcionalmente compatível com o LM50. O TMP35 e o TMP36 têm o mesmo fator de escala de saída de 10 mV/°C.
O TMP37 destina-se a uma faixa de operação de 5°C a 100°C e fornece uma saída de 500 mV a 25°C. Este sensor oferece uma precisão ligeiramente superior aos outros sensores e tem um fator de escala de saída de 20 mV/°C.

Como podes ver na figura acima, a faixa de saída de todos os sensores está entre 0,1 V e 2 V. Nota que a tensão de saída é independente da tensão de alimentação que usares.
Pinout do TMP35/TMP36/TMP37
Os sensores TMP35/TMP36/TMP37 vêm em 3 formatos diferentes, mas o tipo mais comum é o 3-pin TO-92 package, que se parece com um transistor. A versão TMP36 deste sensor tem o número de modelo TMP36GT9Z.
O pinout do sensor está indicado na figura abaixo:

Nota que o pino 1 (+V S ) é o pino mais à esquerda quando o lado plano do sensor (com o texto impresso) está virado para ti.
Podes encontrar mais especificações do TMP36 na tabela abaixo.
Especificações do sensor de temperatura analógico TMP36
| Tensão de alimentação | 2,7 V a 5,5 V |
| Corrente em repouso | 50 µA |
| Faixa de temperatura | -40°C a +125°C |
| Precisão | ±1°C a +25°C ±2°C de -40°C a +125°C |
| Fator de escala de saída | 10 mV/°C |
| Tensão de saída a 25°C | 750 mV |
| Package | TO-92 de 3 pinos |
| Fabricante | Analog Devices |
| Custo | Check price |
Para mais informações, podes também consultar o datasheet aqui:
Ligação – Ligação do sensor de temperatura TMP36 ao Arduino
Ligar um TMP36 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. Se estiveres a usar um Arduino de 3,3 V, simplesmente liga o +V S a 3,3 V em vez disso.
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 estão também indicadas na tabela abaixo:
Ligações do sensor de temperatura analógico TMP36
| TMP36 | Arduino |
|---|---|
| Pino 1 (+V S ) | 5 V |
| Pino 2 (V OUT ) | Pino A0 |
| PINO 3 (GND) | GND |
Para melhorar a estabilidade do sensor, o datasheet recomenda adicionar um condensador cerâmico de 0,1 μF entre o pino +V S e o GND. Quando usares cabos longos, adicionar um pequeno resistor (ex. 750 Ω) em série com a linha de sinal (V OUT ) também pode reduzir o ruído.

Quando testei o sensor com um Arduino Uno, obtive leituras estáveis sem o condensador e resistor, mas os teus resultados podem variar.
Converter a tensão de saída do TMP36 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 – 500) / 10
com V OUT em milivolt (mV). Portanto, se a saída do sensor for 750 mV, então a temperatura é:
(750 – 500) / 10 = 25°C
Como podes ver no diagrama de ligação acima, a saída do TMP36 está ligada a uma das entradas analógicas do Arduino. O valor dessa entrada analógica pode ser lido com a função analogRead(), como vais ver nos exemplos de código abaixo. No entanto, a função analogRead(pin) não retorna diretamente 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 operação (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 na tensão de saída do sensor, podes usar:
V OUT = leitura do ADC * (5000 / 1024)
E se estiveres a usar um Arduino de 3,3 V:
V OUT = leitura do ADC * (3300 / 1024)
Vamos usar estas fórmulas nos exemplos de código abaixo.
Exemplo de código para sensor de temperatura analógico TMP36 com Arduino
Com o seguinte exemplo de código, podes ler a temperatura de um sensor TMP36 e mostrar no Monitor Serial.
/* TMP36 analog temperature sensor with Arduino example code.
https://www.makerguides.com */
// Define to which pin of the Arduino the output of the TMP36 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 Celsius:
float temperature = (voltage - 500) / 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 (Ctrl + Shift + M).

Certifica-te de que a taxa de transmissão 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. Assim, em todo o lado onde mencionares sensorPin, o compilador substituirá por A0 quando o programa for compilado.
// Define to which pin of the Arduino the output of the TMP36 is connected: #define sensorPin A0
Na secção setup do código, iniciamos a comunicação serial com uma taxa de 9600 bauds.
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 - 500) / 10;
Se estiveres a usar um Arduino de 3,3 V, como o Arduino Due ou o Arduino Nano 33 BLE, precisas de ligar o pino +V S a 3,3 V e substituir a linha destacada por:
// Convert the reading into voltage: float voltage = reading * (3300 / 1024.0);
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");
Mostrar as leituras de temperatura do TMP36 num LCD I2C
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 LCD I2C de 16×2 caracteres. Ligar o LCD I2C é bastante fácil, como podes ver no diagrama de ligação abaixo.

Consulta o How to control a character I2C LCD with Arduino e o How to use a 16×2 character LCD with Arduino Tutorial para mais detalhes sobre ecrãs LCD I2C.
As ligações estão também indicadas na tabela abaixo:
Ligações do LCD I2C
| LCD de caracteres I2C | Arduino |
|---|---|
| GND | GND |
| VCC | 5 V |
| SDA | A4 |
| SCL | A5 |
Nota que o sensor de temperatura TMP36 está ligado da mesma forma que antes.
Instalar as bibliotecas Arduino necessárias
Para usar um LCD I2C, precisas de instalar a biblioteca Arduino LiquidCrystal_I2C.
Para instalar esta biblioteca, vai a Tools > Manage Libraries (Ctrl + Shift + I no Windows) no Arduino IDE. O Library Manager abrirá e atualizará a lista de bibliotecas instaladas.

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

Exemplo de código TMP36 com LCD I2C
/* TMP36 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 TMP36 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 - 500) / 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 TMP36 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
- LM35 analog temperature sensor with Arduino tutorial
- How to control a character I2C LCD with Arduino
- How to use a 16×2 character LCD with Arduino
Se tiveres alguma dúvida, não hesites em deixar nos comentários.

