I'm thinking to connect about 50 slave Arduinos on 1 master using TX/RX. I'm following recommendation of these links:

using the cathode of diode connected to slaves TX pins and pulling up this line, like this image:

Async multi-drop diode isolation

In Arduino - Digital Pins, when pin is set to input (high impedance), it is "equivalent to a series resistor of 100 MΩ in front of the pin". Slave RX line has input (RX pin) in parallel, then, if this 'equivalent resistor' is true, we have a low resistance (duo parallel configuration) that burn the master TX. Is it make sense?

I have not found either in the Arduino or the ATmega documentation, if TX port have the internal pullup on. In ATmega documentation, TX pin is set as output and RX pin as input. The TTL logic is high on idle, then 5 V must be sourced from somewhere, correct?

  • 1
    Might want to use RS-485. Jun 29 '18 at 16:17
  • RS-485 is limited to 32 devices. For now, I need to use only TX/RX to communicate between master and slaves. It works for a master and 2 slaves. But, I'm worried when I connect 50 slaves and burn the master TX.
    – Mario J.
    Jun 29 '18 at 18:30
  • The number of devices depends on the bus driver. With "Fractional Unit-Load devices" you can have as many as 255 devices on a single bus segment. It is also possible to use multiple segments (repeater). Jun 29 '18 at 20:25
  • I checked RX (input) port in Arduino and it have 5 V and drain 0.14 mA. Then, RX is internal pulledup. But, ATmega 328P documentation say that internal pullup resistor is optional and USART section, at same documentation, have not mention about pullup TX.
    – Mario J.
    Jul 1 '18 at 18:05

An input pin draws 1uA or less input current, so more like 1 Megohm resistor, not 100 Megohm.

In an Uno, the USB interface chip typically is what is pulling the Tx and Rx lines high with 5mA drive (high output thru a 1K resistor to D0 or D1).

What you have drawn should work. The pullup resistor will ensure the Rx into the 1st Arduino sees a nice crisp high when the other two stop pulling the line low as they send a message out, and the diodes will prevent the one driving the line high while the other pulls it low.

  • The Arduino - Digital Pins official documentation inform a 100 Megohms resistance to out the pin as input (high impedance). Reading Arduino Schematic, the RX and TX pins in ATmega 328 is connected to ATmeg82U. Maybe this CI can source 5 V to RX/TX. But I'm not using USB to power up Arduinos. I'm using UNO and Minipro powered up through 5 V Vin. Then, I do not know where come 5 V to pulling pins high.
    – Mario J.
    Jun 29 '18 at 18:25
  • There are other mistakes in Arduino documentation as well, 100 Megohm is just one of them. The Atmega328P data sheet clearly says maximum input current is no more than 1uA. V=IR, or V/I = R. 1V/.000001A = 1,000,000 ohm resistor. Maybe 5 Megohm if you want to consider a 5V input and 1uA of current.
    – CrossRoads
    Jun 29 '18 at 18:27
  • 1
    @CrossRoads, how does a 100MΩ resistor violate the "max 1μA" requirement?
    – jsotola
    Jun 29 '18 at 23:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.