DS18B20 - один из самых популярных цифровых датчиков температуры, широко применяемый в самых разных проектах - от простого термометра до сложных систем климат-контроля. В этой статье мы подробно разберем особенности подключения DS18B20, рассмотрим типовые схемы и дадим полезные советы по настройке и калибровке датчика для решения конкретных задач.

Общие сведения о DS18B20
DS18B20 - цифровой датчик температуры, выпускаемый компанией Maxim Integrated (ранее Dallas Semiconductor). Он появился в конце 90-х годов как замена менее точным аналоговым датчикам.
Принцип действия DS18B20 основан на измерении напряжения на p-n переходе, зависящего от температуры. Встроенный АЦП преобразует это напряжение в цифровой код, который и считывается микроконтроллером.
К достоинствам DS18B20 можно отнести:
- Высокая точность измерения - до 0.5°C
- Широкий диапазон рабочих температур - от -55 до +125°C
- Наличие уникального 64-битного кода, позволяющего подключать несколько датчиков к одной шине
- Простота подключения - используется всего 1 вывод микроконтроллера
- Низкое энергопотребление
К недостаткам можно отнести довольно большую задержку измерения - от 500 до 750 мс.
DS18B20 широко применяется для измерения температуры жидкостей и газов, в системах отопления и кондиционирования, а также в различных гаджетах и метеостанциях.
Рассмотрим типовые схемы подключения DS18B20 к популярным платформам.

Подключение к Arduino
Для подключения DS18B20 к Arduino используется всего один цифровой пин. Контакты датчика подключаются следующим образом:
- VCC — к +5В
- GND — к GND
- DATA - к цифровому пину (например, D2)
Также необходимо подтянуть линию DATA к +5В через резистор 4.7 кОм.
Подключение к Raspberry Pi
Для подключения датчика DS18B20 к Raspberry Pi потребуется дополнительный модуль для работы по протоколу 1-Wire. Он подключается к GPIO пинам следующим образом:
- VCC - к пину 1 (3V3)
- GND - к пину 6 (GND)
- DATA - к пину 7 (GPIO4)
Подробнее о подключении 1-Wire устройств к Raspberry Pi можно прочитать в соответствующих руководствах.
Подключение нескольких датчиков DS18B20
Благодаря наличию уникальных 64-битных адресов, к одному вводу микроконтроллера можно подключить множество датчиков DS18B20. При этом все они будут подключены параллельно к одной шине данных. Опрос каждого датчика осуществляется по его уникальному адресу.
Программирование DS18B20
Для программной работы с DS18B20 обычно используются следующие библиотеки:
- OneWire
- DallasTemperature
- Adafruit_Python_DHT
Рассмотрим основные функции на примере библиотеки OneWire для Arduino.
Получение адреса датчика
Для опроса конкретного датчика DS18B20 необходимо знать его уникальный 64-битный адрес. Получить его можно с помощью функции search(). Она производит поиск датчиков на шине и записывает адрес найденного устройства в массив.
Для считывания данных с DS18B20 используется последовательность из двух функций - requestTemp() и getTemp(): Сначала отправляется запрос командой requestTemp(), затем, дождавшись окончания измерения, считывается результат функцией getTemp().
Настройка разрешения
В DS18B20 можно программно изменить разрешение, влияющее на точность измерения. Это делается с помощью функции setResolution(). Доступные значения: 9, 10, 11, 12. Чем выше разрешение, тем выше точность, но и больше время измерения. Рассмотрим примеры использования датчика DS18B20 в различных проектах.
Метеостанция
Одно из распространенных применений - создание метеостанции с несколькими датчиками температуры. Они могут размещаться снаружи и внутри помещения, на разных глубинах в почве - так можно измерить температуру воздуха, почвы, точки росы и т.д.
DS18B20 часто используется в системах климат-контроля теплиц, живых уголков, герпетариев. C помощью датчиков контролируется температура воздуха и грунта, включается подогрев или вентиляция.
Мониторинг холодильника
Датчик DS18B20 легко разместить внутри бытового холодильника для контроля температуры хранения продуктов и присылки уведомлений на телефон в случае ее превышения.
Рассмотрим типичные неполадки при использовании DS18B20 и способы их устранения.
Нет связи с датчиком
Причины могут быть следующие: неправильная схема подключения, обрыв или короткое замыкание в линии связи, отсутствие подтягивающего резистора на линии DATA. Решение - проверить схему, целостность линии и наличие резистора.
Возможные причины: ошибка при подключении, неверные настройки в коде, сбой чтения адреса датчика. Решение - проверить правильность подключения, настроек и кода опроса датчика по адресу.
Перегрев датчика
Датчик DS18B20 может выйти из строя при длительном превышении максимальной температуры +125°C. Чтобы этого избежать, полезно использовать датчик с более широким температурным диапазоном и добавить оповещение о достижении критической температуры.