Перейти к содержанию
    

Забавное поведение датчика BS18B20

Так может , это вообще не датчик , а RS485 дурит. Я свой уличный датчик читаю один раз в минуту и то думаю , что это очень часто.

На 485 не похоже, т.к. кроме температуры читаются другие датчики, их показания верны. Да и протокол с контрольной суммой.

 

Кстати, ошибка КС датчика исчезла. Сегодня утром проверяю температуру - на датчике -15, перезагрузил программно устройство, появилась реальная температура -20.

 

Такое ощущение, что то ли задача перестает выполняться (опрашивать датчик), то ли какие-то сервисы ОС перестают функционировать... данные с датчика как бы "замирают", "замораживаются".

 

Ладно, буду работать дальше... О результатах сообщу, м.б. кому-нибудь и будет полезен этот материал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Была ситуация очень напоминающая Вашу, только датчик как бы... "сжаривался" при t > 90C.

Вообще не отрабатывалось условие START.

Времянки делал через UART (распространенное явление), так вот при высокой температуре времянки датчика "уплыли" и в UART приходило не то, что ожидалось.

Поборол софтово.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А то что у Вас АВР на улицу вынесен, случаем не с длиной проводов связано, в том смысле что на 10м провода сбои появляются, а на 0.5 нормально работает? И датчик с паразитным питанием или полным?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А то что у Вас АВР на улицу вынесен, случаем не с длиной проводов связано, в том смысле что на 10м провода сбои появляются, а на 0.5 нормально работает? И датчик с паразитным питанием или полным?

На длину проводов не похоже, т.к. идет достаточно частый (каждые 150 мс) обмен с МК, за сутки непрерывной работы 2 ошибки из 46 тыс. переданных и принятых пакетов. Другие датчики нормально опрашиваются.

Датчик с полным питанием.

 

И все таки все больше похоже, что низкоприоритетная задача опроса датчика наглухо перестает работать. Выходишь на улицу, дышишь на датчик, держишь его в теплых руках, а программа на компе "исправно" показывает -14. При нормальной работе, показания всегда меняются. Что интересно, задачи более высокого приоритета продолжают работать (там АЦП опрашивается). А задачи приоритетом еще ниже тоже встают, это видно по отсутствию мигания служебного светодиода.

 

Вот так вот я совершенно зря подозревал датчик...)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Полагаю, что проблема решена. 1,5 суток ни одного сбоя не замечено. Температура регистрируется правильно.

 

В чем было дело? Элементарно неверно былиз заданы размеры стеков для задач. После увеличения размера стеков задача опроса датчика и еще одно (приоритетом ниже), сбои пропали.

 

Большое спасибо Всем за помощь, участие и советы!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И все таки оно плавает.... Столкнулся с этим вот сейчас. Вчера все работало. Сегодня утром - ошибка CRC. Что интересно, датчик расположен на этот раз на плате. Тот же самый код великолепно читает DS1990.

 

Вот прикоснулся рукой к DS18B20, температура изменилась - и КС снова совпала... Я уже разочаровался в этом мире) Еще 1 января)

 

Если игнорировать КС, то температура адекватная.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Либо стека всё же не хватает, либо неверна процедура подсчёта CRC, таковы мои версии :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Либо стека всё же не хватает, либо неверна процедура подсчёта CRC, таковы мои версии :)

Две разные процедуры подсчета выдают одно и тоже значение вкупе с онлайн-калькулятором

Причем если датчик "погреть" пальцами, то CRC начинает сходится...

 

Я же правильно считаю:

1. Принимаю scratchpad в буфер - 9 байт.

2. Подсчитываю CRC8 для 8 байт буфера.

3. Сравниваю эту КС с 9-м байтом буфера.

 

Уже шарики за ролики заходят)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Две разные процедуры подсчета выдают одно и тоже значение вкупе с онлайн-калькулятором

Причем если датчик "погреть" пальцами, то CRC начинает сходится...

 

Я же правильно считаю:

1. Принимаю scratchpad в буфер - 9 байт.

2. Подсчитываю CRC8 для 8 байт буфера.

3. Сравниваю эту КС с 9-м байтом буфера.

 

Уже шарики за ролики заходят)

А еще бывает, что тайминги "плывут" взависимости от температуры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да потому что не тем в новогоднее утро занимаетесь. Оно для другого, ИМХО, изобретено.

Да нормааааально :rolleyes:

Я же это с другими делами делаю)

 

Да, похоже, что дело чисто программное.

 

Снова напоролся на свои же грабли.

 

Но я почему вопрос поднял, дело в том, что о этих датчиках известно, что иногда у них слетает EEPROM, либо они просто "погибают". Подобные темы я нашел на этом форуме... Вот и не знал, куда податься....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну EEPROM они победили и даже аппноут убрали с сайта. Я им лично вопрос по сему поводу задавал. Сейчас проверил , аж три датчика на одной линии с калькулятором - ни разу CRC не сошлась , а температуру показывают адекватную и дружненько так. Проверяю по BMP085.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ни разу CRC не сошлась

Энто как? Может быть у Вас тоже дело в софте?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще и времянки в драйвере 1wire были "замечательными": при положительной температуре все считывается отлично. Выставляешь датчик на улицу - температура плюс/минус за тысячу, КС не сходится))) Как я понимаю, у датчика RC-генератор внутри, которые от температуры немного плавает, и времянки шины плывут... Ну тема для начинающих, а!

 

________________________________

З.Ы. Все в куче: стэк, времянки, праздники...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть у Вас тоже дело в софте?

Да скорее не в софте, USART- там думать ни о чём не надо. Вот только драйвер согласования на биполярниках , что-то мне кажется "дурит", соберу его на полевиках , посмотрю что-будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

..у датчика RC-генератор внутри...

 

тактовый да. а измеряющий - снаружи естественно резистор, термо который :)

 

с временнЫми интервалами - строго по даташиту. и будет вам счастье. если не паразитное питание то вплоть до сотен метров по пром зоне обычной лапшой. если завалы наблюдаете - то подтягивайте линию возле самого датчика (как указано в некоторых даташитах) и снова счастье вас не забудет! :)

 

и вообще С Новым Годом!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...