ESP32 - Sensor de Temperatura TMP36

Neste guia, vamos aprender a programar o ESP32 para ler a temperatura do sensor 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: o pino de sinal fornece uma tensão de saída linearmente proporcional à temperatura e deve ser conectado a um pino analógico do ESP32.
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 sensor de temperatura TMP36 com ESP32

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

Como Programar o Sensor de Temperatura TMP36

  • Obtenha o valor do ADC do sensor de temperatura usando a função analogRead().
int adcVal = analogRead(PIN_TMP36);
  • Converta o valor do ADC em tensão, em volts
float voltage = adcVal * (3.3 / 4095.0);
  • Converta a tensão em temperatura em graus Celsius
float tempC = (voltage - 0.5) * 100;
  • (Opcional) Converta de Celsius para Fahrenheit
float tempF = tempC * 9 / 5 + 32;

Código ESP32

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-tmp36-temperature-sensor */ #define ADC_VREF 3.3 // 3.3V #define ADC_RESOLUTION 4095.0 #define PIN_TMP36 36 // ESP32 pin GPIO36 (ADC0) connected to LM35 void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); } 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

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 no Arduino IDE.
  • Faça a ligação conforme a imagem acima.
  • Conecte a placa ESP32 ao seu PC por meio de um cabo USB Type-C
  • Abra o Arduino IDE no seu PC.
  • Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
  • Copie o código acima e abra-o no Arduino IDE
  • Clique no botão Upload no Arduino IDE para fazer upload do código para o ESP32
  • Segure o sensor com a mão
  • Veja o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' 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
ESP32 Dev Module on COM15
2

※ Nota:

Este tutorial usa a função analogRead() para ler valores de um ADC (Conversor Analógico-Digital) conectado a um sensor TMP36. O ADC do ESP32 é bom para projetos que NÃO precisam de alta precisão. No entanto, para projetos que precisam de medições precisas, observe:

  • O ADC do ESP32 não é perfeitamente preciso e pode precisar de calibração para obter resultados corretos. Cada placa ESP32 pode ser um pouco diferente, então você precisa calibrar o ADC de cada placa individualmente.
  • A calibração pode ser difícil, especialmente para iniciantes, e nem sempre pode fornecer os resultados exatos que você deseja.

Para projetos que precisam de alta precisão, considere usar um ADC externo (por exemplo, ADS1115) com o ESP32 ou usar um Arduino, que tem um ADC mais confiável. Se você ainda quiser calibrar o ADC do ESP32, consulte o ESP32 ADC Calibration Driver

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!