Большое количество датчиков температуры на 1-wire. Продолжаем борьбу

в продолжении темы 20 датчиков ds18b20 звездой
Отваливаются датчики 1-wire
1-Wire датчики

Отваливаются периодически 1-Wire датчики DS18B20

в логах следующее


|08-01-2025 13:20:39.530|ERROR: [w1 driver] Bad CRC (/sys/bus/w1/devices/w1_bus_master4/28-00000086dedd/w1_slave)|
|---|---|
|08-01-2025 13:19:46.011|ERROR: [w1 driver] Can't read temperature (/sys/bus/w1/devices/w1_bus_master1/28-bcb75f1f64ff/temperature)|
|08-01-2025 13:19:39.103|ERROR: [w1 driver] Can't read temperature (/sys/bus/w1/devices/w1_bus_master1/28-00000094346c/temperature)|
|08-01-2025 13:14:17.632|ERROR: [w1 driver] Bad CRC (/sys/bus/w1/devices/w1_bus_master3/28-3ce104570fc6/w1_slave)|
|08-01-2025 13:09:57.544|ERROR: [w1 driver] Bad CRC (/sys/bus/w1/devices/w1_bus_master3/28-a98d5f1f64ff/w1_slave)|
|08-01-2025 13:09:57.544|ERROR: [w1 driver] Bad CRC (/sys/bus/w1/devices/w1_bus_master3/28-a98d5f1f64ff/w1_slave)|
|08-01-2025 13:09:30.128|ERROR: [w1 driver] Can't read temperature (/sys/bus/w1/devices/w1_bus_master1/28-00000093ccb0/temperature)|
|08-01-2025 13:09:28.182|ERROR: [w1 driver] Can't read temperature (/sys/bus/w1/devices/w1_bus_master1/28-000000849932/temperature)|
|08-01-2025 13:09:13.200|ERROR: [w1 driver] Can't read temperature (/sys/bus/w1/devices/w1_bus_master1/28-3ce10457859a/temperature)|

Краткий пересказ предыдущих тем: сначала грешил что шина у меня звездой и расстояния большие.
ладно прикупил платы расширения w1 две штуки и повесил на одну плату десяток датчиков. на вторую только ОДИН с длиной провода менее метра.

и все равно в логах
ERROR: [w1 driver] Bad CRC (/sys/bus/w1/devices/w1_bus_master4/28-00000086dedd/w1_slave)

проблема получается вовсе не в длине соединения.

помогите все таки решить проблему. до 10 датчиков на одном контроллере не вызывают ошибок. как количество датчиков увеличивается - начинаются проблемы.
причем даже на порту где только один датчик.
получается проблема в ПО.

ЗЫ не предлагать
Использование Wellpro WP3066ADAM с контроллером Wiren Board — Wiren Board и второй такой же аналог AMDSG08.
я купил их, даже оба.
но они на рс-485 тормозят если устройств много. на 115к не умеют.

файл с диагностикой

diag_output_ALYNHADY_2025-01-08-14.28.46.zip (323,9 КБ)

Добрый день.
Наводки на шину от расположенных рядом силовых - исключаете?

Понимаю, что ответ не по теме и в целом нахожусь так же в поисках решений для стабильной работы таких датчиков через ВБ, но всё же самое просто напрашивается - вместо модуля расширения 1W повесить на контроллер доп модуль 485, и тогда, по идее, проблема со скоростью и разграничениями должна решиться, если их не сотни у вас конечно. За информацию о модуле спасибо, подумаю для себя. А то я уже думал не сделать ли самому такой…

1 лайк

исключаю. потому что если оставить только штук 5 датчиков на w1 все становится хорошо. при увеличении количества - начинаются глюки на всех шинах. Bad CRC

и на фото один датчик на одной четвертой шине тоже периодически в ошибку уходит.

РС он просто висит вниз от контроллера. там силовых вещей нету. для фото поднял для того чтоб было понятно что он короткий.

У меня есть шина на 12 датчиков, нет ошибок. Точнее - есть но одна-две в час.

Интересно. Попробовал воспроизвести - не воспроизводится.
Тем не менее - отключите силовое питание для проверки.

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

У меня около 11 датчиков, и с одной стороны у меня тоже складывается впечатление, что ПО не идеальное, и даже в прошлом было стабильнее, с другой - всё же тенденция имеется: чем больше шумящих потребителей работает, даже обычных светодиодных ламп с их шумящими источниками - тем больше ошибок. Правда у меня кабели протяженные и идут по одним и тем же каналам.

так, все же ошибки есть при большом количестве датчиков :slight_smile:

у меня тоже не отказываются работать полностью, работают, но с ошибками.

если все повесить на одну шину то тогда начнут отваливатся надолго.

если распределить по четырем - то тоже ошибки будут. 46 ошибок в час на 17 датчиков

ЗЫ датчиков надо больше. хотябы раза в два.

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

Да, конечно есть даже 20-30 в час особенно если включается-выключается что-то мощное.

Было сразу после установки больше. Решил последовательной заменой счамих датчиков, (китайские). Причем заменял просто по одному и оценивал количество ошибок после замены. Увеличилось? Меняю на другой, уменьшилось - меняю следующий. То есть далеко не факт что именно тот датчик который ошибки генерит - имеет проблему.
Ну и после того как на конец цины поставил по питанию конденсатор - стало совсем хорошо.

И да, “Bad CRC” - значит что сам датчик получил запрос но при получении ответа прошла помеха.
А вот “Cant read”, чаще всего - что и датчик ответа не получил.

было бы замечательно, если бы проблема была только на одном датчике.
пробовал последовательно отключать по одному.
все равно при превышении определенного количества датчиков начинают глючить те, которы не глючили совсем.

В документации написано, обращаю внимание

Обычно в домашних условиях надежно работает до 20 датчиков по 5 метров кабеля, соединенных звездой.

И там же есть рекомендации по прокладке шины. Я проверил, только не с 5 метрами - таких мало. Да, работают. И да, ошибки бывают. 1Wire не подключаются “звездой”, не видел такого в проектах.

рекомендации понятны. а что делать с 90 сантиметров кабеля и одним датчиком на порту 3(на фото)?
на нем те же ошибки.
специально купил платы расширения чтобы проверить

Попробовал воспроизвести.
Навел на метровый кабель датчка, подключенного одним на порт помеху.
Получил

[Wed Jan  8 14:09:56 2025] w1_master_driver w1_bus_master2: therm_bulk_read_store: unable to trigger a bulk read on the bus. err=-19
[Tue Jan 14 11:37:35 2025] w1_master_driver w1_bus_master2: therm_bulk_read_store: unable to trigger a bulk read on the bus. err=-19

При этом предыдущая ошибка была, как видно неделю назад.
А когда (и если есть данные - каким заказом) покупались датчики?

интересная тема по ссылке.

Основная мысль -

Если в шину 1-wire отправляется команда запуска измерений (0×44) сразу для всех датчиков, после чего запрашивается результат с датчика, который обнаружился и попал в список на этапе инициализации

Какие тут минусы?

  • Измерение производится сразу всеми датчиками (уточню: — получившими команду, а это не обязательно все на линии!).
  • В момент измерения датчики потребляют больше, чем во всё оставшееся время. Именно тот случай когда несколько датчиков способны разрядить всю линию.

Этого всего можно избежать, если снимать показания немного по‑другому.

Во‑первых, можно измерять температуру не всеми датчиками одновременно, а по очереди. Для этого надо выбирать конкретный датчик, и отправлять команду ему.

Ссылка - да, видел. Там автор уже три статьи написал - пытается разными способами добиться работы без питания. Ну, что ж, это нормально, ему нравится процесс DIY.

Не совсем понимаю? ядерный 1wire работает с датчиками (и другими устройствами) индивидуально.

Добрый день
У меня похожая ситуация - я замуровал в стяжку 10шт 1-wire датчиков ds18b20 но к порту w1 смог подключить только 5шт, при подключении остальных в логах показывается что ошибка чтения температуры. Как у топикстартера или не может прочитать или неверная контрольая сумма. Проблему решил подключением остальных к порту w2., Но теперь хочу добавить еще пару таких-же, но на каждом порту 1-wire получается лимит на 5 датчиков. Пробовал разные комбинации датчиков, ничего не меняется, 5шт и всё. Сами по себе они все работают как надо, проверял на raspberry-pi перед закладкой в пол. Датчики соединены звездой, от каждого датчика отдельный провод идет до контроллера, за 15ми до контроллера скручиваются все провода к одному такому-же и уже заходят в WB. Длина лучей до 20м. Подскажите, куда смотреть?

А как выполнена шина датчиков?

Ага, понятно. Никто не сможет гарантировать работоспособность такой топологии. Ну то что оно сейчас работает - уже неплохо.
Я бы задал вопрос проектировщику - как рассчитывалось такое подключение.

Из документации к 1-wire:

With standard speed the total capacitive load of the 1-Wire bus should not exceed 1nF, otherwise the passive pullup on threshold VIL1 may not be reached in the available time. With Overdrive speed the capacitive load on the 1-Wire bus must not exceed 300pF.

Учитывая что драйвер в контроллере реализован хорошо - можно принять предельную емкость шины ~7-8нф. Практика это подтверждает, при емкости больше 10нФ - уже ошибки.
Емкость трехметрового провода к самому датчику - уже около 150пФ, емкость метра витой пары ~50пФ.
Явно в расчеты которые проводились перед проектированием вкралась ошибка.

Спасибо за развернутый ответ, вы правы возможно была ошибка, т.к. проектирования вообще небыло. Мельком почитал спецификацию по контроллеру, почитал как лучше подключать (пришел к выводу что звездой) и закупился, проложил… А сейчас добрались руки до сборки этого всего.

@BrainRoot Подскажите, пожалуйста, можно сейчас что-то придумать или изменить чтобы все-таки это заработало?