DS18B20 — современный программируемый датчик цифрового типа для контроля изменений температуры с функцией аварийного сигнала. Данные устройства работают согласно протоколу 1-Wire (однопроводная линия связи с микроконтроллером) и снабжены энергонезависимой памятью для сохранения и контроля запрограммированных параметров интерфейса. Корректное измерение температуры DS18B20 происходит в диапазоне от –55° до +125°С, но наименьшая погрешность, составляющая 0,5°С, достигается в диапазоне от –10° до +85°С.
Цифровой датчик данной серии не требует вспомогательного источника напряжения, поскольку для корректной его работы достаточно накопленной энергии с помощью паразитной емкости, которая заряжается от возникающей в линии данных энергии.
Цифровой датчик температуры DS18B20 благодаря своему специфическому 64-разрядному коду разрешает подключать в единую линию связи несколько микросхем данной серии для контроля микроклимата как небольшого офисного здания в Москве, так и огромного производственного цеха.
В зависимости от конструкции микросхема-датчик температуры Dallas DS18B20 для контроля заданных параметров доступна в 3 формах:
Расшифруем, где какой вывод микросхемы, и как правильно ее подключить.
Основные особенности и характеристики датчика температуры DS18B20:
Блок-схема датчика температуры типа DS18B20 выглядит следующим образом:
Исходя из вышеприведенной структуры, рассматриваемый датчик состоит из:
Основная функция микросхемы DS18B20 — трансформация показаний встроенного датчика температуры в цифровой код. Это преобразование зависит от разрешения преобразования, установленного пользователем, которое варьируется от 9 до 12 бит (0,5°–0,625°С). Если настройки не производились, то установка регистра конфигурации соответствует 12 битам.
В начальном состоянии DS18B20 находится в состоянии покоя или иными словами в низком энергетическом уровне. Для начала измерений микроконтроллер подает сигнал [0х44], после чего полученные данные сохраняются в регистр, а сам датчик переходит в режим «покоя».
При работе цифрового датчика температуры DS18B20 от независимого источника питания микроконтроллер способен контролировать процесс выполнения команды [0х44], которая осуществляет измерение температуры. Таким образом, датчик температуры DS18B20 сформирует логический «0» во время трансформации показаний температурного режима и логическую «1» в случае окончания процесса преобразования.
Если питание микросхемы осуществляется при помощи «паразитного метода», то контроль логических «0» и «1» невозможен, поскольку на шине будет постоянно дежурить высокий уровень напряжения питания.
После снятия и обработки сигнала с датчика температуры в микросхеме DS18B20 полученные данные в градусах Цельсия сохраняются в виде 16-битного числа с признаком (S), который отвечает за знак «+» или «-» температуры. Структура регистра температуры будет выглядеть так, как показано ниже.
Если показания температуры выше «0», то показатель S=0, если же значение температуры отрицательное, то S=1. Ниже представлена таблица соответствия данных и температуры.
После выполнения трансформации показаний температуры в 16-битный код полученное число сравнивается со значениями Th и Tl, расположенными в регистре памяти (EEPROM) микропроцессора, а именно второй и третий байты. Структура регистров Th и Tl будет выглядеть следующим образом:
Если полученные данные, 11–4 биты регистра, превышают Th или же ниже параметра Tl, то формируется сигнал аварии на микросхеме. Но на этом измерения не прекращаются, и в случае снижения Th ниже или Tl выше заданного диапазона условие «Авария» сбрасывается.
Если же необходимо самостоятельно выявить один из датчиков, который выдает сигнал «Тревога», то микроконтроллер с помощью команды ECh выполнит тестирование каждого датчика. В случае изменения параметров Th и Tl, выше или ниже занесенных в регистр значений, выдаст код устройства с нарушениями температурного режима.
Микросхема DS18B20 позволяет осуществить 2 типа подключения:
Рассмотрим более детально каждый из них.
Данный тип подключения считается более рациональным. Основное его преимущество — возможность работы с большим количеством датчиков с помощью специальных приложений.
При высоком U на шине микросхемы DS18B20 работает и заряжает Cpp при помощи вывода DQ. Обязательное условие для работы устройства в подобном режиме — заземление Vdd. При смене уровня сигнала на логический «0» питание схемы осуществляется от ранее заряженного конденсатора. В обычном режиме работы микросхема DS18B20 способна демонстрировать непрерывную и стабильную работу при соблюдении электрических характеристик.
Однако при выполнении микросхемой частых преобразований и взаимодействий с памятью потребляемый ток может превысить 1,5 мА. Это приведет к просадке напряжения на шине ниже минимально допустимого уровня. Для решения этой задачи необходимо использовать MOSFET транзистор. Он работает, когда выполняется копирование данных или же преобразование температуры. Тем не менее его используют очень редко, так как запас мощности микросхемы DS18B20 позволяет выполнять вычисления без снижения уровня напряжения.
В большинстве случаев рационально применять данный метод. Однако если измеряемая температура выше 100°С, то возникает большой ток утечки, и заряда конденсатора Cpp не хватает для полноценного функционирования микросхемы. В таких случаях лучше применять питание микросхемы от внешнего источника.
Основное достоинство прямого подключения — отсутствие MOSFET транзистора. Питание микросхемы осуществляется от внешнего источника с помощью резистора номиналом 4,7 кОм. Во время работы по данной схеме основная шина преобразования может быть использована в других целях, потому что она остается свободной.
Для контроля процесса чтения данных 64-битного ROM-кода девятый байт — это CRC или байты циклического кода SRAM. Генератор CRC выглядит следующим образом:
Данный код находится в старшем байте памяти ROM и вычисляется для предыдущих 56 битов. Основная задача девятого байта (CRC) — контроль чтения данных из микросхемы. Для этого микропроцессор производит вычисление полученного циклического кода и выполняет его сравнение с заранее принятым кодом. В результате сравнения микроконтроллер получает данные о корректности полученных данных.
Для проверки полученных данных служит полином циклического кода следующей структуры:
CRC = X8 + X5 + X4 + 1
Для контроля уровня температур в различных точках применяется большое количество датчиков, каждый из которых закодирован 64-битным кодом в ROM-памяти. В первые 8 бит записан код семейства (28h), во вторые 48 бит — серийный номер датчика и в последние 8 бит запрограммирован циклический код (CRC) для всех предыдущих битов.
Время обработки сигнала в микросхеме DS18B20 зависит от значения байта 4 в памяти конфигурации, являющегося регистром конфигурации. Данный регистр выглядит так, как показано ниже.
Для установки разрешения преобразования необходимо сменить параметры R0 и R1, которые в первоначальном состоянии соответствуют 11. В таблице приведено соответствие значений данных параметров, разрешения и время преобразования.
Система для измерения перепада температурного режима на основе датчиков DS18B20 работает при помощи протокола 1-Wire, который в свою очередь состоит из ведущего (главного или «Мастер») и ведомого устройства («Slave»). Датчик данного типа может подключаться только в качестве ведомого. При подключении к шине только одного датчика данная система будет называться одноточечной, а в случае нескольких — многоточечной. Все данные и сигналы в подобной системе передаются с младшим битом вначале.
Для полноценной работы DS18B20 состоит из 2 типов памяти: EEPROM и SRAM. Первый тип памяти — энергонезависимый, а второй — оперативный. Карта памяти выглядит следующим образом:
В EEPROM-памяти хранятся данные граничных порогов температур, а также регистр конфигураций.
А в карте памяти SRAM первые 2 байта (0 и 1) отвечают за измеренную температуру, вторые 2 байта предназначены только для чтения и отвечают за значения граничных температур из памяти EEPROM, четвертый байт содержит в себе параметры конфигурации. А зарезервированные байты с пятого по седьмой всегда выдают логическую «1» при чтении и не могут быть записаны. Для корректной работы памяти есть также восьмой байт или генератор циклического кода, отвечающий за первые 8 байт.
Чтобы выполнить запись в байты 2–4, потребуется выполнить команду [4Eh] ЗАПИСЬ ПАМЯТИ. Для получения доступа к записанным данным достаточно выполнить команду [BEh] ЧТЕНИЕ ПАМЯТИ. А если необходимо выполнить запись параметров TH, TL или же регистра конфигурации, тогда следует выполнить команду [48h] КОПИРОВАНИЕ ПАМЯТИ.
Для работы с микросхемой DS18B20 потребуется:
Вышеуказанные приложения позволят произвести прошивку микросхемы. Однако, чтобы это осуществить, потребуется следующее оборудование:
Для подключения датчика, как показано на схеме ниже, контакт 1 (GND) подключается к общему «-» платы, контакт 2 (Vdd) подключается к источнику питания +5 В через подтягивающий резистор номиналом 4,7 кОм, а последний контакт 3 (DATA) подключается к одному из пинов на микроконтроллере Arduino (на схеме использован второй пин).
Для корректной работы устройства в скетче необходимо проверить параметры строк с номерами 65 и 10, так как строка 65 отвечает за «прямое» ds.write (0x44) или «паразитное» ds.write (0x44, 1) подключение, а строка 10 за номер вывода на плате, к которому подключен вывод «DATA».
Для данного случая строка 10 должна иметь следующий вид: OneWire ds(2).
После окончания монтажных работ можно приступать к программированию устройства. Для этого с помощью приложения Arduino IDE требуется смонтировать библиотеку OneWire library. Для этого в меню приложения необходимо выбрать «Add Library», которое расположено в меню «Sketch» или для русскоязычного варианта «Скетч» — «Подключить библиотеку» — «OneWire».
Далее в открывшейся библиотеке следует найти пример программирования «DS18x20_Temperature». Для этого необходимо в меню «Файл» выбрать подменю «Примеры», далее раздел «OneWire» и пункт «DS18x20_Temperature».
В примере из библиотеки OneWire в строке 10 изначально запрограммирован 10 pin микроконтроллера, для рассматриваемого случая его требуется заменить на 2. В итоге 10 строка должна выглядеть следующим образом:
После корректно выполненных операций, компиляции и загрузки программы в окне монитора порта «Инструменты» — «Монитор порта» появится примерно следующее:
Приобрести сенсор можно как в специализированном магазине, так и онлайн в Интернет-магазине. Во втором случае, особого внимания заслуживает бюджетный вариант приобретения изделий на сайте Алиэкспресс. Для некоторых товаров есть вариант отгрузки со склада в РФ, их можно получить максимально быстро, для этого при заказе выберите «Доставка из Российской Федерации»:
Датчик DS18B20 — сложное устройство, измеряющее температурный режим, обладающее простой схемой подключения, высокой точностью измерений температуры и надежностью. Однако для полноценного функционирования, необходимо выполнить сложное программирование управляющего датчиком микроконтроллера.