DS18b20 отследить отказ измерения
- Войдите на сайт для отправки комментариев
Сб, 24/11/2012 - 12:34
Бывает так, что провода отсоединяются, перерезаются, перетираются.
Задался вопросом как можно отследить связаный с этим отказ температурного датчика 18b20. Когда он не подключен, его библиотека выдает значение "0.00", что может сильно отличатся от реальности.
Предпологаю, что стоит изменить умолчание если нет данных с датчика в библиотеке DallasTemperature с нуля до явно недостижимого значения, например, -274 гр.С и, отслеживанием этой температуры в программе.
Поизучал библиотеку.. что-то не нашел ни значений по умолчанию, ни вообще что - бы где-то ноль устанавилвался. Кроме пока не понятного "LSB=0"
Возможно, кто-нибудь сталкивался с таким вопросом/ситуацией/необходимостью?
Бывает так, что провода отсоединяются, перерезаются, перетираются.
Поизучал библиотеку..
Поизучайте даташит.
Видится как минимум два варианта детектирования таких состояний:
- чтение ROM датчика
- сравнение поведения сигнала в линии со стандартной диаграммой:
Используйте только библиотеку OneWire.h, тогда вы сможете "вручную" опрашивать датчики и появится куча возможностей проверки наличия датчика. Например:
1. Хранить "базу" адресов, искать датчики и сравнивать с базой (это гемор).
2. Проверять CRC возвращаемых данных (не знаю может быть так что CRC у 00 00 или FF FF вычислится правильно)
3. После того как прочитали все 9 байт данных, проверить если все FF, то датчик отвалился, если все 00, то линия замкнута на землю. (я бы сделал именно так)
Он когда не подключен библиотека выдает что-то там дисконнектед. И это значение определено в dallas_temperature.h как "-127".
Но оно редко встает в это значение при отсоединении. К сожалению. Хватило бы отслеживания этого значения.
Не понимаю проблемы
при всегда имею -127 при отсутствии связи с датчиком
в библиотеке
#define DEVICE_DISCONNECTED -127
работает всегда, Нуля никогда не видел
Может библиотека старенькая ?
А можно ссылку на эту "библиотеку старенькую" ?
Борланд, что у вас за оборудование? Микросхема, обвес?
Ну старенькой ссылки не найду, в моем даласовском инклуде DallasTemperature.h
#define DALLASTEMPLIBVERSION "3.7.2"
обновлял когда перешел на IDE 1.00
Ардуино мега
У меня библиотека была старая.
3.6.0. Вспомнил, что когда выбирал, не стал брать ту, что помечена как "бета".
С новой библиотекой чаще (но еще не всегда) "-127" показывает. Не понимаю когда именно, когда провода не припаянные к датчику шевелю. С отключеным дата-проводом - всегда "0".
Да, мне вчера удалось получить три 0.00 на трех датчиках даласа
ситуация возникла опять при ударе статикой по датчику, обычно это выражалось в показе -127 и лечилось sensors.begin и getDeviceCount
тут не помог даже reset, только отключение питания. в библиотеке нулей не нашел (((
все было с датчиком хорошо, но вот на днях приобрел энкодер и хотел его интегрировать в схему - средний на землю, крайние на цифровые пины....вроде никаких проводов не трогал, но вдруг датчик стал выдавать - 127
что можно посмотреть, чтобы вылечить?
P.S. и еще поставил на всякий пожарный свежую библиотеку
У меня из 3-х испльзуемых датчиков один отказал через 2 месяца нормальной работы. Никакого перетирания проводов невозможно. Мгтф залитый в эпоксидку. Просто перестал отвечать. Работаю c Wire напрямую.
копаясь в инете вышел на мысль, что -127 как бы означает обрыв провода...вроде он у меня цел...под рукой другого датчика для проверки нет..
В общем уважаемые проблема решена...на одной ноге отброшена земля была, в общем крайние ноги на земле, а в центре +5 и дата
В общем уважаемые проблема решена...на одной ноге отброшена земля была, в общем крайние ноги на земле, а в центре +5 и дата
Если пользуетесь "паразитным питанием" DS18B20, то это надо оговаривать, и стоит обратить внимание на то, что такую схему работы хоть и используют, но никто не гарантирует ее работоспособность при увеличении количества датчиков или изменении нагрузки на линию.
Здраствуйте..не могли бы помоч новичку скинуть весь код програмы..а то у меня не получаеться написать код что бы можно было присоеднить больше одного датчика(((вообщем скиньне плиз свой код..буду очень благодарен
Бывает так, что провода отсоединяются, перерезаются, перетираются.
Задался вопросом как можно отследить связаный с этим отказ температурного датчика 18b20. Когда он не подключен, его библиотека выдает значение "0.00", что может сильно отличатся от реальности.
Предпологаю, что стоит изменить умолчание если нет данных с датчика в библиотеке DallasTemperature с нуля до явно недостижимого значения, например, -274 гр.С и, отслеживанием этой температуры в программе.
Поизучал библиотеку.. что-то не нашел ни значений по умолчанию, ни вообще что - бы где-то ноль устанавилвался. Кроме пока не понятного "LSB=0"
Возможно, кто-нибудь сталкивался с таким вопросом/ситуацией/необходимостью?
использую OneWire, недавно тоже наткнулся на такую проблему.
решил просто, проверя возвращаемое значение reset:
if (ds.reset() != 1) {
// датчик не подключен!!!
}
CRC, для неподключенного, для помех, таки для всего.
CRC, для неподключенного, для помех, таки для всего.
у меня CRC8 из OneWire для 0-х данных не выдаёт ошибки
Действительно - CRC-8 = 0 для Scratchpad с заполнением 0x00 (DQ упало на землю). Т.е. в дополнение к проверке CRC нужно таки проверять результат проверки Presence pulse, которую осуществляет OneWire::reset().
Так, вобщем-то, в библиотеке DallasTemperature и сделано.
Я ещё дополнительно проверяю состояние линии на замык земли и питания. от МК до DI ставлю небольшой резистор около 200 Ом (сейчас не помню точно какой . Выбирается из требования по току выводов МК.