Continuity Checking

Hi all,

I would like to test continuity from one end of a harness to another. Each end has 110 connections.

I would like to automate this test as it's quicker than using a DVM!

As I'm limited by the number of I/O pins available on an Arduino, does anyone have any thoughts on how this can be achieved?

Ideally I would like to pulse a pin and read the other end as an input. All the other inputs will be read to make sure no voltage is read back for each pin. This will inform me of any shorts and do a proper cross check on all pins.

Thanks in advance!

Perhaps doing a internet search on the words "arduino time domain reflectometry" may give you a few ideas.

I’m not really interested in the characteristics of the wires just the continuity end to end.


Bunch of shift registers will do the job.

With a little smart programming you can also identify wrongly connected wires (e.g. "pin 18 from side A is connected to pin 83 on side B").

I may assume these 110 wires have connectors on either end.

Yes, they have connectors on each end.

Is there a relatively simple way of performing this check using multiplexers etc?

I'm not really interested in the characteristics of the wires just the continuity end to end.

Or, do a site search on 'continuity'.

Very simple.

Set one end to low, pull-up resistor on the other end. High reading is no contact, low reading is contact. For good measure enable only one output at a time and check all inputs to see whether it's maybe connected to another one.

Thanks wvmarle ,

I have done this for a small number of connections successfully, the challenge is doing it for 110 connections and knowing which hardware to use.

For the outputs: 74HC595 shift registers. 14 of them. Shift in 112 1s, then a single 0. Do measurement. Shift in a 1. Do measurement. Repeat for 110 times, and the 0 has passed by all wires.

Input side: 74HC165 shift registers. Add a pull-up resistor to every single input (1k-10k between input and Vcc).

For each measurement: read out all inputs; check that they are all 1s except where you expect the 0 (from the corresponding output). If so, it's connected. If you find a 0 elsewhere, it's wrongly connected. If you find no 0, it's not connected.

This whole process an Arduino can do in a fraction of a second.

Of course you can also use pull-down resistors and reverse all the bits. I'm just used to working with pull-ups as you use on buttons. Remember to add a 100 nF decoupling cap to the supply pins of every single shift register.