DS18B20: подробное руководство по подключению к Arduino, несколько датчиков, тесты, Nokia 5110
DS18B20 — цифровой датчик температуры с протоколом 1-Wire, позволяющий подключить до 127 штук к одному пину Arduino. Диапазон измерений от -55 °C до +125 °C, высокая точность ±0,5 °C в диапазоне -10…+85 °C, разрешение 9–12 бит. Каждый датчик имеет уникальный 64-битный заводской адрес, что упрощает работу с несколькими экземплярами. Поддерживает паразитное питание (VCC = GND), но в этом режиме максимальная температура +100 °C. Длина линии до 100–300 м на витой паре с хорошим экранированием. Идеален для метеостанций, теплиц, аквариумов, систем отопления, холодильников, мониторинга температуры жидкостей и воздуха.
Корпуса DS18B20
Производитель выпускает датчик в разных исполнениях: классический пластиковый TO-92 (похож на транзистор), водонепроницаемый в металлической гильзе (для погружения в воду, чайники, аквариумы), SMD-вариант для поверхностного монтажа.
Распиновка и базовое подключение
TO-92 (плоская сторона к себе): слева — GND, центр — DATA, справа — VCC (+5 В). Подтягивающий резистор 4,7 кОм от DATA к +5 В обязателен для стабильной работы шины.
Разрешение и время измерения
12 бит — максимальная точность (0,0625 °C), но 750 мс на измерение. 9 бит — самое быстрое (93 мс), точность 0,5 °C.
Базовый скетч — один датчик
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 12
#define ERROR_TEMP -127.0 // Специальное значение, сигнализирующее о проблеме с датчиком
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600);
sensors.begin();
}
void loop() {
sensors.requestTemperatures(); // Запрос температуры
float temp = sensors.getTempCByIndex(0); // Получаем температуру первого датчика
if (temp == ERROR_TEMP) {
Serial.println("Ошибка: датчик не найден или не отвечает");
} else {
Serial.print("Температура: ");
Serial.print(temp, 2);
Serial.println(" °C");
}
delay(1500);
}
Вывод на дисплей Nokia 5110
Интегрируйте с библиотекой Adafruit_PCD8544: после получения температуры выводите display.print(temp, 1); display.println(» °C»);. Обновляйте экран каждые 5–10 секунд.
Тесты в экстремальных условиях
Датчик мгновенно реагирует на кипяток — за 2–4 секунды показывает 95–99 °C. В чашке чая после заливки кипятка — реальные 75–82 °C. Охлаждение до -15 °C в морозилке занимает 10–15 минут. Выдерживает длительную работу без деградации.
Заключение
DS18B20 — эталон для проектов Arduino. Простота, надёжность, 1-Wire, длинные линии, множество датчиков, высокая точность и паразитное питание делают его незаменимым. Освойте поиск адресов, настройку разрешения, вывод на дисплей — и создавайте сложные системы мониторинга.