Перейти к содержанию

Внутренний датчик температуры STM32

В каждом STM32 есть датчик температуры кристалла, подключённый к АЦП. Он бесплатный и всегда под рукой, но ST сразу предупреждает: это датчик изменения температуры, а не термометр — смещение его характеристики от чипа к чипу доходит до 45 °C.

Обновлено Редакция GAW

Внутренний датчик температуры STM32 — схема на кристалле, выходное напряжение VSENSE которой линейно меняется с температурой. Он подключён к внутреннему каналу АЦП: ADCx_IN16 у STM32F1, ADC1_IN16 у STM32F40x/41x и ADC1_IN18 у STM32F42x/43x, где этот канал делится с измерением VBAT (RM0008, разд. 11.10; RM0090, разд. 13.10). Включается он тем же битом TSVREFE, что и VREFINT. Меряет датчик температуру кристалла, а не воздуха вокруг.

Формула и константы

Руководства дают формулу через два параметра из даташита: V25 — напряжение датчика при 25 °C, и Avg_Slope — средний наклон в мВ/°C. Для STM32F1 (RM0008, разд. 11.10):

T = (V25 − VSENSE) / Avg_Slope + 25

У STM32F103 по табл. 51 DS5319: V25 = 1,34–1,52 В (тип. 1,43 В), Avg_Slope = 4,0–4,6 мВ/°C (тип. 4,3 мВ/°C), линейность ±2 °C. Пример (наш расчёт по типовым значениям): VSENSE = 1,30 В даёт T = (1,43 − 1,30) / 0,0043 + 25 ≈ 55 °C. У STM32F4 знак другой: T = (VSENSE − V25) / Avg_Slope + 25 (RM0090, разд. 13.10), поэтому формулу нельзя переносить между сериями.

Почему это не термометр

ST пишет прямо: смещение характеристики от чипа к чипу доходит до 45 °C, и датчик подходит для обнаружения изменений температуры, а не для её абсолютного значения (RM0008, разд. 11.10). Это видно и по числам: разброс V25 ±0,09 В при наклоне 4,3 мВ/°C — около ±21 °C (наш пересчёт). Поэтому датчик годится для защиты от перегрева, термокомпенсации генератора или слежения за нагревом, а для показаний температуры берут внешний датчик — см. статью «Датчики температуры».

Практические требования из RM0008: время выборки 17,1 мкс (меньше — и конденсатор выборки не успеет зарядиться), биты ADON и TSVREFE ставить одновременно, потому что и датчику, и АЦП нужно время на запуск — у STM32F103 датчику 4–10 мкс. Подробнее о каналах и настройке — в статье «АЦП STM32».

Частые вопросы

Почему в разных руководствах формула со знаком наоборот?

Потому что у разных серий характеристика идёт в разные стороны. В RM0008 для STM32F1 формула T = (V25 − VSENSE)/Avg_Slope + 25: напряжение датчика падает с ростом температуры. В RM0090 для STM32F4 — T = (VSENSE − V25)/Avg_Slope + 25. Берите формулу и константы из руководства и даташита своей серии.

Можно ли мерить им температуру воздуха?

Плохо. Датчик меряет температуру кристалла, а она выше окружающей на нагрев от собственного потребления. Кроме того, смещение характеристики от чипа к чипу доходит до 45 °C (RM0008, разд. 11.10). ST прямо советует для точных измерений внешний датчик.

Как повысить точность встроенного датчика?

Откалибровать конкретный экземпляр: записать код при известной температуре и считать от него, используя только наклон. Так убирается главная ошибка — разброс V25. Остаются разброс наклона 4,0–4,6 мВ/°C и нелинейность до ±2 °C у STM32F103 (DS5319, табл. 51).

Источники

  1. STMicroelectronics. RM0008 Reference manual STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx (Rev 21) — разд. 11.10: датчик меряет температуру кристалла TJ, подключён к ADCx_IN16; рекомендуемое время выборки 17,1 мкс; выход меняется линейно, смещение прямой от чипа к чипу до 45 °C, датчик больше подходит для обнаружения изменений температуры, для точных измерений — внешний датчик; порядок: канал IN16, выборка 17,1 мкс, бит TSVREFE в ADC_CR2, запуск ADON; формула T = (V25 − VSENSE)/Avg_Slope + 25; после пробуждения у датчика есть время запуска, ADON и TSVREFE рекомендуется ставить одновременно
  2. STMicroelectronics. DS5319 Datasheet STM32F103x8, STM32F103xB (Rev 20, July 2025) — табл. 51 TS characteristics: линейность ±1 (тип.) / ±2 °C (макс.); Avg_Slope 4,0 / 4,3 / 4,6 мВ/°C; V25 1,34 / 1,43 / 1,52 В; время запуска 4–10 мкс; время выборки до 17,1 мкс; разд. 2.3.23: диапазон преобразования 2 В < VDDA < 3,6 В
  3. STMicroelectronics. RM0090 Reference manual STM32F405/415, STM32F407/417, STM32F427/437, STM32F429/439 (Rev 21) — разд. 13.10: у STM32F40x/41x датчик на ADC1_IN16, у STM32F42x/43x — на ADC1_IN18 вместе с VBAT (при одновременном выборе преобразуется только VBAT); диапазон −40…125 °C, точность ±1,5 °C; формула T = (VSENSE − V25)/Avg_Slope + 25; смещение от чипа к чипу до 45 °C

Нашли ошибку?