Схема подключения датчика температуры
Подключение датчика температуры DS18B20 к микроконтроллеру
В процессе изучения микроконтроллеров рано или поздно возникает необходимость измерения такого метеорологического параметра окружающей среды, как ее температура. Современный мировой рынок электронных комплектующих предлагает широкий ассортимент датчиков температуры. Основные отличия между ними состоят в диапазоне измеряемой температуры, напряжении питания, области применения, габаритных размерах, способах преобразования температуры, интерфейсом для взаимодействия с пользовательской управляющей системой. Так исторически сложилось, что на текущий момент одним из самых популярных температурных датчиков является датчик DS18 B20 корпорации Dallas Semiconductor. О нем следующее повествование.
DS18 B20 – цифровой датчик температуры с программируемым разрешением преобразования.
Отличительные особенности:
1) Использование интерфейсной шины данных 1-Wire для взаимодействия с управляющей системой;
2) Наличие уникального 64-битного последовательного идентификационного кода, расположенного во внутренней ROM-памяти и предназначенной для многоточечных систем, где необходимо адресовать конкретный датчик;
3) Напряжение питания составляет 3-5,5В, что позволяет использовать его не только в 5-вольновых системах, но и в 3,3 (большинство микроконтроллеров);
4) Диапазон измеряемой температуры составляет -55…+125 о С;
5) Точность в ±0,5 о С, правда это верно только для диапазона -10…+85 о С;
6) Разрешение преобразования определяется пользователем и составляет 9…12 бит;
7) Имеет внутренние регистры триггеров верхнего и нижнего порогов срабатывания с вырабатыванием сигнала тревоги для систем, использующих термостатическую логику работы;
8) Эти датчики программно совместимы с DS1822 и широко применяются в промышленных термостатических регуляторах, индустриальных системах, в потребительской электронике и других термочувствительных системах.
Описание и принцип работы устройства:
Сам датчик поставляется в трех видах корпусов, в 8-выводном SOIC-е, 8-выводном uSOP-е, и, пожалуй, самым популярном, ТО-92. Для связи с управляющей системой разработчиками была предусмотрена интерфейсная шина 1-Wire. Одним из отличительных особенностей данного устройства следовало бы отметить возможность питания его от самой интерфейсной шины, т.е. другими словами, датчик DS18B20 предусматривает возможность так называемого «паразитного питания». Благодаря внутреннему 64-битному уникальному коду можно построить систему мониторинга температуры на относительно небольшой площади, причем используя всего лишь 1 линию для связи с управляющим устройством.
В своей статье я опишу пример работы с датчиком, выполненном в корпусе TO-92.
Выглядит он таким образом:
Внутри эта штуковина устроено очень просто, взгляните сами:
Рассмотрим поподробнее эту блок-схему.
Подсистема питания.
Как я уже отмечал немного ранее, датчик имеет возможность подключения по 2-х проводной схеме, используя так называемое «паразитное питание». На рисунке я отметил процесс питания зеленым цветом. Когда на линии DQ высокий логический уровень, через подтягивающий резистор протекает ток, через верхний диод заряжает конденсатор Cpp и сам датчик питается от линии INTERNAL Vdd (внутренняя линия питания датчика температуры). Когда линия данных DQ прижимается к земле, т.е. на ней установили низкий логический уровень, питание осуществляется от заряженного ранее конденсатора. Красота, не правда ли?
Однако питание таким способом вносит некоторые ограничения на временные параметры датчика. Удержание линии данных некоторое время разрядит конденсатор, что приведет к обесточиванию линии INTERNAL Vdd, а соответственно и датчика в целом. Поэтому в неиспользуемое время на линии DQ должен поддерживаться высокий логический уровень. Следует отметить одно важное замечание. При операциях преобразования температуры и копирования данных из Scratchpad в EEPROM (в один из регистров), потребляемый линией INTERNAL Vdd ток может достигать 1,5мА, что непосильно внутреннему конденсатору, а на резисторе подтяжки будет большое падение напряжения, что недопустимо скажется на работе устройства в целом. Для этого необходимо организовать линии DQ схему мощной подтяжки, реализуемой по вот такой схеме:
После выдачи команды Convert T [44 h ] или Copy Scratchpad [48 h ] необходимо включить мощную подтяжку MOSFET-транзистором линии DQ не позднее 10мкс(макс.), как утверждают разработчики датчика, после чего выждать время преобразования (Tconv) или время передачи данных (Twr=10мс), причем в это время никаких действий при включенной мощной подтяжке на линии DQ быть не должно!
Про стандартное питание нужно мало что сказать, ведь тут все просто, и даже MOSFET не нужен вовсе:
Следует сделать некоторое замечание в плане выбора типа питания датчика. Не рекомендуется использовать режим паразитного питания в устройствах, измеряющих температуру свыше 100 о С, поскольку при таких температурах в датчике возникают большие токи утечки, что приведет к непредсказуемым результатам. В таких приложениях рекомендуется использовать внешний источник питания.
Кстати, в некоторых ситуациях, ведущее устройство может не знать, каким образом у датчика организовано питание. Для этого он может посылать команду запроса типа питания: передаем команду Skip ROM [ CCh ] а затем Read Power Supply [ B 4 h ]. после чего датчик сбросит линию в низкий логический уровень, если питание осуществляется паразитно или установит ее в 1цу, если питание заведено от внешнего ИП. Данная информация необходима ведущему устройству для того, чтобы знать, необходимо ли в некоторых ситуациях организовать мощную подтяжку линии данных.
Рассмотрим устройство датчика дальше:
Подсистема «64-BIT ROM AND 1-Wire PORT» содержит в себе уникальный 64-битный последовательный идентификационный код, расположенный в энергонезависимой памяти ROM, также в этом узле расположен интерфейс взаимодействия с управляющей системой 1-Wire. Подсистема «Memory Control Logic» осуществляет передачи данных между подсистемой интерфейса 1-Wire и памятью типа Scratchpad, которая, в свою очередь, имеет доступ к регистрам температурного датчика, регистрам установки верхнего и нижнего порогов срабатывания сигнала тревоги, конфигурационному регистру и регистру генератора 8-битноой контрольной суммы для защиты системы от неправильных данных.
При включении питания по умолчанию датчик имеет разрешение преобразования 12 бит, и сразу входит в режим пониженного энергопотребления. Для инициирования преобразования ведущее устройство должно передать команду Convert T [44 h ] . После преобразования температуры в цифровой код, этот код располагается в Scratchpad-памяти в виде двухбайтного слова, и датчик снова переходит в энергосберегающий режим.
После передачи этой команды ведущее устройство может читать временные данные, и если датчик отвечает 0, то он еще находится в процессе преобразования температуры, или 1-цей, если преобразование уже выполнено. Правда, такой метод проверки времени преобразования не подходит для системы с подключенным паразитным питанием.
Преобразование температуры.
Теперь разберемся, как преобразуется температура в датчике. По сути, внутри самого температурного сенсора располагается АЦП, и выходные данные, расположенные в регистре температуры, переносятся в Scratchpad-память. Данные о температуре имеют следующий формат:
Флаг S – флаг знака, используется для указания знака числа (S=0 – число, содержащееся в битах 10-0 положительно, и S=1, если число, содержащееся в тех же битах отрицательно, т.е. в данном случае температура представляется в дополнительном коде (коде дополнения до двух)).
При настройке на разрешение преобразования 12 бит все 12 бит (bit 11- bit 0) задействованы и содержат достоверные данные. При настройке на разрешение 11 бит содержимое бита 0 не следует принимать в расчет, при настройке на 10 бит не следует принимать в расчет биты 0 и 1 и т.д.
Сигнал тревоги – функция термостата.
Для этого предусмотрено 2 8-битных регистра, Th и Tl. В Th содержится значение верхнего порога температуры, а в Tl – соответственно нижнего. Если температура выше значение Th или ниже Tl устанавливается флаг тревоги. Этот флаг тревоги обнаруживается ведущим устройством посредством выдачи команды Alarm Search [ECh] на линию DQ. Флаг тревоги обновляется при после каждой операции преобразования температуры. Кстати, только биты с 11 по 4-й регистра температуры используются в сравнении с регистром Th или Tl, отсюда следует, что функция термостата работает только для целых значений температуры. Регистры физически являются EEPROM памятью, поэтому они сохраняют свои значения при выключении питания. Сами регистры аналогичны регистру температуры, только они 8-битные, флаг S имеет абсолютно такое же значение, как и в предыдущем случае:
64-битный идентификационный код.
Этот код, как отмечалось ранее, необходим для идентификации каждого устройства на линии в системах многоточечного измерения температуры.
Формат этой памяти такой:
Младшие 8 бит отводятся для обозначения семейства, и содержат значение 0х28.Следующие 48 бит содержат уникальный серийный номер устройства. Самый старший байт содержит значение контрольной суммы CRC, рассчитываемой для младших 56 бит ROM-памяти.
Организация памяти.
Память датчика состоит из пространства памяти блокнотного типа (Scratchpad) и EEPROM-памяти для хранения данных конфигурации и значений регистров верхнего и нижнего порогов сигнала тревоги.
При выключении питания данные байта 2, 3 и 4 сохраняют свое значение в EEPROM. Ну а при включении, значение в них остаются неизменными. Байт 0 и 1 содержат значение преобразованной температуры, байты 5, 6, 7 зарезервированы для внутреннего использования и не могут быть доступны пользователю для его нужд.
8-й байт содержит значение, генерируемое встроенной логикой формирования CRC-кода для байтов с 0 по 7, что сводит к минимуму возможность ошибочного определения температуры в конечном итоге.
Следует отметить, что если функция термостата не используется, то регистры Th и Tl могут использоваться как память общего назначения – в них вы можете хранить любую информацию.
Данные записываются в байты 2, 3 и 4 начиная с младшего бита байта 2 при помощи команды Write Scratchpad [4Eh]. Для проверки целостности записанных данных, можно их прочитать, для чего необходимо передать датчику команду Read Scratchpad [BEh]. после чего ведущее устройство должно принимать данные начиная с младшего бита байта 0.
Для сохранения данных старшего, младшего регистров термостата а так же регистра конфигурации в EEPROM-памяти, ведущее устройство должно передать датчику команду Copy Scratchpad [48h] .
Как отмечалось ранее, данные, уже записанные в EEPROM, при выключении питания сохраняются. Но при включении питания из соответствующих EEPROM-ячеек значения автоматически загружаются в соответствующие регистры памяти scratchpad. Удобно, не правда ли?:)
Кроме всего, данные, записанные в EEPROM, в любое время могут быть перезаписаны в scratchpad-память. Это необходимо например для того, когда вы изменили конфигурацию в процессе работы, а потом вам надо встать на «штатный режим работы», т.е. вернуть ту конфигурацию работы, которая была до изменения содержимого регистров памяти scratchpad. Вот собственно для этого ведущее устройство должно передать датчику команду Recall E 2 [B8h] .
В это время ведущее устройство может читать слоты времени, и если датчик отвечает 0, то он еще находится в процессе копирования данных, или 1-цей, если все уже готово и данные перегружены из EEPROM в Scratchpad.
Регистр конфигурации.
В регистре конфигурации пользователем могут определяться только 2 бита: R0 и R1. Эти биты определяют разрешение преобразования температуры, и по дефолту установлены в 1, что и определяет изначальную настройку на 12-битное разрешение преобразования.
Все возможные конфигурации этих битов и соответствующие разрешения представлены в таблице ниже. Следует отметить, что чем больше разрешение преобразования, тем больше время преобразования, например, для 12-битного разрешение время преобразования составляет 750мс (макс.).
Взаимодействие с управляющей системой.
DS18B20, как отмечалось ранее, для связи с ведомым устройством используют интерфейсную шину данных 1-Wire. Поэтому для его подключения управляющая система должна обеспечивать выход с открытым стоком или с Hi-Z состоянием линии.
Внутренняя конфигурация интерфейса датчика показана ниже:
В неактивном состоянии (в состоянии простоя) линия DQ подтянута резистором к «+» питания. Таким образом между транзакциями (передачами данных) эта линия всегда должна удерживаться в этом состоянии. Если по какой-либо причине транзакции должны быть приостановлены, линия DQ должна удерживаться в высоком логическом уровне, если эта передача дальше будет возобновлена. В процессе остановки транзакции мы сколько угодно долго можем держать линию DQ в высоком логическом уровне, начиная с 1мкс. Но, если шина данных будет удержана в низком логическом уровне дольше 480мкс, произойдет полный сброс всех датчиком, присутствующих на этой шине.
Последовательность операций для обмена.
Каждый раз при обращении управляющей системы к датчику должна быть соблюдена следующая последовательность действий:
1) Инициализация;
2) Команда ROM (за которым следует необходимый обмен данными);
3) Функциональная команда датчика (за которой следует необходимый обмен данными).
Если какой либо шаг при обращении к датчику отсутствует – датчик не будет реагировать. Исключение составляют команды Search ROM [ F 0 h ] и Alarm Search [ ECh ] , после их выполнения мастер должен вернуться к первому шагу управляющей последовательности.
Итак. Все транзакции начинаются с инициализации. Эта операция сопровождается выработкой ведущим устройством импульса сброса, на который ведомые устройства (в данном случае датчик(-и)) передают ведущему импульс присутствия, которые дают ему знать, что датчики подключены и готовы к работе.
Вообще интерфейсная шина 1-Wire, реализуемая в датчике, определяет несколько типов сигналов на линии данных: импульс сброса, импульс присутствия, запись 0, запись 1, чтение 0, чтение 1. Все эти операции реализует ведущее устройство, за исключением импульса присутствия. Его формирует только датчик(-и).
Итак, для начала ведущее устройство переходит в режим передатчика и устанавливает линию DQ в 0 на время не менее 480мкс (выделено жирным черным цветом). Это сбрасывает датчик. Затем линию необходимо отпустить, и перевести ведущее устройство в режим приемника, при этом подтягивающий резистор установит линию данных в высокий логический уровень (выделено тонким черным цветом). После того, как датчик почует нарастающий фронт, датчик выждет время 15-60мкс и своим аппаратным интерфейсом сбросит линию данных в 0, и будет ее держать в течение 60-240мкс. По истечении этого времени датчик отпустит линию и она установится в уровень логической 1 в течение не менее 480мкс после обнаружения датчиком импульса сброса.
Теперь поговорим о том, как осуществляется процесс передачи данных. Вообще, передачи бита. Дело в следующем. Берется отрезок времени, и в течение этого времени мастер смотрит, что там у нас на линии, допустим 1 – значит записали 1, если 0 – значит записали ноль. Но это только абстрактное объяснение. На самом деле там есть некоторые нюансы, связанные с временными рамками всего этого дела.
Смотрим картинки:
Все начинается с того, что ведущий должен опустить линию данный в низкий логический уровень, и с этого момента начинается слот записи/чтения 1/0, длящийся от 60 до 120мкс. Между слотами записи/чтения линия данных обязательно должна установиться в 1 на время, не меньшее времени восстановления (1мкс). Для организации слота записи 0 необходимо все время слота держать линию данных в 0, если же необходимо записать в датчик 1, то сначала сбрасываем линию данных в 0, затем ждем не менее 1мкс и отпускаем линию в 1, в течение слота записи 1 (60-120мкс) будет записана 1 в датчик (см. верхний правый рисунок).
Собственно говоря, если в течение 15-60мкс после старта будет обнаружена 1 на линии данных, то запишется 1, а если в течение 60-240мкс обнаружится 0 – то и запишется 0.
Чтение данных сопровождается ведущим устройством, когда он сбрасывает линию, ждет не менее 1мкс, и в течение 15мкс смотрит, что на линии творится: если остался 0, то датчик передает 0, если переключилась в 1, - то и передалась 1.
ROM-команды.
Эти команды должны следовать за последовательностью инициализации и содержат инструкции поиска соответствующего датчика и т.д. Разрядность каждой команды 8бит. После выполнения соответствующей команды можно передать функциональную команду датчику.
Эта команда идентична первой в этой таблице за исключением того, что осуществляет поиск датчиков на шине с установленным флагом тревоги.
Электрическая и принципиальная схема подключения отопления на 220 Вольт
Данная статья пригодится для тех кто хочет обогреть помещение небольшой площади до 50 м² или использовать такой котел для подогрева жилья в ночное время суток, при много тарифном учете электроэнергии.
Электрическая схема подключения
При подключении электроэнергии к электрической схеме, фаза через включенный автомат F1 и замкнутый контакт S1 термостата, подает питание на нагревательный элемент (ТЭН). Автомат выбирайте по мощности термоэлектрического нагревателя, если мощность нагрузки составляет более 3 кВт (т.к. контакты терморегуляторов обычно рассчитаны на ток 16 ампер), то необходимо применить контактор через силовые контакты которого подключить более мощные нагревательные элементы.
Для более эффективной работы системы отопления в схему лучше добавить циркуляционный насос, который подключается от контакта F2 теплового реле с номиналом указанным в паспорте двигателя, через контакт S2 терморегулятора со встроенным датчиком температуры воздуха.
F1 - автомат защиты нагревательного элемента
F2 - тепловое реле защиты циркуляционного насоса
S1 - контакт термостата датчика на трубе обратки отопления
Принципиальная схема подключения
Простейшая система отопления состоит из водонагревательного бака котла, модульного щита, терморегуляторов и циркуляционного насоса
Котел из стальной трубы
Потребуется стальная труба диаметром 200-300 мм, длиной 50-100 см; две пластины размером 40x40 см, толщиной 4-5 мм; гайка под резьбу нагревательного элемента; два сгона с диаметром труб отопления. Для изготовления водонагревательного бака воспользуйтесь услугами профессионального сварщика. Пластины привариваются с торцов металлической трубы, в одной из них вырезается отверстие под нагревательный элемент, сверху отверстия наваривается гайка в которую будет вкручиваться тэн. С боку котла на расстоянии 10 см от краев, привариваются два сгона для подключения к ним "обратки" и "подачи" труб отопления.
Термоэлектрический нагреватель (ТЭН) с резьбой и терморегулятором
Нагревательный элемент берется стандартный для водонагревателей накопительного типа с резьбовым соединением. Он содержит терморегулятор который будет использоваться для защиты от перегрева тэна в случае порыва системы отопления и выхода из нее воды.
Терморегулятор с погружаемым датчиком температуры
Датчик погружного действия состоит из медной гильзы (трубки) запаянной с одной стороны, через капиллярную трубку соединенный с герметичным блоком управления с другой стороны. Внутри гильзы и капиллярной трубки содержится инертный газ. Изменение температуры приводит к расширению или сжатию газа, который воздействует на электрические контакты блока управления, включая и отключая нагрузку подключенную к ним. Датчик термостата крепится хомутами к трубе и укрывается теплоизоляцией.
Терморегулятор со встроенным датчиком температуры воздуха
Принцип действия датчика температуры (термопреобразователя сопротивления)
В основной состав теплосчетчика входит тепловычислитель, расходомеры и термопреобразователи сопротивления, дополнительно могут быть подключены датчики давления.
Рассмотрим принцип действия датчиков температуры называемых термопреобразователями сопротивления. Конструктивно термопреобразователь выполнен в виде переменного резистора (рис.1 а)).
Изменение температуры вызывает изменение сопротивление датчика, т.е. R=f(t), где R – сопротивление датчика в Ом, t – значение температуры среды в °С, которую измеряет датчик. Зависимость сопротивления платиновых термопреобразователей от температуры является квадратичной и описывается уравнением, называемым нормальной статической характеристикой НСХ (для диапазона температур от 0 до 600 градусов) R=(1+At+Bt2)Ro, где A, B – коэффициенты уравнения, Ro – сопротивление датчика при ноле градусов. Значение отношения сопротивлений Wt=R/Ro определяет коэффициенты уравнения А и B.
В соответствии с ГОСТ 6651-94 - "Термопреобразователи сопротивления" преобразование сопротивления в значение температуры можно свести в следующую таблицу 1 (для платиновых термопреобразователей Pt100, Pt500, 100П от 0 до 600 градусов)