Уважаемые читатели! Если вы ищете полезную информацию о подключении датчика температуры DS18B20 к плате Arduino, эта статья для вас. Мы подробно рассмотрим особенности датчика, схемы подключения, библиотеки и примеры кода для Arduino.
Обзор датчика DS18B20
DS18B20 – это цифровой датчик температуры с интерфейсом 1-Wire. Он имеет следующие преимущества:
- Высокая точность измерений: ±0,5°C в диапазоне от -10 до +85°C
- Широкий диапазон рабочих температур: от -55 до +125°C
- Несколько вариантов корпуса: TO-92, TO-18, в водонепроницаемом исполнении
- Низкое энергопотребление
- Простота подключения и программирования, справится даже начинающий программист
- Возможность подключения нескольких датчиков к одному выводу контроллера
- Уникальный 64-битный серийный номер, позволяющий однозначно идентифицировать каждый датчик в сети
- Наличие большого количества библиотек для различных платформ
- Низкая стоимость
- Доступность и распространенность, легко найти доступ и необходимые аксессуары
Благодаря этим характеристикам, датчик DS18B20 широко используется для измерения температуры в различных системах: от носимых гаджетов и метеостанций до промышленных контроллеров и систем "умный дом". Рассмотрим более подробно варианты его применения с микроконтроллерными платами Arduino.
Подготовка к подключению DS18B20
Перед началом работы с датчиком температуры необходимо подготовить:
- Плату Arduino (UNO, Mega, Nano или другую) или совместимую
- DS18B20 в корпусе TO-92 или другом (один или более штук)
- Библиотеку для работы с датчиком (DallasTemperature, OneWire или др.)
- Программу для Arduino - тестовый скетч, пример кода из библиотеки
- 4,7 кОм резистор (или 2 резистора 10 кОм)
- Соединительные провода, порты платы Arduino
Для реализации полноценного термометра или другой системы на базе DS18B20 понадобятся дополнительные компоненты (дисплей, часы реального времени и т.д.), о них речь пойдет ниже.
Схема подключения одного DS18B20
Подключение может быть выполнено подключение ds18b20 к Arduino двумя способами:
- С внешним питанием 3-5 В
- В режиме паразитного питания
Рассмотрим оба варианта более подробно.
Подключение DS18B20 к Arduino с внешним питанием
Схема простая и включает следующие компоненты:
- Arduino board
- DS18B20 в корпусе TO-92
- Резистор 4,7 кОм
- Источник питания 3-5 В
Схема подключения DS18B20 к Arduino с внешним питанием приведена на рисунке:
Датчик DS18B20 и резистор 4,7 кОм подключаются к любому свободному цифровому пину Arduino. В примерах обычно используется пин 2, 3 или 4.
Подключение DS18B20 к Arduino в режиме паразитного питания
Этот режим позволяет использовать подключение датчика ds18b20 к Arduino всего два провода для передачи данных и электропитания:
В режиме паразитного питания ток по линии данных запасается во внутреннем конденсаторе датчика и обеспечивает его работу. Но этот режим не всегда устойчив, поэтому при температурах выше +100°С рекомендуется использовать внешнее питание DS18B20 от 3 до 5 В.
Подключение нескольких датчиков DS18B20
Одно из главных преимуществ интерфейса 1-Wire, который используется в DS18B20, - это возможность подключение нескольких ds18b20 к Arduino к одной линии связи. Рассмотрим особенности организации такого соединения.
Особенности подключения нескольких DS18B20 к Arduino
- Датчики соединяются параллельно, линия данных общая
- Необходимо знать уникальный 64-битный код каждого датчика
- По коду датчика Arduino однозначно определяет, с какого из сенсоров получены данные о температуре
- Количество датчиков на одной линии ограничено суммарным током потребления
- Максимальная длина линии зависит от сечения провода и количества датчиков
Схема подключения нескольких датчиков DS18B20 к Arduino (до 8 шт.) приведена ниже:
Важный момент - каждый датчик должен подключаться к линии данных через свой резистор 4,7 кОм для ограничения тока. Иначе возможны всей цепи. Для надежной передачи данных при подключении 8 датчиков DS18B20 потребуется провод сечением не меньше 0,5 мм2 при длине до 20 метров. Также важно обеспечить качественный контакт в клеммных колодках.
Библиотеки для работы с DS18B20
Для взаимодействия с датчиком DS18B20 в среде Arduino IDE существует несколько библиотек:
OneWire | Базовая библиотека для работы с устройствами однопроводного интерфейса |
DallasTemperature | Расширенная библиотека для датчиков DS18x20 на базе OneWire |
DS18x20 | Альтернативная библиотека высокого уровня для датчиков DS18B20 и DS18S20 |
Рассмотрим подробнее наиболее популярную и функциональную библиотеку DallasTemperature.
Библиотека DallasTemperature
Основные возможности:
- Автоматическое определение количества датчиков на линии
- Поддержка основных функций датчиков DS18B20 и DS18S20
- Одновременная работа с несколькими датчиками на одном пине
- Богатый набор вспомогательных функций для опроса и конвертации данных
- Аппаратный прерыватель для опроса датчиков в фоновом режиме без задержек
- Примеры использования для Arduino в официальной документации
- Активная техподдержка на GitHub
- Регулярные обновления и исправление ошибок
- Совместимость с разными платформами и компиляторами
- Распространяется по лицензии GNU GPL
По совокупности характеристик DallasTemperature является лучшим выбором для работы с датчиками DS18B20 в Arduino IDE. Рассмотрим установку библиотеки и примеры использования ее функций при работе с датчиком.
Установка библиотеки DallasTemperature
Установка выполняется стандартными средствами Arduino IDE:
- Заходим в меню Скетч - Подключить библиотеку - Дополнительные библиотеки
- В поле поиска вводим название "dallastemperature"
- Устанавливаем последнюю версию библиотеки
- Подключаем библиотеку в скетче проекта командой
#include <DallasTemperature.h>
После этого библиотека готова к использованию в программах для Arduino.
Инициализация датчика DS18B20. Пример инициализации одного или нескольких датчиков DS18B20 на шине 1-Wire для дальнейшей работы с ними:
#include <OneWire.h> #include <DallasTemperature.h> OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); sensors.begin();
Чтение температуры с DS18B20. Для считывания температуры с датчика необходимо:
- Запросить измерение температуры командой
sensors.requestTemperatures()
- Получить результат функцией
sensors.getTempCByIndex(0)
для первого датчика
Использование DS18B20 в термореле
Датчик DS18B20 можно успешно применить в ds18b20 подключение Arduino термореле для точного поддержания заданной температуры. Пример схемы:
Здесь датчик DS18B20 контролирует температуру объекта, а микроконтроллер Arduino управляет реле включения нагревателя или охладителя. Такая схема может использоваться в термостатах, инкубаторах, климатических камерах.
Регистрация показаний DS18B20 на карте памяти
Для построения графиков температурной динамики необходимо сохранить показания датчика DS18B20 во внешнюю память. Это можно сделать с помощью модуля реального времени (RTC) и карты памяти SD, подключенных к Arduino.
Подключение модуля RTC к Arduino
Модуль часов реального времени DS3231 или аналогичный подключается по интерфейсу I2C:
В программе для Arduino производится установка текущей даты и времени с компьютера, а затем модуль RTC обеспечивает точный отсчет времени для привязки данных о температуре.
Подключение модуля карты памяти
Модуль карты microSD подключается к плате Arduino Uno по SPI интерфейсу:
Обмен данными с картой памяти происходит с использованием библиотеки SD.h. Производится открытие файла, запись данных с добавлением метки времени от модуля RTC.
Структура данных на SD карте
Данные на карту памяти записываются в текстовом CSV файле, для последующей обработки в табличном редакторе. Пример строки файла:
23.11.2023 15:30:05, 23.15
Где первое значение - дата и время (от модуля RTC), второе значение - температура, считанная с DS18B20.
Построение графиков температуры
После записи данных о температуре на SD карту в течение требуемого времени, карта извлекается из модуля и подключается к ПК.
Далее CSV файл импортируется в Microsoft Excel, LibreOffice Calc или другую табличную программу. По имеющимся дате/времени и значениям температуры строится график.
Анализ графиков термодинамики
Полученные графики позволяют проанализировать изменение температуры объекта во времени и сделать выводы о влиянии различных факторов.
Например, термоизоляционные свойства материалов, эффективность систем нагрева/охлаждения, колебания температуры окружающей среды.