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

есть сигнал обрыва, только один датчин на один пин

Пользовательские блоки расширяющие базовый функуионал программы по работе с различными датчиками и энкодерами
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

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

#1

Сообщение RedSky » 27.10.2018{, 00:57}

Дальнейшая доработка моего блока (выкладывал на старом форуме), упростил использование в проекте, теперь не надо генераторов и триггеров.
Блок служит для опроса одного датчика (только один датчик на один пин). Реализован контроль работоспособности датчика.
Не требуется прописывать адрес датчика, можно заменять датчик без отключения устройства.
Работает следующим образом: сразу после включения контроллера или подключения датчика происходит частый опрос шины (каждые 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 скачивания
Последний раз редактировалось RedSky 26.05.2023{, 11:43}, всего редактировалось 7 раз.

Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

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

#21

Сообщение RedSky » 25.05.2023{, 18:15}

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

dsfbuy
Сержант
Сообщения: 171
Зарегистрирован: 03.11.2018{, 12:40}
Репутация: 21
Откуда: Братск
Имя: Виктор

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

#22

Сообщение dsfbuy » 26.05.2023{, 09:23}

RedSky, IDE ругается на функцию bool find_signal(byte *find_data, byte condition). Может так должно быть:

Код: Выделить всё

bool find_signal(byte *find_data, byte condition)
{
    //byte j;
        for (byte j=0; j<8; j++)
     {
        if (find_data[j] == condition) return true;
        //else return 0;
     }
return false;
}

Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

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

#23

Сообщение RedSky » 26.05.2023{, 11:22}

dsfbuy писал(а):
26.05.2023{, 09:23}
RedSky, IDE ругается на функцию bool find_signal(byte *find_data, byte condition). Может так должно быть:
КОД: ВЫДЕЛИТЬ ВСЁ

bool find_signal(byte *find_data, byte condition)
{
//byte j;
for (byte j=0; j<8; j++)
{
if (find_data
== condition) return true;
//else return 0;
}
return false;
}
В таком случае всегда ошибка т. к. return false будет независимо от условия. Сделал через промежуточную переменную - компилятор предупреждений не выдаёт, но больший расход памяти на 42 байта.
На работу не влияет. Возможно кто-то ещё подскажет насчёт оптимизации.
Вложения
ds18b20_v0.2_test_(Code_-_Professional).ubi
(485.88 КБ) 30 скачиваний

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

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

#24

Сообщение AlexCrane » 26.05.2023{, 13:24}

RedSky писал(а):
26.05.2023{, 11:22}
В таком случае всегда ошибка т. к. return false будет независимо от условия.
return прерывает выполнение функции, так что до return false дело не дойдет при выполнении условия.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Sams
Рядовой
Сообщения: 22
Зарегистрирован: 31.03.2023{, 13:28}
Репутация: 2
Имя: Вася

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

#25

Сообщение Sams » 22.08.2023{, 14:33}

а под стм32 есть возможность ковырнуть его ?
на экране ничего не отображает

ecoins
Полковник
Сообщения: 2941
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

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

#26

Сообщение ecoins » 22.08.2023{, 20:15}

Sams писал(а):
22.08.2023{, 14:33}
а под стм32 есть возможность ковырнуть его ?
на экране ничего не отображает
Блок от ecoins

Аватара пользователя
Imran
Сержант
Сообщения: 229
Зарегистрирован: 08.11.2017{, 20:53}
Репутация: 9
Имя: Имран

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

#27

Сообщение Imran » 10.03.2024{, 19:50}

RedSky, Совмести ли с ESP8266 ? У меня не сработало поставил пин 0 (GPIO16) и отедельно пин 16 тоже написал не работает не как.

Ander
Рядовой
Сообщения: 66
Зарегистрирован: 31.10.2023{, 12:50}
Репутация: 12
Имя: Андрей

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

#28

Сообщение Ander » 10.03.2024{, 20:32}

Совместим возьмите не D0

Аватара пользователя
Imran
Сержант
Сообщения: 229
Зарегистрирован: 08.11.2017{, 20:53}
Репутация: 9
Имя: Имран

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

#29

Сообщение Imran » 10.03.2024{, 20:53}

Ander, поменял на D5 (GPIO14) зависает контроллер точнее дисплей (OLED SSD1306) перестает работать или же данные перестают поступать

Mazur
Рядовой
Сообщения: 54
Зарегистрирован: 31.08.2023{, 13:43}
Репутация: 2
Имя: Денис

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

#30

Сообщение Mazur » 11.03.2024{, 09:22}

хз блок рабочий 6 датчиков вешал на 6 пинов

Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

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

#31

Сообщение RedSky » 11.03.2024{, 11:14}

Ander писал(а):
10.03.2024{, 20:32}
Совмести ли с ESP8266 ?
У gpio16 свои особенности - может не работать.
Точно работает на 12, 13, 14.

Ander
Рядовой
Сообщения: 66
Зарегистрирован: 31.10.2023{, 12:50}
Репутация: 12
Имя: Андрей

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

#32

Сообщение Ander » 11.03.2024{, 12:17}

Imran писал(а):
10.03.2024{, 20:53}
Ander, поменял на D5 (GPIO14) зависает контроллер точнее дисплей (OLED SSD1306) перестает работать или же данные перестают поступать
Приложите проект, ускорит решение проблемы!

Ответить

Вернуться в «Датчики и энкодеры»