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

Максимальная длина 1 wire. Монтаж линии датчиков (1-wire)

Подскажите, проблема следующая, к WB5 по 1 wire подключены 4 температурных датчика DS18B20 не герметичные, работают и определяются нормально. Подключаю дополнительно ваш герметичный датчик DS18B20 совместно с 4 мя, герметичный датчик не определяется и данные не отображает. (подключение напрямую к WB5) По отдельности все работает, а вместе никак.

Негерметичные датчики (GND-GND, 1W - DAT, +5V - VCC)
Герметичный (GND- черный, 1W - желтый, +5V - красный), на сайте у вас распиновка не верно указана, только так он работает у меня в ед числе.

Только что взял два таких же датчика с трёхметровым кабелем, дополнительно взял выводной DS18B20 без кабеля, зажал всё в клеммники Wiren Board, и всё вместе заработало.
Собственно, то, что купленный у нас датчик в одиночестве работает, уже скорее всего значило, что дело не в нём, а в конфигурации шины. Основной способ её “починить” - свериться с подробным руководством по организации 1-Wire шины: https://www.maximintegrated.com/en/app-notes/index.mvp/id/148 .
Случай однозначно негарантийный, но можем вместе с вами попробовать понять, в чём тут дело. Для начала четыре вопроса:

  1. Надеюсь, все датчики подключены тремя проводами (то есть каждый подключён отдельным проводом к 5В, никто не питается от шины данных)?
  2. Какие длины кабелей до ваших датчиков?
  3. Какие кабели в них используются? Не может ли быть наводок?
  4. Работает ли конфигурация “наш датчик + один ваш датчик”?

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

Расстояния 30 см - 1 для шины 1-wire вообще незаметны при любой топологии подключения, если все исправно.
Работает ли конфигурация “наш датчик + один ваш датчик”?

в логах wirenboard-ABZ4PE4F user.warn kernel: [ 1484.461380] w1_slave_driver 28-0000073ba74b: Read failed CRC check. Напряжение когда все не работает ровно 5.00

wirenboard-ABZ4PE4F user.info kernel: [ 1242.799168] w1_master_driver w1_bus_master1: w1_search: max_slave_cou
nt 64 reached, will continue next search. Еще вот это

wirenboard-ABZ4PE4F user.info kernel: [ 1242.799168] w1_master_driver w1_bus_master1: w1_search: max_slave_count 64 reached, will continue next search. Еще вот это

Вот это обычно значит, что у вас потенциал на линии 1-Wire ноль. Где-то КЗ.

Напишите пожалуйста идентификаторы всех датчиков, наших и ваших.

Посмотрел вашу ссылку: у вас не собственно сам датчик DS18B20, а модуль (платка), на которой есть ещё резистор (как я понял, это подтяжка 4.7КОм линии DATA к VCC), и ещё конденсатор (скорее всего, между VCC и GND).
Если это так, то четыре таких модуля дают в сумме подтяжку 1.2КОм. При этом подтяжка на линии должна быть одна - в мастере (контроллере Wiren Board), и она там уже есть - 3КОм. Итоговая подтяжка получается 0.8КОм, и наш датчик на трёхметровом кабеле не может её “перетянуть”.

Проверьте, к каким линиям подключены компоненты на плате. Если всё действительно так, как я сказал, то попробуйте их отпаять на одном вашем модуле, и попробуйте подключить этот модуль вместе с нашим датчиком.

  • Tutorial

Имеем в наличии гермозону на 4 ряда с 16-тью открытыми стойками в каждом ряду.
Схема кондиционирования: горячие-холодные коридоры, внутренние кондиционеры с внешними испарителями, 3 кондиционера на ряд, то есть 6 кондиционеров на холодный коридор.

Задача: построить систему мониторинга температуры гермозоны с возможностью предупреждения выхода кондиционеров из строя.

Для решения данной задачи решено было использовать сеть 1-wire температурных датчиков и систему мониторинга Zabbix 2.

Собираем сеть 1-wire.

Нам необходимо:

1. Контроллер 1-Wire сети DS9490R

2. Температурные датчики DS18B20 , в количестве, расчитываем: 4 ряда * 16 стоек в ряду * 2 датчика на стойку (холодный и горячие коридоры), то есть 128 датчика.

3. Для удобной установки датчика использовали вот такой переходник RJ45 на RJ45, кат. 5e GCT11-8p8c , так же в количестве 128 штук

4. И на каждый датчик по 2 патч-корда, то есть 128 * 2 = 256, длина патч-корда половина ширины стойки сервера

Собираем датчик, выбираем в переходнике три любых провода, делаем 3 дырки в переходнике, припаиваем датчик и так 128 раз:)
Рекомендуется залить место припоя клеем из термопистолета, получается что-то похоже на это:

Датчики сразу рекомендуется проверять на работу, прямым подключением к контролеру 1-wire сети и считывания с него информации. Так же рекомендуется пронумеровать датчики: последовательно наклеить номера с 1 по 128. Инициализация 1-wire сети будет описана ниже.

А так это смотрится если закрепить на стойке.

Так как на контролере разъем RJ11, а не RJ45, то рекомендую сделать нулевой датчик-переходник, его порядковый номер будет ноль, а номера стоек будут начинаться с 1, что более привычно.

ВАЖНО!
Протяженность нашей сети составила около 140 метров, так как сервер находился в 2 ряду.
В процессе тестирования выяснилось, что питания порта USB не хватает для такой длиной сети, контролер просто не может опросить датчики, дальше половины сети, поэтому рекомендую купить USB хаб, обязательно с внешнем питанием, и подключить контролер к нему. После подключения хаба, скорость опроса датчиков возросла, и в сети перестали появляться ошибки, все датчики читались.
Разбить сеть на два сегмента мне не удалось, так как программа которая считывает данные с датчиков, так и не смогла понять с каким контролером работать, по крайне мере заставить мне не удалось.

Инициализация 1-wire сети и получение значений датчиков.

Итак приступаем к настройке программной части.

Сервер к которому подключен USB контролер 1-wire сети работает под управлением FreeBSD 9.1, Zabbix 2.0.8 установлен из портов.

Для получения значений датчиков используется программа DigiTemp

Скачиваем исходники DigiTemp и компилируем, скомпилированные программы у меня располагаются: /usr/local/etc/digitemp/new/digitemp-3.6.0/

Для работы с нашем контроллером используем программу digitemp_DS2490

# cd /usr/local/etc/digitemp/new/digitemp-3.6.0/
# ./digitemp_DS2490 -i

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

./digitemp_DS2490 -i - результатом выполнения будет являться файл конфигурации сети 1-wire с названием.digitemprc, в домашнем каталоге программы.
При этом digitemp выведет 64-битные ID датчиков, которые запишет в файл.

Пример.digitemprc
TTY USB
READ_TIME 1000
LOG_TYPE 1
LOG_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F"
CNT_FORMAT "%b %d %H:%M:%S Sensor %s #%n %C"
HUM_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F H: %h%%"
SENSORS 133


ROM 5 0x28 0xCB 0xE2 0x19 0x03 0x00 0x00 0x6F

ВАЖНО
Номер счетчика ROM 0 0x28 0x62 0xB5 0x19 0x03 0x00 0x00 0x61, НЕ ЯВЛЯЕТСЯ его физически последовательным номером в сети, этот номер получен во время инициализации сети, то есть кто первым ответил, тот и записался в файл.
Поэтому на стадии пайки датчиков и их проверки рекомендую формировать, сразу последовательную сеть. То есть берем датчик, спаяли, подсоединили сразу к контролеру, запустили./digitemp_DS2490 -i получили его ID, скопировали его в Excel таблицу и так же добавили последовательно ROM номер … в таблицу.
Отсоединили датчик, наклеили на него последовательный номер, и повесили на гирлянду, соединяя патч-кардами. Не рекомендую подсоединять гирлянду к контролеру и запускать проверку, во-первых это будет гораздо дольше, а во-вторых в свете вышесказанного, из-за того, что ответы от датчиков приходят не последовательно, искать ID нового датчика будет сложнее.

После того как вы протестировали все датчики, подсоедините гирлянду к контролеру и запустите./digitemp_DS2490 -i

Сформируется конфигурационный файл вашей сети.digitemprc

Вам необходимо заменить
ROM 0 0x28 0x62 0xB5 0x19 0x03 0x00 0x00 0x61
ROM 1 0x28 0x29 0xD5 0x19 0x03 0x00 0x00 0xFD
ROM 2 0x28 0x59 0xDE 0x19 0x03 0x00 0x00 0x15
ROM 3 0x28 0xDA 0xD6 0x19 0x03 0x00 0x00 0x98
ROM 4 0x28 0xFD 0xBE 0x19 0x03 0x00 0x00 0x84

На ту последовательно которая у вас получилась в Excel файле в таком же формате.

Сохраните полученный файл.digitemprc в другой папке, так как если вы вдруг запустите еще раз./digitemp_DS2490 -i , то ваш файл будет перезаписан, и тогда физическая адресация будет неверной с большой долей вероятности.

После того как 1-wire сеть настроена, можно считывать значения датчиков, запустите./digitemp_DS2490 -q -a -r1 -n1 , программы выведет значения датчиков.

Проверьте правильность последовательного подключения в сети, например нагрейте 5 датчик, и запустите программу, температура должна возрастать на 4 (так как нумерация идет с 0)

Переходим к настройке Zabbix .

Сервер на котором установлен Zabbix в zabbix’е называется ZabbixServer.
Создаем в нем 129 элементов данных, то есть на каждый датчик температуры по элементу данных.

Для нас здесь важно понимать:
gmz.temp.t17 - это ключ элемента, они используется для отсылки значения датчика
и тип элемента должен быть “Zabbix trapper”, так как отправка значений будет происходить через программу zabbix_sender.

Создаем также 12 дополнительных элементов данных, на каждый из 12 кондиционеров. Датчики расположены так, что 3 датчика находится под выводом холодного воздуха кондиционера, поэтому считаем среднее этих трех датчиков, то элемент данных будет вычисляемым.

Обратите внимание на формулу, то есть складываются последние полученные значения датчиков и делится на три.

В crontab пользователя root добавляем задание:
*/1 * * * * /usr/local/etc/digitemp/digitemp_cron.sh > /dev/null 2>&1

То есть запускаем раз в минуту скрипт digitemp_cron.sh
cat /usr/local/etc/digitemp/digitemp_cron.sh

#!/usr/local/bin/bash
cd /usr/local/etc/digitemp/new/digitemp-3.6.0/
./digitemp_DS2490 -q -a -r1 -n1 -o"ZabbixServer gmz.temp.t%s %N %.2C" | /usr/local/bin/zabbix_sender -vv -z 127.0.0.1 -I 127.0.0.1 -T -i -

O"ZabbixServer gmz.temp.t%s %N %.2C" - это строка определяет формат вывода данных.

ВАЖНО!
ZabbixServer - это название хоста с установленным Zabbix server в Zabbix.

Запустите./digitemp_DS2490 -q -a -r1 -n1 -o"ZabbixServer gmz.temp.t%s %N %.2C" | /usr/local/bin/zabbix_sender -vv -z 127.0.0.1 -I 127.0.0.1 -T -i -

В результате работы zabbix_sender должно быть, что все строки отправлены и приняты:

Info from server: «Processed 133 Failed 0 Total133 Seconds spent 0.000540»
sent: 133; skipped: 0; total: 133

Если все так, то вы можете добавлять графики и триггеры, и настраивать оповещения.

Для одного из проектов по автоматизации потребовалось сделать устройство, которое является подчинённым 1-Wire устройством, принимает команды от мастера и выставляет на своих выходах значение аналогового сигнала в диапазоне от 0 до 10В.
Проанализировав линейку стандартных микросхем 1-Wire от Maxim, стало ясно, что нет микросхемы, которая позволит реализовать подобный функционал.
Потому было принято решение реализовывать 1-Wire slave на микроконтроллере. Надеюсь, данный материал будет интересен и полезен людям, которые делают «умный дом» своими руками, т.к. 1-Wire достаточно популярная шина в подобных проектах. В качестве камня был выбран МК Cortex M0+ ATSAMD20G16 от Atmel, но о реализации в коде расскажем во второй части. Забегая немного вперед, скажу что в третьей части цикла пойдет речь о реализации собственного семейства устройств для линуксовой библиотеки OWFS (One Wire File System). А сегодня расскажем о некоторых аппаратных решениях, к которым мы пришли в процессе разработки.

Речь в основном пойдет о том как подключить ногу микроконтроллера к 1-Wire шине с минимальным вредом для здоровья. Будем двигаться от простого к сложному.

Преобразование уровней


Самый простой вариант - двунаправленный преобразователь уровня на транзисторе. Для него потребуется где-то брать 5В со стороны шины 1-Wire.
Первый вариант - делать 5В на своем устройстве (помимо 3.3В) для «запитки» шины. Как следствие, усложнение схемотехники.
Второй вариант - прокладывать шину 1-Wire в три провода . Третьим проводом идёт линия питания +5В. Из проблем - лишний провод, просадка напряжения на длинном проводе.

Согласование уровней

Если очень не хочется использовать +5В можно разделить сигнальную линию на 2 составляющих (вход и выход)

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

Повышаем устойчивость

Для того что бы сделать прием данных по 1-Wire более уверенным необходимо сделать крутые фронты импульсов со стороны микроконтроллера. Для этого воспользуемся компаратором от TI LMV331 , который обеспечит более точный и резкий переход между логическими «0» и «1», а так же гистерезис 160mV. Еще заменим выходной би-полярный транзистор BC547 на полевой IRLML6346 и поставим защитный TVS диод ESD5Z6 на 6В.


Для данной схемы компаратор потребуется запитать от 5В. Где их можно взять было сказано выше.

Развязанный 1-Wire

Для обеспечения электрической развязки шины 1-Wire и внутренней электроники устройства воспользуемся изолированным транслятором уровней ADuM1201 , и изолированным DC/DC конвертор TES 1-1211 . Как и в предыдущем случае, линию данных 1-Wire делим на 2 линии: 1W_Rx и 1W_Tx.


DC/DC конвертор с 12 на 5 вольт взят для примера, можно использовать аналогичный 3.3/5.

Остальная схемотехника

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




Т.к. протокол 1-Wire требует наличие уникального адреса для каждого устройства на шине, на плату ставим 1-Wire UID от Maxim DS2411 . Будучи для неё мастером шины будем считывать её UID и использовать его в качестве собственного адреса. У DS2411 код семейства 0x01 (family code - старший байт UID’а). Мы же на сайте OWFS выберем незанятый код семейства для нашего нового устройства и будем подменять первый байт.

Как уже было сказано, во второй части приступим к программной реализации протокола 1-Wire Slave.

Цифровые датчики температуры и относительной влажности и автономные регистраторы температуры и относительной влажности, а так же все модули расширения, подключаются к линии датчиков 1-wire прибора ГИГРОТЕРМОН параллельно, используя 3 провода: «DQ» (шина данных 1-wire), «GND» (общий) и «+5В» (питание). Однако для надежности необходимо использовать все контакты разъема 6P6C (RJ12). Внимание: важно, чтобы контакты «DQ» (1-wire) и «GND 1-wire» (контакты 3 и 4 на рис. ниже) были одной витой парой, например, зеленый и бело-зеленый. Внешний вид разъема 6Р6С, а также назначение контактов и рекомендуемая расцветка проводов см. рис. ниже.

Для надежности связи прибора с датчиками и достижения максимальной протяженности линии датчиков 1-wire цифровые датчики и модули расширения рекомендуется подключать по схеме «гирлянда»: кабель от прибора ГИГРОТЕРМОН должен подходить к первому датчику (или модулю расширения), от первого ко второму и т.п., чтобы все датчики и модули были на одной линии, без ответвлений. См. рис. ниже.

Рекомендуемая максимальная протяженность линии 1-wire при использовании кабеля «витая пара» категории 5Е – не более 100 метров. Если фактическая длина кабеля более 100 метров, рекомендуется разбить линию на две малые с использованием дополнительного прибора ГИГРОТЕРМОН. Для удобства подключения и монтажа, все модули расширения и цифровые датчики и адаптеры для цифровых автономных регистраторов имеют не менее 2-х разъемов 6P6C (RJ12) – вход/выход 1-wire.

Внешний вид платы цифрового датчика 1w-2/3

Внешний вид модуля расширения дискретных датчиков «1wio2»

Внешний вид платы модуля расширения унифицированных (аналоговых) сигналов «HIHx2»

Таблица 1. Результаты испытаний линии связи регистраторов температуры (и относительной влажности) на максимальную протяженность,
при которой наблюдается устойчивая связь регистраторов с прибором Гигротермон

Длина кабеля, м. Тип регистраторов температуры и влажности / наличие связи (да / нет)
Регистраторы температуры
DS1921G-F5, DS1921Z-F5
Регистраторы температуры и относительной влажности DS1923-F5, DS1922L-F5
350 да (с подтяжкой 5В)
нет (без подтяжки 5В)
300 да (с подтяжкой 5В)
нет (без подтяжки 5В)
250 да (с подтяжкой 5В) нет (с подтяжкой 5В)
нет (без подтяжки 5В) нет (без подтяжки 5В)
200 да (с подтяжкой 5В) да (с подтяжкой 5В)
нет (без подтяжки 5В) нет (без подтяжки 5В)
150 да (с подтяжкой 5В) да (с подтяжкой 5В)
да да (без подтяжки 5В)
100 да (с подтяжкой 5В) да (с подтяжкой 5В)
да да (без подтяжки 5В)
  • "да" - наличие устойчивой связи датчика с прибором Гигротермон
  • "нет" - отсутствие устойчивой связи датчика с прибором Гигротермон
  • "с подтяжкой" - использование схемы пассивной подтяжки сигнала +5В на конце линии. http://gigrotermon.ru/imag/shop.product_details/8/flypage.tpl/198.html

Таблица 2. Результаты испытаний линии связи комбинированных датчиков** 2RJ11-HIH5031E-DS18S20
на максимальную протяженность, при которой наблюдается устойчивая связь с прибором Гигротермон

Длина кабеля, м. Измеряемый параметр / наличие связи (да / нет)
Температура Относительная влажность
100 да (без подтяжки) да (без подтяжки)
125 да (с подтяжкой) да (с подтяжкой)
150 да (с подтяжкой) да (с подтяжкой)
175 да (с подтяжкой) да (с подтяжкой)
200 да (с подтяжкой) нет (с подтяжкой)
300 да (с подтяжкой) нет (с подтяжкой)

**) В испытаниях использовано 10 комплектов комбинированных (температура + влажность) датчиков 2RJ11-HIH5031E-DS18S20, подключенных одновременно в конце линии.

Данные получены в "идеальных" лабораторных условиях с использованием кабеля NIKOLAN NKL 4200A-GY F/UTP 4 пары кат.5e, 24 AWG. Поэтому, в реальных производственных условиях значения длин могут отличаться в меньшую сторону из-за присутствия электромагнитных помех или использования другого типа используемого кабеля.

Разработчиком платформы 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 , позволяющий находить и идентифицировать подключенные к сети устройства и отображать полный перечень их параметров и данных.

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

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



Новое на сайте

>

Самое популярное