ESP32-S2: Sensor de temperatura interno

Em muitos projetos e produtos, é necessário conhecer a temperatura interna do sistema (microcontrolador, caixa/case e etc). O monitoramento da temperatura interna, principalmente para superaquecimento, pode ajudar a evitar degradação e desgaste prematuro do sistema.

O ESP32-S2 contém um sensor de temperatura interno com uma boa faixa de medição e pequeno erro, sendo útil a praticamente qualquer projeto/produto que você faça, já que não há nenhuma adição extra de hardware, sendo puramente software.

Este sensor pode ser monitorado tanto pela CPU principal, quanto pelo ULP (FSM ou RISC-V), contando com um parâmetro de configuração (offset) que altera sua faixa de medição e, consequentemente, sua precisão.

OffsetFaixa de medição (℃)Erro na medição (℃)
-250 ~ 125< 3
-120 ~ 100< 2
0-10 ~ 80< 1
1-30 ~ 50< 2
2-40 ~ 20< 3
Tabela 1 – Offset do sensor de temperatura interno.

Em contrapartida, o ESP32 “convencional” (primeiro modelo), foi lançado com sensor de temperatura interno mas foi descontinuado após um tempo devido a grandes problemas de instabilidade e imprecisão na medição.

Lendo o sensor de temperatura interno – ESP32-S2

O código para leitura do sensor é bem simples e foi feito na ESP-IDF (release/v4.3), porém, com alguns ajustes, pode ser possível executá-lo na Arduino IDE:

#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_log.h"
#include "driver/temp_sensor.h"


void app_main(void)
{
    temp_sensor_config_t cfg = TSENS_CONFIG_DEFAULT();
    cfg.dac_offset = TSENS_DAC_L2; //Offset=0 (-10℃ ~ 80℃)

    temp_sensor_set_config(cfg); //Configura o sensor com os parametros
    temp_sensor_start(); //Inicia o sensor


    while (1)
    {
        float temp = 0;
        temp_sensor_read_celsius(&temp); //Le o sensor de temperatura e retorna ℃
        ESP_LOGI("Main", "Temperature: %f", temp);

        vTaskDelay(pdMS_TO_TICKS(1000));
    }
}
Figura 1 – Temperatura interna ESP32-S2.

Funcionamento interno via registrador

Faremos um breve resumo sobre o funcionamento interno do sensor. Para mais detalhes, veja o datasheet.

Inicialização:

Figura 2 – Inicialização do sensor de temperatura.

Após a inicialização do periférico, é necessário aplicar uma fórmula de conversão a partir do valor lido do registrador “SENS_TSENS_OUT”:

T(°C) = 0.4386 * VALUE – 27.88 * offset – 20.52

Saiba mais

Última novidade da Espressif: ESP32-S2-MINI

ESP32-S2 – Analisando o novo e melhor ADC

Referências

https://www.espressif.com/sites/default/files/documentation/esp32-s2_technical_reference_manual_en.pdf

https://docs.espressif.com/projects/esp-idf/en/v4.3.2/esp32s2/api-reference/peripherals/temp_sensor.html

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Daniel
Daniel
19/09/2022 08:01

#include “driver/temp_sensor.h” deu erro na minha simulação de medidor de temperatura, o que eu faço?


Gabriel
Gabriel
15/03/2022 10:18

Bom dia!
Onde eu encontro as bibliotecas usadas para download?

Home » Hardware » ESP32-S2: Sensor de temperatura interno

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: