Правильная разводка термодатчиков DS18B20

Запись дневника создана пользователем Андрей-АА, 14.01.12
Просмотров: 61.109, Комментариев: 28

Андрей-АА Статья предназначена для специалистов и продвинутых радиолюбителей. Она касается всех систем с датчиками DS18B20, а также - всех других систем с контактами и микроамперными токами, протекающими через них.
Хочу рассказать свои мысли по вопросу соединения и разводки термодатчиков.
В техподдержке Кситала мне сообщили следующее:
Все термодатчики должны быть соединены почти строго "в линию", без длинных ответвлений "в сторону" (максимум 20см). Это необходимо якобы потому, что в противном случает получается несогласованная по волновому сопротивлению линия и якобы за счет отражений система показывает в результате либо +85оС, либо прочерк вместо температуры. И добавляют, что оба этих результата могут быть также по причине плохого контакта в разъемах.
На мой вопрос " - какова тактовая частота на шине?" получил ответ "- низкая".
Я не очень понимаю такую логику "отражений" потому, что на длинах в единицы-десятки метров и низкой тактовой частоте волновое сопротивление и его согласование не имеет никакого значения. А также - из-за "странного" совпадения с причиной "плохой контакт".
Итак, я считаю, что причина периодического искажения результатов замера температуры - именно плохой контакт (исключение - Примечание 2):
Дело в том, что при микроамперных токах (а входной ток датчика DS18B20 наверняка мизерный), контакты через которые течет этот ток могут быть слегка окислены, или загрязнены и микроток банально не пробивает этот зазор, в отличие от миллиамперных и более высоких токов. Эффект этот специалистам известен. Т.е., если сигнал на шине проходит через контакты, то ему нужен "заметный" ток, причем, что очень важно - этот повышенный ток должен проходить через абсолютно все сигнальные контакты шины (через все последовательно соединенные разъемы).
Т.е., для того, чтобы контакт стал лучше нужен ток побольше, чем микроамперы - хотя бы (очень приблизительно) от 1 миллиампера. Возможно, что не случайно на схемах с использованием DS18B20 с линии данных на питание всегда нарисован резистор 4,7кОм, что как раз обеспечит ток около 1мА.
Как же правильно организовать (улучшить) бессбойный обмен информацией с такими датчиками?
Есть 4 варианта:
1. Рабоче-крестьянский (для пользователей): при проблемах промывать/чистить контакты, или заменять разъемы (тройники там обычные, их телефонные аналоги продаются во "всех" магазинах).
Остальные варианты - "профессиональные", для разработчиков Кситала (впрочем хороший радио-монтажник сможет это переделать и самостоятельно):

2. Он, правда, не идеально соответствует логике использования датчиков с разными длинами проводов: надо подводить к каждому датчику 2 провода, но обязательно оба их запаивать на ножке датчика, а не пропускать, как сейчас сделано через дополнительный тройник. И тоже обязательно на обоих концах нашей шины (на дальнем датчике и в самом Кситале должны быть установлены резисторы примерно по 10кОм (чтобы в сумме было около 4,7кОм).

3. Диапазон допустимых нагрузочных сопротивлений шины, равный 1-5,1кОм дает нам третий вариант - возможность подключить простейшим путем до 9-ти датчиков (и других устройств), зашунтировав на питание вход каждого резистором 10кОм. В блоке Кситал - тоже резистор, 10кОм.
В этом случае не нужна единая шинная линия, а можно произвольно соединять датчики через удобно расположенные разъемы. Только резисторы надо припаять прямо на датчиках.

4. Есть и четвертый вариант более корректного подключения датчиков на шину Кситала - "паразитный" способ питания по двухпроводной шине.
Если использовать "паразитный" способ питания датчика, то ток через "входные" контакты разветвителей будет складываться из входного тока в сигнальный вход и тока питания датчика, что в сумме в несколько раз больше, чем только входной ток.
Поискал в документации на датчик - ток потребления датчика может достигать 1,5мА, что вполне можно считать четвертым вариантом. Правда, при это будет несколько ограничена суммарная длина используемых проводов - до 50 метров. Хотя, я бы резисторы все равно ставил (см. Примечания).
***
Считаю оптимальным 3-ий вариант и предлагаю разработчикам Кситала его реализовать в своих последующих системах.
Примечания:
1. Вообще-то, со всех точек зрения суммарное сопротивление всех резисторов на линии (шине) лучше сделать минимально допустимым, то есть - около 1 кОма.
2. Кстати, длинные провода к датчикам являются хорошими приемными антеннами для помех. Указанные мной резисторы, кроме вышесказанного еще и снизят входное сопротивление этих антенн и, как следствие, снизят уровень помехи в системе.
Можно еще почитать: О погрешностях измерений на примере датчика DS18B20.
На всякий случай привожу раскладку разъема.
Разъем RJ-11, разножка.jpg
CSpirit13, jammer1234, Wartmp и 9 другие сказали "спасибо" за это.

Комментарии

  1. Vasbog
    Я конечное не электронщик, но почему бы просто не отрезать конектора и скрутить запаяв провода? Пока до системы не добрался. Перестали работать выносные термодатчики, прочерки показывает в отчете.
  2. Андрей-АА
    Спаять гораздо лучше, однако резисторы все равно нужны (см. Примечание 2).
  3. SergeyBorisov
    вещь хорошая как я понял, но выход цифровой, т.е. под него надо еще какой то прибор (панель ) покупать? А что в сумме по деньгам?
    Кстати и бп тоже наверное нужен?
  4. Андрей-АА
    Да, там серьезное окружение и аппаратное и программное...
    Эта статья написана для специалистов.
  5. SergeyBorisov
    я все понял, специалист, в моем случае планирую подогрев скважины и возможно подогрев погреба, но вот стоит ли связываться с цифрой не уверен, по моему слишком наворочено, дорого, и скорое всего не надежно, есть попроще решения?
  6. SergeyBorisov
    кстати еще, скважина и погреб, сплошная сырость, какие там могут быть шлейфы и цифра, нужно что нибудь "дубовое"
  7. Андрей-АА
    SergeyBorisov, цифровые системы теоретически имеют надежность такую же, как и аналоговые, а вот помехоустойчивость гораздо выше. Да и погрешность (в данном случае) очень маленькая.
    Я почему-то аналоговыми системами не интересуюсь:). Не удобные, наверное, поэтому. А цена для такой хорошей системы не столь велика.
  8. Andreich2013
    Привет! Проходил тут мимо...
    Вот что написано в документации на датчик DS18B20:
    Так что показания +85 - это то, что записано в памяти датчика сразу после подачи на него питания.
    При опросе датчика ему требуется некоторое время для измерении температуры и записи значения в свою память. Если мы дадим команду на замер температуры, но не дождавшись окончания процесса прочитаем содержимое памяти - там будет не измеренное значение температуры, а предыдущее его значение. Если на датчик только что подано питание - то прочитается значение 85.

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

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

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

    Ну а в целом - 85 градусов при первом опросе данных - это может быть косяк разработчиков. Если 85 появляется в другие моменты - это указывает на то, что нарушен контакт в линии питания (или земли). В этом случае пайка, наверное, самый правильный способ устранения глюков.
  9. Dzelc
    ок, резисторы не ставим.. пытаюсь датчик кситала примотать к трубе подачи, после перезагрузки кситала перестал видеть третий датчик вообще, а второй показывает ---. Как сделать так, чтобы оба датчика были видны? неужели из-за плохого контакта?
  10. Андрей-АА
    Может быть обжать по-новой?
  11. nrv
    Подскажите пожалуйста схему обжимки термодатчика (по цветам), разъем rj-11? Как проверить рабочий ли вообще датчик? Спасибо.
  12. Андрей-АА
    nrv, если Вы хотите смастерить датчик для Кситала, то это не получится, т.к. он у них инициализируется как-то. Без инициализации работать не будет.
    А если для чего-то другого, то - в конце статьи есть раскладка и цвета - любые.
    И еще - если что переделываете, то RJ-11 - прозрачные и на них цвета просто видны.
  13. vovko5
    Здравствуйте! На управлением электрокотлом стоит Кситал 8т. Пользую 3 месяца. сегодня пришло смс :нарушен контакт в термодатчике 2.При запросе состояния приходит смс и напротив показаний датчика 2 и 3 стоят прочерки. Я поехал проверять. Приехав, сразу обратил внимание на то что диоды на считывателе горят с мерцанием как бы,не четко. Перегрузил систему,отсоединил все контакты,соеденил-ничего не помогает:не видит датчики. Что делать?
    ser3809 сказал(а) "спасибо" за это.
  14. Андрей-АА
    Как версия - проверьте питание, а также - контакт на разъеме шины, который стыкуется с самим Кситалом. Возможно, что его надо переобжать.
    Обратитесь в службу поддержки Кситала.
    vovko5 сказал(а) "спасибо" за это.
  15. xRainMan
    Андрей, я пока еще далек от реализации и пытаюсь освоить теорию.

    Для подключения датчиков использовать двупроводный провод (земля и шина). ПВС 2х0,75?

    Когда нужно подключить много датчиков, подключаем их последовательно или параллельно? Ограничения по кол-ву?

    Контроллер(кситал или какой то аналог) при инициализации сам им адресацию выдает? Есть ли где то подробная инструкция по подключению множества датчиков?
  16. Андрей-АА
    xRainMan, у Вас что есть контроллер и ПО, которые умеют работать с шиной 1Ware?
    Кситал не проинициализирует датчики, которые поставлены не Кситалом. Я пробовал - не прошло, пришлось купить в Кситале.
    boldyrevsa сказал(а) "спасибо" за это.
    1. Mega_lighter
      Может с Зонтом также обстоят дела, в ПО на родных датчиках серийники указаны, а китайские может некорректны или нет в базе Зонт.. Буду пробовать, раз уж связался с этими датчиками)
      1. Андрей-АА
        Нет, Зонты работают с любыми.
  17. kom09
    Спасибо за картинку с распайкой температурных датчиков. Валялся дохлый Кситал-GSM 4T, так хоть датчики удалось к Arduino подключить - пустячок, а приятно.

    Для тех, кто захочет повторить фокус дам несколько ссылок.
    Тут написано как подключать DS10B20 к Arduino:
    http://arduino-project.net/podklyuchenie-ds18b20-arduino/

    OneWire Library для Arduino - в комплекте идет пример для датчиков DS18x20:
    http://www.pjrc.com/teensy/td_libs_OneWire.html

    Еще одна библиотека (ее советуют по первой ссылке), которая "все за вас сделает":
    http://milesburton.com/Dallas_Temperature_Control_Library

    И на всякий случай повторю распиновку температурного датчика DS10B20 для Кситала текстом (лично меня очень напрягло регистрироваться на форуме, да еще и с указанием мобильного телефона, только для того чтобы посмотреть одну картинку).
    RJ11 держим контактами к себе и проводом вниз. Нумерация контактов слева-направо (левый - первый, правый - четвертый). 2 - Vdd, 3 - DQ и 4 - GND.
    ggrreegg, Мясник40 и Андрей-АА сказали "спасибо" за это.
  18. usergey
    Не делать длинных ответвлений от шины 1wire к устройствам - это не каприз разработчиков кситала, а стандартное требование этой шины. Детали не помню, допускается ответвление не более скольки то сантиметров. Если делать длинные, начинаются глюки в сети.
    И шину лучше в экранированой витой паре вести.
  19. pavelm
    Блин , авто , ну как может ТОК не пробивать сопротивление?
    Ну что за бред ?! Пробивает НАПРЯЖЕНИЕ! "Пробойность" ситсемы, как вы выразились, зависит от напряжений действующих в системе , а не от тока! А резистор 4,7к нужен в схеме из-за особенностей питания устройства, а не потому что оно такое слаботочное. И встроенным его не сделали только ради обеспечения возможности паразитного питания прибора!
    Как раз на микроамперные системы наличие окисла на контактах влияет куда меньше чем на системы с высокими токами. Для сигнала главное напряжение, а не ток и если у вас сопротивление контакта в системе с токами в пару миллиампер, будет пару десятков Ом , то ей будет абсолюно пофигу, а вот ситсеме в пару ампер уже далеко не пофигу....Малоточной системе пофигу такое сопротивление потому, что она то и малоточная т.к. входное сопротивление потребителя большое , а значит сопротивление контакта на общем фоне будет не существенным не взирая на малую мощность источника. А если вы хотите сказать, что высокий ток пробьет сопротивление , то это врядле , высокий ток приведет к нагреву и еще большим траблам в этом месте.
    Binar сказал(а) "спасибо" за это.
  20. pavelm
    Или вы проводите аналогию со сварочным аппаратом? :)))
    Не пробивает ржавчину значит току надо поболее....:)
  21. id282726801
    4 способ - это как? Без перепрограммирования мозгов Кситала?
    Извините, но статья смахивает на формат "300 бесполезных советов".
    1. Андрей-АА
      Кситал тут не причем. 4-ый способ описан в документации на датчик.
      Повторять его здесь бессмысленно.
      Не нравятся советы? - Всего доброго!
      Достали эти безымянные клоны...
  22. achuser
    20 см разница по проводам - бред, датчики у людей на проводах по 60-100 м висят и работают.

    Но это, конечно, уже как повезет. А так +- немного роли не сыграет, особенно при подключении по 3 проводам. В паразитном питании не юзал их, но в планах попробовать. Вот только не очень ясно резистор подтяжку 4.7к оствлять так же с +5в на шину?
  23. Mega_lighter
    Добрый день! А кто-то пробовал данные датчики подружить с Zont?
    У меня пока не получилось.. И по схеме зонт пробовал (чер+кр, желтый сигнал), и через понижающий преобразователь 3,3В на красный.. Правда только понял, что между красным и желтым нужно ставить сопротивление 4,7кОм (еще не пробовал, но боюсь очередных экспериментов)) Или подозреваю, что что-то с адресацией и библиотеками (как на сайте drive2 и kit.alexgyver описаны танцы с бубнами)).
    Купил китайские в магазине радиоэлектроники - не определяются, понимаю что с родными Зонт по 900р не было бы морок, но хотелось бы несколько - на обратку, поверхность пола и т.д. их добавить (накладненько))
    1. Андрей-АА
      Зонты используют 2 типа термодатчиков и соотв. есть 2 типа входов для них. Если Вы используете аналоговый вход то ничего не получится. А если цифровой, то никаких резисторов и примочек не надо:
      Черный объединить с красным и на Общий, а желтый - на Вход. Всё!
      Serj и Mega_lighter сказали "спасибо" за это.
      1. Mega_lighter
        Спасибо большое! Сажал на цифровой вход, по инструкции Зонта как Вы описали, но их не видит, и родные тоже не определяются. Нашел в ютубе ролик, как через подачу 3,3В на красный всё получилось, купил для этого lm2596 накрутил 3,3В, но тоже не пошло. Коллега пробовал на другом контроллере - дохлые датчики( Похоже брак, попробую поменять и добавить 4,7кОм. Если не пойдут - докуплю оригинал Зонтовский один на ТН, а то погрешность приличная у DS18S20.
        Кстати, может полезно будет, игрался с режимами отопления (теплый пол 1эт ~60кв.м), нашел для себя оптимальный - ночь 40гр ТН (воздух греется до 21 к утру), днем ставлю 17-18 воздух - к вечеру заводится в лайтовом режиме (хочу выйти на 5тыс/мес зимой, пока там не живем, только выходные). Потери считал - около 2,5КВт/ч, вроде на практике соответствует