Guia de uso do sensor de temperatura analógico TMP36 com Arduino

Tempo de leitura: 8 minutes

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.

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.

Sensor de temperatura analógico TMP36 com diagrama de fiação Arduino Uno

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.

TMP36 com resistor e capacitor opcional

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

Sensor de temperatura analógico TMP36 com LCD I2C de 16×2 caracteres e diagrama de ligação Arduino.

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.

Instalando a biblioteca LiquidCrystal_I2C Arduino

 

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.

Visits: 4 Visits: 1198926