Инструкция по применению датчика температуры DS18B20

By   07.08.2017

DS18B20 — современный программируемый датчик цифрового типа для контроля изменений температуры с функцией аварийного сигнала. Данные устройства работают согласно протоколу 1-Wire (однопроводная линия связи с микроконтроллером) и снабжены энергонезависимой памятью для сохранения и контроля запрограммированных параметров интерфейса. Корректное измерение температуры DS18B20 происходит в диапазоне от -55° до +125°С, но наименьшая погрешность, составляющая 0,5°С, достигается в диапазоне от -10° до +85°С.

Структура датчика температуры

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

Цифровой датчик температуры DS18B20 благодаря своему специфическому 64-разрядному коду разрешает подключать в единую линию связи несколько микросхем данной серии для контроля микроклимата как небольшого офисного здания в Москве, так и огромного производственного цеха.

Общая характеристика, названия и маркировка выводов моделей DS18B20

В зависимости от конструкции микросхема-датчик температуры Dallas DS18B20 для контроля заданных параметров доступна в 3 формах:

  • ТО-92;
  • SO (150 mm);
  • µSOP.

 

Микросхема датчика

Расшифруем, где какой вывод микросхемы, и как правильно ее подключить.

Таблица выводов

Основные особенности и характеристики датчика температуры DS18B20:

  • низкий уровень U питания от линии (3–5,5 В);
  • высокоэффективная работа с помощью протокола 1-Wire;
  • уникальный идентификационный 64-битный код, записываемый в независимую ROM-память устройства для работы большего количества устройств с помощью одной линии связи, что позволяет получать точное положение датчика, температурный режим которого находится выше или ниже запрограммированного уровня;
  • широкий диапазон температурных измерений: -55°–+125°С с точностью 0,5°С в диапазоне -10°–+85°С;
  • встроенный АЦП позволяет запрограммировать DS18B20 в диапазоне 9–12 разрядов, что позволяет снизить время измерений до 750 мс;
  • удобное подключение микросхемы DS18B20 Raspberry Pi;
  • для программирования термодатчика достаточно его подключить к любому устройству, работающему под управлением архитектур Arduino, ARM, PIC или AVR.

Как работают современные датчики температуры

Блок-схема датчика температуры типа DS18B20 выглядит следующим образом:

Блок-схема DS18B20

Исходя из вышеприведенной структуры, рассматриваемый датчик состоит из:

  • регистра конфигурации, программируемого пользователем (9–12 разрядов);
  • датчика температуры;
  • верхнего Th и нижнего Tl порога срабатывания сигнала тревоги;
  • 64-битной памяти типа ROM и блока обработки протокола 1-Wire;
  • внутреннего источника питания, способного работать как от внешнего источника, так и от «паразитных» импульсов.

Принцип работы

Основная функция микросхемы 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. Ниже представлена таблица соответствия данных и температуры.

Таблица соответствия

Как формируются и передаются тревожные сигналы Th и Tl

После выполнения трансформации показаний температуры в 16-битный код полученное число сравнивается со значениями Th и Tl, расположенными в регистре памяти (EEPROM) микропроцессора, а именно второй и третий байты. Структура регистров Th и Tl будет выглядеть следующим образом:

Формат регистров Th и Tl

Если полученные данные, 11–4 биты регистра, превышают Th или же ниже параметра Tl, то формируется сигнал аварии на микросхеме. Но на этом измерения не прекращаются, и в случае снижения Th ниже или Tl выше заданного диапазона условие «Авария» сбрасывается.

Если же необходимо самостоятельно выявить один из датчиков, который выдает сигнал «Тревога», то микроконтроллер с помощью команды ECh выполнит тестирование каждого датчика. В случае изменения параметров Th и Tl, выше или ниже занесенных в регистр значений, выдаст код устройства с нарушениями температурного режима.

Как выполнить правильное питание DS18B20

Микросхема DS18B20 позволяет осуществить 2 типа подключения:

  • паразитный режим;
  • подключение к внешнему источнику.

Подключение питания

Рассмотрим более детально каждый из них.

Паразитный режим

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

При высоком U на шине микросхемы DS18B20 работает и заряжает Cpp при помощи вывода DQ. Обязательное условие для работы устройства в подобном режиме — заземление Vdd. При смене уровня сигнала на логический «0» питание схемы осуществляется от ранее заряженного конденсатора. В обычном режиме работы микросхема DS18B20 способна демонстрировать непрерывную и стабильную работу при соблюдении электрических характеристик.

Паразитное питание

Однако при выполнении микросхемой частых преобразований и взаимодействий с памятью потребляемый ток может превысить 1,5 мА. Это приведет к просадке напряжения на шине ниже минимально допустимого уровня. Для решения этой задачи необходимо использовать MOSFET транзистор. Он работает, когда выполняется копирование данных или же преобразование температуры. Тем не менее его используют очень редко, так как запас мощности микросхемы DS18B20 позволяет выполнять вычисления без снижения уровня напряжения.

Недостатки паразитного подключения

В большинстве случаев рационально применять данный метод. Однако если измеряемая температура выше 100°С, то возникает большой ток утечки, и заряда конденсатора Cpp не хватает для полноценного функционирования микросхемы. В таких случаях лучше применять питание микросхемы от внешнего источника.

Подключение цифрового датчика температуры DS18B20 к внешнему источнику питания

Основное достоинство прямого подключения — отсутствие MOSFET транзистора. Питание микросхемы осуществляется от внешнего источника с помощью резистора номиналом 4,7 кОм. Во время работы по данной схеме основная шина преобразования может быть использована в других целях, потому что она остается свободной.

Внешний источник питания

Контроль чтения DS18B20

Для контроля процесса чтения данных 64-битного ROM-кода девятый байт — это CRC или байты циклического кода SRAM. Генератор CRC выглядит следующим образом:

Генератор CRC

Данный код находится в старшем байте памяти ROM и вычисляется для предыдущих 56 битов. Основная задача девятого байта (CRC) — контроль чтения данных из микросхемы. Для этого микропроцессор производит вычисление полученного циклического кода и выполняет его сравнение с заранее принятым кодом. В результате сравнения микроконтроллер получает данные о корректности полученных данных.

Для проверки полученных данных служит полином циклического кода следующей структуры:

C R C = X+ X+ X+ 1

Кодировка датчика DS18B20

Для контроля уровня температур в различных точках применяется большое количество датчиков, каждый из которых закодирован 64-битным кодом в ROM-памяти. В первые 8 бит записан код семейства (28h), во вторые 48 бит — серийный номер датчика и в последние 8 бит запрограммирован циклический код (CRC) для всех предыдущих битов.

64-битный ROM-код

Регистр конфигураций

Время обработки сигнала в микросхеме DS18B20 зависит от значения байта 4 в памяти конфигурации, являющегося регистром конфигурации. Данный регистр выглядит так, как показано ниже.

Регистр конфигурации

Для установки разрешения преобразования необходимо сменить параметры R0 и R1, которые в первоначальном состоянии соответствуют 11. В таблице приведено соответствие значений данных параметров, разрешения и время преобразования.

Таблица разрешения преобразования

Работа с интерфейсом 1-Wire

Система для измерения перепада температурного режима на основе датчиков DS18B20 работает при помощи протокола 1-Wire, который в свою очередь состоит из ведущего (главного или «Мастер») и ведомого устройства (СЛЕЙВ). Датчик данного типа может подключаться только в качестве ведомого. При подключении к шине только одного датчика данная система будет называться одноточечной, а в случае нескольких — многоточечной. Все данные и сигналы в подобной системе передаются с младшим битом вначале.

Как выполнена память цифрового датчика данного типа

Для полноценной работы DS18B20 состоит из 2 типов памяти: EEPROM и SRAM. Первый тип памяти — энергонезависимый, а второй — оперативный. Карта памяти выглядит следующим образом:

Карта памяти

В EEPROM-памяти хранятся данные граничных порогов температур, а также регистр конфигураций.

А в карте памяти SRAM первые 2 байта (0 и 1) отвечают за измеренную температуру, вторые 2 байта предназначены только для чтения и отвечают за значения граничных температур из памяти EEPROM, четвертый байт содержит в себе параметры конфигурации. А зарезервированные байты с пятого по седьмой всегда выдают логическую «1» при чтении и не могут быть записаны. Для корректной работы памяти есть также восьмой байт или генератор циклического кода, отвечающий за первые 8 байт.

Чтобы выполнить запись в байты 2–4, потребуется выполнить команду [4Eh] ЗАПИСЬ ПАМЯТИ. Для получения доступа к записанным данным достаточно выполнить команду [BEh] ЧТЕНИЕ ПАМЯТИ. А если необходимо выполнить запись параметров TH, TL или же регистра конфигурации, тогда следует выполнить команду [48h] КОПИРОВАНИЕ ПАМЯТИ.

Что понадобится для работы с микросхемой DS18B20

Для работы с микросхемой DS18B20 потребуется:

  • программное обеспечение Arduino IDE;
  • библиотека для работы с протоколом 1-Wire OneWire library;
  • скетч.

Вышеуказанные приложения позволят произвести прошивку микросхемы. Однако, чтобы это осуществить, потребуется следующее оборудование:

  • контроллер Arduino;
  • USB-кабель, подключающий контроллер к персональному компьютеру;
  • монтажная плата для установки микросхемы и 3 коннектора.

Подключение микросхемы к Arduino

Для подключения датчика, как показано на схеме ниже, контакт 1 (GND) подключается к общему «-» платы, контакт 2 (Vdd) подключается к источнику питания +5 В через подтягивающий резистор номиналом 4,7 кОм, а последний контакт 3 (DATA) подключается к одному из пинов на микроконтроллере Arduino (на схеме использован второй пин).

Подключение к 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».

DS18x20_Temperature

В примере из библиотеки OneWire в строке 10 изначально запрограммирован 10 pin микроконтроллера, для рассматриваемого случая его требуется заменить на 2. В итоге 10 строка должна выглядеть следующим образом:

Пример из библиотеки

После корректно выполненных операций, компиляции и загрузки программы в окне монитора порта «Инструменты» — «Монитор порта» появится примерно следующее:

Монитор порта

Заключение

Датчик DS18B20 — сложное устройство, измеряющее температурный режим, обладающее легкой схемой монтажа, высокой точностью измерений температуры и надежностью. Однако для полноценного функционирования данных устройств необходимо выполнить сложное программирование.

Видео по теме

Читайте также:   Настройка таймера выключения компьютера

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *