KEEN SIDE успешно заменяет аналогичные продукты таких известных брендов, как Phoenix Contact, Weidmueller, Degson, Winstar, Hsuan Mao, KLS, G-NOR, Mean Well и др.

Простая схема для подключения 1-Wire датчика температуры к микроконтроллеру

Устройства, индикацирующие температуру и устройства, использующие данные о температуре вызывают широкий интерес. Есть множество приложений для таких устройств с множеством возможных решений, каждое из которых имеет свои преимущества и недостатки.

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

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

Простая схема, которую мы рассмотрим, позволяет подключать датчик температуры с интерфейсом 1-Wire DS18S20 к микроконтроллеру компании Cypress CY8C26443. Однако, по данной технологии, при минимальной модификации схемы и программного кода, можно подключить любое устройство 1-Wire. Микроконтроллер может быть любым, но автор выбрал программируемую систему-на-кристалле (PSoC), поскольку она обеспечивает гибкость в плане выбора и реализации аппаратных блоков на кристалле. Кроме того, система-на-кристалле предоставляет интерфейс программирования приложений (API), поэтому новички смогут легко освоить работу с ней.

Ассортимент 1-Wire устройств очень широк: датчики температуры, память, устройства идентификации, устройства смешанных сигналов. Обмен данными и питание устройств осуществляется по одному проводу. Они просты в подключении и используются там, где требуется минимальная сложность соединений.

В качестве температурного сенсора был выбран цифровой датчик температуры DS18S20 (DS18B20). Это оптимальный выбор, т.к. он дешев и обеспечивает точность измерений 0.5 °C, но проект в целом предоставляет точность 1 °C из-за погрешности измерения и аппаратных ограничений. Сенсор поддерживает режим паразитного питания, имеет программируемый порог температуры и работает в диапазоне от –55 °C до +125 °C. При некоторой доработке программного кода и аппаратной части интерфейса подключения датчик сможет работать на удалении нескольких метров от микроконтроллера.

При использовании датчика DS18B20 в корпусе TO-92, вывод 1 подключается к «земле», вывод 2 – вывод с открытым стоком интерфейса 1-Wire для ввода/вывода данных и питания, вывод 3 – питание или, в режиме паразитного питания, он подключается к «земле». Для датчика в корпусе SO-8 для поверхностного монтажа, соответствующие выводы это 5, 4 и 3, остальные выводы остаются не подключенными. На Рисунке 1 показана схема подключения датчика к микроконтроллеру CY8C26443. В данном случае не используется режим паразитного питания.

Принципиальная схема подключения датчика DS18S20 к микроконтроллеру Cypress
Рисунок 1. Хотя на схеме изображено подключение 1-Wire датчика DS18S20 к микроконтроллеру CY8C26443, разработчики могут легко адаптировать ее для подключения любых 1-Wire устройств к любому микроконтроллеру.

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

Используя программируемую систему-на-кристалле, пользователь может создать экземпляр 1-Wire модуля для обмена данными или же написать свой собственный протокол. Создание экземпляра модуля снижает программную нагрузку, однако автор решил написать свой протокол. Поскольку это привело к увеличению кода, автор старался избежать использования двухпортового вывода, который необходим для модуля PSoC при обмене данными между микроконтроллером с датчиком.

Схема очень простая. Диод CR2 защищает сенсор от скачков напряжения. Резистор R12 в обычном режиме работы не используется. В режиме паразитного питания резистор R12 используется, а резистор R11 и конденсатор С8 исключаются из схемы. Микросхема U2 MAX1232 является внешним сторожевым таймером для микроконтроллера. По линии STROBE микроконтроллер регулярной сбрасывает сторожевой таймер.

Блоки кода для схемы интерфейса доступны для скачивания в секции загрузок. Интегрированная среда разработки доступна для сайте компании Cypress.

Если необходимо использовать датчик температуры на удалении от микроконтроллера, то необходимо использовать схему интерфейса, изображенную на Рисунке 2. Дополнительные элементы схемы гарантируют обеспечение достаточного втекающего и вытекающего тока, поэтому характеристики тайм-слотов протокола 1-Wire сохраняются неизменными.

Схема подключения удаленного датчика DS18S20 к микроконтроллеру Cypress
Рисунок 2. За счет использования дополнительных компонентов, которые обеспечивают достаточный втекающий и вытекающий ток для поддержания тайм-слотов в требуемых пределах, датчик температуры можно использовать на расстоянии до нескольких метров от микроконтроллера.

Датчик температуры преобразовывает и хранит цифровые данные в двух регистрах (Рисунок 3). По большому счету, разрешение выходных данных составляет 9 бит. Младший байт хранит данные о температуре, старший байт хранит знак измерений. В случае, если знак отрицательный (0xFF), данные в младшем бате дополняются до двух. Бит 0 в младшем байте представляет десятичное значение температуры: 0.5 °С для логической 1 и 0 °С для логического 0. В программном коде необходимо учитывать этот момент, чтобы избежать ошибочных измерений.

Регистры хранения данных о температуре датчика DS18S20
Рисунок 3. Датчик хранит данные о температуре в двух регистрах. Младший байт хранит данные о температуре, старший байт хранит знак измерений.

Также датчик имеет два байта энергонезависимой памяти (EEPROM) - регистры TH и TL, которые представляют собой температурные пороги, с которыми сравниваются старшие 8 бит каждого измеренного значения температуры. С помощью специальной команды можно организовать сигнализацию выхода температуры за установленные пределы (Рисунок 4). Разрешение регистров TH и TL 8 бит, в отличие от 9-битного регистра преобразования температуры.

Регистры EEPROM датчика DS18S20
Рисунок 4. Если потребуется в приложении, можно использовать регистры EEPROM датчика температуры для хранения пороговых уровней температуры, что позволяет организовать сигнализацию о выходе температуры за заданные параметры.

Общая карта памяти датчика DS18S20 - блокнотная память (ОЗУ) и энергонезависимая память (регистры TH и TL) - изображена на Рисунке 5. Если функция сигнализации не требуется в приложении, то регистры TH и TL могут служить областью энергонезависимой памяти общего назначения.

Карта памяти датчика DS18S20
Рисунок 5. Помимо энергонезависимой памяти (EEPROM) датчик температуры DS18S20 имеет блокнотную память (ОЗУ).

Значение температуры с разрешением более 9 бит может быть вычислено с использованием данных из регистров ОЗУ датчика: регистры данных о температуре (9 битное разрешение), регистр COUNT REMAIN (значение, оставшееся в счетчике в конце измерения), регистр COUNT PER C (количество импульсов на один градус для данной температуры).

Данные подставляются в следующую формулу: 

Формула для вычисления температуры

Загрузки

Схема на Рисунке 1 в PDF - скачать
Схема на Рисунке 2 в PDF - скачать
Исходный код программы микроконтроллера - скачать

electronicdesign.com

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: Simple Circuit Interfaces 1-Wire Temperature Sensor To A Microcontroller

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя