2 января 2014 г.

Создание термометра в сети 1-wire

Итак, мы научились подключать устройство 1-wire к контроллеру.

Оффтопик. Давайте-ка я все-таки расскажу что и где покупал.
1. Cubietruck - здесь.
2. Контроллер DS9490R, термометр DS18B20 - здесь.
3. Прототипные платы - здесь.
4. Проводочки :) - 30 ft Kynar wire wrap wire 30 awg 4 modding 10 color.
5. 100 штук RJ11\12 - 100× Modular Lan Network Connector Plug RJ11 6P6C CAT5
6. Остальное в местном радио магазине (включая внешние телефонные розетки и некоторые разъемы по питанию).

Для создания термометра используем схему с сайта Бенукс (сайт вообще отличный, самое лучшее и доступное описание 1-wire сети и устройств).

Травить плату я не умею (хотя в инете полно видео технологии ЛУТ - может быть в скором времени и попробую), поэтому решил делать на прототипных платах - схема в принципе не такая сложная:



По схеме: в принципе ничего сложного даже для такого новичка, как я. 78L05 - стабилизатор, преобразует 12 вольт на нашей шине в 5 вольт для датчика. Кстати! Мы приведем сеть 1-wire в порядок и пустим по ней 12 вольт, не будем использовать паразитное питание. Остальные элементы описаны разработчиком схемы (обсуждение немного другой платы, поэтому 5 пункт можно не читать и обозначения не все совпадают - но я думаю догадаться можно о чем речь):

1. Диод D6 - для каких целей он служит и почему выбран именно КД521?
Этот диод уменьшает влияние "просадок" по общей шине питания на данный модуль. Здесь допускается применение любого маломощного выпрямительного диода. КД521 взят только потому, что был под рукой.

2. Конденсатор C2 - для каких целей он служит? Ведь в datasheet к 7805 указаны только 2 конденсатора, по 0,33 и 0,1 соответственно.
Во время "просадок" питания по общей шине этот конденсатор поддерживает питание данного модуля.

3. Сопротивление R2 - почему именно 100 Ом?
Оптимальный номинал, который с одной стороны является элементом защиты, а с другой стороны не оказывает большого влияния на полезные сигналы 1-wire.

4. Стабилитрон D3 - почему выбран именно КС156?
Этот элемент совместно с резистором R2 является цепочкой защиты модуля от импульсных помех по микросети. Выбран с несколько большим напряжением, чтобы не влиять на полезный сигнал 1-Wire и Pullup, а "срезать" случайные импульсные помехи превышающие 5,6 В.

5. Действительно ли так нужна опторазвязка на схеме между DS2413 и реле, или можно обойтись транзистором + реле?

Можете исключить опторазвязку, но тогда при работе через USB-адаптер может быть подвисание порта.

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



Теперь надо сделать саму шину. Для этого я купил 6 контактные телефонные разъемы (RJ12 в простонародии - почитайте вики, чтобы не купить что-нибудь не то) по цене примерно 200 рублей за 100 штук (см. пункт 5 в закупках). Я решил обжимать по схеме B в RJ45 (без оранжевого и светло-оранжевого) ибо уже привык к ней :) , запишем распиновку. Теперь обжимаю все шесть проводов, а не как в прошлом посте, так обжимка получается качественнее.



У меня вид с обратной стороны по B (то есть контакты от 8 до 3 включительно)



1. Светло-зелёный - не используется.
2. Синий - черный в розетку - +12 вольт.
3. Светло-синий - красный в розетке - Data.
4. Зелёный - зелёный в розетке - земля.
5. Светло-коричневый - жёлтый в розетке - +18 вольт.
6. Коричневый - свободный.

"Организатор" шины

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



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

Разбираем розетку, паяем. У меня получилось вот так вот



Обжимаем еще один провод. Мультиметром проверяем работу схемы и правильность соединений. Проверяем 12 вольт на шине. 18 вольт у меня пока нет. Чтобы было удобнее пользоваться мультиметром - подключаем по розетке на оба конца:



Пробуем вставлять наш термометр, пока без DS18B20. Проверим напряжение 5 вольт.



Последний шаг - впаиваем DS18B20 в плату под термометр. Распиновка:



У меня заработало не сразу. :) Вышла небольшая заминка по проводам. Поэтому прежде чем обжимать коннектор в DS9490R выщипайте лишние контакты в коннекторе, оставьте два посередине и только после этого обжимайте.
В итоге, у нас есть первое устройство в "нормальной" сети 1 wire, которую можно расширять не боясь. Еще я понял, что лучше все-таки травить плату, это наверное быстрее (если конечно есть работающий макет), чем использовать такие вот прототипные платы (хотя может их надо как-то по другому использовать, я честно говоря не знаю. :) ) и качественее.

Кусочек информации с моего термометра:

power YES (1)
r_address 710000041E821A28
r_id 0000041E821A
r_locator FFFFFFFFFFFFFFFF
temperature  26.3125
temperature10  26.25
temperature11  26.375
temperature12  26.3125
temperature9  26.5


Система в сборе



ps. Кстати, неплохо бы в наш дебиан еще поставить системные логи:
#apt-get install rsyslog

7 комментариев:

  1. Не понял зачем дополнительный контроллер DS9490R, ведь кубик и без него может работать с 1-wire устройствами?

    ОтветитьУдалить
    Ответы
    1. Ух. Да я тоже погуглил - говорят что это невозможно (или еще никто не знает как)!

      Значит я точно пошел правильным путем, купив отдельный контроллер.

      Удалить
  2. Согласен, работать может, надо было указать про это в статье. Почему я выбрал отдельный контроллер:

    1. "unsuitable for large bus lengths"
    http://blog.gegg.us/2013/03/4-different-methods-of-1-wire-access-on-raspberry-pi/

    2. Универсальность. В случае чего, за 5 минут контроллер можно перебросить на любой другой хост.

    ОтветитьУдалить
  3. Правильно ли я понимаю, что -12В мы подключаем также на Землю ?

    ОтветитьУдалить
    Ответы
    1. Так 12 Вольт должны куда-то уходить.
      Между чем будет разница потенциалов ? Или я ничего не помню из курса физики?

      Удалить
    2. если померить напряжение между +12В и -12В - то разность будет 24 вольта :)

      вот тема http://radiokot.ru/forum/viewtopic.php?f=21&t=76535

      Удалить