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

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

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

Сообщение RedSky »

Переписал блок в новом редакторе. Некоторые вычисления упрятал в функции - меньший расход памяти при использовании нескольких блоков. Вход периода опроса теперь подключаемый - возможен опрос по входу EN (через rtrigger, ещё меньше памяти).
Добавил возможность подключения внутреннего подтягивающего резистора (только для тестов, нет необходимости использовать внешний на 4,7к).
dsfbuy
Сержант
Сообщения: 172
Зарегистрирован: 03 ноя 2018, 12:40
Откуда: Братск
Имя: Виктор

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

Сообщение dsfbuy »

[ref]RedSky[/ref], 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
Лейтенант
Сообщения: 576
Зарегистрирован: 19 дек 2016, 20:07
Откуда: Днепропетровск
Имя: Алексей
Поблагодарили: 1 раз

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

Сообщение RedSky »

dsfbuy писал(а): 26 май 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;
}
В таком случае всегда ошибка т. к. return false будет независимо от условия. Сделал через промежуточную переменную - компилятор предупреждений не выдаёт, но больший расход памяти на 42 байта.
На работу не влияет. Возможно кто-то ещё подскажет насчёт оптимизации.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

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

Сообщение AlexCrane »

RedSky писал(а): 26 май 2023, 11:22 В таком случае всегда ошибка т. к. return false будет независимо от условия.
return прерывает выполнение функции, так что до return false дело не дойдет при выполнении условия.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Sams
Рядовой
Сообщения: 22
Зарегистрирован: 31 мар 2023, 13:28
Имя: Вася

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

Сообщение Sams »

а под стм32 есть возможность ковырнуть его ?
на экране ничего не отображает
ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 152 раза

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

Сообщение ecoins »

Sams писал(а): 22 авг 2023, 14:33 а под стм32 есть возможность ковырнуть его ?
на экране ничего не отображает
Блок от ecoins
Аватара пользователя
Imran
Сержант
Сообщения: 248
Зарегистрирован: 08 ноя 2017, 20:53
Имя: Имран
Благодарил (а): 16 раз
Поблагодарили: 1 раз

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

Сообщение Imran »

[ref]RedSky[/ref], Совмести ли с ESP8266 ? У меня не сработало поставил пин 0 (GPIO16) и отедельно пин 16 тоже написал не работает не как.
Ander
Лейтенант
Сообщения: 514
Зарегистрирован: 31 окт 2023, 12:50
Имя: Андрей
Благодарил (а): 21 раз
Поблагодарили: 94 раза

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

Сообщение Ander »

Совместим возьмите не D0
Аватара пользователя
Imran
Сержант
Сообщения: 248
Зарегистрирован: 08 ноя 2017, 20:53
Имя: Имран
Благодарил (а): 16 раз
Поблагодарили: 1 раз

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

Сообщение Imran »

[ref]Ander[/ref], поменял на D5 (GPIO14) зависает контроллер точнее дисплей (OLED SSD1306) перестает работать или же данные перестают поступать
Mazur
Рядовой
Сообщения: 71
Зарегистрирован: 31 авг 2023, 13:43
Имя: Денис

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

Сообщение Mazur »

хз блок рабочий 6 датчиков вешал на 6 пинов
Аватара пользователя
RedSky
Лейтенант
Сообщения: 576
Зарегистрирован: 19 дек 2016, 20:07
Откуда: Днепропетровск
Имя: Алексей
Поблагодарили: 1 раз

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

Сообщение RedSky »

Ander писал(а): 10 мар 2024, 20:32 Совмести ли с ESP8266 ?
У gpio16 свои особенности - может не работать.
Точно работает на 12, 13, 14.
Ander
Лейтенант
Сообщения: 514
Зарегистрирован: 31 окт 2023, 12:50
Имя: Андрей
Благодарил (а): 21 раз
Поблагодарили: 94 раза

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

Сообщение Ander »

Imran писал(а): 10 мар 2024, 20:53 [ref]Ander[/ref], поменял на D5 (GPIO14) зависает контроллер точнее дисплей (OLED SSD1306) перестает работать или же данные перестают поступать
Приложите проект, ускорит решение проблемы!
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

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

Сообщение Rovki »

Если использвать 1-3,4 датчика на каждый пин ,то можно и другие датчики найти температуры . Главное приемущество 1-wire - это использование большого количества датчиков ds18b20 на значительное расстояние .Многие авторы блоков пошли по пути- один датчик , один пин. А жаль, теряется смысл шины 1-wire...
Использовал штатный блок и опрашивал до 16 датчиков. Все хорошо, но вот выход error , что то не работает :( .
Электронщик до мозга костей и не только
slsl
Сержант
Сообщения: 294
Зарегистрирован: 08 дек 2021, 22:41
Имя: Вячеслав
Благодарил (а): 15 раз
Поблагодарили: 46 раз

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

Сообщение slsl »

Rovki писал(а): 07 май 2024, 08:26 Многие авторы блоков пошли по пути- один датчик , один пин. А жаль, теряется смысл шины 1-wire...
Ну дык, гемор при подключении и замене датчика(ов), зачастую перевешивает всю прелесть шины.
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

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

Сообщение Rovki »

slsl писал(а): 07 май 2024, 08:54
Rovki писал(а): 07 май 2024, 08:26 Многие авторы блоков пошли по пути- один датчик , один пин. А жаль, теряется смысл шины 1-wire...
Ну дык, гемор при подключении и замене датчика(ов), зачастую перевешивает всю прелесть шины.
У меня сделано так- все датчики подключаю на 1 шину по очереди , по одному. в веб интерфейсе задаю номер датчика (1-16) и нажимаю кнопку сканирование... и так для каждого датчика . Делается это один раз. При выходе из строя одного датчика (например 5) , откидываю шину от контроллера и сканирую новый датчик (под номером 5). Ставлю датчик на место и подключаю общею шину...Все (5 минут на замену). Быстродействие не волнует , потому как для работы с датчиками (только) использую отдельную ЕСП 8285 с веб интерфейсом. Значения температур со всех датчиков складываю в регистры , которые мастер (МК) считыват по UART (modbus RTU). датчики раскинуты в пределах 100метров. В вебинтерфейсе так же наблюдаю все температуры с датчиков, задаю уставки в энергонезависимую память для МК. Задаю скрость по uart. Если нужно можно пдключиться к локальной сети... :smile37:
Ну не 48 же проводов тянуть :D (16х3)...

Отправлено спустя 7 минут 56 секунд:
Есть две разновидности таких плат на базе ESP8285
1. 1wire-UART
2. 2Wire- RS485
Электронщик до мозга костей и не только
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

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

Сообщение Rovki »

Rovki писал(а): 07 май 2024, 09:25
slsl писал(а): 07 май 2024, 08:54
Rovki писал(а): 07 май 2024, 08:26 Многие авторы блоков пошли по пути- один датчик , один пин. А жаль, теряется смысл шины 1-wire...
Ну дык, гемор при подключении и замене датчика(ов), зачастую перевешивает всю прелесть шины.
У меня сделано так- все датчики подключаю на 1 шину по очереди , по одному. в веб интерфейсе задаю номер датчика (1-16) и нажимаю кнопку сканирование... и так для каждого датчика . Делается это один раз. При выходе из строя одного датчика (например 5) , откидываю шину от контроллера и сканирую новый датчик (под номером 5). Ставлю датчик на место и подключаю общею шину...Все (5 минут на замену). Быстродействие не волнует , потому как для работы с датчиками (только) использую отдельную ЕСП 8285 с веб интерфейсом. Значения температур со всех датчиков складываю в регистры , которые мастер (МК) считыват по UART (modbus RTU). датчики раскинуты в пределах 100метров. В вебинтерфейсе так же наблюдаю все температуры с датчиков, задаю уставки в энергонезависимую память для МК. Задаю скрость по uart. Если нужно можно пдключиться к локальной сети... :smile37:
Ну не 48 же проводов тянуть :D (16х3)...

Отправлено спустя 7 минут 56 секунд:
Есть две разновидности таких плат на базе ESP8285
1. 1wire-UART
2. 1Wire- RS485
Отправлено спустя 49 минут 32 секунды:
Без веб интерфейса , согласен - гемор :yes:
Электронщик до мозга костей и не только
Аватара пользователя
Drakon88
Рядовой
Сообщения: 32
Зарегистрирован: 02 июл 2019, 20:24
Имя: Михаил
Благодарил (а): 4 раза

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

Сообщение Drakon88 »

Rovki писал(а): 07 май 2024, 08:26 Если использвать 1-3,4 датчика на каждый пин ,то можно и другие датчики найти температуры . Главное приемущество 1-wire - это использование большого количества датчиков ds18b20 на значительное расстояние .Многие авторы блоков пошли по пути- один датчик , один пин. А жаль, теряется смысл шины 1-wire...
Использовал штатный блок и опрашивал до 16 датчиков. Все хорошо, но вот выход error , что то не работает :( .
Не всегда удобно использовать много датчиков на одной шине, кому как и для чего, задачи разные бывают.. Датчики на одной шине будут очень медленные, на получение информации от одного требуется 0,75 сек, если датчиков 10 шт, то придется ждать 7,5 сек, так как шина занята и контроллер ждет ответа и сам кстати ничем другим не может заниматься, как будто в delay уходит.. Мне например нужно от 10 датчиков получить одновременно данные и за время не более 0,2 сек и чтобы данные обновлялись независимо (ну можно и синхронно, но тогда не более 0,1 сек). Вот пока что сделал каждый датчик на свой пин и вывод на дисплей с i2c, работают, но оказалось что датчики имеют программируемую точность, от которой зависит скорость. И с завода они идут по умолчанию как раз на самой медленной скорости - 750 мс. В блоках есть изменение времени опроса (800 мс например), можно подредактировать это время, но эффекта не будет, так как надо сами датчики перенастраивать на 8 бит, а не на 11. В блоках не нашел этой функции, может кто сталкивался с этим или существует блок с этой настройкой? И вопрос вдогонку - если перешить разрядность датчика, то он запомнит это после отключения питания или нужно будет каждый раз слать команду на значение разрядности?
P.S.: удобство этих датчиков не только в том, что можно повесить их несколько штук на одну шину, а в том, что вообще эта шина есть и передает он не аналоговый сигнал, который плавает и нестабилен, а сразу цифровой, ну и хорошая точность и калибровка.
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

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

Сообщение Rovki »

Это же датчик температуры, которая не так часто меняется. ..что за задача ,которая требует измерения за доли секунды и отрабатывает их???
Электронщик до мозга костей и не только
Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя