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

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

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

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

Добавлено: 26 май 2023, 09:23
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;
}

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

Добавлено: 26 май 2023, 11:22
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 байта.
На работу не влияет. Возможно кто-то ещё подскажет насчёт оптимизации.

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

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

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

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

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

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

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

Добавлено: 10 мар 2024, 19:50
Imran
[ref]RedSky[/ref], Совмести ли с ESP8266 ? У меня не сработало поставил пин 0 (GPIO16) и отедельно пин 16 тоже написал не работает не как.

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

Добавлено: 10 мар 2024, 20:32
Ander
Совместим возьмите не D0

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

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

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

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

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

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

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

Добавлено: 11 мар 2024, 12:17
Ander
Imran писал(а): 10 мар 2024, 20:53 [ref]Ander[/ref], поменял на D5 (GPIO14) зависает контроллер точнее дисплей (OLED SSD1306) перестает работать или же данные перестают поступать
Приложите проект, ускорит решение проблемы!

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

Добавлено: 07 май 2024, 08:26
Rovki
Если использвать 1-3,4 датчика на каждый пин ,то можно и другие датчики найти температуры . Главное приемущество 1-wire - это использование большого количества датчиков ds18b20 на значительное расстояние .Многие авторы блоков пошли по пути- один датчик , один пин. А жаль, теряется смысл шины 1-wire...
Использовал штатный блок и опрашивал до 16 датчиков. Все хорошо, но вот выход error , что то не работает :( .

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

Добавлено: 07 май 2024, 08:54
slsl
Rovki писал(а): 07 май 2024, 08:26 Многие авторы блоков пошли по пути- один датчик , один пин. А жаль, теряется смысл шины 1-wire...
Ну дык, гемор при подключении и замене датчика(ов), зачастую перевешивает всю прелесть шины.

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

Добавлено: 07 май 2024, 09:25
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

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

Добавлено: 07 май 2024, 10:15
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:

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

Добавлено: 21 ноя 2024, 14:12
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.: удобство этих датчиков не только в том, что можно повесить их несколько штук на одну шину, а в том, что вообще эта шина есть и передает он не аналоговый сигнал, который плавает и нестабилен, а сразу цифровой, ну и хорошая точность и калибровка.

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

Добавлено: 22 ноя 2024, 12:22
Rovki
Это же датчик температуры, которая не так часто меняется. ..что за задача ,которая требует измерения за доли секунды и отрабатывает их???