1

I need two Arduino devices (Arduino Mega and Nano) to communicate with each other via UART. The two Arduino devices are long distance apart from each other. The distance is 1.5 meters.

  • The Arduino 1 TX pin is connected to Arduino 2 RX pin.
  • The Arduino 1 RX pin is connected to Arduino 2 TX pin.

Now, I have to use resistor to preform impedance termination so that the long distance does not cause transmitting and receiving issues between the two devices. I did some research and found an image that shows the signal differences when impedance termination is preformed and when it is not.

enter image description here

I have two questions:

1. Since the distance between both Arduino devices is 1.5 meters, what resistor value should I use? How is that calculated?

2. Where do you put the resistors? It's not really clear on where to connect the resistors. Between ground and the RX pins on each device?

I don't know the gauge ratings of my wire but if that information is needed, I am using this wire.

2
  • How it all works with line impedances is explained in this old education video: AT&T Archives: Similiarities of Wave Behavior
    – KIIV
    Commented Nov 25, 2018 at 22:20
  • @KIIV Nice video. I wonder why those old education videos are more comprehensive than modern education videos in Universities.
    – Programmer
    Commented Nov 25, 2018 at 22:46

1 Answer 1

2

The relevant parameter is not the length of the link, but its characteristic impedance. For a twisted pair connection, this is typically in the order of 100 to 120 Ω. It should be specified in the datasheet. Your cable is not a twisted pair, but its geometry is quite close. Just make sure that there is a ground or Vcc line between the two data wires in order to minimize cross-talk. If you want to compute that impedance yourself, here is an online calculator.

Connect the resistor in series with the TX pin, i.e. between the pin and the data wire. Note that the pin already has an internal output resistance of about 25 Ω, so you would add no more than 100 Ω in series.

If you search online about termination resistors, you may learn tat they are often put between the receive pin and ground, or even at both the sending and the receiving end. In high frequency applications, the latter is often the preferred configuration, as it prevents the signal to be reflected from either end of the link. However, for logic-level signals, that configuration would attenuate the signal too much. On the other hand, terminating only at the receiver would put excessive load on the TX pin. Thus, sender-side termination is your best option. A resistor in series with TX does not prevent a reflection at the RX end, but it prevents the reflected signal to be reflected again and cause oscillations.

5
  • Not sure what you mean as "resistor in series with the TX pin". You mean a resistor from TX pin(Arduino 1 ) to RX pin(Arduino 2). A little image with the drawing would be helpful...
    – Programmer
    Commented Nov 25, 2018 at 21:30
  • A resistor in the tx to rx line between the two Arduino boards. At the tx terminal connect the resistor, the other side of the resistor connects to the wire.
    – Rudy
    Commented Nov 25, 2018 at 22:18
  • @Programmer: You cannot put a resistor between TX1 and RX2, unless the resistor is 1.5 m long. You have to put it between TX1 and the wire that goes to RX2, as explained by Rudy. See amended answer. Commented Nov 25, 2018 at 22:19
  • @Rudy That's what I though. Was just making sure it's what Edgar meant.
    – Programmer
    Commented Nov 25, 2018 at 22:39
  • @EdgarBonet Not what I meant. I know the resistor is not that long and meant adding it between the connection TX and RX. Your EDIT is clearer and it makes sense it adding the resistor to the sending side.
    – Programmer
    Commented Nov 25, 2018 at 22:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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