- 6 практических схем с термисторами NTC в Arduino — как измерять температуру без лишних трат
- Что такое NTC-термистор и зачем он тебе
- Схема 1: Простейший делитель напряжения — для теста и быстрого старта
- Схема 2: Делитель с пониженным напряжением — для точности и стабильности
- Схема 3: Два термистора — для измерения разницы температур
- Схема 4: Термистор + операционный усилитель — для высокой точности
- Схема 5: Термистор в цепи с реле — для автоматического управления
- Схема 6: Термистор в воде — для измерения температуры жидкости
- Таблица: Какой термистор и резистор выбрать?
- Частые ошибки — и как их избежать
- Что выбрать — в зависимости от ситуации
- Как лучше сделать — практические рекомендации
- Итог: что делать прямо сейчас
6 практических схем с термисторами NTC в Arduino — как измерять температуру без лишних трат
Ты хочешь измерять температуру в своём проекте — в теплице, в коробке с батареями, в системе охлаждения или даже в чайнике. Но датчики вроде DS18B20 или BMP280 кажутся дорогими, а термисторы NTC — слишком «старомодными». Нет, они не устарели. Они просто не рекламируются. И если ты знаешь, как их правильно подключить, они станут твоим лучшим другом: дешёвые, точные, надёжные. Я не разбирался в термисторах годами — пока не попробовал их в реальных проектах. Вот что сработало.
Что такое NTC-термистор и зачем он тебе
NTC — это термистор с отрицательным температурным коэффициентом. Проще: чем теплее, тем меньше сопротивление. При 25°C у типичного NTC — 10 кОм. При 50°C — уже 2–3 кОм. При 0°C — 30 кОм и выше. Это не датчик с цифровым выходом. Это просто резистор, поведение которого ты должен «перевести» в температуру. И это — твоя задача. Но она простая, если не пытаться всё делать «как в учебнике».
Почему именно NTC? Потому что:
- Один термистор стоит 10–30 рублей;
- Не требует дополнительной микросхемы;
- Работает от -40°C до +150°C (в зависимости от модели);
- Отвечает быстро — за 1–5 секунд, если не упакован в термоусадку.
Главный минус: нелинейность. Сопротивление меняется не по прямой, а по экспоненте. Но Arduino справляется — если не пытаться считать температуру вручную по формуле Стейнхарта-Харта без калибровки.
Схема 1: Простейший делитель напряжения — для теста и быстрого старта
Самый простой способ — подключить термистор последовательно с фиксированным резистором (например, 10 кОм) между 5 В и GND. Точку между ними подключаешь к аналоговому входу Arduino (A0). Это делитель напряжения. Напряжение на A0 будет меняться, когда сопротивление термистора меняется.
Схема:
- 5 В → резистор 10 кОм → A0 → термистор NTC (10 кОм при 25°C) → GND
Код:
const int thermistorPin = A0;
const int fixedResistor = 10000; // 10 кОм
void setup() {
Serial.begin(9600);
}
void loop() {
int adcValue = analogRead(thermistorPin);
float voltage = adcValue * (5.0 / 1023.0);
float thermistorResistance = fixedResistor * (5.0 - voltage) / voltage;
float temperature = 1.0 / (log(thermistorResistance / 10000.0) / 3950.0 + 1.0 / 298.15) - 273.15;
Serial.print("Температура: ");
Serial.print(temperature);
Serial.println("°C");
delay(1000);
}
Здесь я использовал формулу Стейнхарта-Харта с параметром B = 3950 — это стандарт для многих NTC 10 кОм. Но это не универсально. У твоего термистора B может быть 3380, 3435, 4050 — смотри в даташите. Если даташита нет — калибруй сам.
Эта схема — для теста. Она работает, но не идеальна: если ты подаёшь 5 В, а термистор сильно нагревается, ток через него растёт — и он может греться сам, искажая показания. Но для комнатной температуры — ок.
Схема 2: Делитель с пониженным напряжением — для точности и стабильности
Проблема схемы 1 — самонагрев термистора. Решение: уменьшить ток. Как? Подать не 5 В, а 3.3 В. Или использовать резистор побольше — например, 47 кОм.
Схема:
- 3.3 В → резистор 47 кОм → A0 → термистор NTC (10 кОм) → GND
Почему 47 кОм? Потому что при 25°C сопротивление термистора 10 кОм — получается делитель 47:10. Напряжение на A0 будет около 0.6 В — это в пределах чувствительности ADC. Ток — около 60 мкА. Мало. Термистор не греется. Точность растёт.
Код тот же. Только теперь в формуле замени fixedResistor на 47000 и 5.0 на 3.3.
Это — лучший вариант для долгосрочных проектов: термистор не греется, показания стабильны, расход энергии минимален. Особенно актуально, если проект работает от батареи.
Схема 3: Два термистора — для измерения разницы температур
Нужно измерить, насколько холоднее вентилятор, чем воздух в коробке? Или насколько греется батарея при зарядке? Тогда используй два термистора.
Подключи оба как делители, но к разным аналоговым входам — A0 и A1. Используй один резистор на 10 кОм для обоих — если они одинаковые. Или по отдельному резистору.
Пример: контроль зарядки Li-Ion
- Термистор 1 — на корпусе батареи;
- Термистор 2 — в воздухе рядом;
- Если разница больше 5°C — включи вентилятор.
Код:
int temp1 = analogRead(A0);
int temp2 = analogRead(A1);
float t1 = calcTemp(temp1, 10000);
float t2 = calcTemp(temp2, 10000);
if (t1 - t2 > 5.0) {
digitalWrite(fanPin, HIGH);
} else {
digitalWrite(fanPin, LOW);
}
Так ты не просто измеряешь температуру — ты отслеживаешь изменение. Это мощно. Например, в аккумуляторных боксах для электросамокатов — именно так делают защиту от перегрева.
Схема 4: Термистор + операционный усилитель — для высокой точности
Если тебе нужно измерять температуру с точностью ±0.1°C — делитель напряжения не справится. ADC Arduino — 10 бит, погрешность ±1–2 бита. Это 0.5–1°C. Для точной работы — мало.
Решение: усилить сигнал. Возьми операционный усилитель (например, LM358) и собери неинвертирующий усилитель с коэффициентом 5–10. Подключи делитель термистор-резистор к входу ОУ. На выходе — сигнал 0–5 В, который уже можно читать с высокой точностью.
Почему это работает? Допустим, при изменении температуры сопротивление термистора меняется на 100 Ом. В делителе это даёт изменение напряжения на 0.005 В — слишком мало для Arduino. А если усилить в 10 раз — получится 0.05 В. Это 10 шагов ADC. Теперь ты видишь разницу в 0.1°C.
Это — для профессиональных проектов: термостаты, лабораторные установки, контроль печей. Не для дачного теплицы. Но если ты хочешь точности — это путь.
Схема 5: Термистор в цепи с реле — для автоматического управления
Ты хочешь, чтобы вентилятор включался при 30°C, а выключался при 25°C? Или чтобы нагреватель включался при 15°C? Проще всего — термистор + реле.
Схема:
- Термистор + резистор → A0 → Arduino;
- Arduino → транзистор (2N2222) → реле → нагреватель/вентилятор.
Код:
const int thermistorPin = A0;
const int relayPin = 7;
void setup() {
pinMode(relayPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int adc = analogRead(thermistorPin);
float temp = calcTemp(adc, 10000);
if (temp > 30.0) {
digitalWrite(relayPin, HIGH); // включить вентилятор
} else if (temp < 25.0) {
digitalWrite(relayPin, LOW); // выключить
}
Serial.println(temp);
delay(1000);
}
Важно: добавь гистерезис. Без него реле будет дёргаться при 27°C — включилось, выключилось, снова включилось. Это сожрёт реле за неделю. Гистерезис — это разница между включением и выключением. У меня — 5°C. Достаточно.
Схема 6: Термистор в воде — для измерения температуры жидкости
Воду, масло, антифриз — всё это можно мерить термистором. Но не просто так. Термистор — это стеклянная или эпоксидная капсула. Если его просто бросить в воду — он пропитается, и через месяц перестанет работать.
Как сделать правильно:
- Возьми термистор в металлическом корпусе (например, 3 мм диаметром, 10 мм длиной) — такие есть в продаже как «водонепроницаемые NTC».
- Запаяй его в термоусадку, а потом в стеклотканевую трубку или медную трубку.
- Заполни трубку термопастой — это улучшает теплопередачу.
- Запечатай конец эпоксидкой или силиконом.
Подключай как схему 2 — через 47 кОм и 3.3 В. Проверь: если температура воды 20°C — термистор показывает 21–22°C? Значит, тепло плохо передаётся. Добавь термопасты или уменьши толщину изоляции.
Пример: контроль температуры воды в аквариуме. Термистор в трубке — в воде. Ардуино включает подогрев, если температура падает ниже 24°C. Надёжно. Работает два года без замены.
Таблица: Какой термистор и резистор выбрать?
| Цель | Термистор NTC | Резистор (для делителя) | Напряжение питания | Почему так |
|---|---|---|---|---|
| Тест, быстрый старт | 10 кОм при 25°C, B=3950 | 10 кОм | 5 В | Просто, всё есть под рукой |
| Долгосрочный проект | 10 кОм при 25°C, B=3950 | 47 кОм | 3.3 В | Меньше ток — меньше самонагрев, точнее |
| Измерение разницы температур | Два одинаковых 10 кОм | 10 кОм на каждый | 3.3 В | Одинаковые датчики — одинаковые ошибки |
| Высокая точность (±0.1°C) | 10 кОм, B=3950, в корпусе | 10 кОм | 5 В → через ОУ | Усиление сигнала компенсирует шум ADC |
| Управление реле | 10 кОм, B=3950 | 47 кОм | 3.3 В | Стабильность + гистерезис = долгая жизнь реле |
| Измерение в воде | Водонепроницаемый, металлический корпус | 47 кОм | 3.3 В | Изоляция + термопаста = точность и долговечность |
Частые ошибки — и как их избежать
- Игнорируешь B-параметр. У всех термисторов он разный. Если ты используешь формулу с B=3950, а у тебя термистор с B=3435 — ошибка до 3–5°C. Смотри на маркировку или калибруй.
- Подключаешь термистор к 5 В без ограничения тока. Термистор нагревается сам — и показывает не температуру окружающей среды, а свою собственную. Используй резистор 47 кОм и 3.3 В.
- Используешь термистор без изоляции в воде. Через месяц — короткое замыкание. Никогда не бросай его в воду без герметизации.
- Забываешь про гистерезис. Реле дёргается — сгорает. Добавь 2–5°C разницы между включением и выключением.
- Доверяешь одному измерению. Считай среднее за 5–10 измерений. Шум ADC — реальность. Особенно если рядом — моторы или светодиоды.
Что выбрать — в зависимости от ситуации
- Если ты просто тестируешь — возьми 10 кОм NTC, 10 кОм резистор, 5 В. Проверь, работает ли вообще. Это временно.
- Если проект должен работать годами — 10 кОм NTC, 47 кОм резистор, 3.3 В. Герметизируй, если нужно. Добавь гистерезис, если управляешь реле.
- Если нужно измерять разницу температур — два одинаковых термистора. Используй одинаковые резисторы и одинаковые схемы. Разница будет точной.
- Если нужна точность до 0.1°C — усилитель. Без него не получится. Arduino — не лабораторный прибор.
- Если измеряешь жидкость — только герметичный термистор. Потому что вода — враг электроники.
Как лучше сделать — практические рекомендации
- Калибруй сам. Возьми термометр с погрешностью ±0.2°C (например, цифровой с датчиком типа LM35). Помести термистор и термометр в стакан с водой. Нагревай медленно. Запиши показания ADC при 20°C, 25°C, 30°C, 35°C. Построй таблицу. Напиши простую функцию в коде —
float calcTemp(int adc)— и используй интерполяцию. Это точнее, чем формула Стейнхарта-Харта с «угаданным» B. - Используй конденсатор 100 нФ между A0 и GND — это сгладит шум. Особенно если рядом — моторы или светодиоды.
- Если используешь несколько термисторов — не подключай их к одному резистору. У каждого — свой делитель. Иначе токи мешают друг другу.
- Проверяй термистор мультиметром. При комнатной температуре сопротивление должно быть близко к заявленному. Если 10 кОм — а показывает 8 кОм — возможно, он уже повреждён.
- Пиши код с отладочным выводом. Выводи не только температуру, но и ADC-значение и сопротивление. Это поможет понять, где проблема — в схеме или в коде.
Итог: что делать прямо сейчас
Если ты хочешь измерять температуру — не покупай DS18B20. Возьми термистор NTC 10 кОм. Стоит 15 рублей. Купи резистор 47 кОм — 5 рублей. Подключи по схеме 2: 3.3 В → 47 кОм → A0 → термистор → GND. Загрузи код с формулой Стейнхарта-Харта (B=3950). Проверь в комнате — показывает 22–24°C? Отлично. Добавь гистерезис, если управляешь вентилятором. Герметизируй, если в воде. И всё — у тебя точный, надёжный, дешёвый датчик температуры.
Ты не должен платить за «умные» датчики, если можешь сделать «глупый» — но рабочий — сам. Термисторы — не устаревшие. Они просто требуют чуть больше внимания. И это стоит того.
Информация в статье носит ознакомительный характер. При работе с электроникой, особенно при подключении к реле, нагревателям или воде, соблюдай меры безопасности. Для критически важных систем (медицина, промышленность, безопасность) используй сертифицированные датчики и консультируйся со специалистом.



