Полная версия этой страницы:
Проблемы AVR + DS18S20
Oleg_IT
Jun 6 2005, 05:28
Для работы с датчиком DS18S20 применяю AVR318 Все действия кроме чтения или преобразования температура проходят нормально. FAMILY CODE (28h), User Byte и Configuration пишу и читаю. Как доходит дело до чтения температуры начинаются чудеса. Читаю в цикле после команды на преобразование. Каждый цикл новые данные. Увеличение времени после команды на преобразование перед чтением ни чего не дали. Знаю про аппаратный глюк, нашёл рекомендацию как его исправить, но ни чего не получается. Что делать? Есть вероятность, что я не правильно пользуюсь этой рекомендацией. Поделитесь опытом.
И ещё этот глюк относится только к области памяти температуры или ко всей памяти?
Спасибо
Oleg_IT
Jun 6 2005, 05:33
Прошу прощения я работаю с датчиком DS18B20, а не с DS18S20. Но, на сколько я знаю, такая проблема там тоже есть.
Питание датчика какое - внешнее или по 1-wire ?
Oleg_IT
Jun 6 2005, 07:19
Пока внешнее, но хочу поставить по 1-wire Как бы при этом ещё каких чудес не нахватать.
А резюк (окола 5к) на шине висит ?
Oleg_IT
Jun 6 2005, 10:07
Я пользуюсь схемой и кодом из AVR318. Там стоит 4.7 к.
В том то и дело, что всё остальное пишется и читается, а с томпературой проблема.
Цитата(Oleg_IT @ Jun 6 2005, 13:07)
Я пользуюсь схемой и кодом из AVR318. Там стоит 4.7 к.
В том то и дело, что всё остальное пишется и читается, а с томпературой проблема.
Я недавно делал простенький термометр на at2313 и ds18b20.
Нашел в example FastAVR почти готовый код на Васике.
Откомпилировал все это дело... Зашил , а оно меряет , но выдает ошибку по CRC8. Стал разбираться с асм-кодом.. оказалось ,что при подсчете CRC берется не указатель массива данных, а само значение стартового индекса массива которое использовалось в качестве указателя (в итоге получался бардак результата CRC)...
Так что доверяй, но проверяй..
Вообще-то в последнее время Dallas рисует подтяжку 2.2к
И проверь всетаки питание на ножках. Были проблемы, когда питание было плохое. Поставь кондер возле ножек. Еще легко оттестировать в Codevision - там есть пример. Пользовался неоднократно-все работало. Еще укажи длину проводов и, какой уровень на 1-w во время преобразования t (должен быть высокий).
Oleg_IT
Jun 8 2005, 06:52
Мучался я зря. Купил ещё пару, работают прекрасно.
Первый мне феном обработали, термоусадочные кембрики применил. Может перекалили его, но температура на минимуме была 150 гр.? Может быть такое?
"Читаю в цикле после команды на преобразование. "
Вообще чтение температуры с этих микросхем надо производить
не после команды на преобразование а по окончании преобразования
температуры в d/s это описано само преобразование длится от 500 мс до 1с
взависимости от типа или напряжения питания.
Если у вас не паразитное питание то на время преобразования линия данных
удерживается датчиком в 0. Можно либо читать бит с линии пока он не станет 1
или просто подождать с запасом 1 с. а потом читать данные.
Попадаются конечно бракованные датчики но очень редко даже
при условии укладывания их в термоусадочную трубку мы имеем отказ
1-2 на 1000 штук.
AndyBig
Jun 19 2005, 10:17
Угу, хотел ответить так же, но опередил Miron :)
Добавлю только выдержку из даташита на DS18S20:
Цитата
Converts temperature in 750ms (max.)
Oleg_IT
Jun 20 2005, 05:31
Цитата(AndyBig @ Jun 19 2005, 14:17)
Угу, хотел ответить так же, но опередил Miron

Добавлю только выдержку из даташита на DS18S20:
Цитата
Converts temperature in 750ms (max.)
Это понятно, я делаю так как пишет Miron "Можно либо читать бит с линии пока он не станет 1", пока не пользую паразитное питание. Но моя проблема была в другом, датчик сбойный оказался, а я грешил на то, что сам что-то не то делаю.
AndyBig
Jun 20 2005, 06:15
Ну, я не так много датчиков использовал, что бы собрать статистику по их неисправностям, но (ИМХО) усадка термокембриков не должна вредить чипам.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.