Arduino - Sensor de Temperatura TMP36

Sobre o Sensor de Temperatura TMP36

Pinagem

O sensor de temperatura TMP36 tem três pinos:

  • Pino GND: precisa ser conectado ao GND (0V)
  • Pino +Vs: precisa ser conectado ao VCC (5V). É a alimentação do sensor, que pode variar de 2.7V a 5.5V.
  • Pino Vout: pino de sinal que fornece a tensão de saída linearmente proporcional à temperatura; deve ser conectado a um pino analógico do Arduino.
Pinagem do sensor de temperatura TMP36

Como Funciona

O TMP36 fornece uma tensão de saída linearmente proporcional à temperatura em graus Celsius. O fator de escala de saída do TMP36 é de 10 mV/°C, com um deslocamento (offset) de 500 mV (a saída é de 500 mV a 0°C). Isso significa que a temperatura é calculada subtraindo 500 da tensão (mV) no pino de saída e, em seguida, dividindo o resultado por 10.

Diagrama de Ligação

Diagrama de ligação do Arduino com o sensor de temperatura TMP36

This image is created using Fritzing. Click to enlarge image

Como Programar o Sensor de Temperatura TMP36

  • Obtenha o valor ADC do sensor de temperatura usando a função analogRead().
int adcVal = analogRead(PIN_TMP36);
  • Converta o valor ADC em tensão em volts
// Replace 5.0 with 3.3, if you are using a 3.3V Arduino float voltage = adcVal * (5.0 / 1024.0);
  • Converta a tensão em temperatura em Celsius
float tempC = (voltage - 0.5) * 100;
  • (Opcional) Converta Celsius para Fahrenheit
float tempF = tempC * 9 / 5 + 32;

Código Arduino

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-tmp36-temperature-sensor */ #define ADC_VREF 5.0 // in volt #define ADC_RESOLUTION 1024.0 #define PIN_TMP36 A0 void setup() { Serial.begin(9600); } void loop() { // get the ADC value from the TMP36 temperature sensor int adcVal = analogRead(PIN_TMP36); // convert the ADC value to voltage float voltage = adcVal * (ADC_VREF / ADC_RESOLUTION); // convert the voltage to the temperature in Celsius float tempC = (voltage - 0.5) * 100; // convert the Celsius to Fahrenheit float tempF = tempC * 9 / 5 + 32; // print the temperature in the Serial Monitor: Serial.print("TMP36 Temperature: "); Serial.print(tempC); // print the temperature in Celsius Serial.print("°C"); Serial.print(" ~ "); // separator between Celsius and Fahrenheit Serial.print(tempF); // print the temperature in Fahrenheit Serial.println("°F"); delay(1000); }

Passos Rápidos

  • Copie o código acima e abra-o no Arduino IDE
  • Clique no botão Upload no Arduino IDE para carregar o código no Arduino
  • Segure o sensor com a mão
  • Veja o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
TMP36 Temperature: 26.31°C ~ 79.36°F TMP36 Temperature: 26.44°C ~ 79.59°F TMP36 Temperature: 26.50°C ~ 79.70°F TMP36 Temperature: 26.56°C ~ 79.81°F TMP36 Temperature: 27.06°C ~ 80.71°F TMP36 Temperature: 27.75°C ~ 81.95°F TMP36 Temperature: 28.37°C ~ 83.07°F TMP36 Temperature: 29.00°C ~ 84.20°F TMP36 Temperature: 29.56°C ~ 85.21°F TMP36 Temperature: 30.00°C ~ 86.00°F TMP36 Temperature: 30.31°C ~ 86.56°F TMP36 Temperature: 30.62°C ~ 87.12°F TMP36 Temperature: 30.87°C ~ 87.57°F
Ln 11, Col 1
Arduino Uno on COM15
2

Melhorando a Precisão da Temperatura

No código acima, usamos a tensão de referência padrão do ADC (5V~5000mV). Podemos aumentar a resolução da temperatura mudando a tensão de referência para 3.3V (3300mV). Essa tensão de referência pode ser alterada conectando os dois pinos 3.3V e AREF entre si, conforme o diagrama abaixo.

Diagrama de ligação do Arduino com o sensor de temperatura TMP36

This image is created using Fritzing. Click to enlarge image

A tabela abaixo mostra a diferença entre usar a tensão de referência de 5000mV e de 3300mV

Vref(mV) 5000 mV (padrão) 3300 mV
Resolução de leitura 5000/1024 = 4.88 mV 3300/1024 = 3.22 mV
Resolução de temperatura 0.49°C 0.32°C

Código Arduino

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-tmp36-temperature-sensor */ #define ADC_VREF 3.3 // in volt #define ADC_RESOLUTION 1024.0 #define PIN_TMP36 A0 void setup() { Serial.begin(9600); analogReference(EXTERNAL); // set the voltage reference from VREF pin } void loop() { // get the ADC value from the TMP36 temperature sensor int adcVal = analogRead(PIN_TMP36); // convert the ADC value to voltage float voltage = adcVal * (ADC_VREF / ADC_RESOLUTION); // convert the voltage to the temperature in Celsius float tempC = (voltage - 0.5) * 100; // convert the Celsius to Fahrenheit float tempF = tempC * 9 / 5 + 32; // print the temperature in the Serial Monitor: Serial.print("TMP36 Temperature: "); Serial.print(tempC); // print the temperature in Celsius Serial.print("°C"); Serial.print(" ~ "); // separator between Celsius and Fahrenheit Serial.print(tempF); // print the temperature in Fahrenheit Serial.println("°F"); delay(1000); }

Vídeo

Referências de Funções

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!