Fareed Mohmed← All projects

Info page · no simulation · Arduino and electronics

Underground Cable Fault Locator (Learning Model)

How the distance to a short-circuit in a cable is found from its resistance, with an Arduino model that uses resistors as cable sections.

This topic cannot be run safely or meaningfully in the simulator, so this page explains it with diagrams, calculations and sample code instead. Everything here is original.

What you will learn

  • Why the resistance of a cable tells you the distance
  • How a voltage divider and the analog pin measure it
  • What real utilities use to find faults

In short

A copper cable has a fixed resistance for every kilometre. If the cable is shorted to ground at some point, a measurement from the test end sees only the resistance up to the fault. The longer that stretch, the higher the resistance. The Arduino reads this with a voltage divider and works out the distance. The model uses resistors for the kilometres and switches for the faults.

Try this next

  • Add an LCD that shows the fault distance in kilometres.
  • Add a buzzer that sounds if the voltage is below 0.1 V (short at the test end).
  • Use 10 Ohm sections and a constant current source for a better result.

The model

5 VRrefto A01 km2 km3 km4 kmcable endfault switch 1fault switch 2fault switch 3fault switch 4GND

The 5 V supply drives Rref (1 kilo-ohm) and then the cable sections in series, 1 kilo-ohm for each kilometre. A fault switch to ground after section n makes the cable resistance n kilo-ohm. The voltage at A0 is the divider voltage.

CaseResult with Rref = 1 k
Fault after 1 kmR = 1 k, A0 = 2.50 V
Fault after 2 kmR = 2 k, A0 = 3.33 V
Fault after 3 kmR = 3 k, A0 = 3.75 V
Fault after 4 kmR = 4 k, A0 = 4.00 V
No fault (open end)A0 = 5 V

The maths

const float R_REF = 1000.0;      // ohm
const float R_PER_KM = 1000.0;   // ohm per kilometre in this model

void setup() { Serial.begin(9600); }

void loop() {
  float v = analogRead(A0) * 5.0 / 1023.0;
  if (v > 4.9) {
    Serial.println("No fault: cable is open at the far end");
  } else {
    float r = R_REF * v / (5.0 - v);
    Serial.print("Fault distance: ");
    Serial.print(r / R_PER_KM, 1);
    Serial.println(" km");
  }
  delay(1000);
}

How real utilities find faults

Warning: real cables carry 11 kV or more. Fault finding on live or charged cables must only be done by trained staff with permits. Our model uses 5 V only.

Parts list

PartWhat to look for
Arduino UnoAnalog pin A0
Resistors 1 k, 1/4 W, 5 pieces4 for sections, 1 for Rref
Push switches or jumper wires, 4Fault switches to GND
Breadboard and wiresFor the ladder