Как отнести цифровой датчик более чем на 50 метров от Arduino?

Есть цифровой датчик температуры ds18b20 подключенный к Arduino на расстоянии провода до 15 метров все работает хорошо. (Использовал сетевой провод витая пара.)
На расстоянии в 25 метров частые прерывания показаний с датчика. Более 50 метров датчик не посылает сигнала.
А мне надо отнести от Arduino четыре таких датчика, каждый на сто метров. (на длину сельскохозяйственной фермы)
Прочитал что длинный провод работает как конденсатор и цифровой сигнал в нем пропадает.
Что можно сделать.
  • Вопрос задан
  • 15582 просмотра
Решения вопроса 1
@chapter13
Из простых решений - уменьшить величину резистора подтяжки. Можно для удобства применить переменный резистор типа 3296 на 4,7 кОм. Шина 1-wire будет работать при сопротивлении резистора подтяжки от 1 кОм.
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
1-wire протокол може передавать данные на расстоянии до 500 м, но!
- надо использовать экранированную витую пару
- использовать специальный драйвер
- не использовать паразитное питание
- топология подключения датчиков - общая шина

Так что если вам надо несколько датчиков по 100 м от хоста каждый - надо к каждому вести отдельную линию (а не подключать на общую шину) + подключать не просто на ногу ардуино, а через драйвер.
Есть application note на
ту тему, и схема продвинутого драйвера 1-wire сети
Хотя если прикинуть расходы на кабель, драйверы - то возможно действительно лучше сделать по радио или же свой протокол по проводу.
Ответ написан
Neuroware
@Neuroware
Программист в свободное от работы время
Используй связь по радио, модули для связи на 50 метров стоят копейки, а на них можно почти полноценный UART по радио поднять.
Ответ написан
ilyaplot
@ilyaplot
PHP программист
Используйте витую пару или экранированный провод. Если это не поможет, придется использовать что-то вроде xbee или rs-485
Ответ написан
@Eddy_Em
1-wire для таких расстояний не предназначен. Этот псевдопротокол годится лишь для расстояний не больше метра от микроконтроллера.
Если нужно так сильно разносить, то проще взять дешевый МК (скажем, STM8S003 - совсем копейки) и преобразователь уровней (RS-232, CAN или RS-485 - что больше по нраву), так и связать — чтобы и протокол был более приличным, и передача данных по дифлинии происходила. Ну или вообще радио, как предложили.
Ответ написан
love_energy
@love_energy
Для такого расстояния подходит RS-485. Потребуется использовать вторую Arduino, которая будет "умным" датчиком и будет соединятся со первой через микросхемы-преобразователи. Либо, если требуется связь с ПК, использовать RS-485->USB-преобразователь и тогда вторая плата не потребуется.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы