Страница 1 из 2

Датчик DS18B20 с контролем работоспособности

Добавлено: 27.10.2018{, 00:57}
RedSky
Дальнейшая доработка моего блока (выкладывал на старом форуме), упростил использование в проекте, теперь не надо генераторов и триггеров.
Блок служит для опроса одного датчика (только один датчик на один пин). Реализован контроль работоспособности датчика.
Не требуется прописывать адрес датчика, можно заменять датчик без отключения устройства.
Работает следующим образом: сразу после включения контроллера или подключения датчика происходит частый опрос шины (каждые 800 мс), на выходе "error" при этом высокий уровень, в случае нахождения датчика происходит измерение температуры. Выход "error" будет сброшен после следующего опроса, это нужно что бы пропустить некорректные 85 градусов. Далее опрос происходит с заданным периодом (вход "period"). В случае обрыва датчика поиск снова выполняется с периодом 800 мс независимо от установленного периода опроса. Опрос происходит только при наличии высокого уровня на входе "EN"
Входы:
EN - разрешение опроса
period - период опроса, мс
Выходы:
temp - температура
crcOK - контрольная сумма правильная
error - обрыв линии данных, нет питания датчика, датчик неисправен
Параметры пользователя:
pins - номер пина для подключения датчика
Нужна библиотека OneWire.
ds18b20_error_Ver_0.2_(CODE).ubi
(86.44 КБ) 553 скачивания


Добавил новый блок, т. к. старый не обеспечивал должной надёжности. Теперь контроль более строгий, контрольная сумма принимается в расчёт в любом случае. Выход ошибки теперь один, по прежнему когда есть ошибка опрос максимально частый независимо от заданного времени для максимально быстрого восстановления рабочего состояния. В остальном без изменений.
ds18b20_errorCRCVer_0.2_(Code_-_Basic).ubi
(171.12 КБ) 302 скачивания

Переписал блок в новом редакторе. Некоторые вычисления упрятал в функции - меньший расход памяти при использовании нескольких блоков. Вход периода опроса теперь подключаемый - возможен опрос по входу EN (через rtrigger, ещё меньше памяти).
Добавил возможность подключения внутреннего подтягивающего резистора (только для тестов, нет необходимости использовать внешний на 4,7к).
ds18b20_v0.2_(Code_-_Professional).ubi
(488 КБ) 92 скачивания

Датчик DS18B20 с контролем работоспособности

Добавлено: 02.11.2018{, 13:39}
RedSky
Обновил блок. Изменил алгоритм опроса при потере связи. Теперь можно задать частоту опроса более 32 секунд.

Датчик DS18B20 с контролем работоспособности

Добавлено: 27.01.2019{, 10:43}
Timur
Доброго дня.
Делаю автоматику на теплицу. По проекту в теплице 4 датчика ds18b20.
Необходимо вычислить среднюю температуру, но чтобы при выходе из строя датчика он не брался в расчет.
Вопрос: если на входе "EN" вашего блока не будет сигнала(подать инвертированный сигнал "error"), что будет на выходе "temp"?

P.S. можно было конечно на практике проверить, просто датчик сейчас в пути, а ручонки чешутся :smile469:

Датчик DS18B20 с контролем работоспособности

Добавлено: 27.01.2019{, 14:26}
Brand2
Timur, я использую бп ds18b20,после него ставлю фильтр Filtr_anomal,где задаю дельту в разумных пределах и потом блок сравнения,и если температура выходит за предела допустимых значений то присваиваю переменной error.

Датчик DS18B20 с контролем работоспособности

Добавлено: 17.02.2019{, 11:24}
diman27
Спасибо автору за блок. Подскажите как его с esp использовать?

Датчик DS18B20 с контролем работоспособности

Добавлено: 18.02.2019{, 13:20}
smol
А если 8 штук использовать?

Датчик DS18B20 с контролем работоспособности

Добавлено: 18.02.2019{, 14:55}
RedSky
На ESP не проверял, но отличий в использовании не должно быть.
Количество любое, но все должны быть подключены к разным пинам.

Датчик DS18B20 с контролем работоспособности

Добавлено: 22.11.2019{, 18:02}
vovka1973
RedSky писал(а):
18.02.2019{, 14:55}
На ESP не проверял, но отличий в использовании не должно быть.
Количество любое, но все должны быть подключены к разным пинам.
На esp32 работает :smile9:

Датчик DS18B20 с контролем работоспособности

Добавлено: 25.02.2020{, 10:02}
RedSky
Добавил новый блок, т. к. старый не обеспечивал должной надёжности. Теперь контроль более строгий, контрольная сумма принимается в расчёт в любом случае. Выход ошибки теперь один, по прежнему когда есть ошибка опрос максимально частый независимо от заданного времени для максимально быстрого восстановления рабочего состояния. В остальном без изменений.

Датчик DS18B20 с контролем работоспособности

Добавлено: 15.03.2021{, 06:38}
Di123
а как понять номер вывода есп8266 из букв разных привязать к единицам для блока ?
допустим D3 это наверное 3 теоретически
а S3 это что тогда ?

Датчик DS18B20 с контролем работоспособности

Добавлено: 15.03.2021{, 07:48}
RedSky
Di123 писал(а):
15.03.2021{, 06:38}
а S3 это что тогда ?
Номер указывать как для IDE, т. е. номер GPIO.
S3 (или SD3 на некоторых) это GPIO10.

Датчик DS18B20 с контролем работоспособности

Добавлено: 15.03.2021{, 10:12}
Di123
да работает

Датчик DS18B20 с контролем работоспособности

Добавлено: 18.03.2021{, 10:44}
dsfbuy
RedSky писал(а):
27.10.2018{, 00:57}
новый блок
У меня на NODEMCU отрицательная температура не работает. Показывает 4095 градусов, при понижении соответственно уменьшается, выше 0 все ОК. На ардуине все нормально.
погода_proba_733.flp
(617.95 КБ) 88 скачиваний

Датчик DS18B20 с контролем работоспособности

Добавлено: 18.03.2021{, 14:45}
RedSky
dsfbuy писал(а):
18.03.2021{, 10:44}
Показывает 4095 градусов
Вот исправленный блок. Похоже никто не знал, что в ESP int длиной в 4 байта. Завтра постараюсь сделать один универсальный блок.

Датчик DS18B20 с контролем работоспособности

Добавлено: 18.03.2021{, 21:49}
RedSky
Обновил блок. Были проблемы на ESP при отрицательных температурах.

Датчик DS18B20 с контролем работоспособности

Добавлено: 02.04.2021{, 15:16}
Утвш
А что подразумевается под контрольной суммой?

Датчик DS18B20 с контролем работоспособности

Добавлено: 02.04.2021{, 23:38}
Rovki
RedSky писал(а):
18.03.2021{, 14:45}
dsfbuy писал(а):
18.03.2021{, 10:44}
Показывает 4095 градусов
Вот исправленный блок. Похоже никто не знал, что в ESP int длиной в 4 байта. Завтра постараюсь сделать один универсальный блок.
Везде инт -16 бит ! Просто есть целое без знака 0-65535, а есть целое со знаком от-32768 до 32768. :smile37:

Датчик DS18B20 с контролем работоспособности

Добавлено: 03.04.2021{, 08:40}
Phazz
Rovki, там речь про байты и в есп32 их действительно 4 в integer

Датчик DS18B20 с контролем работоспособности

Добавлено: 03.04.2021{, 11:05}
Rovki
Phazz писал(а):
03.04.2021{, 08:40}
Rovki, там речь про байты и в есп32 их действительно 4 в integer
Думаю проще- ЕСР машина 32 битная ,поэтому длина регистра 32 бита (4 байта) :smile37:

Датчик DS18B20 с контролем работоспособности

Добавлено: 01.07.2022{, 13:54}
Kot
RedSky, а можете собрать блок для чтения нескольких датчиков на одном пине ?
по этому примеру https://radioprog.ru/post/763