Ventana Ground-Fault Board Analysis

P. McGill
v1.4.0, 8Aug23

The DTEC Ground Fault Monitor and Water Alarm Circuit board has an input resistor network that produces an output voltage Vf at point B in the circuit proportional to ground-fault resistance Rf. See McGill’s “general lab notebook” for equation derivation. Note that Vf is not the output of the circuit board—just the output of the input resistor network.

;

First find the voltage at point A in the input resistor network. This isn’t part of our calculation of Vf, but tells us what voltage is being applied to the circuits being monitored.

Va=60 ((1+1)/(2.2+1+1))

Note that the DTEC data sheet incorrectly lists this voltage as both 26.5 V and 25.6 V, but not 28.6 V.

Now find Vf as a function of the fault resistance Rf.

Vf=(60/2) (((Rf 2)/(Rf+2))/(2.2+((Rf 2)/(Rf+2))))

Plot[Vf,{Rf,0.001,10},GridLines->Automatic,PlotRange->{Automatic,{0,13}},Frame->True,FrameLabel->{"Fault Resistance (MΩ)","Output (V)"}]

Above is the output of the resistor network before the voltage goes through the buffer and isolation amps. The AD202K isolation amp input range is +/- 5 V, so it will limit the max output voltage to 5 V and we’ll be operating at the lowest end of the curve.

Plot[Vf,{Rf,0.001,10},PlotRange->{{0,0.6},{0,5}},GridLines->Automatic,Frame->True,FrameLabel->{"Fault Resistance (MΩ)","Output (V)"}]

The AD202K isolation amp is set up as an inverting amplifier, so the output voltage actually drops as the fault resistance increases. It is only by adjusting the offset potentiometer P1 to produce a positive offset of, say, +5 V that the board output can remain positive.

Plot[-Vf+5,{Rf,0.001,10},PlotRange->{{0,0.6},{0,5}},GridLines->Automatic,Frame->True,FrameLabel->{"Fault Resistance (MΩ)","Output (V)"},PlotLabel->"Output Voltage as a Function of Fault Resistance"]

According to the board setup procedure from DTEC, the board should produce 5.00 V with a 600 kΩ fault (offset adjustment P1), and 0.62 V with a 5 MΩ fault (gain adjustment P2). From these numbers we can find the required offset and gain.

To get a sense of what’s going on, find the output of the input resistor network when the fault is 600 kΩ (0.6 MΩ), and 5 MΩ.

V0p6=(60/2) (((0.6 2)/(0.6+2))/(2.2+((0.6 2)/(0.6+2))))

V5=(60/2) (((5 2)/(5+2))/(2.2+((5 2)/(5+2))))

Define a new function that defines the board output voltage in terms of the offset voltage Voff, the gain G, and the fault resistance Rf.

Vout[Voff_,G_,Rf_]:=Voff+G (60/2) (((Rf 2)/(Rf+2))/(2.2+((Rf 2)/(Rf+2))))

We should be able to reproduce the third plot on this page if we set Voff = 5 and G = -1.

Plot[Vout[5,-1,Rf],{Rf,0.001,10},PlotRange->{{0,0.6},{0,5}},GridLines->Automatic,Frame->True,FrameLabel->{"Fault Resistance (MΩ)","Output (V)"},PlotLabel->"Output Voltage as a Function of Fault Resistance"]

Find the offset and gain that produces the calibration values.

soln=NSolve[{Vout[Voff,G,0.6]==5,Vout[Voff,G,5]==0.62},{Voff,G}]

Note that the offset is more than 5 V and the gain is less than -1, so the graphs above don’t represent what the board actually outputs. To correct this, we can define a new output function that incorporates the calculated offset and gain values.

Vout[Rf_]:=Voff+G (60/2) (((Rf 2)/(Rf+2))/(2.2+((Rf 2)/(Rf+2))))/.First@soln

plt=Plot[Vout[Rf],{Rf,0.6,5},PlotRange->{{0,5},{0,5}},GridLines->Automatic,Frame->True,FrameLabel->{"Fault Resistance (MΩ)","Output (V)"},PlotLabel->"GF Board Output Voltage as a Function of Fault Resistance"]

Input the measured voltages produced by test resistances connected to a properly adjusted board (data provided by Duane Thompson).

drtDat={{0.6,5.000},{2.73,1.608},{3.03,1.410},{3.6,1.117},{4.42,0.796},{5,0.620}};

Grid[drtDat,Frame->All]

Plot the measured data on top of the calculated output curve.

Show[{plt,Graphics[{Red,PointSize[Large],Point[drtDat]}]}]

Find the test fault resistor that will produce a 2.5 V output (50% fault).

NSolve[Vout[Rf]==2.5,Rf]//First

This is 1.77 MΩ.

Find the inverse function that outputs resistance given the voltage and make a table that tells you what resistance produced the fault percentage shown on the Ventana GUI.

soln

soln2=NSolve[Vout==8.44789+-0.662762 (60/2) (((Rf 2)/(Rf+2))/(2.2+((Rf 2)/(Rf+2)))),Rf]//First

table=Grid[Prepend[Table[{NumberForm[Vout,{2,1}],Round[20 Vout],NumberForm[soln2[[1,2]],{3,2}]},{Vout,0,5,0.5}],{"Vout (V)","% FS","Fault (MΩ)"}],Frame->All]

csv=First@table

Export["VentanaGFTable.csv",csv]

Jose reports that the fault voltage changes depending on which side of an isolated power supply has the fault. According to the DTEC documentation, an isolated power supply should have its positive and negative terminals connected to a single ground-fault channel through two 1.2 MΩ resistors (the “sense block”). A dead short to seawater on either side of the power supply would result in a 600 kΩ impedance to the ground-fault channel, and show a 100% fault according to the table above.

Draw the input circuit with the sense block included.

;

Write the equations for Kirchoff’s current and voltage laws, assuming the ground fault is on the low side of the isolated power supply Viso. We want to find the five currents so we’ll need five equations. Note that the current through either a high- or low-side fault is i3. Assume that no current flows to the “hi Z” leg, which is the positive input to an op-amp.

eq1=i1-i2-i3==0

eq2=i3+i4-i5==0

eq3a=2.2 (10^6) i1+(Subscript[R, fl]) i3+1.2 (10^6) i5==60

eq4=2.2 (10^6) i1+2 (10^6) i2==60

eq5=1.2 (10^6) i4+1.2 (10^6) i5==(Subscript[V, iso])

Solve for the five currents for a low-side fault.

solnlow=Solve[{eq1,eq2,eq3a,eq4,eq5},{i1,i2,i3,i4,i5}]

This looks complicated but many of the terms are vanishingly small. Find the currents if we assume an isolated power supply of 24 V and a 1 MΩ low-side fault.

solnlow/.{(Subscript[V, iso])->24,(Subscript[R, fl])->1 (10^6)}//EngineeringForm

Find the fault voltage (Subscript[V, fl]) for a low-side fault on a 24 V isolated power supply.

(Subscript[V, fl24])=i2 (10^6)/.solnlow/.{(Subscript[V, iso])->24,(Subscript[R, fl])->1 (10^6)}//First

Repeat the calculation for a high-side fault on an isolated power supply. Only one equation changes.

eq3b=2.2 (10^6) i1+(Subscript[R, fh]) i3-1.2 (10^6) i4==60

Solve for the five currents for a high-side fault.

solnhigh=Solve[{eq1,eq2,eq3b,eq4,eq5},{i1,i2,i3,i4,i5}]

Find the currents if we assume and isolated power supply of 24 V and a 1 MΩ high-side fault.

solnhigh/.{(Subscript[V, iso])->24,(Subscript[R, fh])->1 (10^6)}//EngineeringForm

Find the fault voltage (Subscript[V, fh]) for a high-side fault.

(Subscript[V, fh24])=i2 (10^6)/.solnhigh/.{(Subscript[V, iso])->24,(Subscript[R, fh])->1 (10^6)}//First

Find the fault voltages for low- and high-side faults of 1 MΩ on a 5 V isolated supply.

(Subscript[V, fl5])=i2 (10^6)/.solnlow/.{(Subscript[V, iso])->5,(Subscript[R, fl])->1 (10^6)}//First

(Subscript[V, fh5])=i2 (10^6)/.solnhigh/.{(Subscript[V, iso])->5,(Subscript[R, fh])->1 (10^6)}//First

Find the fault voltages for low- and high-side faults of 1 MΩ on a 12 V isolated supply.

(Subscript[V, fl12])=i2 (10^6)/.solnlow/.{(Subscript[V, iso])->12,(Subscript[R, fl])->1 (10^6)}//First

(Subscript[V, fh12])=i2 (10^6)/.solnhigh/.{(Subscript[V, iso])->12,(Subscript[R, fh])->1 (10^6)}//First

Summarize the results in a table.

TextGrid[{{"1 MΩ Fault","5 V","12 V","24 V"},{"high-side",(Subscript[V, fh5]),(Subscript[V, fh12]),(Subscript[V, fh24])},{"low-side",(Subscript[V, fl5]),(Subscript[V, fl12]),(Subscript[V, fl24])}},Frame->All]

The fault voltage is affected by which side of the isolated power supply is faulted, and the change is increased for higher power supply voltages.