Electronic – How to estimate characteristic impedance for a random cable and tolerance of the termination resistor

characteristic-impedancetransmission line

When we have a source with 50 Ohm output impedance we use a coaxial cable with a 50 Ohm characteristic impedance. And if we don’t know the output impedance then we use a 50 Ohm termination resistor at the receiver end. These are the remedy for reflection issue for the high frequency component of the transmitted signal.

But in practice we don’t always use 50 Ohm coax but a randomly picked cable or pair of twisted wires. Imagine we need to send a differential signal such as with a RS422/485 interface. Now what I read is that the termination resistor at the receiver end must be equal to the cable’s characteristic impedance.

Now the issue is what if we don’t know the characteristic impedance of the cable or the twisted pair we run how can we estimate it? Is there an estimate if we know the AWG and length for instance?

And secondly, let us now assume we figured out the cable’s characteristic impedance as 120 Ohm, does the termination resistor need to be exactly 120 Ohm in practice or a 150 Ohm would suffice?(Assuming knowing at this step the characteristic impedance and the pulse transmission frequency)

(I know theres a huge theory behind the topic but I was wondering whether there are some methods when it comes to practice)

Best Answer

It seems there's a fairly simple way to get a good approximation of the impedance of a random piece of cable.

It requires a fast oscilloscope, a pulse generator with a fast rising edge, and a potentiometer with a range that includes the cable's impedance (cable impedance is usually less than 500 ohms.) The cable you want to test must also be long enough that your scope can detect the reflection. The faster the scope, and the faster the rising edge of the signal, the shorter your test cable can be.

Summary of the method:

  1. Estimate the reflection time. That's approximately \$ \frac { 2\times l} {0.66 \times c}\$ where \$c\$ is the speed of light in meters (around 300 meters per microsecond) and \$l\$ is the length in meters.
  2. Set the oscilloscope to a sampling rate and sample depth adequate to capture at least the estimated reflection time.
  3. Make sure that the pulses from the generator are spaced farther apart than the reflection time.
  4. Attach the signal generator to the scope input, and from there to the cable you are testing. The cable to test and the cable to the signal generator join in a "T" at the oscilloscope input. Make sure the scope is set to high impedance (1M) if it has a low impedance mode.
  5. Start the generator, and check that you are getting a reflection (with an ended open cable, it should be a somewhat smeared version of the generator pulse.)
  6. Adjust the scope to trigger on the signal, not the reflection.
  7. Attach a potentiometer across the open end of the cable. Preferably one somewhat close to a reasonable estimate of the cable impedance (couple of hundred ohms, but definitely not 10k.)
  8. Adjust the potentiometer to minimize the reflection.
  9. Disconnect the potentiometer from the cable and measure the value.

The measured value won't be extremely precise, but then impedance matching doesn't require matching down to a fraction of an ohm (or even single digit ohms.)

To take your example of terminating a 120 ohm cable with a 150 resistor, the reflection would be about 19dB weaker than the signal. So the reflection is a bit more than 0.01 times the driving signal. Makes about 0.05 volts of reflection for a drive signal of 5V. Try the suggested method for measuring the reflection, but use different fixed resistors and see how big (or small) the reflection is.


I've not used this method myself, so I can't tell you how difficult it is to carry out or if there are any pitfalls to watch out for.

Maybe you could give it a try and write up your experience with it as a more detailed version of this answer.


Added later:

I was going to let this go, but I ended up having to go to my work room to fix a problem with my mail server. While waiting for some (big) files to copy, I went ahead and tried out the impedance measurement trick.

It turns out to be pretty simple, and can be done even with an old, slow analog oscilloscope. My scope is too slow to measure cable lengths that way, but it can surely show you if your cable is matched.

You can use pretty much any oscilloscope and a simple pulse generator. The slower the scope, though, the longer your test cable must be to make a noticable reflection. The pictures below were all made using a 5 meter cable. A two meter cable still shows reflections, but they aren't as distinct. Anything shorter than 2 meters will require a faster scope than I am using. As the cables get longer, you will see the reflections actually move away from the rising edge of the signal and become separate pulses.

Simplifed steps:

  1. Program an Arduino Nano to generate a 1MHz pulse, with the shortest possible duty cycle. That's about 12.5% using the TimerOne Library.
  2. Set the scope so that you can see a 1 MHz signal - mine goes up to 0.5 microseconds per division.
  3. Connect the Nano output to your scope input using a T.
  4. Observe the waveform - it should be a narrow square wave with somewhat rounded shoulders.
  5. Connect the cable to test to the other end of the T.
  6. You'll see a horribly distorted square wave.
  7. Attach a potentiometer to the open end of the cable.
  8. Tune the potentiometer until you get the nice, clean square wave back, but with maximum peak voltage.
  9. Remove the potentiometer and measure the resistance.

It looks like this:

Setup:

enter image description here

The results look like this:

No cable:

enter image description here

Cable with open end:

enter image description here

If my scope were ten times faster (50 nanoseconds per division instead of 500) then you could just about measure the length of the cable. You don't need to measure the cable length to see the distortion, though. That slight "dog leg" on the rising edge of each pulse is the length of the cable - rather, twice the length. Out and back.

Properly terminated cable:

enter image description here

I used a proper terminator, but the effect would be the same if you attach a small potentiometer directly to the end of the cable and tune it for best match. As mentioned above, you want to make it clean but not unduly squashed. If you make the resistance too low, the level will drop and get distorted again. You want the cleanest and highest signal you can get.

Notice that the voltage is higher without the attached test cable than with the properly terminated cable. The Nano has to drive a 50 ohm load when the terminator is present. Its outputs appear to have a just a bit less than 50 ohms impedance, so the level drops with the terminator present - the output impedance and the terminator form a voltage divider. From the voltages measured, I'd estimate the output impedance of the Nano at around 30 ohms.

So, you can measure the impedance of a cable with fairly primitive tools and still get usable results.

You can also get a direct comparison of just how bad a mismatch is. Measure the cable impedance, then intentionally terminate it with a resistor that is slightly off. You can then see just how horrible (or not) it is.


Since the code is pretty short, here's the Nano program to generate the pulses:

#include <TimerOne.h>

#define SIGNAL_OUT_PIN 9
#define DUTYCYCLE_ON 128 /// 128/1024 gives a 12.5% duty cycle.  The Nano won't produce a shorter wave.
#define PERIOD 1 //1 microsecond period for 1 MHz


void setup() {
  pinMode(SIGNAL_OUT_PIN, OUTPUT);
  Timer1.initialize(1);
  Timer1.pwm(SIGNAL_OUT_PIN,DUTYCYCLE_ON,PERIOD);
}

void loop() {

}