Как подключить к Ардуино термодатчик DS18B20 и DS18B22, чтобы сделать термометр с помощью библиотеки OneWire — рассмотрим в этом уроке. В отличие от датчика температуры и влажности DHT11, сенсор работает в широком диапазоне температур и способен измерять отрицательные температуры. Интегральный датчик температуры DS18B20 для Arduino имеет разрешающую способность измерений до 0,0625 °C.
Датчик DS18B20 распиновка, характеристики
Подключение и распиновка термодатчика ds18b20
Характеристики DS18B20 Arduino (datasheet)
диапазон измерения температуры -55 … +125 °C;
погрешность сенсора не превышает 0,5 °C;
разрешающая способность достигает 0,0625 °C;
сенсор DS18B20 откалиброван при изготовлении;
можно подключить до 127 датчиков на одной линии;
для подключения требуется только 3 провода.
Цифровой датчик DS18B20 отправляет данные по Wire шине и может работать на одной линии с множеством других устройств. Каждый датчик имеет свой персональный 64-битный код, позволяющий микроконтроллеру Arduino общаться на одной шине сразу с несколькими сенсорами. Датчик преобразует температуру окружающей среды в цифровой код, т.е. для подключения не требуется дополнительного АЦП.
Подключение к Ардуино датчика ds18b20
Для этого занятия потребуется:
Arduino Uno / Arduino Nano / Arduino Mega;
термодатчик DS18B20;
макетная плата;
резистор на 4.7 кОм;
провода «папа-мама», «папа-папа».
Схема подключения датчика ds18b20 к Arduino Uno
Для подключения DS18b20 к Arduino следует использовать макетную плату. Среднюю ножку сенсора (DATA) следует подключить к цифровому пину 2 платы Ардуино и подтянуть эту шину через резистор 4,7 кОм к линии +5 Вольт. Подключите датчик температуры DS18B20 к микроконтроллеру Arduino Uno согласно схеме, представленной на картинке выше и загрузите следующий скетч.
Работа с библиотекой DallasTemperature
Библиотека для Arduino DallasTemperature Sensors OneWire значительно облегчает и упрощает работу с сенсором DS18B20. Описание библиотеки DallasTemperature.h на русском говорит, что датчик управляется несколькими простыми функциями, которые представлены в следующем скетче. Схема подключения датчика не меняется, а скачать библиотеку DallasTemperature.h для Ардуино можно на нашем сайте здесь.
для сенсора можно использовать любой порт микроконтроллера общего назначения, указав его в скетче;
перед загрузкой программы, необходимо установить библиотеки DallasTemperature и OneWire.
Датчик температуры ds18b20 подключение к Ардуино
ds18b20 подключение к Ардуино нескольких датчиков
DS18B20 и DS18B22 работает по интерфейсу wire, для этого способа подключения необходима только одна шина данных и резистор на 4.7 кОм в качестве «Подтяжки». Все сенсоры DS18B20 для Ардуино содержат собственный 64-битый код, хранящийся в ПЗУ устройства. Благодаря этому количество датчиков подключаемых к микроконтроллеру по одной шине с библиотекой OneWire.h, почти неограниченно.
Скетч для нескольких датчиков на одной шине
#include "OneWire.h"
#include "DallasTemperature.h"
OneWire oneWire(2); // порт подключения датчиковDallasTemperature ds(&oneWire);
byte num; // количество подключенных датчиковvoidsetup() {
Serial.begin(9600); // инициализация монитора порта
ds.begin(); // инициализация датчика ds18b20
num = ds.getDeviceCount(); // узнаем количество датчиковSerial.print("Number: "); // выводим полученное количествоSerial.println(num);
}
voidloop() {
// выполняем цикл столько, сколько найдено датчиков на шинеfor (byte i = 0; i < num; i++){
Serial.print("Sensor ");
Serial.print(i);
Serial.print(": ");
ds.requestTemperatures(); // считываем температуру с датчикаSerial.print(ds.getTempCByIndex(i));
Serial.println("C");
}
Serial.println("");
}
Пояснения к коду:
DallasTemperature датчик подключается к цифровому порту 2 платы;
цикл for выполняется столько раз, сколько обнаружено сенсоров на одой шине.
Заключение. Датчик может быть выполнен в нескольких вариантах (смотри фото выше), от этого будет зависеть только схема подключения термодатчика к Arduino NANO или UNO. В первом случае необходимо использовать подтягивающий резистор на 4.7 кОм. Датчик, в виде готового модуля уже имеет резистор. Третий вариант — это датчик в герметичном корпусе, который можно смело использовать в горячей воде.
Спасибо огромное автору, для людей кто впервые подобное пробуют очень понятно и доходчиво написано!!
спасибо! есть момент один, прыгают сотые доли, как можно их «успокоить»?
Возможно, поможет округление до целого числа:
floor() — округление вниз
ceil() — округление вверх
round() — округление в ближайшую сторону
На некоторых версиях Ардуино айдии библиотека не компилируется.
Я использую библиотеку microDs18b20
Видать у Вас ESP32, на ней старые версии библиотеки microDs18b20 не работали
при первом примере выводит постоянно -127 (использую есп32 с 3 н16р8)
Так было при подаче питания датчику 5v, подал 3.3v и заработало
update. Работает и от 5v. Не работает на 13 пине.
«-127» — признак отключенного датчика. У меня оба примера на ESP32C3 Super-mini работают нормально (0 — Пин данных датчиков)
при добавлении команды Serial.println(«C»), на дисплее после С появляются еще два столбика, как убрать?