как узнать адрес датчика ds18b20 на ардуино
Термометр DS18B20. Основы
Описание
DS18B20 – высокоточный цифровой датчик температуры. Основные характеристики:
В наборе идёт датчик в герметичном исполнении со стандартным гнездом (шаг 2.54 мм) для подключения
Подключение
Датчик имеет следующие назначения пинов:
Датчик подключается к любому цифровому пину Arduino, но пин должен быть подтянут к питанию резистором 4.7 кОм. На один пин можно подключить несколько датчиков DS18B20.
В рамках набора GyverKIT резистор на 4.7 кОм можно заменить двумя резисторами на 10 кОм (есть в комплекте), подключенными параллельно:
Библиотеки
Для этого датчика есть несколько библиотек:
В примерах на этом сайте мы будем использовать microDS18B20, так как она в несколько раз легче и проще в использовании, чем официальная. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию microDS18B20. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.
Примеры
Библиотека позволяет работать по схеме “один датчик – один пин”, в которой адрес датчика получать не нужно. Достаточно подключить и использовать:
Каждый датчик имеет свой уникальный адрес. Его можно прочитать следующим образом:
Данный код выводит в порт адрес текущего подключенного датчика.
Зная адреса датчиков, можно подключить несколько штук на один пин и обращаться к ним в коде следующим образом:
Датчик температуры DS18B20,Arduino и библиотека OneWire.
Так исторически сложилось, что на текущий момент одним из самых популярных цифровых температурных датчиков является датчик DS18B20 корпорации Dallas Semiconductor. Конечно же и мы не можем обойти его стороной.
Сейчас вы можете приобрести его в разном исполнение. И как готовый модуль, в влагозащитном корпусе, просто датчик в разном исполнении. Дума каждому найдется предложение для его нужд.
Особенности датчика :
Вся память DS18B20 включает в себя оперативную (SRAM) и энергонезависимую (EEPROM) память. В EEPROM хранятся регистры TH, TL и регистр конфигурации. Если функция тревожного сигнала не используется, то регистры TH и TL могут использоваться как регистры общего назначения. В режиме термостата TH содержит значение верхнего порога температуры, TL соответственно нижнего порога.
Кодинг.
Первым делом нам потребуется библиотека OneWire которая нам очень упростит жизнь. Скачать можно с GitHub или с нашего сайта.
Конструктор, Pin – номер вывода, к которому подключен датчик.
Инициализация операции на шине. С этой команды должна начинаться любая операция обмена данными. Возвращает:
Запись байта. Передает байт в устройство на шине.
Отправим команду 0x44 инициализации измерения температуры.
uint8_t.read_bytes(buf, 9) — Чтение 9 ти байтов данных.
Основные команды библиотеке OneWire :
Вот и сам код из библиотеке :
Собственно это библиотека подходить для всех датчиков семейства DS18 (DS18B20, DS18S20, DS1820, DS1822) подключение ни чем не отличается. Ну а некоторые различия можно уже узнать из datesheet к ним.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Подключение датчика температуры DS18B20 к Arduino
Сегодня мы будем подключать датчик температуры DS18B20 к arduino.
Основные характеристики датчика DS18B20 :
Блок схема датчика DS18B20
Фотография датчика DS18B20 в корпусе TO-92
Датчик температуры DS18B20 работает с arduino по протоколу передачи данных 1-Wire® и позволяет подключить несколько датчиков на одну шину.
Датчики подключаются к arduino двумя вариантами:
Каждый датчик температуры имеет уникальный 64-битный адрес устройства, по которому у нас есть возможность опросить определенный датчик и взять с него значения температуры.
После успешного скачивания библиотеки и установки,
запускаем Arduino IDE, и переходим к примерам по работе с датчиком, и выбираем пример Multiple.
В примере ищем строку #define ONE_WIRE_BUS 2 где 2 это номер цифрового пина arduino к которому подключен датчик ( в нашем случае это 10 пин ) и меняем на строку на #define ONE_WIRE_BUS 10 и заливаем скетч в нашу плату ардуино.
Открываем монитор порта и снимаем галочку с “Автопрокрутка” и перемещаемся в самый верх окна монитора порта.
Где мы видим строки
Датчики как мы видим работают, и температуру мы получаем.
Датчик температуры Arduino DS18B20
Датчик температуры в Arduino – один из самых распространенных видов сенсоров. Разработчику проектов с термометрами на Arduino доступно множество разных вариантов, отличающихся по принципу действия, точности, конструктивному исполнению. Цифровой датчик DS18B20 является одним из наиболее популярных температурных датчиков, часто он используется в водонепроницаемом корпусе для измерения температуры воды или других жидкостей. В этой статье вы найдете описание датчика ds18b20 на русском, мы вместе рассмотрим особенности подключения к ардуино, принцип работы датчика, описание библиотек и скетчей.
Описание датчика DS18B20 для Arduino
DS18B20 – это цифровой температурный датчик, обладающий множеством полезных функций. По сути, DS18B20 – это целый микроконтроллер, который может хранить значение измерений, сигнализировать о выходе температуры за установленные границы (сами границы мы можем устанавливать и менять), менять точность измерений, способ взаимодействия с контроллером и многое другое. Все это в очень небольшом корпусе, который, к тому же, доступен в водонепроницаемом исполнении.
Микросхема имеет три выхода, из которых для данных используется только один, два остальных – это земля и питание. Число проводов можно сократить до двух, если использовать схему с паразитным питанием и соединить Vdd с землей. К одному проводу с данными можно подключить сразу несколько датчиков DS18B20 и в плате Ардуино будет задействован всего один пин.
Виды корпусов DS18B20
Температурный датчик DS18B20 имеет разнообразные виды корпуса. Можно выбрать один из трех – 8-Pin SO (150 mils), 8-Pin µSOP, и 3-Pin TO-92. Последний является наиболее распространенным и изготавливается в специальном влагозащитном корпусе, так что его смело можно использовать под водой. У каждого датчика есть 3 контакта. Для корпуса TO-92 нужно смотреть на цвет проводов: черный – земля, красный – питание и белый/желтый/синий – сигнал. В интернет-магазинах можно купить готовый модуль DS18B20.
Где купить датчик
Естественно, что DS18B20 дешевле всего купить на Алиэкспрессе, хотя он продается и в любых специализированных российских интернет-магазинах с ардуино. Приведем несколько ссылок для примера:
Особенности цифрового датчика DS18B20
Память датчика состоит из двух видов: оперативной и энергонезависимой – SRAM и EEPROM. В последнюю записываются регистры конфигурации и регистры TH, TL, которые могут использоваться как регистры общего назначения, если не используются для указания диапазона допустимых значений температуры.
Основной задачей DS18B20 является определение температуры и преобразование полученного результата в цифровой вид. Мы можем самостоятельно задать необходимое разрешение, установив количество бит точности – 9, 10, 11 и 12. В этих случаях разрешающие способности будут соответственно равны 0,5С, 0,25С, 0,125С и 0,0625С.
Во время включения питания датчик находится в состоянии покоя. Для начала измерения контроллер Ардуино выполняет команду «преобразование температуры». Полученный результат сохранится в 2 байтах регистра температуры, после чего датчик вернется в первоначальное состояние покоя. Если схема подключена в режиме внешнего питания, микроконтроллер регулирует состояние конвертации. Во время выполнения команды линия находится в низком состоянии, после окончания программы линия переходит в высокое состояние. Такой метод не допустим при питании от паразитной емкости, так как на шине постоянно должен сохраняться высокий уровень сигнала.
Полученные температурные измерения сохраняются в SRAM датчика. 1 и 2 байты сохраняют полученное значение температуры, 3 и 4 сохраняют пределы измерения, 5 и 6 зарезервированы, 7 и 8 используются для высокоточного определения температуры, последний 9 байт хранит устойчивый к помехам CRC код.
Подключение DS18B20 к Arduino
DS18B20 является цифровым датчиком. Цифровые датчики передают значение измеряемой температуры в виде определенного двоичного кода, который поступает на цифровые или аналоговые пины ардуино и затем декодируется. Коды могут быть самыми разными, ds18b20 работает по протоколу данных 1-Wire. Мы не будем вдаваться в подробности этого цифрового протокола, укажем лишь необходимый минимум для понимания принципов взаимодействия.
Обмен информацией в 1-Wire происходит благодаря следующим операциям:
Для работы с датчиком нам понадобится программное обеспечение:
Из оборудования понадобятся:
К плате Ардуино UNO датчик подключается просто: GND с термодатчика присоединяется к GND Ардуино, Vdd подключается к 5V, Data – к любому цифровому пину.
Простейшая схема подключения цифрового датчика DS18B20 представлена на рисунке.
В режиме паразитного питания контакт Vdd с датчика подключается к GND на Ардуино – в этом случае пригодятся только два провода. Работу в паразитном режиме лучше не использовать без необходимости, так как могут ухудшиться быстродействие и стабильность.
Скетч для DS18B20
Алгоритм получения информации о температуре в скетче состоит из следующих этапов:
Пример простого скетча для DS18B20
Самый простой скетч для работы с цифровым датчиком выглядит следующим образом. (в скетче мы используем библиотеку OneWire, о которой поговорим подробнее чуть позже).
Скетч для работы с датчиком ds18b20 без delay
Можно немного усложнить программу для ds18b20, чтобы избавиться от функции delay(), тормозящей выполнение скетча.
Библиотека DallasTemperature и DS18b20
В своих скетчах мы можем использовать библиотеку DallasTemperature, упрощающую некоторые аспекты работы с датчиком ds18b20 по 1-Wire. Пример скетча:
Библиотека OneWire для работы с DS18B20
DS18B20 использует для обмена информацией с ардуино протокол 1-Wire, для которого уже написана отличная библиотека. Можно и нужно использовать ее, чтобы не реализовывать все функции вручную. Скачать OneWire можно здесь. Для установки библиотеки скачайте архив, распакуйте в папку library вашего каталога Arduino. Подключается библиотека с помощью команды #include
Основные команды библиотеки OneWire:
Важно правильно настроить режим питания в скетче. Для паразитного питания в строке 65 нужно записать ds.write(0x44, 1);. Для внешнего питания в строке 65 должно быть записано ds.write(0x44).
Write позволяет передать команду на термодатчик. Основные команды, подаваемые в виде битов:
Подключение нескольких датчиков температуры DS18B20 к Ардуино
Все датчики DS18B20 подключаются параллельно, для них всех достаточно одного резистора. При помощи библиотеки OneWire можно одновременно считать все данные со всех датчиков. Если количество подключаемых датчиков более 10, нужно подобрать резистор с сопротивлением не более 1,6 кОм. Также для более точного измерения температуры нужно поставить дополнительный резистор на 100…120 Ом между выходом data на плате Ардуино и data на каждом датчике. Узнать, с какого датчика получено то или иное значение, можно с помощью уникального серийного 64-битного кода, который будет выдан в результате выполнения программы.
Для подключения температурных датчиков в нормальном режиме нужно использовать схему, представленную на рисунке.
В режиме паразитного питания схема выглядит иначе. Контакт Vdd практически не задействован, питание идет через выход data.
Выводы
Микросхема Dallas DS18B20 является очень интересным устройством. Датчики температуры и термометры, созданные на ее основе, обладают приемлемыми для большинства задач характеристиками, развитым функционалом, относительно не дороги. Особенную популярность датчик DS18B20 снискал как влагозащищенное устройство для измерения температуры жидкостей.
За дополнительные возможности приходится платить относительной сложностью работы с датчиком. Для подключения DS18B20 нам обязательно понадобится резистор с номиналом около 5К. Для работы с датчиком в скетчах ардуино нужно установить дополнительную библиотеку и получить определенные навыки для работы с ней – там все не совсем тривиально. Впрочем, можно купить уже готовый модуль, а для скетча в большинстве случаев хватит простых примеров, приведенных в этой статье.
Подключение нескольких DS18B20 к ESP32
В этом руководстве рассказывается, как считывать показания с нескольких датчиков температуры DS18B20 посредством микросхемы ESP32 с помощью среды разработки Arduino IDE.
Мы покажем, как к одной шине данных ESP32 подключить несколько датчиков, установим необходимые библиотеки и приведём простой пример, который вы сможете использовать в своих проектах. Эта инструкция подходит также для плат семейства ESP8266 и различных платформ Arduino.
Описание датчика температуры DS18B20
DS18B20 — цифровой датчик температуры с возможностью подключения одним проводом. Каждому датчику присвоен уникальный 64‑битный серийный номер, что позволяет использовать множество датчиков на одной шине данных (т. е. множество датчиков, подключённых к одной линии ввода-вывода общего назначения).
Это особенно полезно для проектов с регистрацией данных и управлением температурой. DS18B20 — прекрасный датчик, поскольку он недорог, точен и его очень просто использовать.
Распиновка слева-направо: первый вывод — заземление GND, второй — данные, третий, крайний справа, — питание VCC.
Примечание: также существует водонепроницаемая версия датчика температуры DS18B20.
Основные характеристики датчика температуры DS18B20:
Подключение нескольких датчиков DS18B20
Для подключения датчика температуры DS18B20 вам нужно подключить резистор на 4,7 кОм между питанием VCC и линией данных. На следующей схеме показан пример для трёх датчиков (при необходимости вы можете добавить их еще больше).
На вышеприведённой схеме датчик повёрнут закруглённой стороной к нам. Плоская сторона смотрит в обратную сторону.
Подготовка среды разработки Arduino IDE
Для среды Arduino IDE существует дополнение, которое позволяет программировать микросхему ESP32 посредством этой среды и её языка программирования.
Скоро выйдет отдельный материал, как подготовить среду Arduino IDE для работы с ESP32.
Установка библиотек
Перед загрузкой кода вам необходимо установить две библиотеки в среду Arduino IDE. Библиотека OneWire Пола Штоффрегена и библиотека Dallas Temperature. Выполните следующие шаги, чтобы установить эти библиотеки.
Библиотека OneWire
Библиотека Dallas Temperature
Получение адреса датчика DS18B20
Каждому датчику температуры DS18B20 еще на заводе назначается свой серийный номер. В первую очередь вам необходимо узнать этот номер, чтобы промаркировать с его помощью соответствующий датчик. Это необходимо для того, чтобы позже вы могли понять, от какого именно датчика получены показания температуры.
Загрузите следующий код в микросхему ESP32. Убедитесь, что выбрали правильную плату и последовательный COM-порт.