|
Необычная работа 1-wire, что это может значить?, Когда подключены на общий клемник работают, а если расстояние 2м нет. |
|
|
|
Jul 20 2014, 13:32
|
Участник

Группа: Участник
Сообщений: 49
Регистрация: 30-10-07
Пользователь №: 31 879

|
Здравствуйте. Реализовал на AVR небольшую сеть(10м) из датчиков DS18B20 (все условия протокола соблюдены и тщательно проверены, схема подключения стандартная 3-х проводная с подтяжкой 4,7 кОм). Кабель витая пара FTP (даже ПВС 3х1 пробывал, но нечего не изменилось). Сеть работает, когда датчики подключены на общий клемник ( т.е в непосредственной близости друг от друга). Проблема возникает когда расстояние между датчиками более 0,5м. Причём один из датчиков работает нормально (даже если его поменять местом подключения с неработающим), а при работе с другим возникает авария контрольных сумм. Датчики все новые. Всё повторяется на других экземплярах датчиков. Место где находится сеть обычное, без серьёзных помех. Подскажите пожалуйста в чём может быть проблема?
|
|
|
|
|
Jul 20 2014, 14:13
|
Профессионал
    
Группа: Свой
Сообщений: 1 849
Регистрация: 6-02-05
Пользователь №: 2 451

|
Цитата(Santy @ Jul 20 2014, 08:32)  Здравствуйте. Реализовал на AVR небольшую сеть(10м) из датчиков DS18B20 (все условия протокола соблюдены и тщательно проверены, схема подключения стандартная 3-х проводная с подтяжкой 4,7 кОм). Кабель витая пара FTP (даже ПВС 3х1 пробывал, но нечего не изменилось). Сеть работает, когда датчики подключены на общий клемник ( т.е в непосредственной близости друг от друга). Проблема возникает когда расстояние между датчиками более 0,5м. Причём один из датчиков работает нормально (даже если его поменять местом подключения с неработающим), а при работе с другим возникает авария контрольных сумм. Датчики все новые. Всё повторяется на других экземплярах датчиков. Место где находится сеть обычное, без серьёзных помех. Подскажите пожалуйста в чём может быть проблема? Влияет паразитная емкость соединения. Скрупулезно проверьте временную диаграмму взаимодействия с датчиками на коротком расстоянии и длинном, особенно симметричность фронтов. Начните с одного датчика. Проверьте работу на той же длине, но не с кабелем, а с отдельными прводами. На расстоянии до пары-тройки метров проблем с наводками еще нет. Прстепенно увеличивайте длину кабеля и проверяйте работу. Постраивая временную диаграмму мне удавалось обеспечить работу до 100 метров. Причем после этого те же датчики не работали на коротком расстоянии. Использовал те же DS18B20. Изделие в серии. Я на этой же проблеме 10 лет назад чуть работу не потерял, никому ничего объяснить не удалось, пока не заставил программистов сделать как надо в соответствии с ДШ. Причем учтите, общий 1-Wire стандарт и его реализация у разных производителей (Maxim, TI, и т.д.) отличается в деталях. Мне, например, не удалось заставить работать надежно компоненты от Maxim и TI друг с другом.
|
|
|
|
|
Jul 20 2014, 15:18
|
Участник

Группа: Участник
Сообщений: 49
Регистрация: 30-10-07
Пользователь №: 31 879

|
В литературе и статьях 1-wire хвалят. Реализация протокола сделана у меня в соответствии с datasheet. Попробую там где можно увеличу временные задержки. Когда в сети работает 1 датчик, то проблем нет (проверял на 10м). На датчиках DS18B20, которые я применяю на корпусе написано Dallas. Производитель видимо Mахim. Есть ли DS18B20 производства TI?
|
|
|
|
|
Jul 20 2014, 17:56
|
Участник

Группа: Участник
Сообщений: 49
Регистрация: 30-10-07
Пользователь №: 31 879

|
Цитата(adnega @ Jul 20 2014, 20:29)  Может, отражения от несогласованной линии? Т.е Вы хотите сказать, что данный экранированный кабель излучает и принимает? Экран соединён с GRND (в одной точке). Один из датчиков подключен на самый конец кабеля, а другой посредине с помощью проводов длиной 1см. Как только отключаю работающий датчик, то сразу же начинает работать тот , который не работал. Несколько увеличил временные задержки, но картина не изменилась. Попробую использовать обычную телефонную лапшу. Если же не поможет придётся осциллографом импульсы смотреть.
|
|
|
|
|
Jul 20 2014, 20:32
|
Профессионал
    
Группа: Свой
Сообщений: 1 849
Регистрация: 6-02-05
Пользователь №: 2 451

|
Цитата(Santy @ Jul 20 2014, 10:18)  В литературе и статьях 1-wire хвалят. Реализация протокола сделана у меня в соответствии с datasheet. Попробую там где можно увеличу временные задержки. Когда в сети работает 1 датчик, то проблем нет (проверял на 10м). На датчиках DS18B20, которые я применяю на корпусе написано Dallas. Производитель видимо Mахim. Есть ли DS18B20 производства TI? Да, задержки, длительность импульсов, фронтов и их симметрия. Mахim купил фирму Dallas лет этак 15-20 назад и все их (Dallas) барахло идет под маркой Mахim. Это были, в основном, чипы зарядки, чипы ID с 1-wire, и другие чипы с 1-wire. Остались от Dallas только буквы в названиях, да и то в старых изделиях. Чипы ID с 1-wire до сих пор использую в новой аппаратуре когда надо, проблем не было до сих пор. Чипы зарядки и сопутсвующие для батарей всегда вызывают проблемы и вопросы, хотя и не плохи. О DS18B20 производства TI не знаю, и, слава богу, знать не хочу (не нужно). Знаю только, что TI и Dallas трактуют 1-wire interface несколько по разному с чем и столкнулся с 10-ок лет назад.
|
|
|
|
|
Jul 20 2014, 21:14
|
Знающий
   
Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050

|
Цитата(Santy @ Jul 20 2014, 17:32)  Место где находится сеть обычное, без серьёзных помех. Подскажите пожалуйста в чём может быть проблема? почитайте статью производителя: http://www.maximintegrated.com/en/app-notes/index.mvp/id/148внизу страницы есть линки на аппноты.. как вариант, попробуйте вместо трехточки сделать двупроводку с паразитным питанием..
|
|
|
|
|
Jul 21 2014, 09:43
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(Santy @ Jul 20 2014, 16:32)  Подскажите пожалуйста в чём может быть проблема? Проблема может быть в том, что вы прерываете тайм-слот при обмене с датчиком. Например, стандартная библиотека, поставляемая с CodeVision, так и построена - ее функции можно прерывать, в результате данные от датчика (к датчику) могут приходить с ошибками. Нужно обязательно запрещать прерывания на время работы функций библиотеки, но это далеко не всегда приемлемо. Я для себя эту проблему решил, полностью отказавшись от библиотеки и написав свою реализацию получения температуры от датчика (кому надо, могу поделиться) ...
|
|
|
|
|
Jul 21 2014, 19:06
|
Участник

Группа: Участник
Сообщений: 49
Регистрация: 30-10-07
Пользователь №: 31 879

|
Цитата(kovigor @ Jul 21 2014, 12:43)  Проблема может быть в том, что вы прерываете тайм-слот при обмене с датчиком. Например, стандартная библиотека, поставляемая с CodeVision, так и построена - ее функции можно прерывать, в результате данные от датчика (к датчику) могут приходить с ошибками. Нужно обязательно запрещать прерывания на время работы функций библиотеки, но это далеко не всегда приемлемо. Я для себя эту проблему решил, полностью отказавшись от библиотеки и написав свою реализацию получения температуры от датчика (кому надо, могу поделиться) ... При работе с сетью у меня все прерывания запрещены. Для приёма и передачи использую 1 и тот же пин не UART (хотя возможно лучше использовать 2 пина и транзистор, один из пинов включает и выключает ключ, а другой работает на приём), причём этот пин всегда включен на выход. Приём и передача бита в соответствии с datasheet. Приём: Код PRIEM_BIT_CIKL: rcall ZA60MKS cbi PORTE,0 rcall ZA2MKS sbi PORTE,0 rcall ZA2MKS PROV_BIT: sbic PINE,0; rjmp BIT_1;ВЫПОЛНИТЬ КОМАНДУ ПЕРЕХОДА ЕСЛИ ПРИНИМАЕМЫЙ БИТ=1 rjmp BIT_0 Передача: Код UST1_BIT_CIKL: dec vspom_reg lsr bait cbi PORTE,0 rcall ZA5MKS sbi PORTE,0 rcall ZA60MKS rjmp PEREDACHA_BIT_CIKL UST0_BIT_CIKL: dec vspom_reg lsr bait cbi PORTE,0 rcall ZA60MKS sbi PORTE,0 rcall ZA5MKS Пришёл к выводу , что влияют паразитные ёмкости да и кабель имеет значение. Заменил FTP кабель на телефонную лапшу так даже хуже стало.
Сообщение отредактировал Santy - Jul 22 2014, 16:16
|
|
|
|
|
Jul 21 2014, 19:58
|
Участник

Группа: Участник
Сообщений: 49
Регистрация: 30-10-07
Пользователь №: 31 879

|
Цитата(kovigor @ Jul 21 2014, 22:27)  Сейчас нет времени вникать в ваш код. Могу на 99% утверждать, что ошибка чисто программная. Это если питание не шумит и БП не возбуждается и МК исправен. При такой длине кабеля, думаю, совершенно все равно, что у вас за кабель. Я каких только кабелей и проводов не перепробовал. До примерно пяти метров все было в порядке, а больше мне и не требовалось ... На 100% БП исправен да и контроллер тоже. На двух устройствах одно и то же происходит. То, что я привел кодом то считать нельзя так несколько строчек. Задержки все выдержаны правильно. Длина сети 10м. Все контакты надёжно подключены, подключал подтяжку в конце сети (разные номиналы) при 200 Ом сеть работает, но изредка сбоит.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|