Схема защиты интерфейса 1 wire. Подключение датчиков температуры к умному дому Loxone. Уникальный идентификатор устройства

Датчики температуры 1-Wire используются с терминалами, которые поддерживают устройства 1-Wire DS18b20.
Датчики температуры 1-Wire не требует калибровки , просты в установке, имеет низкую стоимость.
Датчики температуры 1-Wire имеют внешнее питание , что значительно увеличивает длину трассы от датчика до терминала, и дает возможность использовать большое количество устройств на одной шине 1-Wire.
Датчики температуры 1-Wire могут работать с любым напряжением на шине 1-Wire (от 3.3 В до 5.5 В).
Датчики температуры 1-Wire имеют удобные корпуса крепления.

Датчики температуры 1-Wire выпускаются в двух модификациях:
– 1. Для эксплуатации в температурном диапазоне от -40°C до +80 °C . Длина экранированного провода – 10 метров.
– 2. Для эксплуатации в температурном диапазоне от -55
°C до +125 °C . Длина экранированного термостойкого провода – 1 метр. (Любая длинна провода под заказ. +120 руб. за каждый дополнительный метр).

Цены

Количество от 100 от 75 до 99 от 60 до 74 от 45 до 59 от 30 до 44 от 15 до 29 до 14

Цена 1-Wire -40 °C до +80 °C (руб).
Длинна экранированного провода – 10 метров.

700 730 760 790 820 850 880

Цена 1-Wire -55 °C до +125 °C (руб).
Длина экранированного термостойкого провода – 1 метр.
Любая длинна провода под заказ. +120 руб за каждый дополнительный метр.

700 730 760 790 820 850 880

Технические характеристики датчика измерения температуры 1-Wire

Диапазон измеряемых температур

от – 55 до + 125 °C
Температура эксплуатации
от – 40 до + 80 °C
или
от – 55 до + 125 °C​

Погрешность измерений

-10°C to +85°C – ±0.5 °C
-30°C to +100°C – ±1 °C
-55°C to +125°C – ±2 °C​

Напряжение на шине 1-Wire

от 3.3 до 5.5 В

Напряжение питания датчика

9-36 В

Ток потребления в режиме ожидания

0.1 mA

Ток потребления в режиме измерения

1 mA
Длина соединительного кабеля, входящего в комплект датчика
(в зависимости от выбранной модификации)
10 метров +/- 2 %
или
1 метр +/- 2 %

Класс защиты сенсора датчика

IP 68

Гарантия производителя

18 месяцев

Подключение датчика 1-Wire. Модификация № 1 (от -40 °C до +80°C)

Цвета проводов в кабеле с экранирующей оплеткой

Выводы датчика Описание
Красный-Белый Красный
Экранирующая оплетка кабеля "Масса" (Минус питания)
Белый К шине 1-Wire
Красный-Синий Красный Плюс питания (через предохранитель 1А)
Экранирующая оплетка кабеля "Масса" (Минус питания)
Синий К шине 1-Wire
Красный-Желтый Красный Плюс питания (через предохранитель 1А)
Экранирующая оплетка кабеля "Масса" (Минус питания)
Желтый К шине 1-Wire
Красный-Серый Красный Плюс питания (через предохранитель 1А)
Экранирующая оплетка кабеля "Масса" (Минус питания)
Серый К шине 1-Wire
Красный-Черный Красный Плюс питания (через предохранитель 1А)
Экранирующая оплетка кабеля "Масса" (Минус питания)
Черный К шине 1-Wire
Оранжевый-Зеленый Оранжевый Плюс питания (через предохранитель 1А)
Экранирующая оплетка кабеля "Масса" (Минус питания)
Зеленый К шине 1-Wire
Желтый-Синий Желтый Плюс питания (через предохранитель 1А)
Экранирующая оплетка кабеля "Масса" (Минус питания)
Синий К шине 1-Wire
Желтый-Зеленый Желтый Плюс питания (через предохранитель 1А)
Экранирующая оплетка кабеля "Масса" (Минус питания)
Зеленый К шине 1-Wire
Желтый-Серый Желтый Плюс питания (через предохранитель 1А)
Экранирующая оплетка кабеля "Масса" (Минус питания)
Серый К шине 1-Wire
Желтый-Черный Желтый Плюс питания (через предохранитель 1А)
Экранирующая оплетка кабеля "Масса" (Минус питания)
Черный К шине 1-Wire
Желтый-Белый Желтый Плюс питания (через предохранитель 1А)
Экранирующая оплетка кабеля "Масса" (Минус питания)
Белый К шине 1-Wire
Прозрачный-Зеленый Прозрачный Плюс питания (через предохранитель 1А)
Экранирующая оплетка кабеля "Масса" (Минус питания)
Зеленый К шине 1-Wire
Жёлтый-Оранжевый Жёлтый Плюс питания (через предохранитель 1А)
Экранирующая оплетка кабеля "Масса" (Минус питания)
Оранжевый К шине 1-Wire
Жёлтый-Коричневый Жёлтый Плюс питания (через предохранитель 1А)
Экранирующая оплетка кабеля "Масса" (Минус питания)
Коричневый К шине 1-Wire
Красный-Прозрачный Красный Плюс питания (через предохранитель 1А)
Экранирующая оплетка кабеля "Масса" (Минус питания)
Прозрачный К шине 1-Wire

Подключение датчика 1-Wire. Модификация № 2 (от -55 °C до +125°C)

Цвета проводов в термостойком кабеле
с экранирующей оплеткой

Выводы датчика Описание
Красный-Черный Красный Плюс питания (через предохранитель 1А)
Экранирующая оплетка кабеля "Масса" (Минус питания)
Черный К шине 1-Wire

Теперь же перейдем к самой простой платформе для создания умного дома - 1-WIRE. Платформа разрабатывалась с конца 80-х до конца 90-х годов компанией Dallas Semiconductor (с 2001 года - Maxim Integrated) и предназначалась для задач контактной идентификации объектов, в т.ч. с функциями измерения и регистрации температуры, влажности, параметров автономного электропитания, а также с функциями съема, хранения и переноса данных. Пожалуй, самым известным примером применения этой платформы является iButton - ключ-таблетка для домофона:

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

Возможность подключения устройств в «горячем » режиме

Протокол 1-Wire предусматривает выдачу устройством, подключаемым к магистрали в «горячем» режиме, импульса, оповещающего о появлении на магистрали нового устройства. Иными словами, в сеть можно добавлять новые устройства и они тут же смогут работать.

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

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

Топология

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


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

Основные параметры интерфейса 1-Wire следующие:

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

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

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

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

Иными словами контроллер пускает в сеть последовательность единиц, подключенное к сети устройство в нужном месте меняет 1 на 0 (тем самым обеспечивая себе питание), а на контроллер приходит последовательность нулей и единиц - ответ от слэйва.

Программное обеспечение

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

  • OWFS - One Wire File System. Свободно распространяется по лицензии GPLv2. Предназначен для UNIX-платформ, но при использовании UNIX-эмулятора cygWin может работать и в среде Windows. Имеет веб-интерфейс, что делает возможным удаленный доступ, например, через Интернет. OWFS является самой популярной программной средой для домашней автоматизации на базе платформы 1-Wire.
  • Бенукс - программная среда для различных задач автоматизации. Является коммерческим продуктом. Позволяет взаимодействовать с системой автоматизации по различным каналам, в т.ч. с помощью веб-интерфейса и SMS. Предоставляет возможности автоматизированного управления по сценариям.
  • jHomeNet - свободно распространяемый программный комплекс для сервера 1-Wire на Java.

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

  • 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

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

В статье приводится подробное описание интегрального датчика температуры DS18B20 на русском языке. Информация переведена на русский из официальной документации производителя датчика – компании Dallas Semiconductor.

Общее описание.

DS18B20 это цифровой измеритель температуры, с разрешением преобразования 9 - 12 разрядов и функцией тревожного сигнала контроля за температурой. Параметры контроля могут быть заданы пользователем и сохранены в энергонезависимой памяти датчика.

DS18B20 обменивается данными с микроконтроллером по однопроводной линии связи, используя протокол интерфейса 1-Wire.

Диапазон измерения температуры составляет от -55 до +125 °C. Для диапазона от -10 до +85 °C погрешность не превышает 0,5 °C.

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

Коротко об особенностях DS18B20.

  • Для однопроводного интерфейса 1-Wire достаточно одного порта связи с контроллером.
  • Каждое устройство имеет уникальный серийный код длиной 64 разряда.
  • Возможность подключения нескольких датчиков через одну линию связи.
  • Нет необходимости во внешних компонентах.
  • Возможность получать питание непосредственно от линии связи. Напряжение питания в пределах 3,0 В … 5,5 В.
  • Диапазон измерения температуры -55 ... +125 °C.
  • Погрешность не превышает 0,5 °C в диапазоне -10 ... +85 °C.
  • Разрешение преобразования 9 … 12 бит. Задается пользователем.
  • Время измерения, не превышает 750 мс, при максимально возможном разрешении 12 бит.
  • Возможность программирования параметров тревожного сигнала.
  • Тревожный сигнал передает данные об адресе датчика, у которого температуры вышла за заданные пределы.
  • Совместимость программного обеспечения с DS1822.
  • Крайне широкие области применения.

Назначение выводов.

Обзор датчика DS18B20.

На рисунке 1 блок-схема датчика DS18B20. 64-битное ПЗУ (ROM) хранит уникальный серийный код устройства. Оперативная память содержит:

  • значение измеренной температуры (2 байта);
  • верхний и нижний пороговые значения срабатывания тревожного сигнала (Th, Tl);
  • регистр конфигурации (1 байт).

Через регистр конфигурации можно установить разрешение преобразования термодатчика. Разрешение может быть задано 9, 10, 11 или 12 бит. Регистр конфигурации и пороги тревожного сигнала содержатся в энергонезависимой памяти (EEPROM).

Режим – измерение температуры.

Основная функция DS18B20 – преобразование температуры датчика в цифровой код. Разрешение преобразования задается 9, 10, 11 или 12 бит. Это соответствует разрешающей способность - 0,5 (1/2) °C, 0,25 (1/4) °C, 0,125 (1/8) °C и 0,0625 (1/16) °C. При включении питания, состояние регистра конфигурации устанавливается на разрешение 12 бит.

После включения питания DS18B20 находится в низко-потребляющем состоянии покоя. Чтобы инициировать измерение температуры мастер (микроконтроллер) должен выполнить команду ПРЕОБРАЗОВАНИЯ ТЕМПЕРАТУРЫ . После завершения преобразования, результат измерения температуры будет находиться в 2 байтах регистра температуры, и датчик опять перейдет в состояние покоя.

Если DS18B20 включен по схеме с внешним питанием, то мастер может контролировать состояние команды конвертации. Для этого он должен читать состояние линии (выполнять временной слот чтения), по завершению команды, линия перейдет в высокое состояние. Во время выполнения команды конвертации линия удерживается в низком состоянии.

DS18B20 измеряет температуру в градусах по шкале Цельсия. Результат измерения представляется как 16-разрядное, знаковое число в дополнительном коде (рис. 2.) . Бит знака (S) равен 0 для положительных чисел и равен 1 для отрицательных. При разрешении 12 бит, у регистра температуры все биты значащие, т.е. имеют достоверные значения. Для разрешения 11 бит, не определен бит 0. Для 10-битного разрешения не определены биты 0, 1. При разрешении 9 бит, не достоверное значение имеют биты 0, 1 и 2. В таблице 2 показаны примеры соответствия цифровых кодов значению температуры.

Для людей не искушенных в двоичной математике, напишу, что для вычисления температуры надо:

  • При положительном значении (S=0) код перевести в десятичный и умножить на 0,0625 °C.
  • При отрицательном значении (S=1) сначала необходимо перевести дополнительный код в прямой. Для этого надо инвертировать каждый разряд двоичного кода и прибавить 1. А затем перевести в десятичный и умножить на 0,0625 °C.

Режим – передача тревожного сигнала.

После выполнения команды преобразования температуры, измеренное значение сравнивается с верхним и нижним порогами из регистров Th, Tl (формат на рисунке 3). Это байтовые значения, знаковые, в дополнительном коде, S =0 означает, что число положительное, а S=1 – отрицательное. Хранятся пороговые значения в энергонезависимой памяти (EEPROM). Th и Tl доступны для чтения и записи через байты 2, 3 оперативной памяти. Подробно об этом в разделе .

Из-за разной длины регистров TH, TL и температуры, они сравниваются только с битами 11 по 4 регистра температуры. Если значение измеренной температуры превышает TH или ниже, чем TL, то формируется признак аварии в DS18B20. Признак перезаписывается с каждым измерением температуры, и если температура возвращается в заданные пределы, то он сбрасывается.

Ведущее устройство может проверить состояние признака аварии с помощью команды ПОИСК ТРЕВОЖНОГО СИГНАЛА . Любой датчик с активным признаком ответит на команду поиска. Таким образом, мастер точно определит, какой DS18B20 вырабатывает сигнал тревоги. После изменения значений регистров TH и TL, только следующее преобразование температуры сформирует достоверный признак тревоги.

Питание термодатчика DS18B20.

Однако когда DS18B20 выполняет операцию преобразования температуры или копирования данных памяти в EEPROM, потребляемый ток может достигать величины 1,5 мА. Такой ток может вызвать снижение напряжения питания устройства до недопустимого значения. Тока подтягивающего резистора и энергии, запасенной на Cpp, не достаточно для питания в этих двух режимах. Для того чтобы гарантировать достаточное питание устройства, необходимо обеспечить мощную подтяжку шины к высокому уровню в то время, когда происходит преобразование температуры или копирование данных памяти в EEPROM. Это можно сделать с помощью MOSFET транзистора, как показано на схеме (рисунок 4). Шина данных должна быть подключена к мощному питанию:

  • в течение 10 мкс после команд КОНВЕРТИРОВАНИЯ и КОПИРОВАНИЯ ПАМЯТИ ;
  • в течение времени преобразования (tconv) и передачи данных (не менее t WR =10мс).

Никаких других операций в это время на шине допускать нельзя.

Как правило, у современных микроконтроллеров выходного тока высокого уровня вполне достаточно для питания DS18B20. Тогда в MOSFET транзисторе необходимости нет.

Для питания DS18B20 может быть использован обычный метод – подключение внешнего питания через вывод V DD (рисунок 5). Очевидные преимущества этого метода в отсутствии необходимости в MOSFET транзисторе и в том, что во время преобразования шина остается свободной и может использоваться в других целях.

Я, в таких случаях, использую следующую схему подключения DS18B20.

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

64-разрядный серийный код устройства.

Память датчика.

Организация памяти DS18B20 показана на рисунке 7. Вся память включает в себя оперативную (SRAM) и энергонезависимую (EEPROM) память. В EEPROM хранятся регистры TH, TL и регистр конфигурации. Если функция тревожного сигнала не используется, то регистры TH и TL могут использоваться как регистры общего назначения. Все команды управления памятью подробно описаны в разделе .

В байтах с адресами 0 и 1 хранятся младший и старший байты регистра измеренной температуры. Эти байты доступны только для чтения. 2й и 3й байты – TH и TL регистры. Байт 4 – регистр конфигурации. Подробно об этом регистре в разделе РЕГИСТР КОНФИГУРАЦИИ. Байты 5, 6, 7 зарезервированы, не могут быть записаны и, при чтении, всегда возвращают 1.

Байт 8 доступен только для чтения. Он содержит циклический код (CRC) для первых восьми байтов. DS18B20 формирует этот код по способу, описанному в части .

Запись данных в байты 2, 3 и 4 происходит командой ЗАПИСЬ ПАМЯТИ . Данные должны передаваться, начиная с младшего бита байта 2. Для проверки записи данных можно прочитать память командой ЧТЕНИЕ ПАМЯТИ [код BEh]. При чтении данные передаются по шине, в последовательности начиная с младшего бита байта 0. Запись данных TH, TL и регистра конфигурации в EEPROM происходит по команде КОПИРОВАНИЕ ПАМЯТИ .

При включении питания, данные из энергонезависимой памяти EEPROM перегружаются в оперативную память (SRAM). Перезагрузку данных из EEPROM можно также сделать командой ПЕРЕЗАГРУЗКА E 2 . Мастер должен контролировать состояние шины, чтобы определить завершение перезагрузки. Слот чтения низкого уровня означает, что перезагрузка еще не закончилась. По завершению перезагрузки DS18B20 передает слот чтения 1.

Регистр конфигурации термодатчика.

Байт 4 памяти это регистр конфигурации (формат на рисунке 8). Битами R0, R1 можно установить разрешение преобразования (коды в таблице 3). При включении питания состояние битов R0, R1 = 11, что соответствует разрешению 12 бит. Надо помнить, что существует прямая зависимость времени преобразования от разрешающей способности. Биты 7 и 0…4 зарезервированы, не могут использоваться, при чтении возвращают 1.

Генерация циклического кода (CRC)

Байты циклического кода (CRC) расположены в 64-битовом ROM коде и в девятом байте памяти SRAM. Циклический код из ROM вычисляется для 56ти битов кода ROM и располагается в старшем байте ROM. Циклический код из SRAM вычисляется из байтов 0…7 SRAM. Циклический код позволяет контролировать правильность чтения данных из DS18B20. Мастер вычисляет циклический код для полученных данных и сравнивает с принятым кодом. На основании этого принимается решение о корректности данных.

Образующий полином циклического кода выглядит так:

C R C = X 8 + X 5 + X 4 + 1

Мастер может вычислить циклический код используя генератор полинома, по схеме на рисунке 9. Он состоит из регистра сдвига и логических элементов типа “исключающее ИЛИ”. Регистр сдвига изначально находится в состоянии 0. Биты поступают в регистр сдвига, начиная с младшего бита, кода из ROM или из SRAM, один бит в один такт сдвига. После сдвига 56го бита ROM или старшего бита 7го байта SRAM, в регистре сдвига будет вычисленный циклический код. Если сдвинуть в генератор 8 бит ROM или SRAM, принятые из DS18B20, то в случае правильных данных, регистр сдвига будет содержать все 0.

Однопроводной интерфейс 1-Wire

Система с шиной 1-Wire состоит из одного ведущего устройства (МАСТЕР), которое управляет одним или несколькими ведомыми устройствами (СЛЕЙВ). DS18B20 может быть только ведомым. Система, в которой одно ведомое устройство, называется одноточечной. Система с несколькими ведомыми – многоточечной. Все команды и данные обмена передаются по шине младшим битом вперед. В дальнейшей информации об интерфейсе 1-Wire выделены три раздела: аппаратная конфигурация, последовательность операций и сигналы (типы и временные требования).

Аппаратная конфигурация.

Интерфейс 1-Wire имеет одну линию связи. Каждое устройство (ведущее или ведомое) подключено к шине данных портом с выходом типа открытый коллектор или с тремя состояниями. Такая конфигурация позволяет каждому устройству системы не занимать линию связи, когда оно не активно, и держать шину свободной для других устройств. В микросхеме DS18B20 выход (DQ) – открытый сток. Его эквивалентная схема приведена на рисунке 10. Шина 1-Wire требует применения внешнего подтягивающего резистора сопротивлением приблизительно 5 кОм, для обеспечения высокого уровня сигнала при неактивном состоянии устройств. Если операция должна быть приостановлена, шина должна быть установлена в неактивное состояние до следующей операции. Шина может находиться в состоянии высокого уровня сколь угодно долгое время. Перевод шины в состояние низкого уровня на время более чем 480 мкс приведет к тому, что все компоненты системы будут сброшены.

Последовательность операций.

Очередность операций для доступа к термодатчику DS18B20 выглядит так.

  • Инициализация.
  • Команда ROM (необходима для любого обмена данными).
  • Функциональная команда (необходима для любого обмена данными).

Такая последовательность должна строго соблюдаться. В противном случае DS18B20 не будет реагировать на команды. Исключением являются команды ПОИСК ПЗУ [код F0h] и ПОИСК АВАРИИ [код ECh]. После формирования этих двух команд, ведущее устройство (мастер) должно вернуться к первому шагу (инициализация).

Инициализация.

Обмен по шине всегда начинается с операции ИНИЦИАЛИЗАЦИИ. Для инициализации ведущее устройство вырабатывает импульс сброса, за ним должен последовать импульс присутствия от ведомого устройства. Импульс присутствия сообщает ведущему устройству, что ведомое устройство присутствует в системе и готово к выполнению операции. Временные параметры импульсов сброса и присутствия описаны в разделе .

Команды ROM кодов.

После того как ведущее устройство получит импульс присутствия, оно может оперировать командами ROM. Это команды для операций с 64-битными индивидуальными кодами каждого ведомого устройства. Они позволяют ведущему устройству выбрать конкретное ведомое устройство среди многих других. Также, используя эти команды, можно узнать, сколько ведомых устройств подключено к шине, их типы, выделить устройства в состоянии тревоги. Существует 5 команд ROM, длиной 8 бит каждая. Ведущее устройство должно послать команду ROM перед выполнением функциональных команд DS18B20. Блок-схема выполнения ROM команд изображена на рисунке 11.

Поиск ROM

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

Чтение ROM

Команда применяется в одноточечных системах, с одним ведомым устройством. Она дает возможность ведущему устройству прочитать 64-битный ROM код, без использования команды ПОИСК ROM. Применение команды ЧТЕНИЕ ROM в многоточечной системе приведет к конфликтам данных между ведомыми устройствами.

Совпадение ROM

Команда СОВПАДЕНИЕ ROM, после которой должен следовать 64-битный код ROM, позволяет мастеру обращаться к конкретному ведомому устройству. Только одно ведомое устройство, код которого совпадает с переданным кодом, прореагирует на функциональные команды. Другие ведомые устройства будут неактивными до следующего импульса сброса.

Пропуск ROM

Команда позволяет ведущему устройству обращаться ко всем устройствам шины одновременно, без использования ROM кодов. Например, можно запустить на всех устройствах операцию преобразования температуры, выполнив команду ПРОПУСК ROM, а затем КОНВЕРТАЦИЯ ТЕМПЕРАТУРЫ. Команда ЧТЕНИЕ ПАМЯТИ может следовать за командой ПРОПУСК ROM только при одном ведомом устройстве, подключенным к линии связи. Такая последовательность команд значительно экономит время обмена с датчиками. Особенно она эффективна при использовании в системе одного ведомого устройства.

Поиск тревожного сигнала

Команда действует идентично команде ПОИСК ROM. Отличается тем, что на нее ответят только ведомые устройства в состоянии тревоги. Команда позволяет ведомому устройству определить, какие термодатчики находятся в состоянии тревоги после последнего преобразования температуры. После каждого ПОИСКА ТРЕВОГИ необходимо возвращаться на ИНИЦИАЛИЗАЦИЮ.

Группа функциональных команд

После выполнения ROM команды для выбора DS18B20 с нужным кодом, ведущее устройство может посылать функциональные команды датчика. Они позволяют записать и прочитать данные из оперативной памяти DS18B20, инициировать преобразование температуры и определить режим питания. Функциональные команды DS18B20 описываются ниже, собраны в таблице 4, алгоритм работы с ними приведен на рисунке 12.

Преобразование температуры

Запись памяти

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

Чтение памяти

Команда используется для чтения памяти устройства. Передача данных происходит начиная с младшего бита байта 0 памяти, и продолжается до тех пор, пока все 9 байтов будут считаны. Если требуется только часть данных, ведущее устройство может прервать передачу, сформировав импульс сброса.

Копирование памяти

Команда перезагружает значения регистров Th, Tl и регистра конфигурации из EEPROM в оперативную память. После посылки команды ПЕРЕЗАГРУЗКА, ведущее устройство может выполнить слот чтения, и DS18B20 сообщит состояние перезагрузки. Передача 0 будет означать, что операция еще выполняется, 1 – операция завершена. Операция перезагрузки автоматически происходит при включении питания. Поэтому в оперативной памяти содержатся достоверные данные сразу после подачи питания.

Чтение режима питания

Таблица 4. Функциональные команды DS18B20.

КОМАНДА ОПИСАНИЕ КОД ОПЕРАЦИИ НА ШИНЕ ПРИМЕЧАН.
КОМАНДА КОНВЕРТИРОВАНИЯ ТЕМПЕРАТУРЫ
Измерение температуры Инициализирует измерение температуры 44h DS18B20 передает мастеру состояние операции преобразования температуры 1
КОМАНДЫ РАБОТЫ С ПАМЯТЬЮ
Чтение памяти Читает всю оперативную память, включая циклический код CRC BEh DS18B20 передает мастеру до 9 байт 2
Запись памяти Записывает в оперативную память байты 2, 3 и 4
(TH, TL и регистр конфигурации)
4Eh Мастер передает 3 байта на DS18B20. 3
Копирование памяти Копирует TH, TL, и регистр конфигурации из оперативной памяти в EEPROM 48h 1
Перегружает TH, TL, и регистр конфигурации из EEPROM в оперативную память. B8h DS18B20 передает состояние перезагрузки мастеру
Чтение режима питания Информирует мастера о режиме питания DS18B20. B4h DS18B20 передает мастеру режим питания

Примечания.

Интерфейс 1-Wire

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

  • импульс сброса,
  • импульс присутствия,
  • запись бита со значением 0,
  • запись бита со значением 1,
  • чтения бита со значением 0,
  • чтения бита со значением 1.

Все эти сигналы, кроме импульса присутствия, формирует ведущее устройство.

Инициализация – импульсы сброса и присутствия

Любые коммуникационные операции DS18B20 начинаются с последовательности инициализации, которая состоит из импульса сброса от ведущего устройства ведомому, и ответного импульса присутствия из DS18B20. Этот процесс показан на рисунке 13. Термодатчик посылает импульс присутствия в ответ на импульс сброса, чтобы сообщить ведущему устройству, что он подключен к шине и готов к использованию.

Во время последовательности инициализации ведущее устройство передает импульс сброса (Tx), формируя на шине сигнал низкого уровня в течение времени не менее 480 мкс. Далее, ведущее устройство освобождает шину и переходит в режим приема (Rx). Когда шина освобождается, она подтягивается к высокому логическому уровню резистором 5 кОм. Датчик выделяет положительный фронт, ждет 15-60 мкс и передает импульс присутствия, удерживая низкий уровень линии на время 60-240 мкс.

Временные слоты чтения и записи.

Обмен данными по шине 1-Wire происходит временными слотами (тайм-слотами). Один временной слот передает один бит информации.

Временные слоты записи.

Протокол определяет два типа тайм-слотов записи данных в DS18B20: для записи значения 1 и записи значения 0. Длительность слота записи - не менее 60 мкс с паузой на восстановление между слотами 1,0 мкс, как минимум. Инициируется любой слот записи отрицательным фронтом сигнала шины (рис. 14).

Для формирования слота записи 1, после перевода шины в низкое состояние, ведущее устройство должно освободить шину на время 15 мкс. Подтягивающий резистор 5 кОм создаст на шине напряжение высокого уровня.

Для формирования слота записи 0, после перевода шины в низкое состояние, ведущее устройство должно продолжать удерживать шину в низком состоянии в продолжение всего времени слота (как минимум 60 мкс).

DS18B20 проверяет состояние сигнала в отрезке времени между 15 и 60 мкс, отсчитывая его от начала слота записи. Состояние шины на этом отрезке соответствует значению бита для записи в датчик.

Временные слоты чтения.

Длительность слота чтения, как и слота записи, должна быть не менее 60 мкс с паузой на восстановление между слотами 1 мкс, как минимум. Инициируется любой слот чтения отрицательным фронтом сигнала шины (рисунок 14).

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

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

На рис. 15 показано, что общая сумма временных интервалов слота чтения Tinit , TRC и TSAMPLE должна быть не более 15 мкс.

Рис. 16 показано, что для максимальной надежности приема данных необходимо уменьшить Tinit и TRC и читать состояние шины в конце отрезка 15 мкс.

Пример 1 работы с DS18B20.

РЕЖИМ МАСТЕРА

ДАННЫЕ ШИНЫ

ПОЯСНЕНИЯ

TX Reset RX Presence TX 55h TX 64-бит ROM код TX 44h Мастер посылает команду конвертирования температуры. TX TX Reset Мастер формирует импульс сброса. RX Presence DS18B20 отвечают импульсом присутствия. TX 55h Мастер выполняет команду соответствия ROM кода. TX 64-бит ROM код Мастер посылает ROM код DS18B20. TX BEh RX 9 байтов данных

Пример 2 работы с DS18B20.

РЕЖИМ МАСТЕРА

ДАННЫЕ ШИНЫ

ПОЯСНЕНИЯ

TX Reset Мастер формирует импульс сброса.
RX Presence
TX CCh
TX 4Eh Мастер выполняет команду записи памяти.
TX 9 байта данных Мастер посылает три байта (TH, TL, и регистр конфигурации).
TX Reset Мастер формирует импульс сброса.
RX Presence DS18B20 отвечает импульсом присутствия.
TX CCh Мастер выполняет команду пропустить ROM.
TX BEh Мастер посылает команду чтения памяти.
RX 9 байтов данных Мастер читает всю оперативную память, включая циклический код CRC. Затем вычисляет CRC для первых восьми байтов и сравнивает с принятым кодом. Если коды не равны, мастер повторяет операцию чтения.
TX Reset Мастер формирует импульс сброса.
RX Presence DS18B20 отвечает импульсом присутствия.
TX CCh Мастер выполняет команду пропустить ROM.
TX 48h Мастер выполняет команду копирования памяти.
TX DQ линия подключена к шине питания Мастер подключает DQ к шине питания на время преобразования.

Предельно-допустимые параметры DS18B20

Указаны предельные величины параметров. Превышение этих параметров недопустимо. Эксплуатация длительное время с предельными значениями параметров может уменьшить надежность устройства.

Примечания:

Электрические характеристики EEPROM переменного тока (- 55 … + 125 °C, V DD = 3,0 ... 5,5 В).

ПАРАМЕТР ОБОЗНАЧЕНИЕ УСЛОВИЯ МИН. ТИП. МАКС. ЕД. ИЗМ.
Время цикла записи t wr 2 10 мс
Число записей N EEWR -55°C - +55°C 50000 цикл
Время хранения t EEDR -55°C - +55°C 10 лет

Электрические характеристики переменного тока (- 55 … + 125 °C, V DD = 3,0 ... 5,5 В).

ПАРАМЕТР ОБОЗНАЧЕНИЕ УСЛОВИЯ МИН. ТИП. МАКС. ЕД. ИЗМ. ПРИМЕ
ЧАНИЕ
Время преобразования температуры t CONV разрешение 9 бит 93.75 мс 1
разрешение
10 бит
187.5 мс 1
разрешение
11 бит
375 мс 1
разрешение
12 бит
750 мс 1
Время подключения к мощному питанию t SPON Посылка команды конвертации температуры 10 мкс
Время слота t SLOT 60 120 мкс 1
Время восстановления t REC 1 мкс 1
Время записи 0 r LOW0 60 120 мкс 1
Время записи 1 t LOW1 1 15 мкс 1
Время чтения данных t RDV 15 мкс 1
Время высокого уровня сброса t RSTH 480 мкс 1
Время низкого уровня сброса t RSTL 480 мкс 1,2
Время высокого уровня присутствия t PDHIGH 15 60 мкс 1
Время низкого уровня присутствия t PDLOW 60 240 мкс 1
Емкость C IN/OUT 25 пкФ

Примечания:

Рисунок 18. Временные диаграммы.

Описание получилось большим. С датчиками работать не просто. Они требуют достаточно сложных программных функций, но с аппаратной точки зрения DS18B20 просто подключаются, точно измеряют, не требуют АЦП и т.д.

Как пример использования термодатчиков DS18B20, могу привести мою разработку - . Используются два термодатчика. Один измеряет температуру воздуха в , второй - температуру радиатора .

Рубрика: . Вы можете добавить в закладки.