Guia de uso do sensor de temperatura analógico TMP36 com Arduino
Neste tutorial, você aprenderá a usar um sensor de temperatura analógico TMP36 com o Arduino. Incluí um diagrama de ligação e vários códigos de exemplo para ajudá-lo a começar!
Na primeira parte deste artigo, você pode encontrar as especificações e informações sobre os sensores TMP35, TMP36 e TMP37. A seguir, veremos como conectar o sensor ao Arduino.
O primeiro exemplo de código pode ser usado para fazer leituras de temperatura do sensor e exibir os resultados no Monitor Serial. No segundo exemplo, mostrarei como exibir a temperatura em um LCD I2C para criar um termômetro independente.
Se você gostaria de saber mais sobre outros sensores de temperatura, verifique os artigos abaixo.
Conteudo
Suprimentos
Componentes de hardware
Sensor de temperatura analógico TMP36 (TO-92)
Arduino Uno
ProtoBoard
Fios de jumpers ~ 10
LCD I2C de 16×2 caracteres
Cabo USB tipo A/B
Sobre os sensores analógicos de temperatura 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. Eles fornecem uma saída de tensão que é linearmente proporcional à temperatura em graus Celsius (° C) e são, portanto, muito fáceis de usar com o Arduino. Além disso, são precisos, nunca se desgastam e são muito baratos!
Os sensores TMP35/TMP36/TMP37 não requerem nenhuma 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 é sua faixa de operação de temperatura e fator de escala de saída. O TMP35 lê 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 fabricado pela Texas Instruments.
O TMP36 lê temperaturas de -40°C a 125°C, fornece uma saída de 750mV a 25 ° C e opera a + 125 ° C a partir de uma única fonte 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 é projetado para uma faixa de operação de 5°C a 100°C e fornece uma saída de 500 mV a 25°C. Este sensor fornece uma precisão ligeiramente maior do que os outros sensores e tem um fator de escala de saída de 20 mV/°C.
Tensão de saída (V) versus temperatura (° C). Fonte: Dispositivos Analógicos
Como você pode ver na figura acima, a faixa de saída de todos os sensores está entre 0,1 V e 2 V. Observe que a tensão de saída é independente da tensão de alimentação usada.
Pinagem TMP35/TMP36/TMP37
Os sensores TMP35/TMP36/TMP37 vêm em 3 formatos diferentes, mas o tipo mais comum é o encapsulamento TO-92 de 3 pinos, que se parece com um transistor. A versão TMP36 deste sensor tem o número do modelo TMP36GT9Z.
A pinagem do sensor é dada na figura abaixo:
Observe que o pino 1 (+ VS) é o pino mais à esquerda quando o lado plano do sensor (com o texto impresso) está voltado para você.
Você pode encontrar mais especificações do TMP36 na tabela abaixo.
Especificações do sensor analógico de temperatura TMP36
Tensão de alimentação | 2.7 V a 5.5 V |
Corrente quiescente | 50 µA |
Faixa de temperatura | -40°C a + 125°C |
Precisão | ±1°C em +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 |
Pacote | 3-pin TO-92 |
Fabricante | Analog Devices |
Custo | Aproximado de 15 a 25R$ |
Para mais informações, você também pode verificar o datasheet aqui:
Conectando o sensor de temperatura TMP36 ao Arduino
Conectar um TMP36 ao Arduino é muito fácil, pois você só precisa conectar 3 pinos. Comece conectando o pino + VS à saída de 5 V do Arduino e o pino GND ao aterramento. Se você estiver usando um Arduino de 3,3 V, simplesmente conecte + VS a 3,3 V.
Em seguida, conecte o pino do meio (VOUT) a qualquer uma das entradas analógicas do Arduino. Neste caso, usei o pino de entrada analógica A0.

As conexões também são fornecidas na tabela abaixo:
Conexões do sensor de temperatura analógico TMP36
TMP36 | Arduino |
---|---|
Pin 1 (+VS) | 5 V |
Pin 2 (VOUT) | Pin A0 |
PIN 3 (GND) | GND |
Para melhorar a estabilidade do sensor, a folha de dados recomenda adicionar um capacitor de cerâmica de 0,1 μF entre o pino + VS e o GND. Quando você estiver usando cabos longos, adicionar um pequeno resistor (por exemplo, 750 Ω) em série com a linha de sinal (VOUT) também pode reduzir o ruído.

Quando testei o sensor com um Arduino Uno, obtive leituras estáveis sem o capacitor e o resistor, mas seus resultados podem variar.
Converter a tensão de saída TMP36 em temperatura
Para converter a tensão de saída do sensor na temperatura em graus Celsius, você pode usar a seguinte fórmula:
Temperatura (°C) = (VOUT – 500) / 10
com VOUT em milivolt (mV). Portanto, se a saída do sensor for 750mV, a temperatura será:
(750 – 500) / 10 = 25°C
Como você pode ver no diagrama de ligação acima, a saída do TMP36 está conectada a uma das entradas analógicas do Arduino. O valor desta entrada analógica pode ser lido com a função analogRead() como você verá nos exemplos de código abaixo. No entanto, a função analogRead (pin) não retornará realmente a tensão de saída do sensor.
As placas Arduino contêm um conversor analógico para digital (ADC) multicanal de 10 bits, que mapeará as tensões de entrada entre 0 e a tensão operacional (5 V ou 3,3 V) em valores inteiros entre 0 e 1023. Em um Arduino Uno, por exemplo , isso produz uma resolução entre leituras de 5 volts / 1024 unidades ou 0,0049 volts (4,9 mV) por unidade.
Portanto, se você usar analogRead() para ler a tensão em uma das entradas analógicas do Arduino, obterá um valor entre 0 e 1023.
Para converter esse valor de volta na tensão de saída do sensor, você pode usar:
VOUT = reading from ADC * (5000 / 1024)
E se você estiver usando um Arduino de 3,3 V:
VOUT = reading from ADC * (3300 / 1024)
Usaremos essas fórmulas nos exemplos de código a seguir.
Sensor de temperatura analógico TMP36 com código de exemplo Arduino
Com o código de exemplo a seguir, você pode ler a temperatura de um sensor TMP36 e exibi-la no Monitor Serial.
Você pode fazer upload do código de exemplo para o seu Arduino usando o IDE do Arduino.
Para copiar o código, clique no botão no canto superior direito do campo do código.
/* Sensor de temperatura analógico TMP36 com código de exemplo Arduino. */ // Defina a qual pino do Arduino a saída do TMP36 está conectada: #define sensorPin A0 void setup() { Serial.begin(9600); } void loop() { // Obtenha uma leitura do sensor de temperatura: int reading = analogRead(sensorPin); // Converta a leitura em voltagem: float voltage = reading * (5000 / 1024.0); // Converta a tensão na temperatura em Celsius: float temperature = (voltage - 500) / 10; // Imprima a temperatura no Monitor Serial: Serial.print(temperature); Serial.print(" \xC2\xB0"); // mostra o símbolo de grau Serial.println("C"); delay(1000); // espere um segundo entre as leituras }
Você deve ver a seguinte saída no Monitor Serial (Ctrl + Shift + M).
Certifique-se de que a taxa de transmissão do Monitor serial também esteja definida como 9600.
Como funciona o código
Primeiro, eu defini a qual pino do Arduino o pino VOUT do sensor está conectado. 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 com o valor definido quando o programa for compilado. Portanto, sempre que você mencionar sensorPin, o compilador o substituirá por A0 quando o programa for compilado.
// Defina a qual pino do Arduino a saída do TMP36 está conectada: #define sensorPin A0
Na seção de configuração do código, começamos a comunicação serial a uma taxa de transmissão de 9600.
void setup() { Serial.begin(9600); }
Na seção de loop do código, começamos fazendo uma leitura do sensor com a função analogRead(pin).
// Obtenha uma leitura do sensor de temperatura: int reading = analogRead(sensorPin);
Em seguida, usamos as fórmulas que mencionei anteriormente no artigo para converter a leitura em tensão e, em seguida, em temperatura.
// Converta a leitura em tensão: float voltage = reading * (5000 / 1024.0); // Converta a tensão na temperatura em graus Celsius: float temperature = (voltage - 500) / 10;
Se você estiver usando um Arduino de 3,3 V, como o Arduino Due ou o Arduino Nano 33 BLE, será necessário conectar o pino + VS a 3,3 V e substituir a linha destacada por:
// Converta a leitura em tensão: float voltage = reading * (3300 / 1024.0);
Por fim, os resultados são impressos no Monitor Serial:
// Imprima a temperatura no Monitor Serial: Serial.print(temperature); Serial.print(" \xC2\xB0"); // shows degree symbol Serial.println("C");
Exibir as leituras de temperatura TMP36 em um LCD I2C
Se você quiser fazer um termômetro autônomo que não precise de um computador, pode ser bom saber como exibir as leituras de temperatura em um display LCD.
Com o código de exemplo abaixo, você pode exibir as leituras de temperatura em um LCD I2C de 16×2 caracteres.
Conectar o LCD I2C é bastante fácil, como você pode ver no diagrama de ligação abaixo

As conexões também são fornecidas na tabela abaixo:
Conexões LCD I2C
LCD de caracteres I2C | Arduino |
---|---|
GND | GND |
VCC | 5 V |
SDA | A4 |
SCL | A5 |
Observe que o sensor de temperatura TMP36 está conectado da mesma forma que antes.
Instalando as bibliotecas necessárias do Arduino
Para usar um LCD I2C, você precisa instalar a biblioteca LiquidCrystal_I2C Arduino.
Para instalar esta biblioteca, vá para Tools > Manage Libraries (Ctrl + Shift + I no Windows) no IDE do Arduino. O Library Manager irá abrir e atualizar a lista de bibliotecas instaladas.
Agora procure por ‘liquidcrystal_i2c’ e procure a biblioteca de Frank de Brabander. Selecione a versão mais recente e clique em Instalar.

TMP36 com código de exemplo I2C LCD
/* Sensor de temperatura analógico TMP36 com código de exemplo I2C LCD e Arduino. */ // Incluir as bibliotecas Arduino necessárias: #include <LiquidCrystal_I2C.h> // Crie uma nova instância da classe LiquidCrystal_I2C: LiquidCrystal_I2C lcd(0x27, 16, 2); // Símbolo de grau: byte Degree[] = { B00111, B00101, B00111, B00000, B00000, B00000, B00000, B00000 }; // Defina a qual pino do Arduino o TMP36 está conectado: #define sensorPin A0 void setup() { // Inicie o LCD e ligue a luz de fundo: lcd.init(); lcd.backlight(); // Inicie o LCD e ligue a luz de fundo: lcd.createChar(0, Degree); } void loop() { // Obtenha uma leitura do sensor de temperatura: int reading = analogRead(sensorPin); // Converta a leitura em tensão: float voltage = reading * (5000 / 1024.0); // Converta a tensão na temperatura em graus Celsius: float temperature = (voltage - 500) / 10; // Imprime a temperatura no LCD; lcd.setCursor(0, 0); lcd.print("Temperature:"); lcd.setCursor(0, 1); lcd.print(temperature); lcd.write(0); // imprime o caractere personalizado lcd.print("C"); delay(1000); // espere um segundo entre as leituras }
Você deve ver a seguinte saída no LCD:
Conclusão
Neste tutorial, mostrei como usar um sensor de temperatura analógico TMP36 com o Arduino. Espero que você tenha achado útil e informativo. Se sim, compartilhe este artigo com um amigo que também gosta de eletrônicos e de fazer coisas.
Eu adoraria saber quais projetos você planeja construir (ou já construiu) com este sensor. Se você tiver alguma dúvida, sugestão, ou se achar que falta alguma coisa neste tutorial, deixe um comentário abaixo.