Главная → Датчики

Датчик температуры DS18B20: обзор и подключение, включая водонепроницаемую версию

11 сентября 2026 · Датчики

У термистора и LM35 общая беда: измерить напряжение — ещё не узнать температуру. Термистору нужны АЦП и таблица пересчёта, LM35 — АЦП и стабильная опора. DS18B20 снимает весь этот слой: внутри корпуса стоит измеритель с АЦП, и контроллер получает готовое число по одному проводу данных. А по этому же проводу можно опрашивать хоть десяток датчиков: у каждого свой уникальный 64-битный серийный код в ROM, зашитый на заводе.

Отсюда и список мест, где его ставят: тёплый пол в стяжке, бак с водой, аквариум, теплица, улица за окном. Отдельная история — водонепроницаемая версия: тот же чип в металлической гильзе с припаянным кабелем, стык залит герметиком. Стоит она ненамного дороже голого TO-92, а избавляет от пайки, термоусадки и протечек. Для воды, грунта и мороза это вариант по умолчанию.

Как устроена шина 1-Wire

Проводов всего два: данные и земля. Питание подаётся третьим проводом (3,0–5,5 В по паспорту) либо паразитно, от самой линии данных, — тогда VDD сажают на землю. Линия open-drain, поэтому без подтягивающего резистора шина мертва: в паспорте Analog Devices (Maxim) указана подтяжка «примерно 5 кОм», на практике ставят ближайший стандартный номинал 4,7 кОм. Команды адресные: мастер перечисляет устройства по ROM-кодам, поэтому число датчиков на одной линии фактически не ограничено.

Разрешение переключается от 9 до 12 бит, по умолчанию 12 — шаг 0,0625 °C. За точность платим временем: при 12 битах преобразование длится до 750 мс, при 9 битах — 93,75 мс. С паразитным питанием есть засада: во время измерения датчик тянет до 1,5 мА, и обычной подтяжки ему не хватает. По паспорту нужно в течение 10 мкс после команды «старт измерения» прижать линию к питанию транзистором и держать её до конца преобразования. Совет начинающему: питайте тремя проводами и не трогайте паразитный режим.

Характеристики из паспорта

Параметр Значение
Диапазон измерений −55…+125 °C
Точность ±0,5 °C (−10…+85 °C); ±1 °C (−30…+100 °C); ±2 °C (весь диапазон)
Разрешение 9–12 бит: 0,5 / 0,25 / 0,125 / 0,0625 °C
Время преобразования (макс.) 93,75 / 187,5 / 375 / 750 мс
Питание 3,0–5,5 В локально или паразитно от линии данных
Потребление до 1,5 мА при измерении; 0,75–1 мкА в покое
Идентификация уникальный 64-битный ROM-код у каждого датчика
Пороги тревоги TH/TL энергонезависимая EEPROM: 50 тыс. записей, хранение 10 лет
Корпуса TO-92, SO-8, µSOP; водозащищённый зонд — чип в гильзе с кабелем

Источник: datasheet Analog Devices / Maxim Integrated «DS18B20 — Programmable Resolution 1-Wire Digital Thermometer».

Подключение к Arduino

UNO или Nano, питание 5 В:

Подключение к ESP32

Та же схема на 3,3 В: VDD → 3V3, GND → GND, DQ → GPIO4, подтяжка 4,7 кОм между DQ и 3V3. Порог логической единицы у DS18B20 — от 2,2 В, поэтому 3,3 В хватает без преобразователей уровней. Правило одно: подтяжка — к той же шине питания, от которой запитан датчик.

Код: чтение температуры

Нужны библиотеки OneWire и DallasTemperature (Paul Stoffregen). Скетч одинаков для UNO и ESP32 — меняется только номер пина.

#include <OneWire.h>
#include <DallasTemperature.h>

#define PIN_DQ 2   // у ESP32 поставьте 4 (GPIO4)

OneWire oneWire(PIN_DQ);
DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(9600);
  sensors.begin();             // поиск датчиков на шине
  sensors.setResolution(12);   // 12 бит: шаг 0,0625 °C, до 750 мс
}

void loop() {
  sensors.requestTemperatures();        // Convert T и ожидание
  float t = sensors.getTempCByIndex(0); // первый найденный датчик
  if (t == DEVICE_DISCONNECTED_C) {
    Serial.println("Нет ответа: проверь подтяжку и пин");
  } else {
    Serial.println(t);
  }
  delay(1000);
}

getTempCByIndex(0) берёт первый попавшийся датчик, и порядок индексов после перезагрузки не гарантирован. Для двух датчиков хватит и индексов; для серьёзного проекта узнайте 64-битные адреса примером поиска устройств из поставки OneWire и обращайтесь через getTempCByAddress.

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

  1. Постоянно −127 °C. Это код «датчик отключён». Причины: забыли подтяжку 4,7 кОм, DQ воткнут не в тот пин, обрыв линии, перепутаны GND и VDD. Половина «мёртвых» DS18B20 лечится одним резистором.
  2. Читается ровно +85,00 °C. Это не комнатная температура: +85 °C — значение температурного регистра после подачи питания. Вылезает, когда чтение случилось раньше завершения преобразования или датчик сидит на паразитном питании без сильной подтяжки. Лечение: между командой измерения и чтением — не меньше 750 мс.
  3. Паразитное питание «почти работает». Слабая подтяжка просаживает линию под током преобразования, измерение срывается на ровном месте. Схема сильной подтяжки на транзисторе описана в паспорте, но проще подать питание третьим проводом.
  4. Несколько датчиков по индексам. Индекс — это порядок опроса шины, он может смениться после перезагрузки или замены одного датчика. Привязывайтесь к адресам ROM.
  5. Длинный кабель зонда. Уже с нескольких метров линия ловит наводки: подтяжку ставьте у самого датчика, при глюках снижайте её номинал (например, до 3,3 кОм), на десятках метров — витая пара «данные + земля».
  6. Куплен клон. Рынок полон копий DS18B20 с худшей, чем в паспорте, точностью и урезанным диапазоном. Если партия новых датчиков дружно врёт на градус-другой в одну сторону — это оно; спасают поверка по эталону и программная поправка.

Итог

DS18B20 — самый дешёвый способ получить честную цифровую температуру без калибровки, АЦП и таблиц: один пин, одна подтяжка, готовая библиотека. Для воды и улицы берите зонд в гильзе. Если сравниваете с другими «температурными» датчиками — у нас есть разбор DHT22 (AM2302) с его типовыми ошибками, а влажность и давление одним чипом добавляет BME280.

Информация собрана из открытых источников и паспортов производителей и не является истиной в последней инстанции. Характеристики, распиновку и совместимость проверяйте по документации конкретной партии модуля перед покупкой и подключением.

Читайте дальше

Готовые проекты

Автономная метеостанция на ESP32: собираем из трёх модулей

Соберём законченное устройство: комнатная метеостанция, которая показывает температуру, влажность и давление на экране и работает от аккумулятора. Все три модуля мы уже…

Читать обзор →
Датчики

Ёмкостный датчик влажности почвы v1.2: почему резистивный датчик сгнивает за месяц

Если у вас когда-то сгнил резистивный датчик влажности почвы — вы не одиноки. Разберёмся, почему это происходит, чем лучше ёмкостный датчик v1.2…

Читать обзор →
Связь

LoRa-модуль Ra-02 (SX1278): связь на километры без интернета — обзор и подключение

Что это за модуль Wi-Fi и Bluetooth работают на десятки метров, сотовой связи в поле нет, а передать показания датчика с дачи…

Читать обзор →