Обзор датчика температуры DS18B20
DS18B20 это цифровой датчик температуры (интерфейс 1-wire), который может считывать показания температуры с точностью от 9 до 12 бит, в пределах от -55°C до 125°C (+/- 0,5C).
Технические параметры
► Напряжение питания: 3В … 5.5В
► Диапазон измеряемых температур: -55°C … +125°C
► Точность: ±0.5°C в приделах -10°C … +85°С.
► Интерфейс: 1-Wire
Описание датчика DS18B20+
Датчик поставляется в трех корпусах: 3-х контактный TO-92 (DS18B20+), 8-контактный SO (DS18B20Z+) и 8-контактный μSOP (DS18B20U+). Так же, TO-92, поставляется в водонепроницаемом исполнении, так что можно использовать его в бойлер, аквариуме или даже в морозильной камере, без дополнительной защиты от воды или влаги (к датчику припаяны 3 провода: черный (земля или GND), красный (питание или VDD) и белый (данные)).
Датчик работает по интерфейсу 1-wire, для работы которой необходима одна шина данных (так же, необходим резистор на 4.7 кОм, выполняющий роль «Подтяжки»). Все датчики DS18B20 содержат собственный 64-битый код, запрограммированный в ПЗУ, поскольку все датчики имеет свой собственный код, количество датчиков подключаемых по одной шине, почти неограниченно.
Еще одна особенность, является то, что он может работать без питания, такой режим называют «Паразитный». Для включения датчика, требуется всего два провода — шина данных и GND, принципиально схему включения датчика Ds18b20, можно посмотреть ниже.
Нормальная схема включения
Паразитная схема включения
Подключение датчика DS18B20 к Arduino
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Провод DuPont, 2,54 мм, 20 см x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.
► Датчик температуры DS18b20+ x 2 шт.
► Резистор 4.7 кОм x 1 шт.
► Макетная плата MB-102 (Breadboard) x 1 шт.
Подключение:
Для подключения датчика DS18b20 к Arduino UNO, будем использовать макетную плату BreadBoard, принципиальную схему можно посмотреть на рисунке ниже. Установим датчик в макетную плату BreadBoard, как показано на рисунке, между ногой DQ и VDD необходимо установить резистор на 4,7 кОм, а ногу VDD подключить в выводам +5V (Arduino) и ногу GND к выводу GND (Arduino), ногу DQ необходимо подключить к выводу 2 (Arduino) (в этом примере использую pin 2), схема собрана.
Для этого эксперимента необходимо скачать и установить библиотеку «DallasTemperature v.3.4» и «OneWire v.2.2» (скачать их можно в конце статьи). Далее, запускаем среду программирования IDE Arduino, копируем пример кода в в окно программы и загружаем в контроллер.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
/* Тестирование производилось на Arduino IDE 1.6.11 Дата тестирования 12.11.2016г. */ #include <OneWire.h> // Подключаем библиотеку OneWire #include <DallasTemperature.h> // Подключаем библиотеку DallasTempature #define ONE_WIRE_BUS 2 // Указываем, к какому выводу подключена DQ OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup(void) { Serial.begin(9600); // Задаем скорость передачи данных sensors.begin(); // Запуск библиотеки, по умолчанию 9 бит } void loop(void) { Serial.print(" Запрос температуры..."); sensors.requestTemperatures(); // Запрос на считывание температуры Serial.println("Считано"); Serial.print(" Температура датчика 1: "); Serial.print(sensors.getTempCByIndex(0)); // Отображение температуры датчика 1 } |
Далее, открываем мониторинг порта, котором увидим показания температура с датчика.
Подключение нескольких датчиковoв DS18B20+
Данном примере подключение будет аналогичным, кроме одного, в плату BreadBoard параллельно первому датчику, подключим второй датчик, схему подключения можно посмотреть ниже.
Запускаем среду программирования IDE Arduino, копируем пример кода в в окно программы и загружаем в контроллер.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
/* Тестирование производилось на Arduino IDE 1.6.11 Дата тестирования 12.11.2016г. */ #include <OneWire.h> // Подключаем библиотеку OneWire #include <DallasTemperature.h> // Подключаем библиотеку DallasTempature #define ONE_WIRE_BUS 2 // Указываем, к какому выводу подключена DQ OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup(void) { Serial.begin(9600); // Задаем скорость передачи данных sensors.begin(); // Запуск библиотеки, по умолчанию 9 бит } void loop(void) { Serial.print(" Reading Temperature..."); sensors.requestTemperatures(); // Запрос на считывание температуры Serial.println("Read"); Serial.print(" Sensor Temperature 1: "); Serial.print(sensors.getTempCByIndex(0)); // Отображение температуры датчика 1 Serial.print(" Reading Temperature..."); Serial.println("Read"); Serial.print(" Sensor Temperature 2: "); Serial.print(sensors.getTempCByIndex(1)); // Отображение температуры датчика 2 } |
Ссылки
Документация к DS18B20+
Скачать библиотеку DallasTemperature
Скачать библиотеку OneWire v.2.2
Купить на Aliexpress
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
Датчик температуры DS18b20
Купить в Самаре и области
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
Датчик температуры DS18b20