Доброе время суток, господа
эмбеддеры. Спасибо всем за ответы. Свой вопрос
я задал уважаемому участнегу нашего форума
Dima_Ag, на который получил очень исчерпывающий ответ.
С его разрешения, я привожу его ниже.
Цитата
Сейчас я тоже пытаюсь посадить датчик DS18B20 на 50м провод. Для считывания данных использую подтягивающий резистор 1.5к, хотя рекомендуемый 4.7к(больше 1.5к данные считываются с ожибкой). Чем это может грозить?
При большом номинале подтягивающего сопротивления возрастает время переходного процесса, ввиду чего короткие импульсы, которыми передаются "единицы", могут быть слишком "удлинены". Отсюда и ошибки в передаче данных.
Цитата
И еще, извините за глупый вопрос, а какая связь между pullup сопротивлением и напряжением на входе контроллера при нулевом сигнале? Если можно поподробнее.
Связь тут следующая:
в конце даташита можно найти тьакую табличку:
DC ELECTRICAL CHARACTERISTICS
где указано, что Sink Current = 4 мА.
Это означает, что такой ток будет протекать через подтягивающий резистор
в то время, когда термометр "выдаёт" ноль. Чем больше номинал резистора, тем ближе напряжение "нуля" к 0 Вольтам. Если же номинал подтягивающего резистора взять очень маленьким, то протекающий ток в 4 мА может не создать
достаточно "сильного" падения напряжения на этом самом резисторе, следовательно, уровень нуля может быть слишком высок.
Пример: если взять подтягивающий резистор в 500 Ом, питание 5 Вольт,
то ток, протекающий от DS18b20 создаст падение напряжения = 500*0.004 = 2 В, таким образом, уровень "нуля" на входе микроконтроллера будет 5В - 2В =3 В! , что, естественно, за "ноль" не воспримется.
........
И еще неплохая ссылка на
форум по этой теме.