# Arduino long distance cable tester

We have a 50 pair cable running about 1.5-2 KM with some services running on different pairs. One pair has recently become intermittent and is losing connection for 1-2 seconds at random. It might happen a few times an hour, so I jumped the service onto another pair. There is a modem connected to the pair for communication between two sites.

When resistance tested with a multi meter with a loop in one end it was reading 330 Ohms. When using an oscar meter it was reading -2.4db which is the same readings for other pairs.

I would like to use an Arduino to monitor the line resistance for a few days and see if there are any spikes or breaks in the line. I was going to use an analog input as a multimeter by using a known resistor and the looped pair as the other resistor.

Does anybody think this will not work?

Sure, no reason that wouldn't work. For best results you want a known resistor of about the same resistance as, or a little below, the one you are measuring.

However, if what you are seeing is an actual open circuit then there's little benefit to measuring the resistance - you may as well just treat it as a switch or button, give it a large pullup, and use a digital input (or even an interrupt) to give a simple "OK / ERROR" signal.

• It does not appear to be an open circuit i think. But i was worried the 5v dc wont get around the line and back with voltage drop? – Omasín Nov 3 at 22:52
• The voltage drop is dependent on the current and the resistance, and the current is dependent on the resistance and the voltage... (simple Ohm's Law). If you use a 100Ω resistor that's 430Ω with 5V across it, which gives you 11.6mA flowing through the cable. – Majenko Nov 3 at 22:55
• Thanks. I will try tomorrow. When i connect 12v to the line i only read 8v coming back on my multimeter which is confusing me. – Omasín Nov 4 at 0:13
• That statement makes no sense. If you have a closed loop there is no "coming back" to measure. – Majenko Nov 4 at 0:15
• Picture this. Positive lead connected to one wire of the pair. Pair looped/shorted at far end. Mete probe connected to returning wire and other probe to negative lead of power supply. Reading 8v. – Omasín Nov 4 at 0:36

For data communications the problem is often more complicated than DC resistance. Data signals are AC, and subject to impedance, (not simple resistance) inductance, and capacitance, as well as RF interference. A pair that's fine for slow on/off switching of DC signals may not be fine for higher frequency data signals.

You can also get intermittent shorts between wires in one pair and other pairs, even if the connection between the wires in the test pair are fine.

Back in the day I worked for a company that sold and serviced mini-computers to the US House of Representatives. The house offices would run serial cables up through walls and ceilings, and also under carpets. We had some flaky cables, and finally figured out that the offices would run the cables under the carpet, but over carpet tack strips. As people walked over the carpet, it would sometimes cause the tack strips to poke through the insulation, causing shorts and RF noise in the cables, which would mysteriously go away later.

Checking DC resistance will let you find breaks in your wires, but you can't assume that if the DC resistance looks good, the pair is good.

I would suggest using a simple voltage divider and one of the input lines on the Arduino for simple resistance testing, but that will only get you so far.

What you really want is a signal generator and an oscilloscope. You should send test signals (With voltages and signal patterns that resemble your data signals) down one pair at a time, and look at the signals on the far end, checking all the pairs. You should see your test signal come through, with the wave pattern still recognizable on the target pair, and no significant leaking of the signal to other pairs.