Свежие обсуждения
Микроконтроллеры

датчики DS18B20

1 16 21

Делайте всё по алгоритму! С учётом временных характеристик. И всё быдет нормально.
Я делал (резистор ставил на 4.7 кОм, для чтения и для записи Тайт-слот = 100 мкс):
1) Ресет = 500 мкс. (минимум 480)
2) Ждем = 30 мкс (15-60) на востановление линии (из-за резистора)
3) Ожидание ответа от DS = 500 мкс (минимум 480, длительность импульса лог.0 от DS должна быть 60-240 мкс)
4) Передаем 8 бит (1 байт) команду Памяти (LRC - Lasered ROM Code) - если один датчик, то это = 0xСС (в hex`е)
5) Передаём команду датчика - команда на преобразование = 0x44
6) Ждем (пока преобразуется 750 мс!!!)
7) Ресет
8) Как п.4
9) Передаём команду датчика - команда на чтение SCRATCHPAD = 0xBE
10) Читаем 9 байт (но нам надо 2 первых - в них температура, а все 9 надо для подсчёта CRC, в последнем собственно CRC, если хотите, то после чтения 2 байт можно сделать Ресет)
11) Считаем CRC
12) Преобразоваваем температуру для вывода на индикатор(если нада)....

Ещё можно получить LRC....

Самое главное правильно читать! С записью просто!

P.S.: Вроде правильно написал..... давно делал.... Ещё надо разобраться к какому выводу МК подключен DS!

 

Спасибо. Именнно так я и делаю ... Если что найду - напишу.

 

Самое лучшее решение - логический анализатор! Посмотрите как идет реальный обмен.

 

Сергей К: Самое лучшее решение - логический анализатор!
+1

Реальный обмен по шине между 1Wire контроллером DS2480 и 2 датчиками (DS18B20 и DS18S20).

Импульс сброса от контроллера(~600uS) и присутствия от датчиков(~115uS)

Передача от контроллера команды 0xF0
"0" ~64us, "1" ~7uS, слот ~70uS

Триплет поиска. Первые 2 бита - чтение с датчиков 0 и 1, третий - передача контроллером нуля.

 

К р у т о !!! Буду п о д о г о н я т ь ...

 

Еще раз про DS18B20. Погрешность измеряемой температуры +/-0,5 грд, для диапазона от -10 до + 85 градусов. За этими значения на краях до ходит до 2 градусов. Эти параметры описаны в документации и проверены лабораторных условиях (а не по градуснику висящему рядом). Из практики через мои руки прошли за последние три года тысяч 5 датчиков. Разность показаний редко составляет (если мы откугляем значение до 0,1) одну десятую градуса. Работает в диапазоне напряжений 3,0 - 5,5 вольта как и описано в документации. Без всяких драйверов управляя на прямую с порта контроллера можно удалять его на 300 метров "без головной боли".
Часто о температуре начинают судить "человеки" знакомы с ней только по показаниям градусника, а отсюда и все "бредовые высказывания". Если вы один, два раза спаяли схему термометра, это еще не значит, что вы специалист в области измерения температур.
Если вы программируете интерфейс связи с датчиком, а он не хочет отзываться, это не значит, что датчик плохой, это значит, что вы что-то делаете не так или чего-то не досмотрели. Поэтому не бросайтесь в панику, а просто разберитесь, в чем проблема.
А один из вариантов полезной информации здесь http://invent-systems.narod.ru/DS18B20.htm

 

Catcatcat: Без всяких драйверов управляя на прямую с порта контроллера можно удалять его на 300 метров "без головной боли".
Я тоже так делаю, обычно. В данном случае прогу я под чужое железо писал. Хотя могу придумать, когда это надо - когда загружены прерывания или по каким-то ещё причинам напряжно выдержки времени делать. Драйверу всё по синхронному i2c отдается.

 

а подскажите как DS18B20 чувствует себя в сильных магнитных полях если применить его в качестве датчика температуры сердечника мощного тора
(4квт ).Спрятать его в железную трубку и прижать к внешней стороне кольца сердечника ,а по верх уже намотать обмотки .
Интересно -датчик сразу сума сойдет или нет

 

piligrim130:
как DS18B20 чувствует себя в сильных магнитных полях
Примерно так: http://www.pirpk.narod.ru/ddssite/dshavf1w.htm

 

Датчики DS18B20 по 70 рублей - не дорого ?