Датчик движения с интерфейсом 1 wire. Монтаж линии датчиков (1-wire). C. Уникальный идентификатор устройства

Как было обещано ранее, предлагаю поговорить о подключении датчиков температуры к контроллеру умного дома Loxone Miniserver.
В предыдущей статье вы може прочитать как подключить сервоприводы .

И так, в системе умного дома Loxone в основном используются датчики температуры, основанные на шине 1-Wire. Это очень миниатюрные датчики, благодаря чему мы имеем возможность устанавливать их даже в выключатели, не испортив дизайн интерьера. Помимо этого, еще одним плюсом этих датчиков является то, что они цифровые, то есть преобразование из аналогово сигнала в цифровой происходит непосредственно в самом датчике, что гарантирует отсутствие искажения сигнала (показания значения температуры).

Фото 1. Датчик температуры 1-Wire DS18B20.

Существует мнение, что расположение датчика в выключателе, дает погрешность при измерении температуры. Надо отметить, что большинство систем отопления очень инертны и поэтому, особой разницы где датчик находится - на стене или в выключателе, нет. Задержка по сравнению с настенным датчиком безусловно есть, но она очень незначительна и никак не влияет на работу системы. В любом случае, каждая система настраивается под конкретные требования клиентов и их личные ощущения.


Loxone предлагает два варианта датчика с легким подключением:

Фото 2. Датчик температуры Loxone 1-Wire.

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


Фото 3. Герметичны датчик температуры Loxone 1-Wire.

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


Отметим, что датчики 1-Wire напрямую нельзя подключить к Miniserver’у, поэтому подключение нужно осуществлять через расширение Loxone 1-Wire.

Фото 4. Расширение Loxone 1-Wire для системы умного дома Loxone.

На одно расширение можно подключить до двадцати датчиков.


Длина шины, в зависит от способа подключения:

Пример классического шинного соединения.
При данном варианте подключения мы имеем наибольшую длину - 350м.

Соединение шиной с одиночными ответвлениями.
Суммарная длина шины при таком подключении, немного меньше классической - 300м.

На данной схеме представлено соединение, не имеющее конкретной конфигурации.
В таком варианте подключения суммарная длина не должна превышать 100м.

Соединение звездой - все датчики подключаются непосредственно к расширению. Суммарная длина шины не более 100м. Но несмотря не небольшую длину, этот вид соединения хорошо подходит для небольших систем, так как позволяет избежать некоторых сложностей при проводке кабеля.


Надо заметить, что во всех вышеизложенных схемах, указана приблизительная длина. И в разных системах она может варьироваться.

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

Схема подключения расширения 1-Wire к Loxone Miniserver

Схема 1. Подключение расширение Loxone 1-Wire к контроллеру умного дома Loxone Miniserver.

Схема 2. Способы подключения датчиков 1-Wire.

Подключение с питанием от шины (на схеме слева), стоит использовать в случаях, когда количество жил в витой паре ограниченно. Например Вам нужно подключить 5-ть кнопок в выключателе. В обычной витой паре 8 проводов (т.е. 4 пары), 6 из них идут на выключатель, один питающий и пять сигнальных проводов. В итоге у Вас остается всего одна пара - под датчик. В остальных случаях лучше использовать вариант подключения с отдельным питанием, так как это позволит на одно расширение подключить большее количество датчиков.
Стоит напомнить, что подключения могут быть комбинированными, то есть одновременно к одному расширению можно подключить как датчики с питанием от шины, так и с автономным питанием.

Схема подключения нескольких датчиков 1-Wire при питании от шины

Схема 3. Схема подключения нескольких датчиков 1-Wire при питании от шины к контроллеру умного дома Loxone Miniserver.

Схема подключения нескольких датчиков 1-Wire при отдельном питании

Схема 4. Схема подключения нескольких датчиков 1-Wire при отдельном питании к контроллеру умного дома Loxone Miniserver.


В обоих вариантах представлены схемы с использованием соединения звездой, где суммарная длина шины не должна превышать 100 метров.

Так же, помимо датчиков 1-Wire, есть и аналоговые, у которых на выходе сигнал 0-10В, однако они дороже и имеют большие габариты, что не позволяет их незаметно монтировать в помещении.

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

Фото 5. Датчик температуры для сауны Loxone 0-10В.

Схема подключения датчика температуры 0-10В для сауны

Схема 5. Схема подключения датчика температуры 0-10В для сауны к контроллеру умного дома Loxone Miniserver.

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

Предлагаю так же рассмотреть пример подключения двух датчиков: температуры/влажности 0-10В. Количество датчиков обусловлено техническими особенностями Miniserver’а, а именно - всего четыре входа 0-10В. Больше количество подключается по аналогии, но уже к расширению Loxone Extension.

Схема подключения двух датчиков температуры/влажности 0-10В

Схема 6. Схема подключения двух датчиков температуры/влажности 0-10В к контроллеру умного дома Loxone Miniserver.

К сожалению нормальной клеммы на четыре контакта нет, поэтому мы используем Phoenix Contact UTTB и как для раздачи питания, и как проходные.

Система "Бенукс" позволяет собрать в один общий центр управления и мониторинга оборудование, которое казалось-бы ничего общего не имеет между собой. Благодаря тому, что все датчики и модули управления заводятся в одном общем справочнике устройств, дальнейшее их использование в программе единообразно и значительно упрощается для пользователя, не зависимо от типа оборудования и протоколов.

В настоящее время Бенукс поддерживает следующие разновидности оборудования:

Оборудование с доступом по WiFi на базе модуля ESP8266


В последнее время широкую популярность получили недорогие малогабаритные модули с доступом по Wi-Fi на базе чипа ESP8266, который представляет собой 32-битный контроллер со схемой обвязки. Помимо большого разнообразия аппаратных модификаций этого модуля, существует и много вариантов прошивок для контроллера. Система Бенукс поддерживает прошивку от "homes-smart", в которой обмен происходит по Http-протоколу. Есть модули со встроенной внутренней антенной, есть модули с подключением внешней антенны. Небольшие габариты модулей позволяют их легко встраивать в другие блоки или аппаратуру, а так-же в интерьер жилища или офиса. В системе Бенукс используются модули с прошивкой от homes-smart.ru

Одним из удачных законченных решений является оборудование интернет-магазина radioseti.ru в котором датчики и модули управления размещены в корпусах и готовы к использованию. В номенклатуре датчики температуры, влажности, протечки воды. Для управления оборудованием существуют модули в корпусах для монтажа на DIN-рейку. Начальная настройка модулей производится через ВЭБ-интерфейс, а затем в программе Бенукс это оборудование заводится в справочник устройств и используется в программе наравне с оборудованием других протоколов и технологий.

Основой сети 1-Wire является так называемый "мастер линии" - адаптер



Что значит "облегчённый"? - При малом количестве датчиков и небольшой длине микросети в качестве адаптера можно использовать очень простенькие схемы из нескольких деталей. В интернете можно найти несколько вариантов таких схем. Схема одного из них приведена: Этот адаптер используется для подключения около 3 устройств при длине линии не более 5 метров.

Если же организация 1-Wire-системы на базе персонального компьютера связана с особыми трудностями (большая длина линии, большое количество ведомых устройств, плохое качество кабеля или сложная топология, много помех и т.п.), то наиболее оптимально использование интеллектуального адаптера для COM-порта типа LINK. Он реализован на базе микропроцессора. При этом устройство полностью эмулирует со стороны последовательного порта работу популярного адаптера DS9097U производства Dallas Semiconductor и, таким образом, поддерживает все разработанное ранее для персональных компьютеров программное обеспечение. Но главное, что благодаря собственным интеллектуальным ресурсам этот адаптер реализует льготный режим работы однопроводных устройств на проблемных 1-Wire-линиях, в условиях сложной помеховой обстановки. LINK многократно улучшает механизм активной подтяжки на линии, что позволяет действительно получать идеальные сигналы обмена при длинах кабеля до 300 метров и числе сопровождаемых однопроводных компонентов до 250 шт, а использование процессором такого адаптера специальных алгоритмов цифровой фильтрации многократно улучшает устойчивость обслуживаемой 1-Wire-линии к электромагнитным помехам, шумам и отражениям сигналов.

Примечание: если USB-адаптер подключается к компьютеру через USB-расширитель, то обычно количество ошибок 1-Wire увеличивается, поэтому такое подключение нежелательно.


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

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



схема подключения к цифровому модулю внешних герконовых датчиков или датчиков типа "сухой контакт" показана
схема подключения к цифровому модулю цепи для управления оборудованием показана

В системе Бенукс может применяться восьмиканальная микросхема DS2408 в качестве как цифрового ввода, так и управления оборудованием. Причём часть каналов может использоваться для ввода, а часть для вывода.

Датчик питания 220V.

Один из вариантов применения цифрового универсального модуля - контроль наличия напряжения. Для этого стандартный модуль дополняется оптроном типа АОТ166А и двумя резисторами на 110 Ком. Благодаря тому, что используемый оптрон имеет широкий диапазон входного тока, на вход полученного модуля допускается подавать напряжение от 12 до 380 Вольт. А наличие двух встречно включенных светодиодов внутри оптрона позволяет подавать напряжение любой полярности, а значит как переменного тока, так и постоянного. На фото показан модуль, используемый в качестве датчика наличия 220В. Кроме примера, показанного на фото, описываемый модуль можно использовать и в других применениях, например как датчик наличия питания на электромагнитном клапане или задвижке и т.д.

Схема подключения внешнего сигнала к модулю показана
Стоит отметить, что если в описанном модуле использовать двухканальную микросхему DS2406P и два оптрона, то такой модуль можно использовать для контроля двух различных напряжений. Видеокоммутаторы с интерфейсом 1-Wire изготавливается на основе микросхем DS2406, DS2406P, DS2408 и DS2413. В настоящее время система "Бенукс" обслуживает следующие типы видеокоммутаторов:


Двухканальный на основе DS2406. В таком коммутаторе микросхема управляет одним реле с переключающимися контактами. Таким образом, на выход коммутатора подаётся видеосигнал либо с одного видеовхода, либо с другого.


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

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

Для управления всевозможными бытовыми электроприборами имеется типовая розетка 220 вольт в пластиковом корпусе. Внутри корпуса размещается плата с микросхемой DS2413P и интегральный стабилизатор для её питания. Микросхема управляет силовым симистором со схемой опторазвязки. Симистор крепится на радиаторе, что позволяет управлять нагрузками до 1000 ватт. Кроме силовой розетки, наружу корпуса выведены два гнезда RJ для подключения микросети 1-Wire. Светодиодный индикатор сигнализирует о включенной розетке. Вместо микросхемы DS2413P можно использовать DS2406(DS2406P), которая так-же позволяет управлять внешними устройствами, но имеет иное расположение выводов на корпусе.
Ниже по тексту имеется ссылка на схему этого устройства.

Безкорпусные сборки управления нагрузкой 220В с 1-Wire
Для промышленного использования в системах управления рекомендуем использовать безкорпусные модули, коммутирующие нагрузки 220в. Для примера приводим модуль с электромагнитным реле.

Датчик движения с интерфейсом 1-Wire

Это устройство представляет собой типовой датчик движения SRP100 с дополнительной встроенной платой. На плате расположена микросхема DS2406P и интегральный стабилизатор для её питания. На один канал микросхемы заведён сигнал от датчика движения, а на второй канал - концевик, срабатывающий при открывании корпуса датчика движения. Питание датчика движения выполняется от микросети 1-Wire.
Для того, чтобы не ограничивать пользователя использованием только датчика SRP100 и чтобы пользователь мог по своему усмотрению выбрать датчик движения из множества вариантов исходя из своих требований, используется специальный модуль для подключения любых датчиков движения с подобным интерфейсом. То есть, пользователь отдельно приобретает понравившийся ему датчик движения и подключает его к этому модулю. Единственное ограничение: чтобы датчик позволял запитывать его от напряжения +12В и тип выходного сигнала этого датчика должен быть типа "сухой контакт" или подобный. Модуль изготовлен на основе универсального двухканального цифрового ввода-вывода с дополнительным встроенным стабилизатором питания +12В. На выходную колодку этого модуля выводятся два цифровых канала и питание +12В.

Пример подключения двухканального цифрового модуля к датчику движения SRP-100
Датчик протечки воды с интерфейсом 1-Wire

Это устройство представляет собой транзисторный ключ, срабатывающий от малых токов, возникающих при попадании воды на контакты сенсорной платы. Сигнал от транзисторного ключа поступает на микросхему DS2406, а затем обрабатывается системой "Бенукс".

Датчик освещённости и влажности

Этот модуль собран на основе микросхемы DS2438. В качестве датчика освещённости используется фотодиод ФД256, а измерителем влажности является дактчик HIH-4000-004 фирмы Honeywell Inc.

Модуль аналоговых сигналов на основе DS2438

Основное назначение этого модуля - завести типовой аналоговый сигнал (0-10В) в персональный компьютер для цифровой обработки. Источником такого сигнала может быть датчик влажности, датчик давления (водяного, атмосферного и т.д.), датчик усилия, потребляемого тока и т.д., т.е. любой датчик, у которого выходной сигнал имеет диаппозон от 0 до 10 вольт.
Этот модуль собран на основе микросхемы DS2438. Особенность этой микросхемы в том, что в ней имеется два входа для аналоговых сигналов. На первый вход подаётся сигнал от 0 до +10 вольт. На второй вход может подаваться двуполярный сигнал от -250 милливольт до +250 милливольт.

Для увеличения надо кликнуть на картинке.

Модуль-приёмник ИК-команд с передачей сигнала в 1-Wire

Это устройство даёт возможность управлять восемью устройствами на расстоянии, с помощью ИК пульта. Сигналами с ИК пульта одна из восьми DS2401 подключается непосредственно к сети 1-WIRE. ПК с системой БЕНУКС обнаруживает активность на шине DS2401 и подает команды на включение или выключение устройств, а так же выполнение команд по заданному сценарию.
Система Бенукс определяет микросхему DS2401 как тип iButton, поэтому допускается использование микросхем DS* с такими "групповыми" номерами: 01,04,06,08,09,11,12,20,35,45,55.
Тем кто любит попаять. Девайс так же можно модернизировать и сделать автономное устройство, которое управляет всевозможными бытовыми электроприборами. Для этого вместо микросхем DS2401 нужно установить, согласно схеме, силовой каскад из симистров или реле. Тогда у Вас получится устройство, которое управляет восемью устройствами с ИК пульта.

Примечание:
Этот модуль является отдельной разработкой одного из пользователей системы "Бенукс",
по всем вопросам обращайтесь на E-mail [email protected]

Примечания.
Во всех представленных выше устройствах микросхемы DS2406, DS2406P и DS2408 могут могут работать либо как цифровой датчик, либо как устройство управления, в зависимости от электрической схемы подключения. Микросхема DS2413 в системе Бенукс не используется как цифровой датчик, потому что не поддерживает команду 1-Wire "поиск активных". Эта микросхема используется только для устройства управления.
Схемотехника большинства устройств заимствована с сайта Московской фирмы ЭлИн.
Производители оборудования с протоколом 1-Wire

Большой выбор датчиков и устройств с 1-Wire в Интернет-магазине www.radioseti.ru
Кроме того, в этом же магазине можно приобрести модули ESP8266 с доступом по Wi-Fi. Более подробно о таких модулях ethernet usb (может быть использован для адаптера 1-Wire)
Миникомпьютеры серии eBox
AMD LX800

Интерфейс 1-Wire разработан фирмой Dallas Semiconductor, все права на этот интерфейс принадлежат исключительно этой фирме (Которая, впрочем, уже давно прекратила свое самостоятельное сущестование и перешла под крыло корпорации MAXIM Inc.).
Чем привлекателен этот интерфейс? Разумеется, малым количеством выводов МК, требующихся для подключения практически неограниченного количества микросхем. В самом деле, двусторонний обмен требует всего 1 линию! Кроме того, ассортимент устройств с этим интерфейсом весьма широк. Наконец, протокол обмена по этому интерфейсу очень прост и легко реализуется программно практически на любых МК хотя есть и специальные микросхемы-адаптеры).

Фирменная документация по указанному интерфейсу и устройствах, его поддерживающих, находится по адресу http://www.maxim-ic.com/1-Wire.cfm.

Аппаратная реализация интерфейса 1-Wire

На рисунке показана упрощенная схема аппаратной реализации интерфейса 1-Wire. Вывод DQ устройства представляет собой вход КМОП-логического элемента, который может быть зашунтирован (замкнут на общий провод) полевым транзистором. Сопротивление канала этого транзистора в открытом состоянии - около 100 Ом. Когда транзистор заперт - имеется небольшой ток утечки (примерно 5 мкА) на общий провод.
Шина 1-Wire должна быть подтянута отдельным резистором к напряжению питания устройств (которое, кстати, может быть от 3 до 5В - уточняется по характеристикам конкретного устройства). Сопротивление этого резистора 4.7 К, однако, это значение рекомендовано только для достаточно коротких линий. Если шина 1-Wire используется для подключения удаленных на большое расстояние устройств, то сопротивление этого резистора следует уменьшить. Чуть позже я коснусь этой проблемы и поясню причины необходимости такого уменьшения сопротивления, а пока скажу, что минимально допустимое его сопротивление - около 300 Ом, а максимальное - около пары-тройки десятков килоом. Данные величины - ориентировочные, вы всегда должны уточнить по характеристикам конкретного устройства 1-Wire его максимальный втекающий ток линии DQ, который, собственно, и определяет минимум внешнего сопротивления.
Подключение шины 1-Wire к МК показано условно в двух вариантах: с использованием 2 отдельных выводов МК (один в качестве выхода, а другой в качестве входа), так и одного, работающего и на ввод и на вывод. Разделение этих способов показано пунктирной линией, условно обозначающей границу корпуса МК. С некоторой натяжкой можно представить себе логическое строение шины 1-Wire как всем известное соединение выводов микросхем с открытым коллектором по схеме "монтажное ИЛИ". Очевидно, что передача какой-либо информации при этом возможна только выдачей низкого уровня в линию, т.е. замыканием ее на общий провод, а в высокий логический уровень линия вернется сама, благодаря наличию внешнего подтягивающего резистора. Так же очевидно, что одновременная передача нескольких устройств обречена на неудачу из-за полного искажения информации (все передаваемые единицы одного устройства будут подавлены передаваемыми нулями от другого устройства).

Программная реализация интерфейса 1-Wire

А теперь о том, как происходит обмен информацией по шине 1-Wire. Основные постулаты.
1. Обмен всегда ведется по инициативе одного ведущего устройства, которое в большинстве случаев является микроконтроллером (МК).
2. Любой обмен информацией начинается с подачи импульса сброса ("Reset Pulse" или просто RESET) в линию 1-Wire ведущим устройством.
3. Для интерфейса 1-Wire в общем случае предусматривается "горячее" подключение и отключение устройств.
4. Любое устройство, подключенное к 1-Wire после получения питания выдает в линию DQ импульс присутствия, называемый "Presence pulse" (далее я буду использовать термин PRESENCE). Этот же импульс устройство всегда выдает в линию, если обнаружит сигнал RESET.
5. Появление в шине 1-Wire импульса PRESENCE после выдачи RESET однозначно свидетельствует о наличии хотя бы одного подключенного устройства.
6. Обмен информации ведется так называемыми тайм-слотами: один тайм-слот служит для обмена одним битом информации.
7. Данные передаются побайтно, бит за битом, начиная с младшего бита. Достоверность переданных/принятых данных (проверка отсутствия искажений) гарантируется путем подсчета циклической контрольной суммы.
Основные постулаты определяют логический низкоуровневый протокол обмена данными.
На следующем рисунке показана диаграмма сигналов RESET и PRESENCE, с которых всегда начинается любой обмен данными. Кстати, выдача импульса RESET в процессе обмена служит для досрочного завершения процедуры обмена информацией.

Диаграмма сигналов инициализации обмена

Как видим, длительность большинства временных интервалов очень приблизительная и имеет только ограничение только по минимуму (не меньше указанного). Условные обозначения линий, показанные на Рис. 2, будут использоваться и далее.
Импульс RESET формирует ведущий МК, переводя в низкий логический уровень шину 1-Wire и удерживая ее в этом состоянии минимум 480 микросекунд. Затем МК должен "отпустить" шину. Через некоторое время, зависящее от емкости линии и сопротивления подтягивающего резистора, в линии установится высокий логический уровень. Протокол 1-Wire ограничивает это время "релаксации" диапазоном от 15 до 60 микросекунд, что и является определяющим для выбора подтягивающего резистора (как правило, емкость линии мы менять существенно не можем, а именно она оказывает существенное влияние на время возврата линии к высокому уровню).
Обнаружив импульс RESET, ведомое устройство приводит свои внутренние узлы в исходное состояние и формирует ответный импульс PRESENCE, как следует из рисунка - не позже 60 микросекунд после завершения импульса RESET. Для этого устройство переводит в низкий уровень линию DQ и удерживает ее в этом состоянии от 60 до 240 микросекунд. Конкретное время удержания зависит от многих параметров, но всегда находится в указанном диапазоне. После этого устройство так же "отпускает" шину.
Но после завершения импульса PRESENCE устройству дается еще некоторое время для завершения внутренних процедур инициализации, таким образом, МК должен приступить к любому обмену с устройством не ранее, чем через 480 микросекунд после завершения импульса RESET.
Итак, процедура инициализации интерфейса, с которой начинается любой обмен данными между устройствами, длится минимум 960 микросекунд, состоит из передачи от МК сигнала RESET и приему от устройства сигнала PRESENCE. Если сигнал PRESENCE не обнаружен - значит на шине 1-Wire нет готовых к обмену устройств.

Теперь рассмотрим процедуры обмена битами информации, которые, как вы помните, осуществляются определенными тайм-слотами. Тайм-слот - это по существу определенная, довольно жестко лимитированная по времени последовательность смены уровней сигнала в линии 1-Wire. Различают 4 типа тайм-слотов (я буду использовать термин МК, как синоним "ведущего устройства" и просто "устройство", как синоним "ведомого"): передача "1" от МК, передача "0" от МК, прием "1" от устройства и прием "0" от устройства.
Любой тайм-слот всегда начинает МК путем перевода шины 1-Wire в низкий логический уровень. Длительность любого тайм-слота должна находиться в пределах от 60 до 120 микросекунд. Между отдельными тайм-слотами всегда должен предусматриваться интервал не менее 1 микросекунды (конкретное значение определяется параметрами ведомого устройства).
Тайм-слоты передачи отличаются от тайм-слотов приема поведением МК: при передаче он только формирует сигналы, при приеме, кроме того, еще и опрашивает (т.е. принимает) уровень сигнала в линии 1-Wire. Следующй рисунок демонстрирует временные диаграммы тайм-слотов всех 4-х типов: вверху показаны тайм-слоты передачи от МК, внизу - приема от устройства.

Тайм-слот передачи "0" заключается просто в удержании шины 1-Wire в низком уровне в течение всей длительности тайм-слота. Передача "1" осуществляется путем "отпускания" шины 1-Wire со стороны МК не ранее чем через 1 микросекунду после начала тайм-слота, но не позже чем через 15 микросекунд. Ведомое устройство опрашивает уровень в шине 1-Wire в течение временного интервала, условно показанного в виде серого прямоугольника, т.е. начиная с 15-й микросекунды от начала тайм-слота и заканчивая 60-й микросекундой от начала. Типичный момент ввода уровня в устройство (т.е. характерный для большинства устройств) - около 30-й микросекунды от начала тайм-слота.
Заштрихованная область - это область "нарастания" уровня в шине 1-Wire, которая зависит от емкости линии и сопротивления подтягивающего резистора, она приведена для справки.
Тайм-слоты приема информации отличаются тем, что МК формирует только начало тайм-слота (абсолютно так же, как при передаче "1"), а затем управление уровнем шины 1-Wire берет на себя устройство, а МК осуществляет ввод этого уровня так же в определенной зоне временных интервалов. Зона эта, как видно из рисунка, довольно мала. Как и раньше, заштрихованная область - область неопределенности, поэтому для ввода, собственно говоря, контроллеру остается даже не промежуток, а скорее конкретный момент, когда он должен ввести уровень сигнала из линии. Этот момент времени - 14-я или 15-я микросекунда от начала тайм-слота. Разумеется, если линия имеет малую емкость, а подтягивающий резистор мал, зона опроса несколько расширяется, однако рекомендую ориентироваться на худший вариант (как, кстати, рекомендует и фирма-производитель), что-бы всегда обеспечить надежный обмен данными.

Итак, подведем итоги. МК начинает тайм слот с выдачи в шину 1-Wire "0" в течение 1 микросекунды. Последующий уровень зависит от типа тайм слота: для приема и передачи "1" уровень должен стать высоким, а для передачи "0" - оставаться низким вплоть до конца тайм-слота, т.е. не менее 60 и не более 120 микросекунд. Если МК принимает данные, то опрос уровня в шине он должен сделать на промежутке от 13-й до 15-й микросекунде тайм-слота. МК должен обеспечить интервал между отдельными тайм-слотами не менее 1 микросекунды (лучше - больше, максимальное значение не ограничено).
Важно понимать, что следует очень тщательно подходить к обеспечению в шине 1-Wire требуемых временных интервалов, т.к., например, увеличение длительности тайм-слота вывода "0" свыше рекомендованного значения может привести к ошибочному восприятию этого тайм-слота, как сигнала RESET, и, разумеется, после этого вся процедура обмена пойдет насмарку. Но так же следует учитывать влияние самой линии на длительность фронтов импульсов. Поэтому в общем случае, это не простая задача. Но выполнение несложных рекомендаций позволит ее решить достаточно простыми средствами: во-первых, все сигналы, которые должен формировать МК, следует формировать по принципу необходимого минимума длительности (т.е. немного больше, чем указанная минимальная длительность), а от устройства следует ожидать сигналов по принципу наихудшего (т.е. ориентироваться на самые худшие варианты временных параметров сигнала).
Если вы разрабатываете схему, которая целиком умещается на одной плате вместе со всеми устройствами на шине 1-Wire, то, ориентируясь на самый первый рисунок, вы получите практически идеальную линию: фронты нарастания высокого уровня в шине будут минимальными - это избавит вас от большинства проблем. Но если Вы подключаете несколько устройств через длинный соединительный шлейф - придется бороться с погонной емкостью линии.
Мною проверено, что соединение по свитым вручную обычным монтажным проводам при типовом подтягивающем резисторе однозначно возможно на расстоянии до 9 м, а для соединения по очень длинной телефонной "лапше" может потребовать уменьшения подтягивающего резистора до 510 ом и даже менее.

Разобравшись с процедурами обмена битами, пора приступать к более высокому уровню протокола обмена информацией, и для этого необходимо рассмотреть принципы адресации устройств и управления ими.
Каждое устройство 1-Wire обладает уникальным идентификационным 64-битным номером, программируемым на этапе производства микросхемы. Уникальным - это значит, что фирма-производитель гарантирует, что не найдется двух микросхем с одинаковым идентификационным номером (по крайней мере в течении нескольких десятков лет при существующих темпах производства).
При рассмотрении протокола обмена мы будем исходить из принципа, что на шине 1-Wire имеется более одного устройства. В этом случае перед МК встают 2 проблемы: определение количества имеющихся устройств и выбор (адресация) одного конкретного из них для обмена данными. Решение первой проблемы осуществляется двумя путями: универсальным и гибким, но требующим довольно сложного программно-реализуемого алгоритма, и простым, но с большими ограничениями. Универсальный алгоритм мы рассматривать не будем, т.к. это требует отдельной статьи. А более простой заключается в том, что номера всех используемых в вашей схеме 1-Wire-устройств вы должны знать заранее, и просто использовать их как константы в вашей программе. Номера некоторых устройств нанесены прямо на корпусе микросхем (например, для устройств iButton - всем известных ключей-таблеток), а номера других можно определить при помощи специальных программ или устройств (о них в конце статьи). iButton - зарегистрированная торговая марка, права на которую принадлежат Dallas Semiconductor, дополнительная информация об этом семействе изделий на есть на сайте.
Итак, предположим, что мы знаем номера всех устройств 1-Wire на шине. Как же ведется работа с ними? Алгоритм тут следующий. МК посылает, как обычно, импульс RESET, и все имеющиеся устройства выдают PRESENCE. Затем МК посылает в шину команду, которую принимают все устройства. Команд определено несколько общих для всех типов 1-Wire-устройств, а так же могут быть команды, уникальные для отдельных типов. Среди общих команд нас в первую очередь могут заинтересовать следующие (см. табли-цу).

Значение байта

Описание

SEARCH ROM

Поиск адресов - используется при универсальном алгоритме определения количества и адресов подключенных устройств

READ ROM

Чтение адреса устройства - используется для определения адреса единственного устройства на шине

MATCH ROM

Выбор адреса - используется для обращения к конкретному адресу устройства из многих подключенных

SKIP ROM

Игнорировать адрес - используется для обращения к единственному устройству на шине, при этом адрес устройства игнорируется (можно обращаться к неизвестному устройству)

Первую команду мы не станем рассматривать по ранее изложенной причине, вторая позволит вам определить адрес имеющихся у вас устройств перед их установкой в готовое изделие, а две последние наверняка станут основными в вашей работе.
После того, как МК выдаст команду READ ROM, от устройства поступит 8 байт его собственного уникального адреса - МК должен их принять. Учтите, что любая процедура обмена данными с устройством должна быть завершена полностью либо прервана посылкой сигнала RESET.
Если отправлена команда MATCH ROM, то после нее МК должен передать так же и 8 байт конкретного адреса устройства, с которым будет осуществляться последующий обмен данными. Это равносильно выставлению адреса на параллельной шине в микропроцессорных устройствах. Приняв эту команду, каждое устройство сравнивает передаваемый адрес со своим собственным. Все устройства, адрес которых не совпал, прекращают анализ и выдачу сигналов в линии 1-Wire, а опознавшее адрес устройство продолжает работу. Теперь все данные, передаваемые МК будут попадать только к этому "адре-сованному" устройству. То, какие именно данные надо послать в устройство или получить от него после его адресации, зависит от конкретного устройства и в настоящей статье не рассматривается (например, для упомянутого термометра это могут быть команды запуска измерения или считывания результата, для ключа-таблетки не определены никакие иные команды, кроме основных, а для микросхем АЦП дополнительных команд может быть около десятка).
Если устройство одно на шине - можно ускорить процесс взаимодействия с ним при помощи команды SKIP ROM. Поучив эту команду, устройство сразу считает адрес совпавшим, хотя никакого адреса за этой командой не следует. Некоторые процедуры не требуют приема от устройства никаких данных, в этом случае команду SKIP ROM можно использовать для передачи какой-то информации сразу всем устройствам. Это можно использовать, например, для одновременного запуска цикла измерения температуры несколькими датчиками-термостатами типа DS18S20.
Прием и передача байтов всегда начинается с младшего бита. Порядок следования байтов при передаче и приеме адреса устройства так же ведется от младшего к старшему. Порядок передачи другой информации зависит от конкретного устройства, поэтому следует обращаться к документации на применяемые вами устройства.

В завершение обзора интерфейса рассмотрим детально строение уникального 64-битного номера-адреса устройств 1-Wire. Он состоит фактически из 8 отдельных байт: одного байта идентификатора семейства, шести байт (48 бит) собственно уникального адреса и одного байта контрольной суммы всех предыдущих байтов. Рассмотрение этих составных частей начнем, по традиции, в обратном порядке.
Итак, контрольная сумма или CRC - это байт, значение которого передается самым последним и вычисляется по специальному алгоритму на основе значения всех 7-и предыдущих байтов. Алгоритм подсчета таков, что если все байты переданы-приняты без искажений (а искажения вполне возможны, если вспомнить характер аппаратной реализации интерфейса), принятый байт контрольной суммы обязательно совпадет с рассчитанным в МК (или устройстве) значением. Т.е. при реализации программного алгоритма обмена информацией мы должны при передаче и приеме байтов подсчитывать их контрольную сумму по строго определенному алгоритму, а затем либо передать полученное значение (если мы вели передачу адреса/данных), либо сравнить расчетное значение с принятым значением CRC. Только при совпадении обоих CRC МК или устройство считают принятые данные достоверными. В противном случае продолжение обмена невозможно.
Очевидно, что алгоритм подсчета CRC должен быть одинаковым как для МК, так и для любого устройства. Он "стандартизирован" и описан в документации. Однако его понимание требует определенных умственных усилий и, что лично для меня более критично, наличия времени, которого постоянно не хватает. Именно поэтому я не стану описывать сам алгоритм расчета (все желающие могут познакомиться с ним по фирменному документу Application Note 27 "Understanding and Using Cyclic Redundancy Checks with Dallas Semiconductor iButtonTM Products"), а просто приведу примеры программной реализации этого алгоритма, которые можно использовать не особо углубляясь в математические дебри. Разумеется, вы легко сможете адаптировать приводимые примеры под свои нужды. Кстати, по этим примерам можно восстановить и алгоритм расчета CRC.

Пример первый: ассемблер MCS-51. Подпрограмма расчета CRC.
Эта подпрограмма использует одну ячейку памяти CRC для хранения результата. Перед первым вызовом эту ячейку необходимо обнулить. В аккумуляторе - очередной принятый или передаваемый байт. После того, как все байты переданы/приняты в ячейке CRC получится контрольная сумма. Подпрограмма не портит никаких регистров, кроме регистра состояния.

DO_CRC:
PUSH ACC ; сохраняем аккумулятор
PUSH B ; сохраняем регистр В
PUSH ACC ; сохраняем байт данных
MOV B, #8 ; кол-во битов (счетчик циклов)
CRC_LOOP:
XRL A, CRC ; XOR с предыдущим значением контрольной суммы
RRC A ; сдвиг вправо через флаг переноса
MOV A, CRC ; берем последнее значение CRC
JNC ZERO ; переход, если не было переноса
XRL A, #18H ; обновляем значение CRC путем XOR с константой
ZERO:
RRC A ; снова сдвигаем CRC
MOV CRC, A ; сохраняем новое значение CRC
POP ACC ; восстанавливаем байт данных
RR A ; циклически сдвигаем вправо
PUSH ACC ; снова сохраняем значение
DJNZ B, CRC_LOOP ; повторяем цикл 8 раз (для каждого бита)
POP ACC ; очищаем стек
POP B ; восстанавливаем прежние значения регистров из стека
POP ACC
RET ; завершение процедуры

Использование этой (да и последующей) подпрограммы очень простое: перед началом приема или передачи надо обнулить ячейку CRC, а затем каждый принятый или переданный байт поместить в аккумулятор и вызвать эту подпрограмму. После того, как приняты все 8 (обратите внимание - именно 8!) байтов уникального адреса устройства, необходимо проверить содержимое ячейки CRC: ненулевое ее значение свидетельствует о наличии искажения принятых данных. Если же CRC=0 - это значит, что данные приняты без искажений. Если же МК вел передачу уникального адреса устройства, то содержимое CRC должно быть передано 8-ым байтом после предыдущих семи.

Пример второй: процедура на языке Pascal с использованием табличных вычисле-ний CRC. Как и предыдущая, эта процедура должны быть вызвана для каждого передаваемого/принимаемого байта, а перед первым использованием переменная CRC должна быть обнулена.

Var
CRC: Byte; {переменная-результат расчета контрольной суммы}

Procedure Do_CRC(X: Byte);
{Эта процедура вычисляет контрольную сумму по стандартному алгоритму для устройств 1-Wire и накапливает результат в глобальной переменной CRC}

Const
{Нижеследующая таблица содержит заранее вычисленные сигнатуры, используемые для быстрого расчета CRC}

Table: Array of Byte = (0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,
157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,
35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98,
190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,
70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,
219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154,
101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36,
248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185,
140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147,205,
17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,
175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238,
50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,
202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139,
87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,
233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,
116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53);

Begin
CRC:= Table;
{Расчет заключается в простом извлечении результата из таблицы}
End;

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

Итак, мы разобрались с алгоритмом расчета контрольной суммы уникального адреса устройства, однако это всего лишь один последний байт из 8 байтов этого адреса, необходимо рассмотреть и остальные. Предыдущие 6 байтов (помните, что мы рассматриваем байты адреса в обратном порядке?), собственно, и есть тот самый уникальный номер-идентификатор. Номер - он и есть номер, рассказывать о нем нечего, переходим к заключительному первому байту - коду семейства.
Код семейства определяет номер группы, к которой принадлежит конкретное устройство и для микросхем одного семейства, естественно, будет одинаковым. Зная (считав) код семейства из неизвестного устройства можно довольно точно определить его функциональное назначение и даже некоторые параметры. Приведу список некоторых кодов семейств 1-Wire-устройств (таблица ниже).

В этой таблице, содержащей неполный перечень семейств 1-Wire-устройств, во втором столбце в скобках указаны типы микросхем в корпусах-таблетках iButton, а без скобок - в различных корпусах для монтажа на плату. Как видите, ассортимент устройств весьма широк.

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

  • любой обмен информацией начинается с передачи импульса RESET и приема имульса PRESENCE;
  • если импульса PRESENCE не обнаружено - на шине нет устройств;
  • МК всегда инициирует обмен, начиная каждый тайм-слот обмена битом информации;
  • временные параметры каждого тайм-слота следует соблюдать с максимально возможной точностью;
  • для выбора одного из многих устройств на шине 1-Wire МК должен передать в шину команду MATCH ROM и затем 8 байт адреса устройства, последний (8-й) байт этого адреса - есть контрольная сумма предыдущих семи;
  • если устройство на шине одно - МК может узнать его адрес путем посылки команды READ ROM, после чего принять от устройства 8 байтов адреса, последний из которых так же будет контрольной суммой первых семи;
  • для работы с единственным устройством на шине можно отказаться от указания его адреса, для этого МК должен передать устройству команду SKIP ROM, после чего можно начинать обычный обмен данными;
  • любая начатая процедура обмена может длиться сколь угодно долго за счет пауз между отдельными тайм-слотами, но всегда должна быть завершена полностью;
  • прервать начатый обмен можно в любой момент путем выдачи импульса RESET в шину 1-Wire (но это может нарушить нормальную работу некоторых устройств).
Просмотров: 11741

Технология достаточно старая и широко употребляемая

Изначально, выведена на рынок компанией Dallas - Все помнят таблетки для домофонов iButton- это оно

Устройство соединяется с контроллером по одному проводу (кроме общего) - отсюда название. Большое преимущество в том, что каждый чип имеет свой адрес, что позволяет термометры соединять просто параллельно

Я провел массу экспериментов с данным стандартом. Изначально, предполагая очень широко использовать его для управления Умным Домом

Хуже всего, если для управления 1-wire шиной не использовать никаких специализированных контроллеров (подключение напрямую к PIN у Arduino устройств) - в этом случае, проблемы возникают уже при длине кабеля более 3-х метров

Для моих целей такое расстояние не подходило, поэтому я использовал I2C to 1-wire мост DS2482-100

Стоимость чипа на Aliexpress менее 100 руб, чип имеет аппаратный драйвер шины с режимом strong-pullup, что в разы увеличивает надежность работы системы.

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

У себя я использую шлейф длиной около 150 м.

Термометры опрашиваются, относительно, устойчиво, что позволило предельно дешево и управляемо реализовать систему управления теплыми полами. Но сбои в считывании значений датчиков присутствуют. (В особенности, когда задействовано диммирование освещения или работает приточная вентиляция с фазовой регулировкой мощности нагревательного элемента)

Контроллер опрашивает датчики циклично, поэтому, единичные сбои не влияют на функционирование.

Кроме термометров, я пробовал использовать самую разнообразную перефирию, вооружившись Datasheet - ами написав множество процедур для управления следующими чипами и устройствами на их базе:

Если коротко - себя это не оправдало

Основная проблема - все же не очень хорошая помехозащищенность

Борьба с помехами в сети 1-Wire

Это, пожалуй, самое непростое в данной технологии. Описываю свой опыт:

  • Шину 1-Wire прокладывайте на расстоянии от высоковольтных проводов, трансформаторов LED освещения и проводов LED освешения (провода дают сильную помеху за счет того, что сила тока велика и используется ШИМ модулирование)
  • Не надо использовать экранированную витую пару. Я проложил STP 5-й категории, но при попытке заземлить экран - связь полностью теряется. Предполагаю, что это связано с увеличением емкости проводника.
  • По отзывам, невитая пара (самый дешевый двужильный провод) дает лучший результат.
  • Хороший опыт - подтягивать дальний конец провода через резистор 3-4 КОм к стабилизированному фильтрованному источнику питания 5Вольт.
  • Отводы от шины в 2-3 метра, в целом, не ухудшают качества работы системы, но прилично упрощают монтаж.

Разработчиком платформы 1-Wire является Dallas Semiconductor Corporation (US). В 2001 году она была приобретена гигантом мировой микроэлектроники фирмой Maxim Integrated Products (US). Платформа включает серию микросхем и устройств iButton на их основе, а также различные адаптеры, наборы для макетирования и программное обеспечение.

Производство микросхем и устройств iButton является исключительной прерогативой фирмы Maxim, их клонирование другими производителями политикой лицензирования не предусмотрено. В то же время сторонние фирмы разрабатывают и производят на основе микросхем данной платформы разнообразные модули для систем автоматизации, адаптеры, контроллеры, системы макетирования, а также ПО.

Рис.1. Компоненты платформы 1-Wire.

Платформа разрабатывалась с конца 80-х до конца 90-х годов и предназначалась для задач контактной идентификации объектов, в т.ч. с функциями измерения и регистрации температуры, влажности, параметров автономного электропитания, а также с функциями съема, хранения и переноса данных. Широко распространенным образцом такого рода применения является ключ-таблетка для домофона. Менее известным, но также широко распространенным является использование платформы 1-Wire для решения задач идентификации и регистрации параметров картриджей, материнских плат, биологических объектов, идентификации и защиты от несанкционированного доступа различных боксов, контейнеров и т.п. Суть данного целевого назначения и принципа действия отражена в термине «Touch Memory» (контактная память), который часто используют для упоминания устройств iButton. Подробную информацию о штатных областях применения и достоинствах платформы 1-Wire можно найти на следующих страницах сайта фирмы Maxim Integrated:

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

Оценки доли платформы на рынке систем домашней автоматизации отсутствуют.

Базовыми решениями, на которых основана платформа, являются следующие:

A. Двухпроводный интерфейс.

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

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

B. Индикация подключения в горячем режиме.

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

C. Уникальный идентификатор устройства

Каждая микросхема 1-Wire содержит уникальный 64-битный код, записываемый на этапе производства. Данный код позволяет индивидуализировать все выпускаемые устройства 1-Wire, для чего производитель гарантирует отсутствие одинаковых кодов (аналогично MAC-адресам сетевых адаптеров). При подключении к магистрали данный код считывается контроллером и используется для идентификации связанного с этим устройством объекта, а также для определения типа устройства. При подключении к магистрали нескольких устройств их коды могут использоваться в качестве их адресов, что позволяет строить технологические сети, получившие название MicroLAN.

Замечание. Для задач автоматизированного управления, к которым, в том числе, относятся и задачи «умного дома», данные решения не дают каких-либо преимуществ. Так, нет ощутимой разницы при использовании в современном интерьере двухпроводного и, например, четырехпроводного кабеля, тем более, что использование исполнительных устройств все равно потребует отдельной линии питания. Также не актуальна для домашней автоматики возможность подключения устройства в «горячем» режиме, если только это не ключ электронного замка. Использование же в качестве адреса устройства его идентификатора вместо установки фиксированного, регламентированного проектом, вообще сопряжено с определенными неудобствами наладки и ремонта сети, хотя разработчик и предлагает соответствующие алгоритмы самонастройки и адаптации, а также возможность установки с помощью внешних перемычек для ряда устройств дополнительного 4-х битного локального адреса. Пригодность платформы для отдельных ниш автоматизации вытекает из ее дешевизны, простоты применения, наличия в составе ряда востребованных датчиков, устройств сопряжения со стандартными интерфейсами, драйверов для распространенных операционных систем, а также наличием возможности расширения функционала за счет применения элементной базы общего назначения.

Сеть на базе протокола 1-Wire имеет централизованную архитектуру. Информационный обмен происходит под управлением центрального контроллера - «мастера», остальные сетевые устройства имеют статус «слэйв» (рис.3). В качестве контроллера сети может использоваться любое программируемое устройство, имеющее внешний интерфейс. Для согласования контроллеров с магистралью 1-Wire в составе программно-технических средств платформы имеются адаптеры и драйверы для проводных последовательных интерфейсов RS-232, RS-485, I2C, SPI, Ethernet, для параллельного интерфейса LPT, а также для Wi-Fi.

Рис.3. Конфигурация сети MicroLAN на базе протокола 1-Wire

Топология сети может иметь как линейную, так и ветвящуюся древовидную структуру. Основные параметры интерфейса 1-Wire следующие:

  • максимальная длина магистрали при использовании витой пары - до 300 м;
  • максимальное количество абонентов на магистрали максимальной длины - до 250;
  • скорость обмена по магистрали максимальной длины - до 16,3 кбит/c;

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

Обмен данными по магистрали включает три фазы (рис.4):

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

Рис.4. Циклограмма обмена данными

Логика всех устройств тактируется отрицательным фронтом сигналов контроллера как в режиме записи, так и в режиме чтения. Биты кодируются длительностью положительного импульса: «1» передается длинным импульсом, а «0» - коротким. В режиме записи все импульсы данных формируются контроллером. В режиме чтения контроллер формирует последовательность единиц, а абонент накладывает на них свою маску нулей (рис.5).

Рис.5. Тактирование и кодирование на физическом уровне

Более подробные сведения об архитектуре магистрали 1-Wire приведены в следующих официальных документах фирмы Maxim:

Архитектура ЗУ и регистров периферийных устройств платформы организована таким образом, что совокупность всех сетевых устройств может быть представлена как единая файловая система, что позволяет работать с сетью как с интегрированным носителем данных. Описание ее структуры приведено в AN114 1-Wire File Structure .

Номенклатура микросхем платформы 1-Wire и устройств iButton включает как простые носители кода идентификации, так и носители кода идентификации с дополнительными функциями, в т.ч.

  • с функциями различных типов ЗУ - Memory EPROM, EEPROM, ROM, NV SRAM ;
  • с функциями измерения температуры - Temperature Sensors ;
  • с функциями мониторинга, защиты и конфигурирования элементов электропитания - Battery Monitors, Protectors, and Selectors и Battery ID and Authentication ;
  • с функциями хронирования - Timekeeping & Real-Time Clocks ,
а также интерфейсные микросхемы для сопряжения контроллеров с магистралью 1-Wire - 1-Wire Interface Products .

Вся схемотехника, реализующая архитектуру, уже заложена в микросхемах платформы. При разработке периферийных устройств разработчику остается только добавить обвязку для сопряжения с датчиками, актюаторами и устройствами индикации, элементы защиты внешних цепей и, если потребуется, элементы внешнего электропитания. При разработке интерфейсных адаптеров необходима, соответственно, обвязка для сопряжения микросхем - драйверов магистрали с интерфейсом контроллера сети. На рис. 6 в качестве примера приведен фрагмент схемы модуля дискретного ввода-вывода фирмы ЭлИн.

Рис.6. Фрагмент схемы модуля дискретного ввода-вывода фирмы ЭлИн

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

Наиболее развитую номенклатуру OEM-устройств, включающую в т.ч. и управляемые розетки для коммутации электропитания, предлагает НТЛ ЭлИн. За рубежом наибольшей популярностью пользуются модули фирмы Embedded Data Systems. Однако в целом число OEM-производителей невелико, они не относятся к категории «гигантов» индустрии средств автоматизации и, кроме того, в значительной степени ориентированы на рынок домашних умельцев.

Рис.7. Примеры OEM-модулей 1-Wire

Фирма Maxim Integrated предоставляет для программирования систем на базе 1-Wire библиотеки API и SDK для широкого ряда платформ - персональных компьютеров с ОС Windows/Linux/MacOS, мобильных устройств, микроконтроллеров, .NET и JAVA. Их общее описание приведено в AN155 , а описание конкретных пакетов со ссылками на скачивание дистрибутивов и документации приведено в следующих документах:

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

Из сторонних разработок наибольший интерес представляют следующие:

Существует также большое число специализированных программ, разрабатываемых под узкие задачи (см., например, для модулей НТЛ ЭлИн).