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



