10 DS18B20 и OneWire
- Войдите на сайт для отправки комментариев
всем привет.
возник вопрос - как лучше подключить к общей шине 10 сенсоров DS18B20 которые должны быть размещены на разном расстоянии от Arduino с шагом в 20 см?
есть два варианта:
1) каждый сенсор имеет свой 3-х жильный провод нужной длины, например самый дальний (10-й) - это около 2 метров, 9-й - 180см, 8-й - 160см и так далее.
каждая из 3 жил каждого сенсора в конце соединена с соответствующими жилами других проводов от других сенсоров.
то есть получается 3 пучка жил - GNG, V+ и Data.
и уже эти контакты идут на Arduino.
сейчас именно так у меня сделано - каждый сенсор подключается к своему разъему на плате, а каждый из 3 контактов этих 10 разъемов между собой соединены - так получается "общая шина"
2) но вот я подумал про другой вариант - это когда от Arduino идет ОДИН 3-х жильный кабель и на нем в нужных расстояних установлен разъем, в который и подключается очередной сенсор.
электрически все одинаково с епрвым вариантом, но зато тут всего ОДИН кабель выходит из корпуса.
Будет ли разница или какоето улучшение при таком подключении сенсоров?
а то сейчас наблюдаю какието странные глюки - при опросе сенсоров они не сразу начинают показывать фиксированную температуру, а только через 2-3 запроса она стабилизируется.
Думаю может дело в сопротивлении кабелей.
и еще вдогонку вопрос - заметил что на внешние сенсорах, с метровым кабелем, жилы в этом кабеле медные.
и если УДЛИНЯТЬ такой сенсор, обычным сигнальным кабелем, но со стальными жилами, то это тоже заметно влияет на работоспособность сенсора - значения температуры стабилизируются не сразу, как например если удлинитель сделан тоже из медножильного кабеля.
это все эмпирические наблюдения, я могу и ошибаться..
просто один девайс работает нормально, а второй, точно такой же, но удлинители не медные - ведет себя странно.
вот решил уточнить и заодно спросить насчет варианта подключения нескольких сенсоров на один кабель, вместо пучка кабелей.
хочется услышать мысли знающих камрадов.
спасибо.
А у Вас точно приходит питание на V+? Потому что похоже на питание от сигнала, есть у Далласов такой режим и при высоком сопротивлении подтяжки первые значения будут недостоверными.
А что за сигнальный кабель со стальными жилами? Обычно сталь только как упрочняющий элемент и сигнал всегда по меди гонят.
ну да.. питание на термосенсоры приходит из цифрового пина Arduino, а он "открывается" в коде программы.
на одном из девайсов с этим все ok..
кабель какойто 4-х жильный, вроде бы назывался сигнальный, сами многожилки внутри жил - серенькие, потому и назвал их так - стальные. хз - может они из какого-то сплава - лудится вроде неплохо.
Возьмите даташит на протокол 1-wire от TI - там все уже есть.
Возьмите даташит на протокол 1-wire от TI - там все уже есть.
что "все"?
я спросил не будет ли лучше использовать один кабель вместо пучка.
При Ваших длинах - нет, не будет. разницы Вы просто не заметите. А вот если посмотрите примеры, там резистор шунтируют полевиком и быстенько заряжают все прикрепленные датчики - станет намного приятнее, ну иди перед работой включите ручками питание и посидите немного - тоже поможет.
спасибо за совет..
полевик - я так понимаю это конденсатор?
надо схему найти, как это подключается...
правда не совсем понимаю - у меня же питание подается с цифрового пина Arduino как раз для того, чтобы в режиме сна девайса, ничего не потребляло энергию.
тогда какой смысл добавлять кондер в эту цепь, если она будет обесточена, а как только я "открою" пин то вместе с сенсорами еще и кондер начнет заряжаться - дополнительная просадка по питанию?
10 не подключал, а 3 делал. Причем по двухпроводной схеме с последовательным запуском преобразования. Без полевика (полевик - не конденсатор, это транзистор такой, полевой). Температура всеравно не изменяется быстро, по такой схеме 10 шт. опросите за 7,5 сек.
Подключать звездой или шиной (а ваши варианты это именно так называется) на ваших длинах точно всеравно. А в общем случае надо смотреть на емкость линии (ну и другие факторы), шиной меньше и соответственно лучше.
спасибо за совет..
полевик - я так понимаю это конденсатор?
надо схему найти, как это подключается...
правда не совсем понимаю - у меня же питание подается с цифрового пина Arduino как раз для того, чтобы в режиме сна девайса, ничего не потребляло энергию.
тогда какой смысл добавлять кондер в эту цепь, если она будет обесточена, а как только я "открою" пин то вместе с сенсорами еще и кондер начнет заряжаться - дополнительная просадка по питанию?
А вот здесь стоит посчитать. После снятия питания, вы начинаете весь цикл обработки по новой - инициализация шины, инициализация датчиков, далее преобразование, считывание. Основная мощность потребляется в режиме преобразования и инициализации. Если считываете достаточно часто, то вся экономия может сойти на нет.
Конденсатор поддержит питание на длинных тонких линиях (читай высокое сопротивление).
У вас думаю надо добавить задержку между подачей питания и началом работы с датчиком.
камрады - так полевик в данном случае это кондер или транзистор (мосфет по идее)?
если шунтировать - то кондером вроде. тогда какой номинал?
у меня измерение происходит пару раз в день, по команде. но если команда с запросом пришла - то может измерять раз в минуту, пока есть запрос в эфире.
я все таки думаю сделать общую шину - заодно избавлюсь от пучка длинных проводов от каждого сенсора.
кабель думаю взять 6-ти жильный сигнальный. хотел витую пару, но чтото многожилки поблизости не нахожу.
3 жилы пойдет на сенсоры, 2 на фоторезистор (день-ночь у меня определяется) 1 лишний..
вот только пока никак не придумаю, как лучше разместить на этой шине гнезда для штекеров от сенсоров..
гнездо же должно в разрыв ставиться.. смотрел на телефонные гнезда 4 контактные.. вроде норм.. только надо 10 штук установить на 3 метровый кабель.
по идее, учитывая, что у каждого сенсора есть свой метровый хвост, то это надо два блока по 5 гнезд на этой шине ставить..
видимо просто паять, и изолировать..
потом все в кабель канале будет лежать, но на морозе, влаги быть не должно.
задача основная конечно - это ускорить получение точной текущей температуры. чтобы не надо было заставлять девайс делать много измерений - батарейка на 4 месяца должна выжить. прошлый сезон вроде все ok прошло, но тут еще новые потребители энергии будут добавляться..
Полевик в двухпроводной схеме тупо управляет подачей питания. У вас тоже самое делает выделенный пин. На двух метрах великого падения напряжения быть не должно. Проверьте надежность всех контактов и введите задержку между подачей напряжения и началом работы с датчиком.
камрады - так полевик в данном случае это кондер или транзистор (мосфет по идее)?
Полевик никогда не был конденсатором и всегда был полевым транзистором (mosfet).
ну вот и я так сразу сказал, что это кондер) спасибо. а мосфет мне не нужен тут.
Ответ профессионала-разработчика на этот вопрос более авторитетный, чем Вам здесь ответят любители. :)
Сцылка для ленивых: https://www.maximintegrated.com/en/app-notes/index.mvp/id/148
Ответ профессионала-разработчика на этот вопрос более авторитетный, чем Вам здесь ответят любители. :)
Сцылка для ленивых: https://www.maximintegrated.com/en/app-notes/index.mvp/id/148
благодарю. понял, что при моих длинах кабеля не будет разницы между звездой и шиной-linear.
но все таки сделаю шину - ради экономии проводов и удобства прокладки.