DS18b20 отследить отказ измерения

usr-bin
Offline
Зарегистрирован: 04.09.2012

Бывает так, что провода отсоединяются, перерезаются, перетираются.

Задался вопросом как можно отследить связаный с этим отказ температурного датчика 18b20. Когда он не подключен,  его библиотека выдает значение "0.00", что может сильно отличатся от реальности.

Предпологаю, что стоит изменить умолчание если нет данных с датчика в библиотеке DallasTemperature с нуля до явно недостижимого значения, например, -274 гр.С и, отслеживанием этой температуры в программе.

Поизучал библиотеку.. что-то не нашел ни значений по умолчанию, ни вообще что - бы где-то ноль устанавилвался. Кроме пока не понятного "LSB=0"

 

Возможно, кто-нибудь сталкивался с таким вопросом/ситуацией/необходимостью?

 

 

step962
Offline
Зарегистрирован: 23.05.2011

usr-bin пишет:

Бывает так, что провода отсоединяются, перерезаются, перетираются.

Поизучал библиотеку.. 

Поизучайте даташит.

Видится как минимум два варианта детектирования таких состояний:

- чтение ROM датчика

- сравнение поведения сигнала в линии со стандартной диаграммой:

maksim
Offline
Зарегистрирован: 12.02.2012

Используйте только библиотеку OneWire.h, тогда вы сможете "вручную" опрашивать датчики и появится куча возможностей проверки наличия датчика. Например:

1. Хранить "базу" адресов, искать датчики и сравнивать с базой (это гемор).
2. Проверять CRC возвращаемых данных (не знаю может быть так что CRC у 00 00 или FF FF вычислится правильно)
3. После того как прочитали все 9 байт данных, проверить если все FF, то датчик отвалился, если все 00, то линия замкнута на землю. (я бы сделал именно так)

usr-bin
Offline
Зарегистрирован: 04.09.2012

Он когда не подключен библиотека выдает что-то там дисконнектед. И это значение определено в dallas_temperature.h как "-127".
 Но оно редко встает в это значение при отсоединении. К сожалению. Хватило бы отслеживания этого значения.

Borland
Offline
Зарегистрирован: 17.05.2012

Не понимаю проблемы

при всегда имею -127 при отсутствии связи с датчиком

в библиотеке

#define DEVICE_DISCONNECTED -127

работает всегда, Нуля никогда не видел

Может библиотека старенькая ?

usr-bin
Offline
Зарегистрирован: 04.09.2012

А можно ссылку на эту "библиотеку старенькую" ?

Борланд, что у вас за оборудование? Микросхема, обвес?

Borland
Offline
Зарегистрирован: 17.05.2012

Ну старенькой ссылки не найду, в моем даласовском инклуде DallasTemperature.h

#define DALLASTEMPLIBVERSION "3.7.2"

обновлял когда перешел на IDE 1.00

Ардуино мега

usr-bin
Offline
Зарегистрирован: 04.09.2012

У меня библиотека была старая.

3.6.0. Вспомнил, что когда выбирал, не стал брать ту, что помечена как "бета".

С новой библиотекой  чаще (но еще не всегда) "-127" показывает. Не понимаю когда именно, когда провода не припаянные к датчику шевелю. С отключеным дата-проводом - всегда "0".

Borland
Offline
Зарегистрирован: 17.05.2012

Да, мне вчера удалось получить три 0.00 на трех датчиках даласа

ситуация возникла опять при ударе статикой по датчику, обычно это выражалось в показе -127 и лечилось sensors.begin и getDeviceCount

тут не помог даже reset, только отключение питания. в библиотеке нулей не нашел (((

 

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

все было с датчиком хорошо, но вот на днях приобрел энкодер и хотел его интегрировать в схему - средний на землю, крайние на цифровые пины....вроде никаких проводов не трогал, но вдруг датчик стал выдавать - 127

что можно посмотреть, чтобы вылечить?

P.S. и еще поставил на всякий пожарный свежую библиотеку

ales2k
Offline
Зарегистрирован: 25.02.2013

У меня из 3-х испльзуемых датчиков один отказал через 2 месяца нормальной работы. Никакого перетирания проводов невозможно. Мгтф залитый в эпоксидку. Просто перестал отвечать. Работаю c Wire напрямую. 

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

копаясь в инете вышел на мысль, что -127 как бы означает обрыв провода...вроде он у меня цел...под рукой другого датчика для проверки нет..

В общем уважаемые проблема решена...на одной ноге отброшена земля была, в общем крайние ноги на земле, а в центре +5 и дата

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

vworld пишет:

В общем уважаемые проблема решена...на одной ноге отброшена земля была, в общем крайние ноги на земле, а в центре +5 и дата

Если пользуетесь "паразитным питанием" DS18B20, то это надо оговаривать, и стоит обратить внимание на то, что такую схему работы хоть и используют, но никто не гарантирует ее работоспособность при увеличении количества датчиков или изменении нагрузки на линию.

NBa1994
Offline
Зарегистрирован: 20.03.2014

Здраствуйте..не могли бы помоч новичку скинуть весь код програмы..а то у меня не получаеться написать код что бы можно было присоеднить больше одного датчика(((вообщем скиньне плиз свой код..буду очень благодарен

Deamon
Offline
Зарегистрирован: 21.09.2017

usr-bin пишет:

Бывает так, что провода отсоединяются, перерезаются, перетираются.

Задался вопросом как можно отследить связаный с этим отказ температурного датчика 18b20. Когда он не подключен,  его библиотека выдает значение "0.00", что может сильно отличатся от реальности.

Предпологаю, что стоит изменить умолчание если нет данных с датчика в библиотеке DallasTemperature с нуля до явно недостижимого значения, например, -274 гр.С и, отслеживанием этой температуры в программе.

Поизучал библиотеку.. что-то не нашел ни значений по умолчанию, ни вообще что - бы где-то ноль устанавилвался. Кроме пока не понятного "LSB=0"

 

Возможно, кто-нибудь сталкивался с таким вопросом/ситуацией/необходимостью?

использую OneWire, недавно тоже наткнулся на такую проблему.

решил просто, проверя возвращаемое значение reset:

if (ds.reset() != 1) {

// датчик не подключен!!!

}

bwn
Offline
Зарегистрирован: 25.08.2014

CRC, для неподключенного, для помех, таки для всего.

Deamon
Offline
Зарегистрирован: 21.09.2017

bwn пишет:

CRC, для неподключенного, для помех, таки для всего.

у меня CRC8 из OneWire для 0-х данных не выдаёт ошибки

sadman41
Offline
Зарегистрирован: 19.10.2016

Действительно - CRC-8 = 0 для Scratchpad с заполнением 0x00 (DQ упало на землю). Т.е. в дополнение к проверке CRC нужно таки проверять результат проверки Presence pulse, которую осуществляет OneWire::reset().

Так, вобщем-то, в библиотеке DallasTemperature и сделано.

CotDaVinchi
Offline
Зарегистрирован: 12.05.2016

Я ещё дополнительно проверяю состояние линии на замык земли и питания. от МК до DI ставлю небольшой резистор около 200 Ом (сейчас не помню точно какой . Выбирается из требования по току выводов МК.