Подключение ds2406 в длинную шину с несколькими ds18b20

библиотека для 1w какая?
Импульс обведенный оранжевым - нормальный, это промежуток между записью двух нулевых бит, в принципе я бы везде сделал паузу между битами больше.
Это скрин обмена промышленного контроллера.

Получается, что мастер 8 бит заслал, 2406 ему ответил 10, мастер говорит - давай, первый, пищи дальше. А тот все, не могёт.

думается мне надо шину через спец микруху организовывать, я ее помоему даже заказывал на али , надо поискать , не помню маркировку
вот пишут , до 100м и даже до 300м шину делать можно. Какие 10м , Карл.
и устройств туева хуча.

щас поищу , вродe DS2480 у меня где то

да самая простая OneWire. Пример Sample

Там токо про питание пишется, а у тебя оно нормальное (как я полагаю).

про питание на даче 5В взято с 7805, 1А держит она. А щас при тестах просто с ардуины 5В взял

Я бы повисел на нем осциллографом (2406 side), потому что иных предположений у меня более нет.

И, судя по написанному, топология до 30 м - хоть звезда, хоть клубок? Интересно, конечно.

Я бы для интереса другую библиотеку попробовал, на esp32 у меня похожая ситуация была, все работало, затем обновилась версия платформы (в platformio, проект постоянно дописывал) и датчики начали отваливаться, в итоге написал свою библиотеку.

вот интересная статья - там есть примеры осциллограм проблем на шине, у меня таких проблем вроде как и нет

В осциллограммах особых косяков не заметил. Я бы добавил на плату с ds2406 , по питанию конденсатор 10 - 100мкф, а, непосредственно на выводы микросхемы ещё и керамический/плёночный примерно 0.1мкф

я пробовал кондеры прям рядом с платой подвешивать - без резульата. Щас снял осцилку питания прям на DS2406. Ни иголок, ничего. Даже намека на проседание

вот вторым каналом на месте провала питание прям на плате 2406 Никаких иголок

Возможно, из-за ёмкости длинной шины сбиваются немного тайминги. И данные теряются. Можно “покурочить” библиотеку, или написать свои функции… Но это на любителя, я когда-то игрался)).
Но сначала я бы попробовал ds2406 купленные в другом месте, может эти просто глючные, низкого качества

Тут нужно таймслоты перемерять, конечно. Или ЛА схватить или нормальным осциллограффом, который dT покажет точно.
Однако, говоря субъективно, радикальных отличий в картинке живого ответа от обрывочного, я не наблюдаю.

Это да, но мы ведь не видим по этим картинкам, какая там синхронизация, где выборки происходят. Если уже на границе тайм-слота, то достаточно нескольких us…

Я вот сообразить в ночи не могу что-то - мастер задом наперёд биты шлёт или они инвертированы быть должны? 00001111 выходит со старта. А в коде посылается 0xF0.

По коду так с младшего лупит.

for (bitMask = 0x01; bitMask; bitMask <<= 1) {
	OneWire::write_bit( (bitMask & v)?1:0);
    }
void peredacha() {
  for (int i = w; i < (w + 2); i++) {
     byte temp_byte = 1;
    for (byte fd = 0; fd < 8; fd++) {
      if (temp_tx[i] & temp_byte) { //0                    // пока эта часть сырая, потом упакую в цикл
        peredacha_1bit();                             // проверяем , начиная с младшего, биты в байте команды
      }
      else {                                          // и устанавливаем соответствующее значение на шину
        peredacha_0bit();
      }
      temp_byte = temp_byte << 1;
    }
  }
}

Мастер шлёт , начиная с младшего бита.
Функцию писал, только начиная осваивать ардуино, специально ничего не менял, оставил на память, посмеяться, если что…))

Нет, лог 1 передавал так))

void peredacha_1bit() {      // передача лог 1 ( 1 бит )
  low();                     // 13мкс на переходные процессы
  // уст. низкий логический уровень
  delayMicroseconds(2);      // задержка 2мкс перед тайм-слотом
  high();                    // 5мкс на переходные процессы
  // уст высокий лог.уровень отпускаем шину
  delayMicroseconds(48);     // ввод значения в устр-во в течении 48мкс
}

Дак вот я и не пойму - почему на осциллограмме наоборот. Таблеток мне тут передавали, что ли…

Мысля первая. Если взять DS18B20, повесить рядом с поплавком, включить контакты поплавка в разрыв data-линия то, опрашивая этот даллас можно знать состояние контактов. Такой вариант не катит?
Мысля вторая. Сделать подтяжку линии с ds-ми не резистором, а токовую. Или вариант - подтяжка резистором 10 кОм, подключенным на 12 В. Смысл в том, что заряд емкости линии будет быстрее, и фронты не будут заваливаться. Только на линии в неактивном состоянии будет 5,6 В. Я таких экспериментов не проводил.

Есть ещё вариант попробовать ds2405. в чип и дипе под заказ. Но у них только паразитное питание и один канал . Корпус то92.

Я не помню сколько проводов на поплавке. Если там есть нз контакты, тот как вариант , да , можно попробовать в разрыв датчика t. Датчик отвалился - значит говностанция переполнилась.