Arduino UART (TX/RX) multidrop 1 master 50 slaves

Я думаю подключить около 50 ведомых ардуино к 1 ведущему с помощью TX/RX. Я следую рекомендации этих ссылок:

используя катод диода, подключенного к ведомым выводам TX, и вытягивая эту линию, как на этом изображении:

Async multi-drop diode isolation

В Arduino - цифровых выводах, когда вывод установлен на вход (высокий импеданс), он "эквивалентен последовательному резистору 100 МОМ перед выводом". Ведомая линия RX имеет вход (вывод RX) параллельно, тогда, если этот "эквивалентный резистор" верен, у нас есть низкое сопротивление (конфигурация duo parallel), которое сжигает главный TX. Есть ли в этом смысл?

Я не нашел ни в Arduino, ни в документации ATmega, если порт TX имеет внутреннее подтягивание. В документации ATmega вывод TX установлен в качестве выходного, а вывод RX-в качестве входного. Логика TTL высока на холостом ходу, тогда 5 В должны быть откуда-то получены, верно?

, 👍-2

Обсуждение

Возможно, вы захотите использовать RS-485., @Mikael Patel

RS-485 ограничен 32 устройствами. На данный момент мне нужно использовать только TX/RX для связи между ведущим и ведомым устройствами. Он работает для мастера и 2 рабов. Но я волнуюсь, когда подключаю 50 ведомых устройств и сжигаю главный TX., @Mario J.

Количество устройств зависит от драйвера шины. С помощью "Устройств с дробной единичной нагрузкой" вы можете иметь до 255 устройств на одном сегменте шины. Также возможно использование нескольких сегментов (ретранслятор)., @Mikael Patel

Я проверил порт RX (input) в Arduino, и он имеет 5 В и сток 0,14 мА. Затем RX-это внутреннее подтягивание. Но, [ATmega 328P documentation](http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega328_P%20AVR%20MCU%20with%20picoPower%20Technology%20Data%20Sheet%2040001984A.pdf) скажем, что внутренний подтягивающий резистор является необязательным, и раздел USART, в той же документации, не упоминает о подтягивающем TX., @Mario J.

хороший проект. Работает ли это до сих пор? Я собираюсь сделать что-то подобное. какие диоды я должен выбрать для этого?, @Chris

@Chris, я использовал 1N4700. Я использовал это для подключения 72 ардуино, но я мультиплексировал линии, чтобы получить максимум 18. У меня есть некоторые проблемы из-за длины кабелей (некоторые с 10 м), но работал с уважением., @Mario J.


1 ответ


0

Входной контакт потребляет 1uA или меньше входного тока, так что больше похоже на резистор 1 Мом, а не на 100 Мом.

В Uno чип интерфейса USB обычно является тем, что тянет линии Tx и Rx высоко с приводом 5mA (высокий выход через резистор 1K к D0 или D1).

То, что вы нарисовали, должно сработать. Подтягивающий резистор гарантирует, что Rx в 1-м Arduino увидит хороший четкий максимум, когда два других перестанут тянуть линию низко, когда они отправят сообщение, а диоды будут препятствовать тому, чтобы один вел линию высоко, а другой тянул ее низко.

,

[Arduino - Цифровые контакты](https://www.arduino.cc/en/Tutorial/DigitalPins) официальная документация сообщает о сопротивлении 100 Мом для вывода контакта в качестве входного сигнала (высокий импеданс). Чтение [Схема Arduino](https://www.arduino.cc/en/uploads/Main/arduino-uno-schematic.pdf), контакты RX и TX в ATmega 328 подключены к ATmeg82U. Может быть, этот CI может передавать 5 В на RX/TX. Но я не использую USB для питания ардуино. Я использую UNO и Minipro с питанием от 5 Vin. Тогда я не знаю, откуда берутся 5 В для вытягивания высоких штифтов., @Mario J.

В документации Arduino есть и другие ошибки, 100 Мегом-лишь одна из них. В техническом паспорте ATmega328P четко указано, что максимальный входной ток составляет не более 1uA. V=IR, или V/I = R. 1V/.000001A = 1,000,000 Ом резистор. Может быть, 5 Мегом, если вы хотите рассмотреть вход 5 В и ток 1уА., @CrossRoads

@CrossRoads, как резистор 100 Мом нарушает требование "max 1μA"?, @jsotola