Термометр на датчике ds18b20 принцип работы и подключение

0
10

Термометр на ds18b20

Для точного контроля микроклимата в теплице, инкубаторе или системе отопления подойдет устройство с однопроводным выходом 1-Wire. Оно выдает показания с точностью до ±0,5°C в диапазоне от -55°C до +125°C. Корпус в герметичном исполнении позволяет использовать его в условиях высокой влажности.

Цифровой сигнал передается по двум проводам – питание и земля, при этом линия данных совмещена с питанием. Это упрощает разводку и снижает количество соединений. Для стабильной передачи на расстояния свыше 10 метров потребуется подтягивающий резистор 4,7 кОм.

Подсоедините красный провод к +5V, черный – к GND, а желтый или белый – к выбранному GPIO микроконтроллера. Для Arduino Nano подойдет контакт D2, для ESP8266 – любой цифровой пин. В коде укажите адрес устройства – он записывается в виде 64-битного шестнадцатеричного кода, который можно считать с помощью библиотеки OneWire.

Программная обработка данных занимает не более 750 мс на одно измерение. Готовые скетчи для платформ Arduino и Raspberry Pi доступны в открытых репозиториях – достаточно заменить адрес на актуальный и настроить периодичность опроса. Погрешность калибровки проверяется погружением в ледяную воду (0°C) и кипяток (100°C).

Как использовать цифровой измеритель температуры с интерфейсом 1-Wire

Устройство передаёт данные в цифровом виде по протоколу 1-Wire, что исключает погрешности из-за длины провода. Разрешение можно задать от 9 до 12 бит (шаг 0,5°C, 0,25°C, 0,125°C или 0,0625°C). Для 12-битного режима время измерения составит 750 мс.

Пример кода для Arduino:

#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWire(2);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600);
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float temp = sensors.getTempCByIndex(0);
Serial.print(temp);
delay(1000);
}

Для защиты от помех в длинных линиях используйте экранированный кабель. Если питание подаётся через паразитный режим (DQ), время активного обмена не должно превышать 10 мс.

Погрешность без калибровки – ±0,5°C в диапазоне -10…+85°C. Для точных замеров проведите калибровку в контрольных точках (0°C и 100°C), корректируя коэффициенты в прошивке.

Как функционирует цифровой измеритель температуры и его сильные стороны

Цифровой сенсор преобразует тепловую энергию в электрический сигнал с точностью ±0,5°C в диапазоне от -10°C до +85°C. Внутри используется кремниевый кристалл, меняющий сопротивление при колебаниях температуры. Результат передается в цифровом виде по однопроводному интерфейсу.

Конструктивные особенности

Корпус выполнен из нержавеющей стали, что позволяет использовать устройство в агрессивных средах. Влагозащищенное исполнение выдерживает погружение на глубину до 3 метров. Размеры не превышают 6х3 мм, что упрощает монтаж в труднодоступных местах.

Преимущества перед аналогами

Для связи с микроконтроллером требуется всего один провод, что сокращает количество соединений. Поддерживается режим паразитного питания от линии данных – это исключает необходимость внешнего источника. Одновременное подключение до 128 устройств на одну шину позволяет создавать распределенные системы мониторинга.

Автоматическая калибровка встроенного АЦП обеспечивает стабильность показаний в течение 10 лет эксплуатации. Время преобразования составляет 750 мс при максимальном разрешении 12 бит (шаг 0,0625°C).

Схема соединения с Arduino и Raspberry Pi

Для Arduino используйте трёхпроводную схему: питание (3.3V или 5V), земля (GND) и сигнальный провод (DQ) к цифровому пину, например, D2. Подтягивающий резистор 4.7 кОм обязателен между DQ и питанием.

На Raspberry Pi подключите красный провод к 3.3V (контакт 1), чёрный – к GND (контакт 6), жёлтый – к GPIO4 (контакт 7). Резистор 4.7 кОм добавьте между сигнальным проводом и питанием.

Для нескольких экземпляров на одной шине соблюдайте параллельное соединение: все DQ к одному GPIO, общий GND и питание. Максимальная длина проводов – до 30 м при использовании экранированного кабеля.

Проверьте соединение командой ls /sys/bus/w1/devices/ на Raspberry Pi или скетчем OneWire на Arduino. Отсутствие списка устройств указывает на ошибку в схеме.