Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Странности при работе с DS1820
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Метрология, датчики, измерительная техника
Barmaley67
При работе с датчиками DS1820 заметил такую странность: при стандартном (рекомендованном) подтягивающем резисторе (5,1 кОм) работает только часть датчиков (процентов 30), подключение +,-,данные. И только когда я заменил резистор на 100 кОм заработали все датчики. В чем причина? Где я допустил ошибку?
NBK
Цитата(Barmaley67 @ Aug 25 2006, 19:56) *
При работе с датчиками DS1820 заметил такую странность: при стандартном (рекомендованном) подтягивающем резисторе (5,1 кОм) работает только часть датчиков (процентов 30), подключение +,-,данные. И только когда я заменил резистор на 100 кОм заработали все датчики. В чем причина? Где я допустил ошибку?

А на линии - только один датчик или несколько?
zltigo
Цитата(Barmaley67 @ Aug 25 2006, 18:56) *
В чем причина? Где я допустил ошибку?

В устройстве к которому Вы подключаете датчик уже есть подтягивающий резистор.
При 100K датчик не способен работать в принципе.
Barmaley67
На линии один датчик (есть идея подключить несколько, но пока бы с одним разобраться). Датчик подключен к PIC16F84A (вывод RA4 порта А, а там вроде как нет подтягивающих резисоров). И с другой стороны когда убираю резистор, то на ЖКИ выводятся все нули (тип, CRC, заводской номер), чего при наличии подтягивающего резистора быть не должно. При установке же резистора на 30 кОм работает половина датчиков (в наличии есть 10), при 100 кОм работают все. sad.gif
lof
Я цеплял DS1820 к AVR AT8535 c длинной линии около 12метров по витой паре, количество датчиков было 6. Проблема была только с формированием времянки для самых дальних датчиков. Резисторы стояли как доке 4.7к. Я вынужден был в конце концов разделить датчики на две группы ( дальние и ближние ) и кинуть две витые пары. А какие расстояния хотите заложить Вы. И что используете для линии связи, может проблема именной в ней?
makwen
Также соединял AT89C5131 c DS1820 и проблем не каких не возникало. Подтягивающий резистор был 4,7кОм. Может допущена ошибка в схеме?!
Andy-L
Цитата(Barmaley67 @ Aug 25 2006, 19:56) *
При работе с датчиками DS1820 заметил такую странность: при стандартном (рекомендованном) подтягивающем резисторе (5,1 кОм) работает только часть датчиков (процентов 30), подключение +,-,данные. И только когда я заменил резистор на 100 кОм заработали все датчики. В чем причина? Где я допустил ошибку?

Я как-то подключал к АТ89С51 по такой вот схемке. Правда у МК было задействовано 2 ноги на однопроводную шину, но дальность была 100 метров и порядка 30 датчиков на линии в промышленном цеху с кучей частотников (производство мороженого). Цеплял по неэкранированной витой паре 5-й категории. Датчики с внешним питанием все, на конце линии диод шоттки в обратном включении. Ошибки конечно сыпались, но если выводить сообщение об ошибке только после 4-го неудачного чтения - то они практически не появлялись.
OgRom
Как показал опыт, подключать линию MicroLAN длиннее нескольких метров непосредственно на порт нежелательно. Любой микроконтроллер переключает свои порты очень быстро - единицы...десятки наносекунд, от этого удара линия банально "звенит", что портит весь обмен. Более того, работающие при комнатной температуре датчики могут перестать обмениваться на "минусе" и прочие сюрпризы.
Необходимо использовать аппаратный драйвер линии с "мягкими" фронтами. Советую посмотреть также
Application Note 108:Нажмите для просмотра прикрепленного файла
Barmaley67
Спасибо всем кто ответил. Сейчас все собрано на макетке, так что расстояние соединительных проводов не больше 15-20 см. До этого работал с DS1990A (ключ), никаких проблем небыло. Ошибку в схеме, вреде бы, допустить сложно, всего-то три провода... sad.gif Попробую воспользоваться советами от OgRom и Andy-L. Буду бороться дальше smile.gif
Andy Mozzhevilov
Попробуйте посмотреть софт и сравнить состояния пина с диагармой из даташита.
Насколько я помню, единица должна делаться подтягивающим резистором и пином, настроенным
на вход как при передаче, так и при приеме данных с 1-wire. Иногда встречается ошибка, что при передаче единицу делают пином контроллера, настроенным на режим output.
Для х51 это до лампочки, а вот для PIC, AVR - нет.
Barmaley67
Вся проблема в том, что софт писал я сам smile.gif по даташиту. Единица (и при вводе и при выводе) формируется за счет перевода вывода МК на вход (имитация схемы с открытым коллектором), так что здесь проблем нет. DS1990A (ключ) с таким же протоколом обмена (поддерживается только команда 33Н - чтение ПЗУ) работает прекрасно, а вот с термометрами какие-то непонятки. Может я чего не понимаю, но тот же протокол, все должно работать, но нет: ключи читаются, а термометры нет. Хотя при увеличении сопротивления резистора до 100К все Ok.
lof
А Вы пытались посмотреть сигнал осцилографом? Может быть сигнал действительно с резкими фронтами и увеличивая резистор до 100к Вы просто датчики вводите в состояние когда им начинает нехватать питания и они сами внутри себя начинают сглаживать фронты и начинают работать. А попробуйте для эксперимента между входом процессора и линией до подтягивающего резистора 4.7к вставить резистор 100-200ом и тем самым сгладить фронты.
Barmaley67
Стоит резистор и как раз на 200 Ом. Как я уже писал данная схема подключения использовалась для чтения ключей DS1990A и резистор я поставил для предотвращения замыкания на землю, да и в дельнейшем собираюсь использовать несколько датчиков (подключение/отключение на рабочем устройстве), так что стоит резистор. А сам сигнал не смотрел, приду домой - посмотрю.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.