Страница 2 из 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 с контролем работоспособности

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

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

Добавлено: 26.05.2023{, 09:23}
dsfbuy
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;
}

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

Добавлено: 26.05.2023{, 11:22}
RedSky
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 с контролем работоспособности

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

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

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

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

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

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

Добавлено: 10.03.2024{, 19:50}
Imran
RedSky, Совмести ли с ESP8266 ? У меня не сработало поставил пин 0 (GPIO16) и отедельно пин 16 тоже написал не работает не как.

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

Добавлено: 10.03.2024{, 20:32}
Ander
Совместим возьмите не D0

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

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

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

Добавлено: 11.03.2024{, 09:22}
Mazur
хз блок рабочий 6 датчиков вешал на 6 пинов

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

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

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

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