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

Уравнение Стейнхарта — Харта

Простая модель с коэффициентом B ошибается на градус уже в нескольких десятках градусов от точек, по которым её считали. Уравнение Стейнхарта — Харта с тремя коэффициентами описывает кривую термистора на порядок точнее и легко считается в микроконтроллере.

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

Уравнение Стейнхарта — Харта (Steinhart–Hart equation) — эмпирическая формула, связывающая сопротивление NTC-термистора с его абсолютной температурой:

1T=a+bln⁡R+c (ln⁡R)3\frac{1}{T} = a + b \ln R + c\,(\ln R)^3

где T — температура в кельвинах, R — сопротивление в омах, a, b, c — коэффициенты конкретного термистора. Microchip в AN685 называет её полиномом третьего порядка, который заменяет экспоненциальную модель термистора и широко принят для точных расчётов; для типичного термистора она даёт около ±0,1 °C во всём диапазоне — обычно лучше, чем разброс самих экземпляров. В обратной форме формула выглядит как ln R = B0 + B1/T + B3/T³ (DS00685B).

Коэффициенты по трём точкам

Три коэффициента находят по трём парам (Ti, Ri) из таблицы даташита. Обозначив Li = ln Ri и Yi = 1/Ti, систему решают так:

γ2=Y2−Y1L2−L1,γ3=Y3−Y1L3−L1,c=γ3−γ2(L3−L2)(L1+L2+L3)\gamma_2 = \frac{Y_2 - Y_1}{L_2 - L_1},\quad \gamma_3 = \frac{Y_3 - Y_1}{L_3 - L_1},\quad c = \frac{\gamma_3 - \gamma_2}{(L_3 - L_2)(L_1 + L_2 + L_3)}
b=γ2−c (L12+L1L2+L22),a=Y1−(b+c L12) L1b = \gamma_2 - c\,(L_1^2 + L_1 L_2 + L_2^2),\qquad a = Y_1 - (b + c\,L_1^2)\,L_1

Наш пример для Vishay NTCLE100E3 10 кОм (B25/85 = 3977 К): по кривой производителя при 0, 25 и 50 °C сопротивление 32,55; 10,00 и 3,605 кОм. Отсюда a = 1,1345·10⁻³, b = 2,3302·10⁻⁴, c = 9,377·10⁻⁸. С этими коэффициентами уравнение отклоняется от кривой Vishay не больше чем на 0,04 °C от −40 до 85 °C. Для сравнения: модель с одним коэффициентом B при −40 °C даёт −37,0 °C вместо −40.

Расширенная форма

Vishay для своих термисторов приводит формулу с четырьмя коэффициентами и нормированием на R25:

1T=A1+B1ln⁡RR25+C1ln⁡2RR25+D1ln⁡3RR25\frac{1}{T} = A_1 + B_1 \ln\frac{R}{R_{25}} + C_1 \ln^2\frac{R}{R_{25}} + D_1 \ln^3\frac{R}{R_{25}}

и обратную к ней R(T) = R25·exp(A + B/T + C/T² + D/T³). Коэффициенты даны для каждого материала: для материала с B25/85 = 3977 К A1 = 3,354016·10⁻³, B1 = 2,569850·10⁻⁴, C1 = 2,620131·10⁻⁶, D1 = 6,383091·10⁻⁸. По даташиту две формулы совпадают с точностью 0,005 °C в диапазоне 25…125 °C и 0,015 °C в диапазоне −40…25 °C (Vishay 29049). При R = R25 логарифмы обнуляются, и 1/T = A1 даёт ровно 298,15 К.

На практике

Точность уравнения не спасает от ошибок измерения: самонагрев термистора током делителя и допуск R25 обычно больше, чем погрешность формулы. Коэффициенты для своего термистора по трём точкам и готовую функцию на C даёт калькулятор NTC, а пример терморегулятора — схема термостата на NTC.

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

Где взять коэффициенты a, b и c?

Либо у производителя — Vishay для NTCLE100E3 приводит даже расширенную форму с четырьмя коэффициентами, — либо посчитать самим по трём точкам таблицы R(T) из даташита: решить систему из трёх уравнений. Точки берут по краям и в середине рабочего диапазона, например 0, 25 и 50 °C для комнатного термометра.

Насколько уравнение точнее модели с коэффициентом B?

Наш расчёт для Vishay NTCLE100E3 10 кОм: модель B с B25/85 = 3977 К при 0 °C ошибается на 0,8 °C, при −40 °C — на 3 °C. Уравнение с коэффициентами по точкам 0, 25 и 50 °C отклоняется от кривой производителя не больше чем на 0,04 °C во всём диапазоне −40…85 °C. Microchip в AN685 оценивает точность уравнения в ±0,1 °C.

Хватит ли точности float в микроконтроллере?

Да: коэффициенты порядка 10⁻³, 10⁻⁴ и 10⁻⁷, а одинарная точность даёт около семи значащих цифр — ошибка вычисления намного меньше сотой градуса. Медленнее всего в формуле логарифм; если вычисления дороги, по уравнению заранее строят таблицу код АЦП — температура и интерполируют.

Источники

  1. Vishay BCcomponents. NTCLE100E3 NTC Thermistors, Radial Leaded, Standard Precision (document number 29049, revision 07-May-2025) — Formulae to determine nominal resistance values: расширенный Стейнхарт — Харт R(T) = Rref·exp(A + B/T + C/T² + D/T³) и 1/T = A1 + B1·ln(R/Rref) + C1·ln²(R/Rref) + D1·ln³(R/Rref), Rref = R25, T в кельвинах; обе формулы взаимозаменяемы с ошибкой не более 0,005 °C в диапазоне 25…125 °C и 0,015 °C в диапазоне −40…25 °C; материал 9 (B25/85 = 3977 К): A = −14,6337, B = 4791,842, C = −115334, D = −3,730535·10⁶, A1 = 3,354016·10⁻³, B1 = 2,569850·10⁻⁴, C1 = 2,620131·10⁻⁶, D1 = 6,383091·10⁻⁸; пример: термистор 10 кОм при 0 °C — 32,55 кОм
  2. Microchip. Baker B. C. AN685 Thermistors in Single Supply Temperature Sensing Circuits (DS00685B, 1999) — нелинейность термистора исправляют программно эмпирическим полиномом третьего порядка или таблицей; полином третьего порядка — уравнение Стейнхарта — Харта, широко принятое для точных расчётов: T = 1/(A0 + A1·ln RT + A3·ln³ RT), обратная форма ln RT = B0 + B1/T + B3/T³, коэффициенты даёт производитель; для типичного термистора точность ±0,1 °C во всём диапазоне — обычно лучше разброса самих экземпляров

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