Датчики температуры: термопара и терморезистор

Урок про два самых распространённых температурных датчика и формулы их пересчёта.

Термопара даёт напряжение, пропорциональное разнице температур спаев (эффект Зеебека); терморезистор меняет сопротивление с температурой.

Температуру нельзя измерить напрямую — её переводят в электрический сигнал. Два классических способа: термопара (милливольты на разнице температур) и терморезистор (изменение сопротивления). У каждого своя физика и своя формула пересчёта.

Термопара

В простом приближении напряжение термопары линейно по разнице температур:

$$ V \approx S_{th}\,(T - T_{ref}) $$

где $S_{th}$ — коэффициент Зеебека (для типа K около $41\ \text{мкВ/°C}$). Зная напряжение и температуру холодного спая, восстанавливаем горячий.

# Термопара типа K: ~41 мкВ/°C
S_th = 0.041   # мВ/°C
T_ref = 25.0   # температура холодного спая

def thermocouple_temp(mv):
    return T_ref + mv / S_th

print(round(thermocouple_temp(4.1), 1), "°C")
print(round(thermocouple_temp(0.0), 1), "°C")

Вывод:

125.0 °C
25.0 °C

Терморезистор (NTC)

У NTC-терморезистора сопротивление падает с ростом температуры. Удобная модель — уравнение Бета:

$$ \frac{1}{T} = \frac{1}{T_0} + \frac{1}{B}\ln\!\frac{R}{R_0} $$

где $T$ — в кельвинах, $R_0$ — сопротивление при опорной температуре $T_0$, $B$ — параметр из даташита.

import math

def thermistor_temp(R, R0=10000, T0=298.15, B=3950):
    inv_T = 1/T0 + (1/B) * math.log(R / R0)
    return 1/inv_T - 273.15   # в °C

for R in (5000, 10000, 20000):
    print(R, "Ом ->", round(thermistor_temp(R), 2), "°C")

Вывод:

5000 Ом -> 41.46 °C
10000 Ом -> 25.0 °C
20000 Ом -> 10.18 °C

Как работает под капотом

Термопара измеряет разницу температур, поэтому ей нужна компенсация холодного спая — отдельный датчик, который знает температуру разъёма. Терморезистор обычно включают в делитель напряжения с известным резистором; АЦП меряет напряжение, по нему считают сопротивление, по нему — температуру. Уравнение Бета — приближение; для высокой точности применяют формулу Стейнхарта–Харта с тремя коэффициентами. Обе характеристики сильно нелинейны, и без линеаризации (раздел 4) показания врут на краях диапазона.

Частые ошибки

  • Забыть компенсацию холодного спая термопары — систематический сдвиг на десятки градусов.
  • Считать кельвины и градусы Цельсия одним и тем же в уравнении Бета: логарифм требует абсолютной температуры.
  • Применять линейную модель к NTC на широком диапазоне — он экспоненциально нелинеен.

Итог

  • Термопара: $V \approx S_{th}(T - T_{ref})$, нужна компенсация холодного спая.
  • Терморезистор NTC: температуру даёт уравнение Бета через логарифм отношения сопротивлений.
  • Оба датчика нелинейны; для точности нужна линеаризация.
Проверьте себя
1. Что физически измеряет термопара?
AАбсолютную температуру горячего спая
BРазницу температур между спаями
CСопротивление провода
DОсвещённость
2. В уравнении Бета температура T должна быть выражена в...
Aградусах Цельсия
Bкельвинах
Cградусах Фаренгейта
Dпроцентах