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


В этом проекте мы рассмотрим подключение нескольких датчиков температуры DS18B20 к плате Arduino и отобразим значения температуры всех датчиков в градусах Цельсия или Фаренгейта. Для подключения нескольких подобных датчиков температуры требуется только один цифровой контакт Arduino. Мы можем подключить максимум 1024 датчика с использованием протокола I2C. Но здесь мы рассмотрим подключение 3 датчиков температуры DS18B20 к Arduino.

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

Датчик температуры DS18B20 — это цифровой датчик температуры, работающий по протоколу 1-Wire. Он поставляется в герметичном корпусе, позволяет точно измерять температуру во влажных средах с помощью простого интерфейса 1-Wire, который использует общую шину для подключения нескольких устройств. Это означает, что можно подключать несколько устройств и считывать их значения, используя всего один цифровой контакт платы Arduino.

Ранее на нашем сайте мы рассматривали подключение одного датчика температуры DS18B20 к Arduino, также мы рассматривали его подключение к другим микроконтроллерам и платам:

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Несколько цифровых датчиков температуры DS18B20 (купить на AliExpress).
  3. ЖК дисплей 16х2 (купить на AliExpress).
  4. Резистор 4,7 кОм.
  5. Макетная плата.
  6. Соединительные провода.

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Водонепроницаемый цифровой датчик температуры DS18B20

Это предварительно подключенная и водонепроницаемая версия датчика DS18B20. Удобно, когда вам нужно измерить что-то на большом расстоянии или во влажных условиях. Датчик может измерять температуру в диапазоне от -55 до 125 °C (от -67 °F до +257 °F). Кабель покрыт оболочкой из ПВХ.

Поскольку он цифровой, нет никакого ухудшения сигнала даже на больших расстояниях. Эти 1-проводные цифровые датчики температуры довольно точны, т. е. ±0,5°C в большей части диапазона. Он может выдавать до 12 бит точности от встроенного цифро-аналогового преобразователя. Они отлично работают с любым микроконтроллером, использующим один цифровой вывод.

Водонепроницаемый цифровой датчик температуры DS18B20

Единственный недостаток в том, что они используют протокол Dallas 1-Wire, который довольно сложен и требует кучу кода для разбора коммуникации (но для большинства современных микроконтроллерных плат эту проблему успешно решают соответствующие библиотеки). Мы добавляем резистор 4,7 кОм, который требуется в качестве подтягивающего от линии DATA к линии VCC при использовании датчика.

Схема проекта

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

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

Подключите контакты 11,12, 5, 4, 3, 2 Arduino к контактам 4, 6, 11, 12, 13, 14 ЖК-дисплея.

Подключите вывод VDD DS18B20 к 5 В, а вывод GND к заземлению. Подключите вывод данных всех DS18B20 к цифровому выводу 9 Arduino, а также к резистору 4,7 кОм (подключите другой конец резистора 4,7 кОм к 5 В), как показано на приведенном рисунке.

Собранная на макетной плате конструкция проекта представлена на следующем рисунке.

Собранная на макетной плате конструкция проекта

Исходный код программы

Для сопряжения нескольких датчиков температуры DS18B20 с платой Arduino вам понадобятся две разные библиотеки:
1. Загрузите библиотеку 1 Wire
2. Загрузите библиотеку Dallas Temperature

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

DS18B20 обеспечивает показания температуры в формате от 9 до 12 бит (настраивается), которые указывают температуру устройства. Он взаимодействует по шине 1-Wire, которая по определению требует только одну линию данных (и заземление) для связи с центральным микропроцессором. Кроме того, он может получать питание непосредственно от линии данных («паразитное питание»), устраняя необходимость во внешнем источнике питания.

Основная функциональность DS18B20 — это датчик температуры с прямым цифровым преобразованием. Разрешение датчика температуры настраивается пользователем на 9, 10, 11 или 12 бит, что соответствует шагу 0,5°C, 0,25°C, 0,125°C и 0,0625°C соответственно. Разрешение по умолчанию при включении питания составляет 12 бит.

Каждый DS18B20 имеет определенный адрес устройства в формате HEX, например {0x28, 0x1D, 0x39, 0x31, 0x2, 0x0, 0x0, 0xF0 }. Таким образом, программа разработана на основе считывания температуры с определенного адреса устройства. Поэтому сначала Arduino сканирует количество датчиков. Предположим, что здесь подключено 3 датчика. Таким образом, он просто отобразит значения 3 различных показаний. Если подключено больше датчиков, показания переключатся на несколько значений. Значение температуры, считываемое каждым датчиком, отображается с интервалом в 2 секунды как Sensor Number 1 Temperature (температура датчика номер 1), Sensor Number 2 Temperature (температура датчика номер 2) и до значения номера подключенного датчика.

Видео, демонстрирующее работу проекта

Ссылка на видео на YouTube

(Проголосуй первым!)
Загрузка...
46 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *