Датчик DS18B20 с контролем работоспособности
Добавлено: 27.10.2018{, 00:57}
Дальнейшая доработка моего блока (выкладывал на старом форуме), упростил использование в проекте, теперь не надо генераторов и триггеров.
Блок служит для опроса одного датчика (только один датчик на один пин). Реализован контроль работоспособности датчика.
Не требуется прописывать адрес датчика, можно заменять датчик без отключения устройства.
Работает следующим образом: сразу после включения контроллера или подключения датчика происходит частый опрос шины (каждые 800 мс), на выходе "error" при этом высокий уровень, в случае нахождения датчика происходит измерение температуры. Выход "error" будет сброшен после следующего опроса, это нужно что бы пропустить некорректные 85 градусов. Далее опрос происходит с заданным периодом (вход "period"). В случае обрыва датчика поиск снова выполняется с периодом 800 мс независимо от установленного периода опроса. Опрос происходит только при наличии высокого уровня на входе "EN"
Входы:
EN - разрешение опроса
period - период опроса, мс
Выходы:
temp - температура
crcOK - контрольная сумма правильная
error - обрыв линии данных, нет питания датчика, датчик неисправен
Параметры пользователя:
pins - номер пина для подключения датчика
Нужна библиотека OneWire.
Добавил новый блок, т. к. старый не обеспечивал должной надёжности. Теперь контроль более строгий, контрольная сумма принимается в расчёт в любом случае. Выход ошибки теперь один, по прежнему когда есть ошибка опрос максимально частый независимо от заданного времени для максимально быстрого восстановления рабочего состояния. В остальном без изменений.
Переписал блок в новом редакторе. Некоторые вычисления упрятал в функции - меньший расход памяти при использовании нескольких блоков. Вход периода опроса теперь подключаемый - возможен опрос по входу EN (через rtrigger, ещё меньше памяти).
Добавил возможность подключения внутреннего подтягивающего резистора (только для тестов, нет необходимости использовать внешний на 4,7к).
Блок служит для опроса одного датчика (только один датчик на один пин). Реализован контроль работоспособности датчика.
Не требуется прописывать адрес датчика, можно заменять датчик без отключения устройства.
Работает следующим образом: сразу после включения контроллера или подключения датчика происходит частый опрос шины (каждые 800 мс), на выходе "error" при этом высокий уровень, в случае нахождения датчика происходит измерение температуры. Выход "error" будет сброшен после следующего опроса, это нужно что бы пропустить некорректные 85 градусов. Далее опрос происходит с заданным периодом (вход "period"). В случае обрыва датчика поиск снова выполняется с периодом 800 мс независимо от установленного периода опроса. Опрос происходит только при наличии высокого уровня на входе "EN"
Входы:
EN - разрешение опроса
period - период опроса, мс
Выходы:
temp - температура
crcOK - контрольная сумма правильная
error - обрыв линии данных, нет питания датчика, датчик неисправен
Параметры пользователя:
pins - номер пина для подключения датчика
Нужна библиотека OneWire.
Добавил новый блок, т. к. старый не обеспечивал должной надёжности. Теперь контроль более строгий, контрольная сумма принимается в расчёт в любом случае. Выход ошибки теперь один, по прежнему когда есть ошибка опрос максимально частый независимо от заданного времени для максимально быстрого восстановления рабочего состояния. В остальном без изменений.
Переписал блок в новом редакторе. Некоторые вычисления упрятал в функции - меньший расход памяти при использовании нескольких блоков. Вход периода опроса теперь подключаемый - возможен опрос по входу EN (через rtrigger, ещё меньше памяти).
Добавил возможность подключения внутреннего подтягивающего резистора (только для тестов, нет необходимости использовать внешний на 4,7к).