ds18B20 и длина провода

Robinson
Offline
Зарегистрирован: 26.09.2013

Здравствуйте, датчик ds18B20 прикручен к аруинке по ~5м проводу.

Резистр использую на 5К Ом(2 по 10 параллельно).

Датчик показывает температуру через раз. 

Прозвонивал провод, проверял контакты. Все в норме.

Обновляет температуру каждую секунду. В итоге в определнный момент ардуино перестала видеть датчик. Потом опять заработал. Теперь снова не видит.

Подозреваю, что проблема в длинном кабеле.

Можно как-то вылечить, не уменьшая длину кабеля?

axill
Offline
Зарегистрирован: 05.09.2011

гарантированного решения думаю для вашей проблемы нет, но есть рекомендации, может помогут:

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

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

- попробуйте снизить споростивление до 1-3ком, надеюсь резистор стоит на той стороне провода которая ближе к ардуине, а не к датчику

- попробуйте поставить электролит на 1-10мкф в паралель с керамическим конденсатором на 100нф около самого датчика

 

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Раз в секунду - слишком часто для этого датчика. Сделайте раз в 5 секунд.

axill
Offline
Зарегистрирован: 05.09.2011

Andrey_Y_Ostanovsky пишет:

Раз в секунду - слишком часто для этого датчика. Сделайте раз в 5 секунд.

если использована грамотная библиотека то там уже встроено ожидание датчика

максимальнео ожидание 0.75сек соотвествует максимальной точности 12 бит. Время можно сильно сократить если снизить разрещение датчика. В даташите вся эта информация есть, так что если важна частота, а не точность - реально и чаще чем раз в секунду

Looka
Offline
Зарегистрирован: 24.04.2012

axill пишет:

гарантированного решения думаю для вашей проблемы нет, но есть рекомендации, может помогут:

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

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

- попробуйте снизить споростивление до 1-3ком, надеюсь резистор стоит на той стороне провода которая ближе к ардуине, а не к датчику

- попробуйте поставить электролит на 1-10мкф в паралель с керамическим конденсатором на 100нф около самого датчика

А эти рекомендации в полном объеме и для DHT22 можно использовать? 

И насколько принципиально место установки подтягивающего резистора?

axill
Offline
Зарегистрирован: 05.09.2011

С  dht не работал, рекомендации  точно применимы для любого 1-wire

Для 1-wire место установки резистора критично как раз с точки зрения помех

axill
Offline
Зарегистрирован: 05.09.2011

Вообще если провода нужны длинные, а проблему с помехами решить не удается, то надо использовать помехоустойчивые протоколы. Как вариант ставить по ардуине с каждой стороны. Ардуины связывать например по Serial. При большой длине проводов потребуются еще и преобразователи uart-rs232 или uart-rs485

Тогда всп будет как надо)

gena
Offline
Зарегистрирован: 04.11.2012

  Как запитан датчик: два или три провода?

kolganoff
Offline
Зарегистрирован: 26.09.2013

У меня работает с паразитным питанием на 10 метров по телефонной лапше.

Anton Timkin
Offline
Зарегистрирован: 29.09.2013

У меня два датчика, один работает с переменным успехом, а второй вообще молчит. От переплюсовки они умирают или нет?... а то боюсь я мог перепутать в первый раз.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

kolganoff пишет:

У меня работает с паразитным питанием на 10 метров по телефонной лапше.

Около 100 метров, питание 5 Вольт, кабель сигнализационный 4-х жильный, резистор 1 кило Ом.

На линиях от 5-ти до 15-ти датчиков ( на каждом входе ) .

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Anton Timkin пишет:

От переплюсовки они умирают или нет?... а то боюсь я мог перепутать в первый раз.

В смерти замечены не были, на питание каждой линии стоит 78L05(100 мА К.З.) с кондёром 470.0 мкф на выходе

spa-sam
Offline
Зарегистрирован: 14.12.2012
 

Как-то ради интереса подключал датчик к 300 метровой бухте витой пары, резистор ставил на 1К....отлично работало)

axill
Offline
Зарегистрирован: 05.09.2011

подключение через бухту равнозначно подключению короткими проводами в которые добавлено сопротивление в сотню ом на кажду/ю линию и еще между проводами добавлены конденсаторы не десяток нанофарад. Это совсем не тоже самое, что подключить датчики проводами длинной 300 метров. Так как one wire протокол с низкими скоростями обмена лишнее сопротивление и лишняя емкость на линии ему должны быть не так страшны, а вот помехи наведенные длинными проводами - как раз вритичны. Иными словами пример с бухтой ни о чем не говорит)))

paf
Offline
Зарегистрирован: 25.01.2013

Не подскажет ли кто, как можно определить программно присутствие датчика? Может у кого табличка по командам для него есть?

Looka
Offline
Зарегистрирован: 24.04.2012

paf пишет:

Не подскажет ли кто, как можно определить программно присутствие датчика? Может у кого табличка по командам для него есть?

 

Все таблицы в даташит.  Примеры реализации в библитеках, например  http://www.pjrc.com/teensy/td_libs_OneWire.html

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

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

paf пишет:

Не подскажет ли кто, как можно определить программно присутствие датчика? Может у кого табличка по командам для него есть?

А как Вы первый раз обращаетесь к датчику? :) Наверное надо ловить ответ после того, как дали reset на линию...

paf
Offline
Зарегистрирован: 25.01.2013

Del

inspiritus
Offline
Зарегистрирован: 17.12.2012
 
У меня работает более 60 датчиков на витом четырехпарнике длиной около 100 метров. 
 
1 - паразитное питание исключено
 
2 - питание - пара и сигнал - пара с землей ТО ЕСТЬ НАПРИМЕР питание +/-  з/бз и синал/земля о/бо
 
3 - подтяжка в конце линии 4.7 кОм
 
4 - в конце линии емкость 100 мкФ и керамика 0.1мкФ на питании
 
применяется активный  покупной адаптор ( синий свисток http://www.ronsek.com/onewire.htm)
 
Предполагается мощный USB по питанию, в противном случае USB HUB с внешним питанием.
Melanxolik
Offline
Зарегистрирован: 27.02.2015
inspiritus, извиняюсь конечно, а можно для людей которые не шарят нарисовать схему вашей линии, особенно как емкости подключены.
сейчас примерно такая задача и тоже 1wire мастер на котором идут провалы.
bwn
Offline
Зарегистрирован: 25.08.2014

Melanxolik пишет:

inspiritus, извиняюсь конечно, а можно для людей которые не шарят нарисовать схему вашей линии, особенно как емкости подключены.
сейчас примерно такая задача и тоже 1wire мастер на котором идут провалы.

Конкретно по емкостям, электролит+керамика параллельно линии питания.

Гриша
Offline
Зарегистрирован: 27.04.2014

кондер - НЕэлектролит 0,1мкф (выдрал с видеокарты) непосредственно на ноги датчика, подтяжка 2,2к возле МК, 1,5к в питание датчика 0,1 мкф с двух сторон (возле МК). Кабель датчика на улицу вдоль силовых кабелей (магнитные пускатели и прочая прелесть) 15м, экран никуда не подключен, но есть.  Может и есть збои но за 1 месяц я не замечал их.

bwn
Offline
Зарегистрирован: 25.08.2014

Гриша пишет:

кондер - НЕэлектролит 0,1мкф (выдрал с видеокарты) непосредственно на ноги датчика, подтяжка 2,2к возле МК, 1,5к в питание датчика 0,1 мкф с двух сторон (возле МК). Кабель датчика на улицу вдоль силовых кабелей (магнитные пускатели и прочая прелесть) 15м, экран никуда не подключен, но есть.  Может и есть збои но за 1 месяц я не замечал их.

Гриша, не очень понял по "1,5к в питание датчика" как подключен, если последовательно резистор - питание датчика, то в чем его смысл?

Гриша
Offline
Зарегистрирован: 27.04.2014

bwn пишет:

Гриша, не очень понял по "1,5к в питание датчика" как подключен, если последовательно резистор - питание датчика, то в чем его смысл?

датчик потребляет микроАмперы, а наводка на питание может нарушить работу МК - защита от сбоев основого устройства.

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