О практическом применении сети 1-Wire и температурных датчиков DS18B20 в частности, написано много и подробно. Цель этой статьи - рассказать, как использовать эти датчики (или другие устройства сети) в суровых "полевых условиях". Не секрет, что на столе под лампой светлой цифровой датчик DS18B20 или его бюджетный брат DS18S20 замечательно работает с минимальным обвязом со стороны микроконтроллера в т.н. двухпроводной схеме:
Фактически, весь "обвяз" состоит из резистора 4К7, между шиной питания VCC (+5В) и шиной данных VDO, который и позволяет датчику паразитно питаться от этой же шины. Схема проста, наглядна и кроме этого, позволяет экономить на одном проводе в кабеле сети. Для расстояний менее 10 метров - вполне оправдано, правда точность преобразования будет не лучше 2°C (разрядность АЦП датчика DS18B20 снижается с 12 до 10 бит), что во многих случаях будет вполне достаточно.
К сожалению, двухпроводный способ включения практически непригоден в "полевых условиях" из-за незащищенности от помех. Дальнейшее увеличение длины сетевого кабеля будет приводить к большему числу сбоев, вплоть до полного отказа сети. Поэтому, часто приходится отказываться от паразитного питания в пользу трехпроводного подключения:
Дополнительная выделенная линия питания сулит нам следующие "бонусы":
- Длина сетевого кабеля 100 метров и более;
- Количество одновременно подключенных датчиков - не менее 32шт.;
- Разрешающая способность АЦП - 0,0625°C и точность измерения - 1°C.
Однако, еще остается борьба с помехами на длинных линиях связи. Простейшей защитой является включенный в обратном направлении диод Шоттки между линией данный и общим проводом, именно так советует поступать Brian C. Lane, автор популярного проекта DigiTemp. Мы лишь немного расширим данное решение для трехпроводной схемы включения:
D1 - сборка быстродействующих диодов Шоттки BAV199, механизм действия такой защиты подробно описан в блоге Уважаемого киберсатаниста DI HALT;
L1, L2 - фербиды BLM21AG221SN1D - индуктивности для защиты от высокочастотных помех, возникающих при коммутации сильноточных потребителей;
C1 - керамический конденсатор, естественный спутник ножек питания цифровой микросхемы;
IC1 - собственно цифровой датчик температуры DS18B20Z в корпусе SOIC8.
После сборки, плата температурного датчика выглядит следующим образом:
Обязательно защищаем плату датчика от влаги (цапонлаком или акриловым лаком):
Для монтажа датчика на поверхность, например на трубопровод, очень хорошо подходит самовулканизирующаяся резиновая изолента. Кроме того, необходимо хорошо теплоизолировать точку установки датчика. Я использую пористую самоклеющуюся ленту.
Контактные площадки для пайки кабеля сети 1-Wire сознательно сделаны крупными и вот почему...
Трактат о проводочках кабеля
Самой распространенной ошибкой при построении сети 1-Wire является выбор в пользу Ethernet-кабеля Cat.5! Подавляющее большинство читателей скажет - "у нас все очень хорошо и бодро работает на обрезках сетевухи". Не спорю ни в коем случае, кабель Cat.5 длиной 10..30 м вполне годится для 3-х проводного способа подключения датчиков, более того - вот вам рекомендованная схема использования народного кабеля, которую и сам использую на даче для водоснабжения дома:
"Ну таки и в чем дело?" - скажет проницательный читатель. А вот в чем: в кардинальном различии "физики и логики" сетей Ethernet и 1-Wire. Не вдаваясь в сложности организации сети Ethernet, просто прошу поверить (и с мультиметром проверить) в то, что из-за значительного падения напряжения на длинных и весьма тонких проводах кабеля Cat.5e датчику сети 1-Wire банально не хватает напряжения питания!
Вывод напрашивается простой и логичный - использовать кабель с проводами бОльшего сечения и желательно - экранированный! Для своих целей, я выбрал вполне доступный по цене (и наличию в магазинах) кабель МКЭШ-3х0.5 - схема подключения датчиков будет выглядит так:
Несколько худший, но вполне приемлемый результат, можно получить с кабелем МКЭШ-2х0.35 и следующей схемой подключения:
Наконец, можно использовать вполне приличный провод от торшера - ПВС3х0.75...ПВС3х1
Заключение
Нынешний владелец торговой марки 1-Wire - компания Maxim, для защиты нежных ножек микропроцессора от "суровых полевых условий", предлагает приборчик DS9503, который по сути - просто быстродействующий диод Шоттки + токоограничивающие резисторы в линиях питания и данных. Сам я его еще в руках не держал, но как только это случиться - немедленно опишу полученные впечатления.
Послесловие
C огромным удовольствием - благодарю Илью Данилова за помощь словом и хардвером в освоении платформы Ардуино, конструктивные замечания и неоценимую поддержку в разработке проекта ОткрытогоПЛК!
- Скачать проект платы-подавителя помех в формате Eagle.
Большое спасибо за такую познавательную статью!
ОтветитьУдалитьУ меня возник вопрос. Есть микроконтроллер (какой нить Atmega) и датчик DS18B20, можно ли их соединить кабелем 100м без всяких усилителей (на транзисторах и т.д.), тоесть просто подключить к какому нить пину микроконтроллера. Питание не паразитное.
Да, вполне возможно! Именно такое подключение я и описывал. 100м - "серьезная дистанция" для нежной ножки MCU, посему очень рекомендую, использовать экранированный 3-х проводный кабель сечением 0,75мм и как минимум - два диода Шотки между GND, Data и VCC.
ОтветитьУдалитьспасибо за ответ!
ОтветитьУдалитьЕще вопрос: я хочу подключить датчик к одной ноге так как мне надо сделать сеть типа "звезда" в которой будет 10 датчиков (на каждой ветви по одному). Я решил к 10 ножкам микроконтроллера подключить по 1 датчику проводом 100м. Но может вы знаете более подходящее решение? Подключение звездой обязательно
а автор не экспереметировал с датчиками попроще ? то есть цифровыми и БЕЗ 1-WIRE
ОтветитьУдалитьа то роюсь по прайсам местных магазинов и ничего кроме датчиков от 10 уе (без 1-wire) и DS18B20 не могу найти
а интересно покрутить термодатчик с встроенным АЦП без всякого лишнего и дешевле по идее должно быть
Прошу прощения, что встреваю: а о каких таких датчиках "цифровыми, но не 1-Wire" идет речь?
ОтветитьУдалитьDS18B20 в своем классе точности и диапазоне - самое удачное решение среди полупроводниковых термодатчиков, 1-Wire позволяет для подключения N датчиков использовать всего один DIO MCU. Мнимая сложность программирования компенсируется многочисленными примерами кода и библиотеками в свободном доступе.
Ну а цена его - 2-3 USD, и если речь про экземпляры за 10 у.е. - это скорее всего не полупроводниковый или лучшая точность (диапазон у полупроводникового шире быть не может).
да действительно порылся на предмет датчиков подешевле - ничего нет :( подороже с более высоким классом точности или в более сложным исполнением
ОтветитьУдалитьи еще вопросик вы опрашиваете все подряд или или каждый по отдельности
если каждый по отдельности поделитесь или скетчем или куском кода а то роюсь уже несколько часов ничкго путного найти не могу :(
А чем Вас стандартный пример из библиотеки oneWire не устраивает?
ОтветитьУдалитьТам вполне все вполне прозрачно, лишнее просто выкидывается (или комментируется),а остаток оформляется как своя функция.
"Не вдаваясь в сложности организации сети Ethernet, просто прошу поверить (и с мультиметром проверить) в то, что из-за значительного падения напряжения на длинных и весьма тонких проводах кабеля Cat.5e датчику сети 1-Wire банально не хватает напряжения питания!"
ОтветитьУдалитьПроблема решается когда cat5 используется в качестве 4х проводной линии с внешним дополнительным питанием: GND, DATA, +12В, +18В.
Схема немного усложняется, добавляется 5В стабилизатор на шину +12В (для питания датчиков), и 12В стабилизатор на шину +18В (для питания относительно слаботочных исполнительных устройств если это необходимо)
Здравствуйте! Прислали из Китая сотню SMD-чипов, написали что это фербиды BLM21AG221. Маркировки на них никакой нет, тестер показывает почти нулевое сопротивление. Это похоже на правду? Есть ли какие-то другие способы проверить что это действительно они?
ОтветитьУдалитьперезалейте картинки, не видно
ОтветитьУдалитьКартинки, которые не показаны, из заблокированного аккаунта автора. Связаться с автором уже не представляется возможным :(
УдалитьО, картинки восстановились!
Удалить