NTC-термистор — резистор с отрицательным температурным коэффициентом: при нагреве его сопротивление падает, у типичных деталей — на 4–5 % на градус около комнатной температуры. Это самый дешёвый способ измерять температуру микроконтроллером: термистор, один резистор и вход АЦП.
B-параметр
Самая простая модель описывает кривую одним коэффициентом B:
где T — температура в кельвинах, T25 = 298,15 К, R25 — сопротивление при 25 °C. B вычисляют по двум точкам кривой и указывают вместе с ними: B25/50 или B25/85.
Модель точна только около этих двух температур. Для термистора Vishay NTCLE100E3 с B25/85 = 3977 К ошибка B-модели по сравнению с кривой производителя — около 0,8 °C при 0 °C и около 3 °C при −40 °C.
Формула Стейнхарта — Харта
Три коэффициента описывают кривую намного точнее:
Коэффициенты находят по трём точкам из таблицы R(T) даташита — калькулятор делает это в режиме «Три точки». Для того же NTCLE100E3 коэффициенты, найденные по точкам 0, 25 и 50 °C, дают отклонение от кривой производителя не больше 0,04 °C от −40 до 85 °C и 0,2 °C при 125 °C. Сам Vishay публикует для своих материалов расширенную формулу с четырьмя коэффициентами — по ней построена правая колонка таблицы ниже.
Таблица R(T) для 10 кОм
| Температура | 10 кОм, B = 3950 К | NTCLE100E3 10 кОм (B25/85 = 3977 К) |
|---|---|---|
| −40 °C | 401,9 кОм | 332,1 кОм |
| −35 °C | 281,6 кОм | 239,9 кОм |
| −30 °C | 200,2 кОм | 175,2 кОм |
| −25 °C | 144,3 кОм | 129,3 кОм |
| −20 °C | 105,4 кОм | 96,36 кОм |
| −15 °C | 77,9 кОм | 72,5 кОм |
| −10 °C | 58,25 кОм | 55,05 кОм |
| −5 °C | 44,03 кОм | 42,16 кОм |
| 0 °C | 33,62 кОм | 32,55 кОм |
| 5 °C | 25,92 кОм | 25,34 кОм |
| 10 °C | 20,17 кОм | 19,87 кОм |
| 15 °C | 15,84 кОм | 15,7 кОм |
| 20 °C | 12,54 кОм | 12,49 кОм |
| 25 °C | 10 кОм | 10 кОм |
| 30 °C | 8,037 кОм | 8,059 кОм |
| 35 °C | 6,506 кОм | 6,535 кОм |
| 40 °C | 5,301 кОм | 5,33 кОм |
| 45 °C | 4,348 кОм | 4,372 кОм |
| 50 °C | 3,588 кОм | 3,605 кОм |
| 55 °C | 2,978 кОм | 2,989 кОм |
| 60 °C | 2,486 кОм | 2,49 кОм |
| 65 °C | 2,086 кОм | 2,084 кОм |
| 70 °C | 1,76 кОм | 1,753 кОм |
| 75 °C | 1,492 кОм | 1,481 кОм |
| 80 °C | 1,27 кОм | 1,256 кОм |
| 85 °C | 1,087 кОм | 1,07 кОм |
| 90 °C | 933,6 Ом | 915,4 Ом |
| 95 °C | 805,4 Ом | 786 Ом |
| 100 °C | 697,5 Ом | 677,3 Ом |
| 105 °C | 606,4 Ом | 585,8 Ом |
| 110 °C | 529,1 Ом | 508,3 Ом |
| 115 °C | 463,3 Ом | 442,6 Ом |
| 120 °C | 407,1 Ом | 386,6 Ом |
| 125 °C | 358,8 Ом | 338,7 Ом |
Колонки различаются: дешёвые термисторы «10k 3950» описаны одним B, а для NTCLE100E3 приведена кривая производителя. Для своей детали берите таблицу из её даташита.
Делитель для АЦП
Если термистор стоит в нижнем плече, а резистор Rs подключён к тому же опорному напряжению, что и у АЦП, код не зависит от величины опорного напряжения:
Чувствительность делителя максимальна, когда Rs равен сопротивлению термистора в середине диапазона. Пример: термистор 10 кОм с B = 3950 К, Rs = 10 кОм и 12-битный АЦП при 25 °C дают шаг около 0,022 °C на единицу кода. Это разрешение, а не точность: точность ограничивают допуски термистора и резистора.
Самонагрев
Ток делителя нагревает термистор. Перегрев равен рассеиваемой мощности, делённой на коэффициент рассеяния из даташита. В делителе 10 + 10 кОм от 3,3 В на термисторе 1,65 В и 0,27 мВт; при коэффициенте рассеяния 7 мВт/К у NTCLE100E3 перегрев около 0,04 °C. Если перегрев заметен, увеличивают Rs или подают питание на делитель только на время измерения.
Пример на C
#include <math.h>
#include <stdint.h>
#define R_SERIES 10000.0f /* Rs, ohm */
#define ADC_FULL 4096.0f /* 12-bit ADC */
/* Steinhart-Hart for a 10 kOhm NTC (Vishay NTCLE100E3), fitted at 0, 25 and 50 C */
static const float SH_A = 1.134512e-3f;
static const float SH_B = 2.330242e-4f;
static const float SH_C = 9.377464e-8f;
/* Thermistor in the lower arm, Rs to the ADC reference */
float ntc_celsius(uint16_t code)
{
if (code == 0 || code >= ADC_FULL) return NAN; /* open or shorted sensor */
float r = R_SERIES * code / (ADC_FULL - code);
float l = logf(r);
return 1.0f / (SH_A + SH_B * l + SH_C * l * l * l) - 273.15f;
}
Коэффициенты для своего термистора даёт калькулятор в режиме «Три точки»: кнопка «Копировать» выдаёт их в виде констант на C. Пересчитать сам делитель удобно в калькуляторе делителя напряжения.
Частые вопросы
Что значит NTC 10k 3950?
Термистор с отрицательным температурным коэффициентом, сопротивлением 10 кОм при 25 °C и коэффициентом B = 3950 К. По B-модели он имеет около 33,6 кОм при 0 °C и около 700 Ом при 100 °C. B обычно указан для пары температур 25 и 50 °C, и на краях диапазона реальная кривая отходит от модели — для точности берите таблицу R(T) из даташита.
Чем B25/50 отличается от B25/85?
Это коэффициент B, вычисленный по сопротивлениям при 25 и 50 °C или при 25 и 85 °C. Кривая термистора не идеальна, поэтому для одной и той же детали числа различаются на десятки кельвинов. В расчёт подставляйте тот B, пара температур которого ближе к вашему диапазону.
Какой резистор ставить последовательно с термистором?
Равный сопротивлению термистора в середине рабочего диапазона: при этом напряжение делителя меняется с температурой быстрее всего. Для комнатных температур и термистора 10 кОм — 10 кОм. Если важен ток, резистор берут больше, жертвуя чувствительностью.
Почему термистор показывает температуру с ошибкой?
Частые причины: неверный B или модель с одним B на широком диапазоне, допуск R25 (1–5 %), самонагрев током делителя, неточный резистор делителя и разные опорные напряжения делителя и АЦП. Самонагрев оценивают по коэффициенту рассеяния из даташита: у NTCLE100E3 это 7 мВт/К.
Как перевести код АЦП в температуру?
Если термистор стоит снизу, а резистор Rs — от того же опорного напряжения, что и у АЦП, сопротивление термистора R = Rs · N / (2ⁿ − N), где N — код, n — разрядность. Затем температура по формуле Стейнхарта — Харта: опорное напряжение в расчёт не входит.
Источники
- Vishay. NTCLE100E3 — NTC Thermistors, Radial Leaded, datasheet (document 29049) — B25/85 = 3977 К, расширенная формула Стейнхарта — Харта и её коэффициенты, 32,55 кОм при 0 °C для 10 кОм, коэффициент рассеяния 7 мВт/К
- J. S. Steinhart, S. R. Hart. Calibration curves for thermistors. Deep-Sea Research, 1968, vol. 15, № 4, p. 497–503 — исходная работа с уравнением 1/T = a + b·ln R + c·(ln R)³
Обновлено . Нашли ошибку в расчёте? Напишите нам.