Несколько выходных датчиков UART на один последовательный порт [закрыто]

Я хотел бы подключить 4 выходных датчика UART к одному последовательному порту моего контроллера. Расстояние между датчиками и контроллером будет около 10 м. Изначально я думал использовать 485 в качестве физического уровня (трансиверы SP3485). Датчик UART --> SP3485 -- (485 слой) -- SP3485 --> Контроллер UART. Отдельная цепь, управляемая по току, будет выполнять работу по выбору датчика, разрешая выход передачи для каждого датчика (контакты DE/RE' SP3485) 2,5 мА - Включение передачи от датчика 1 7,5 мА - Включение передачи от датчика 2 12,5 мА - Включение передачи от датчика 3 17,5 мА - Включить передачу от датчика 4

Есть ли другие идеи или предложения?

Почему не стандартный RS232? Расстояние 10 м не так уж много с приличными экранированными кабелями. Но это будет зависеть от вашей скорости передачи данных.
В дополнение к тому, что RS485 является дифференциальным, обычно считается, что он имеет передатчики, которые можно отключить, чтобы разрешить шинную проводку, а RS232 - нет. Тем не менее, действительно можно делать собственные ремиксы - даже (в случае короткого диапазона) с использованием выходных уровней MCU, поскольку практически любую линию передачи UART современного MCU можно отключить, перенастроив ее как вход GPIO.
Если вы включаете передатчики асинхронно, независимо от того, когда они пытаются говорить, вам может понадобиться код для идентификации и удаления фрагментированных сообщений от них. Вам также понадобится какой-то способ сказать, кто из них говорит, если в их сообщениях не закодирована идентичность. В большинстве шинных установок RS485 используется протокол программного уровня, в котором ведомые устройства говорят только при запросе (по настроенным логическим адресам) ведущим.
Большое спасибо вам за вашу поддержку! RS232 - вариант, но я думал использовать 485 для лучшей шумоизоляции (скорость передачи будет 9600). Контроллер всегда будет запрашивать информацию/статус/данные измерений от датчиков, но только «активный» датчик будет передавать ответ!
Обратите внимание, что одним из обязательных требований драйверов и приемников RS485 является то, что они обеспечивают высокий импеданс, когда они выключены (по сути, обесточенное устройство становится почти невидимым для шины). С другой стороны, RS232 не предъявляет таких требований, и устройство без питания, скорее всего, перегрузит шину, что сделает ее непригодной для использования.
Использование динозавра RS232 для каких-либо целей — довольно плохая идея. Нет никаких причин, по которым вы не должны использовать RS422/RS485, если только вам не нужна обратная совместимость.

Ответы (2)

Наконец, я попробую связь RS232 (поскольку на контроллере есть один порт RS232...

Замыкание на стороне контроллера...введите описание изображения здесь

Цепь со стороны датчика...

введите описание изображения здесь

Это ответ или часть вопроса?

Я не пробовал это на большом расстоянии, но вы можете сделать это:

Со стороны контроллера линия TX может идти ко всем датчикам RX. На стороне контроллера вы подтягиваете линию RX с помощью резистора (холостой UART - это 1 логика). Для каждого датчика вы подключаете диод Шоттки с катодом к датчику TX. Это дает вам операцию ИЛИ, которая лучше, чем полагаться на датчики, чтобы освободить линию до высокого Z, и не требует изменения их кода для этого. При условии, что датчики всегда говорят что-то после выдачи команды, вы можете использовать одну линию для связи, как в ответе здесь Связь Tx/Rx UART между 2 MCU по 1 линии