Встроенный датчик температуры ESP32: Руководство

Встроенный датчик температуры ESP32: Руководство

Как использовать внутренний датчик температуры ESP32 для мониторинга состояния чипа и защиты от перегрева.

Оборудование

Вернуться в блог

ESP32 имеет встроенный датчик температуры, который измеряет нагрев самого кристалла. Это незаменимый инструмент для предотвращения перегрева и оптимизации производительности вашего устройства.

Встроенный датчик температуры ESP32

⚠️ Внимание: Этот датчик измеряет температуру внутри чипа, а не температуру окружающей среды. Если вам нужно измерять внешнюю температуру, ознакомьтесь с нашей статьей: «Выбор датчика температуры для ESP32».

Совместимость

Платы с встроенным датчиком

Не все модели ESP32 оснащены этим датчиком. Оригинальные чипы серии ESP32-WROOM и WROVER часто его не имеют (или он признан устаревшим).

Официально поддерживаемые модели:

  • ESP32-C2 / C3 / C6
  • ESP32-H2
  • ESP32-S2 / S3
Основы

Принцип работы

Встроенный датчик — это цифровой сенсор, использующий 8-битный АЦП. Он измеряет напряжение на переходе, которое зависит от температуры.

Технические характеристики

Параметр Значение
Диапазон -40°C до +125°C
Точность от +/- 1°C до +/- 3°C
Назначение Внутренняя температура кристалла
Код

Использование в Arduino IDE

Для новых моделей ESP32 необходимо использовать драйвер temp_sensor.h. Вот пример простого скетча:

#include "driver/temp_sensor.h"

void initTempSensor(){
    temp_sensor_config_t temp_sensor = TSENS_CONFIG_DEFAULT();
    // TSENS_DAC_L2 — по умолчанию; диапазон -10°C ~ 80°C
    temp_sensor.dac_offset = TSENS_DAC_L2; 
    temp_sensor_set_config(temp_sensor);
    temp_sensor_start();
}

void setup() {
  Serial.begin(115200);
  initTempSensor();
}

void loop() {
  float result = 0;
  temp_sensor_read_celsius(&result);
  Serial.print("Температура чипа: ");
  Serial.print(result);
  Serial.println(" °C");
  delay(5000);
}
Тест

Тестирование и результаты

Проверить работоспособность датчика можно, изменив частоту процессора. Чем выше частота, тем сильнее нагревается чип.

Результаты наших тестов:

  1. При частоте 160 МГц: температура ~31.10 °C.
  2. При частоте 10 МГц: температура ~28.47 °C. Разница в 2.6°C подтверждает, что датчик реагирует на тепловую нагрузку.
F.A.Q.

Решение проблем

  • Температура не меняется: Либо чип работает вхолостую (нагрузка стабильна), либо в данной модели физически нет датчика.
  • Ошибка fatal error: driver/temp_sensor.h: Вы выбрали в Arduino IDE плату, для которой этот датчик не поддерживается. Смените модель платы.
Итог

Заключение

Внутренний датчик температуры — отличный инструмент для мониторинга «здоровья» вашего устройства. Он помогает диагностировать утечки памяти (через рост CPU), проблемы с питанием или банальный перегрев в закрытых корпусах.