Цифровой датчик температуры DS18B20 базируется на одноименной микросхеме. Благодаря водонепроницаемому (при этом без степени защиты IP) чувствительному корпуса данную модификацию можно использовать для контактного измерения температуры жидкостей или тела человека. Рекомендуется ограничивать максимальную температуру погруженной жидкости до 100 градусов Цельсия. Также не следует использовать датчик в соленых и агрессивных средах, дабы избежать быстрого выхода его из строя ввиду постепенного разрушения защитного корпуса.
Высокая точность измерений достигается засчет встроенного 12-битного аналого-цифрового преобразователя в микросхему датчика. На практике удается достичь погрешности измерений ±0.5°C. Для подключения достаточно одного цифрового входа вашего контроллера: DS18B20 передает данные по однопроводной шине 1-Wire. Совместим как с 3.3-вольтовой, так и 5-вольтовой логикой.
Для правильного подключения нужно разместить резистор номиналом 4.7 кОм в роли подтягивающего между линией передачи данных (Data) и положительным выводом питания (VCC).
Данная версия датчика представлена с 5-метровым проводом и клеммой типа HX2.54-3P для удобного монтажа в печатные платы и уже разведенные электрические схемы ваших проектов и устройств.
Библиотеки, которые вам пригодятся для работы с датчиком в Arduino IDE:
Технические характеристики:
Микросхема датчика: DS18B20
Материал наконечника: нержавеющая сталь
Размеры наконечника: диаметр 6 мм и длина 30 мм
Напряжение питания: 3…5 В постоянного тока
Длина кабеля: 5 м
Тип клеммы для подключения: HX2.54-3P
Диапазон измерений температуры: -55…+125°C (рекомендуется не более +100°C)
Разрешение АЦП: 9…12 бит
Погрешность измерений: до ±0.5°C (для диапазона от -10°C до +85°C)
Время опроса данных: <750 мс
Схема подключения к плате Arduino:
Программный код для DS18B20 и Arduino в среде Arduino IDE:
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(){
Serial.begin(9600);
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
Serial.print("Celsius temperature: ");
Serial.print(sensors.getTempCByIndex(0));
delay(1000);
}