Подключение датчика температуры DS18B20 к Arduino Uno

Цифровой датчик DS18B20 обеспечивает измерение температуры в градусах Цельсия  с  9…12-разрядным разрешением и имеет сигнальную функцию с энергонезависимыми программируемыми пользователем верхним и нижним пределами триггера. DS18B20 подключается к шине 1-Wire, которая по определению требует только одной линии данных  для связи с микроконтроллером. Диапазон измеряемой температуры – от — 55°C до +125°C с точностью ±0.5°C в интервале от — 10°C до +85°C. Кроме того, DS18B20 может получать питание непосредственно от линии данных («паразитное питание»),  устраняя потребность во внешнем источнике питании.

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

Особенности:

  • для интерфейса 1-Wire® требуется только один вывод порта для связи
  • каждое устройство имеет уникальный 64-разрядный серийный номер, хранящийся во встроенном ROM
  • возможность упрощенного распределения на одной шине множества датчиков температуры
  • не требуется внешних компонентов
  • может запитываться от линии данных
  • диапазон напряжения питания – от 3,0 до 5,5 Вольт
  • диапазон измеряемой температуры – от -55°C до +125°C
  • точность измерения температуры в диапазоне от — 10°C до +85°C – ±0.5°C
  • выбираемая пользователем разрешающая способность:   9-12 разрядов
  • время преобразования температуры: 750ms (макс.)
  • определяемые пользователем энергонезависимые настройки сигнальных параметров



  • команда сигнального поиска идентифицирует и адресует устройства, температура которых находится вне заданных пределов
  • выпускаются в корпусах: 8-выв. SO (150mil), 8-выв. µSOP и 3-выв. TO-92
  • программная совместимость с DS1822
  • применяется в устройствах термостатического контроля, промышленных системах, потребительских изделиях, термометрах  или любых термочувствительных системах.

Для отладки проектов на микроконтроллерах, включая Arduino, удобно использовать модуль с датчиком DS18B20. На плате модуля, кроме датчика в корпусе TO-92 расположены светодиод питания, подтягивающий резистор и трехштырьковый разъем для подключения проводов или установки на макетную плату (breadboard).

По приведённой ниже схеме подключения и загруженного скетча, данные с датчика DS18B20 будут отображатся в Мониторе порта Arduino IDE.

Схема подключения DS18B20 к Arduino Uno
Схема подключения датчика температуры DS18B20 к Arduino Uno

 

Это тестовый скетч из библиотеки OneWire.h. Библиотека загружается  в  Arduino IDE через Менеджер библиотек.

Монитор порта Arduino IDE
Результат работы тестового скетча библиотеки OneWire.h

 

Скетч вывел следующие данные:

  • ROM = 28 FF AB 76 D0 16 5 CA — уникальной 64-битный адрес датчика
  • Chip = DS18B20 — модель используемой микросхемы (ещё определяет DS18S20 и DS1822)
  • Data = 1 DA 1 4B 46 7F FF C  10 D6 — данные внутренней памяти
  • CRC =D6  — контрольную сумму для повышения защиты данных
  • температуру в градусах Цельсия и Фаренгейта
  • No more adresses — информация об одном подключенном датчике (может быть несколько)

Подключение нескольких датчиков температуры DS18B20 к Arduino

Все датчики DS18B20 подключаются параллельно,  для них всех достаточно одного резистора.   Библиотека OneWire.h можно одновременно считать все данные со всех датчиков.  Узнать, с какого датчика получено значение температуры, можно с помощью уникального серийного 64-битного кода, который будет выдан в результате выполнения программы.

Для подключения  используют схему, представленную на рисунке ниже.

Подключение нескольких датчиков температуры DS18B20
Схема с нормальным питанием DS18B20

 

В режиме паразитного питания схема изменяется. Контакт Vdd практически не задействован и питание идет через выход Data.

Схема с паразитным питанием DS18B20
Схема с паразитным питанием DS18B20

 

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

Для повторения начинающим подойдёт схема простого термометра на Arduino Uno, с  датчиком температуры DS18B20 и 4-разрядным 7-сегментным индикатором на контроллере TM1637прочитать  статью.