Либо сравнением как здесь, либо внимательным изучением листинга дизассемблера.Reaper666 писал(а): как можно выловить этот глюк компилятора?
Всё по DS18(B/S)20.
- Реклама
Как вам цена $1.2 за DS18B20? 
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Нормальная цена 
Я бы тоже десяточек взял. Но с китайцами не работал никогда 
- Реклама
Значит пора начинать) Если есть карточка VISA или MASTER CARD, то это не составит труда.
Рекомендую сначала зарегистрироваться на PayPal. (только сначала прочитайте как ПРАВИЛЬНО это сделать. В интернете есть статьи на эту тему.)
Я сам долго не мог решиться на покупки через интернет, но все же созрел - результатами я более чем доволен)
Рекомендую сначала зарегистрироваться на PayPal. (только сначала прочитайте как ПРАВИЛЬНО это сделать. В интернете есть статьи на эту тему.)
Я сам долго не мог решиться на покупки через интернет, но все же созрел - результатами я более чем доволен)
Ставим плюсы: )
Обязательно попробую. Спасибо.
Всем привет! Вопрос по DS18B20...
1. Подцепил DS к контроллеру (подтягивающий = 4,7к)
2. Раз в 5 сек. конвертирую температуру и читаю 9 байт байт памяти с последующей проверкой CRC
3. Обращение к этому конкретному датчику через MATCH ROM [55h]
4. На 5-ти метрах (витая пара) всё отлично работает.
Проблема: Выношу датчик на улицу, тупо цепляю его по витой паре длинной 100 метров, уменьшив при этом только подтягивающий до 1,5к. Проверка CRC проходит без ошибок, но значение температуры с каждым чтением (раз в 5 сек.) всегда отличается с разницей от 1-го до 15 градусов!!!!!
Мой вывод: Если CRC без ошибок, значит передача информации проходит корректно. Значит, DS18B20, при конвертации температуры (44h), по какой-то причине ошибочно определяет температуру, которую затем безошибочно передаёт контроллеру (BEh). Такое может быть?
Вопрос: Подскажите, пожалуйста, как можно решить эту проблему. Спасибо.
1. Подцепил DS к контроллеру (подтягивающий = 4,7к)
2. Раз в 5 сек. конвертирую температуру и читаю 9 байт байт памяти с последующей проверкой CRC
3. Обращение к этому конкретному датчику через MATCH ROM [55h]
4. На 5-ти метрах (витая пара) всё отлично работает.
Проблема: Выношу датчик на улицу, тупо цепляю его по витой паре длинной 100 метров, уменьшив при этом только подтягивающий до 1,5к. Проверка CRC проходит без ошибок, но значение температуры с каждым чтением (раз в 5 сек.) всегда отличается с разницей от 1-го до 15 градусов!!!!!
Мой вывод: Если CRC без ошибок, значит передача информации проходит корректно. Значит, DS18B20, при конвертации температуры (44h), по какой-то причине ошибочно определяет температуру, которую затем безошибочно передаёт контроллеру (BEh). Такое может быть?
Вопрос: Подскажите, пожалуйста, как можно решить эту проблему. Спасибо.
Есть ещё один вариант, который Вы упустили - неправильный расчёт CRC. Его то-же стоит проверить...Если CRC без ошибок, значит передача информации проходит корректно. Значит, DS18B20, при конвертации температуры (44h), по какой-то причине ошибочно определяет температуру, которую затем безошибочно передаёт контроллеру (BEh).
- Сообщения: 882
- Зарегистрирован: Ср фев 22, 2012 01:25:21
100м это предел по витой паре для 1wire..... и еще активная подтяжка нужна, она у вас реализована?Gerik_PP писал(а):Выношу датчик на улицу, тупо цепляю его по витой паре длинной 100 метров, уменьшив при этом только подтягивающий до 1,5к.
Попробуй еще параллельно питанию у датчика поставь кондерчик, микрофарат на 100, может питания не хватает, просадка во время преобразования....
Я вообще, когда так далеко цепляю датчики, то подаю 12в по питанию, а рядом с датчиком ставлю 78l05
- Вложения
-
- 1wire.jpg
- (26.6 КБ) 890 скачиваний
Вот это уже интересно. Тоже с таким сталкивались. В какую сторону температура уходит от настоящей?Gerik_PP писал(а):цепляю его по витой паре длинной 100 метров, уменьшив при этом только подтягивающий до 1,5к. Проверка CRC проходит без ошибок, но значение температуры с каждым чтением (раз в 5 сек.) всегда отличается с разницей от 1-го до 15 градусов!!!!!
Скорее всего, это помехи, от которых датчик сходит с ума.
Где у вас проложены эти 100 м? Витая пара экранирована? Может, попробовать продёрнуть кабель через ферритовое кольцо у датчика?
Если дело было бы в активной подтяжке, то неправильно принимались бы биты (линия не успевала бы зарядиться до лог. "1"), и CRC вычислялся бы неправильно.shads писал(а):100м это предел по витой паре для 1wire..... и еще активная подтяжка нужна, она у вас реализована?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 882
- Зарегистрирован: Ср фев 22, 2012 01:25:21
А тут по вашему CRC будет вычислятся правильно?Gudd-Head писал(а):Скорее всего, это помехи, от которых датчик сходит с ума.
Если неправильно будет только конвертироваться темпертура (аналоговая часть датчика), то да. СRC правильно будет вычисляться с учётом неверной температуры.shads писал(а):А тут по вашему CRC будет вычислятся правильно?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 882
- Зарегистрирован: Ср фев 22, 2012 01:25:21
Просто вы писали о помехах...
Помехи возможны:
либо по линии данных, что неизбежно приведет к искажению сигнала и к неверной CRC
либо по питанию, тут я не знаю как будет вести себя датчик, но можно просто зашунтировать питание датчика кондером.
Кстати... витая пара уже сама по себе хорошо защищена от помех, даже не экранированная, так что помехи отпадают.
Но скорее всего на входе длинной линии, питание подается 5в, и я на 100% уверен что через 100м там будет уже не 5в (именно во время преобразования) вот тут скорее всего и возможно нештатное поведение датчика.....
Помехи возможны:
либо по линии данных, что неизбежно приведет к искажению сигнала и к неверной CRC
либо по питанию, тут я не знаю как будет вести себя датчик, но можно просто зашунтировать питание датчика кондером.
Кстати... витая пара уже сама по себе хорошо защищена от помех, даже не экранированная, так что помехи отпадают.
Но скорее всего на входе длинной линии, питание подается 5в, и я на 100% уверен что через 100м там будет уже не 5в (именно во время преобразования) вот тут скорее всего и возможно нештатное поведение датчика.....
Последний раз редактировалось shads Чт фев 21, 2013 11:14:31, всего редактировалось 1 раз.
Если не хватает питания во время преобразования, датчик обычно в ресет сваливается и выдаёт +85°С.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Прыгает в разные стороны, при реальных -6, скачет от -15 до +5Gudd-Head писал(а):Вот это уже интересно. Тоже с таким сталкивались. В какую сторону температура уходит от настоящей?
Витая пара не экранирована. Примерно 30м проложены под потолком в подвальной части дома, 30 метров под землёй в пластиковой трубе и примерно метров 20 лишней длинны смотаны (временно) в кольцо на уличном столбе на котором в настоящий момент и закреплён датчикGudd-Head писал(а):Скорее всего, это помехи, от которых датчик сходит с ума.
Где у вас проложены эти 100 м? Витая пара экранирована?
Тоже начал думать что из-за "наведённых" помех в питании неправильно работает аналоговый генератор DS18B20 в момент определения температуры. И уже неправильно определённое значение датчик записывает себе в память (правильно расчитав CRC для этого значения). Попробую обеспечить качественные +5V. Для начала на дальнем конце поставлю 10uF электролит и 0,1uF керамику. Хочу ещё добавить два диода шоттки и два ферритовых фильтра - для большей помехоустойчивости. Схемку нарыл в инете:Gudd-Head писал(а):Может, попробовать продёрнуть кабель через ферритовое кольцо у датчика?

Если всё вышеперечисленное не поможет, то тоже так сделаю. Всем спасибо за участиеshads писал(а):Я вообще, когда так далеко цепляю датчики, то подаю 12в по питанию, а рядом с датчиком ставлю 78l05
Вы уж держите нас в курсе.
От 10 мкФ думаю будет мало пользы.
У вас там антенна прям. Думаю, есть смысл наоборот поставить 10...100...1000 пФ РЧ давить.
От 10 мкФ думаю будет мало пользы.
У вас там антенна прям. Думаю, есть смысл наоборот поставить 10...100...1000 пФ РЧ давить.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Да, пожалуй... Обязательно отпишу, что и как получилось...
Так сколько поставить? 100пФ?Gudd-Head писал(а):У вас там антенна прям. Думаю, есть смысл наоборот поставить 10...100...1000 пФ РЧ давить.
Ставьте что есть. Если поставить все, хуже не будет.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]


