Температурный датчик DS18B20 схема и подключениеDS18B20 отличный температурный датчик фирмы Dallas измеряет температуру в градусах Цельсия. При работе в паре с микроконтроллером отправляет температурные данные используя только один вывод по протоколу 1-Wire. При этом можно подсоединить несколько таких температурных преобразователей к одному контакту.
Если в тех задании нет особых требований к датчику температуры по условиям работы, параметрам, цене, то самым правильным решением будет выбор цифрового температурного преобразователя для совместной работы в паре с микроконтроллером. Цифровые преобразователи могут подсоединятся через длинные проводные линии; в отличие от их аналоговых коллег. Цифровой сигнал гораздо более устойчив к воздействию помех. Используемые цифровые интерфейсы дают возможность всего к одной линии осуществить подключение сразу несколько цифровых датчиков (может быть испльзована даже целая гирлянда из этих компонентов). Цифровая форма передачи сигнала позволяет применять цифровые температурные преобразователи вмести с простейшими микроконтроллерами, не имеющими встроенного АЦП и даже с отсутствующим нужным интерфейсом, т.к применяемые интерфейсы легко реализуются программным способом. На сегодняшний день, имеется неплохой выбор этих радиокомпонентов, предлагаемых разными фирмами. В целом они имеют сходные технические параметры, но могут сильно отличаться в ценовом диапазоне. В рамках данной статьи остановим свой выбор на температурном датчике DS18B20 и рассмотрим его подключение.
DS18B20 среди других температурных датчиков не является самым простым и дешёвым или самым экономичным и быстрым. У него довольно неплохая точность, но нельзя сказать, что он занимает ведущие места и по этой характеристике. Он наиболее интересен используемым для подключения интерфейс 1-Wire, который дает возвожность подключать датчики при помощи трехпроводной линии, если применяется отдельный питающий проводили даже через двухпроводную линию, с питанием от линии данных. Питающее напряжением от 3 до 5,5 Вольт постоянного тока
Диапазон измеряемой температуры лежит в интервале от -55 до 125 °C Цифровое разрешение датчика от 9 до 12 бит Точность измерения +/- 0,5 °C в температурном диапазоне от -10 до 85 °C + /- 2 °C для интервала от -55 до 125 °C Дрейф измерения +/- 0,2 °C Температурный датчик имеет свой ROM объемом 64 бита для хранения уникального кода устройства. Этот код применяется для адресации устройств тогда, когда к одной линии подсоединено несколько температурных компонентов. Младшие 8 бит содержат код семейства (0x28), затем следует 48-битный уникальный серийный номер устройства, а старшие 8 бит содержат CRC код для первых 56 бит ROM-кода. Рабочая RAM память содержит всего два байта с результатами последнего температурного измерения, также через RAM идет доступ к трем однобайтовым EEPROM регистрам: верхнего (TH) и нижнего T(L) уровней сигнализации при выходе измеренной температуры за заданные пользователем значения; регистр конфигурации, с помощью которого осуществляется разрешение датчика (от 9 до 12 бит, чем меньше разрешение, тем больше скорость преобразования ADC и проще подключение). Для подключения датчика DS18B20 применяется однопроводная шина для передачи данных с одним сигналом, требующая наличия подтягивающего резистора (к высокому уровню). Все подключаемые к шине устройства имеют выход с открытым стоком или выход с Z-состоянием.
Это готовый цифровой термометр с программируемым разрешением, от 9 до 12–bit, которое можно сохранить в EEPROM устройства. Все процессы на шине управляются микроконтроллером. При необходимости преобразователь способен получать питание от линии данных. Каждый температурный преобразователь обладает уникальный 64-битный последовательный кодом, позволяющим общаться с множеством аналогичных датчиков имеющихся на одной шине. Это позволяет в радиолюбительских самоделках использовать один микроконтроллер, чтобы обрабатывать цифровые данные с множества температурных датчиков. Назначение выводов представлено в таблице ниже: Внимание: Все остальные выводы температурного преобразователя должны оставаться не подключенными.
64-битовый ROM запоминает уникальный код устройства. ОЗУ имеет двухбайтовый температурный регистр, хранящий температурные данные по окончанию преобразования и два однобайтовых температурных регистра контроля температуры триггерной схемы TH и TL и регистр конфигурации который позволяет устанавливать разрешающую способность преобразователя к 9, 10, 11, или 12 битам, это и влияет на время конвертирования температуры. TH, TL и регистры конфигурации полностью энергонезависимы, т.е они сохранят записанные в них данные, даже когда прибор полностью отключен от питания. Как уже было сказано выше, DS18B20 использует для связи 1-Wire протокол при котором идет коммуникация на шине, применяя всего один управляющий сигнал. Шина должна быть обязательно подсоединена к источнику питания через подтягивающее сопротивление. По этой шине микроконтроллер обращается к датчикам используя 64-битовый код. Питание и подключение датчика DS18B20Он может получать питание как от внешнего блока питания, для чего необходима отдельная питающая линия, так и получать питание от линии данных - через подтягивающее сопротивление (режим работы с так называемым паразитным питанием, в этом случае понадобится только два провода для подсоединения). Во втором случае, при наличии в линии данных сигнала с высоким уровнем, заряжается внутренняя емкость Cpp. В те моменты, когда в линии будет задан низкий уровень, Cpp обеспечивает питание схемы. При использовании паразитного питания нужно подсоединить вывод питания VDD к общему - это позволяет преобразователю понять, какой тип питания используется. Некоторые операции, например, цикл преобразования ADC и копирования данных из рабочей памяти в EEPROM являются достаточно длительными по времени и требуют большого, до 1.5 мА, уровня тока от блока питания. Внутренний конденсатор не обладает достаточно большим емкостным номиналом для питания во время этих операций, поэтому большой ток потребления создаст недопустимое по уровню падение напряжения на подтягивающем сопротивлении. Поэтому, на время выполнения любой из перечисленных и только этих команд 0x44 - выполнить преобразование; 0x48 - скопировать данные из RAM в EEPROM)необходимо включить "сильное подтягивание" шины в случае паразитного питания схемы. "Сильное подтягивание" можно выполнить с помощью подключения шины данных непосредственно к питающему источнику через добавочный полевой транзистор. Или переключением выхода МК, управляющего шиной, из режима с открытым стоком в двухтактный. Паразитное питание не рекомендуется применять при температурах выше кипения воды, так как при этих значениях сильно возрастают токи утечки и подтягивающий резистор может не выдать нужного тока для питания. Схема подключения DS18B20 с внешним блоком питания требует наличия дополнительного питающего провода, но она имеет свои достоинства, т.к может применятся во всем интервале температур. 1-Wire шина в этом примере выполняет только задачу передачи данных. Дополнительные манипуляции с сильным подтягиванием не нужны и во время длительного процесса АЦП преобразования может происходить передача данных по шине. В случае с внешним питанием, во время цикла преобразования ведущее устройство может посылать запросы на чтение. DS18B20, в этом случае, на все запросы будет отвечать нулевым битом во время цикла преобразования и единичный битом после завершения цикла. Это свойство можно использовать для вычисления момента завершения процесса температурного измерения.
В данном практическом примере рассмотрим подключение температурного датчика к Ардуино. Кроме платы и самого датчика для реализации схемы простейшего термометра нам понадобятся два семисегментных семиразрядных индикатора для воспроизведения температуры и сдвиговые регистры управляющие индикаторами. К датчику DS18B20 для подключения к Arduino имеется специальная библиотека, позволяющая получать температуру в градусах Фаренгейта или Цельсия, эта библиотека называется Dallas_Temperature. При подключении DS18B20 к плате Arduino необходимо установить резистор номиналом 4.7 КОм между информационным выходом и линией питания. Этот выход чуть позже соединяем с линией D7 Ардуино. Чтобы использовать минимальное количество линий для управления индикаторами, используем два сдвиговых регистра. Это позволяет обойтись всего тремя выводами Arduino для воспроизведения на дисплее температуры. Схема подключения проекта показана на рисунке ниже. Код управления Ардуинкой можно скачать по ссылке выше.
Теперь можно использовать этот преобразователь в наших радиолюбительских конструкциях на микроконтроллерах, практические примеры применения смотри ниже:
Основа схемы термометра микроконтроллер PIC16F628A, он выбран не случайно во первых его легко достать, а во вторых он достаточно дешевый, кроме того он обладает блоком энергонезависимой памяти и внутренней RC цепочкой, которую мы применим в роле тактового генератора с фиксированной частотой на четыре МГц. Это позволило нам существенно облегчить вес схемы, уменьшив общее количество радиокомпонентов. В качестве измерительного датчика температуры мы взяли недорогой и доступный цифровой элемент передающий информацию о температуре сразу в цифровом виде, что позволило исключить из нашей радиолюбительской схемы достаточно дорогой АЦП. (Аналого-Цифровой Преобразователь) |
|