Free Shipping on orders over US\$49.99

# A safe adjustable regulator – EDN

Figure 1 shows a typical using of LM350 (LM317) adjustable regulator when you need to adjust its output voltage. This voltage is approximately given here as:

eo = Vref * (R2/R1 + 1)

The potentiometer R2 is often the most unreliable part of the circuit. As shown in the expression above, a breakdown of the potentiometer (e.g., loss of contact, open circuit) maximizes the effective value of R2, making the output voltage maximal also—about only 1.5 V lower than the input voltage.

Wow the engineering world with your unique design: Design Ideas Submission Guide

This may be not a very big problem when the adjustments are rare, and the safety of the load has no critical importance.  But, when you want to make frequent adjustments, or the load is not known beforehand—like in the case of a laboratory power supply—the circuit in Figure 2a may be far better choice. However, this circuit cannot regulate its output voltage down to the low limit Vref; this is its limitation.

There are several alternative configurations of safe adjustable regulators that more or less avoid the danger of the overreach. The safest case, where output voltage drops very close to Vref, would demand 3 or 4 extra parts (i.e., resistors and transistors); so, let’s look at a configuration with more compromise in Figure 2b. This circuit can regulate its output voltage down to the low limit Vref. The output voltage (if a breakdown of potentiometer Rp occurs) is about 2…5 volt, which is a compromise.

Since a calculation of the circuit in Fig2c is not very straightforward, some path of the calculation will be provided here as a Python code.

The circuit has two ranges of the output voltages: from eo11 to eo12, and from eo21 to eo22 (see code). The range is selected by a switch Sw (e.g., nJFET, nFET, or any good mechanical, reed relay).

Please note: if the resistors R11 and Rp are too large to provide the minimal load needed by the regulator IC (up to 10 mA max), the output may rise out of control if the total load is too light.

To avoid this, it may be wiser to begin a calculation choosing any appropriate value for R11.

You have to provide the values of Rp and range(s) as well.

This code calculates R22 and R23:

#-code-begins
R11=560   # Ohm
Rpot=2180  # Ohm</p/>

eo11=1.25  #V
eo12=5.6   #V
eo21=5.4    #V
eo22=23.0   #V

Vref=1.25  #V
print()

# Let
K12 = eo12/Vref – 1
K21 = eo21/Vref – 1
K22 = eo22/Vref – 1
Rp = Rpot

from math import sqrt

def checkEq(R11, R22, R23):
Rx=R11 – Ra/K12
if Rx != 0: print(“Err R11:”, Rx)

Rx=R22*R23/(R22+R23) – K21*(Rp+R11)
if Rx != 0:  print(“Err (2):”, Rx)

Rx=R11 – (R22*(Rp+R23)/(R22+Rp+R23) / K22)
if Rx != 0:  print(“Err (3):”, Rx)
return

def par(r1,r2): return(r1*r2/(r1+r2))

eo=eo12
R1 = R11
R2 = R1*((eo/Vref) -1)
R22 = R2*Rpot / (Rpot – R2)

eo=eo21   #5.1V
#R1 = R11 + R21*Rpot / (R21 + Rpot)
#R2 = R1*(eo/Vref -1)
#R23 = R2

#eo=eo22   #24V ??

#R1 = R11
#R2 = R23 + R22*Rpot / (R22 + Rpot)
#eo = Vref*(R2/R1 + 1)
#eo22 = eo

#Let
K12 = eo12/Vref – 1
K21 = eo21/Vref – 1
K22 = eo22/Vref – 1
Rp = Rpot
Ra = par(Rp,R22)

w3=K22/K21
A=w3*(R22 – K21*Rp) – R22
B=w3*R22*(R22+Rp) – Rp*(w3*K21*(Rp+R22)-R22) – R22*R22
C=Rp*R22*(0-w3*K21*(R22+Rp)-R22)

Q=B*B – 4*A*C
#print(A, B, C, Q)
if Q<0: exit(” Exit: Q<0, try another values for R11, Rpot, or ranges”)

R23_1 = (0-B + sqrt(Q)) /2/A
R23_2 = (0-B – sqrt(Q)) /2/A
print(”   R23_1, R23_2=”, R23_1, R23_2)
# since R23 should be > 0:
if R23_1>0:  R23=R23_1
elif R23_2>0:  R23=R23_2
else:  print(“Error: both R23_1, R23_2 are not positives”)

# recalc eoij for a coherence check
eo12=Vref*(par(Rp,R22)/R11 +1)
eo21=Vref*(par(R23,R22)/(Rp+R11) +1)
eo22=Vref*(par(R22,R23+Rp)/R11 +1)
# update
K12 = eo12/Vref – 1
K21 = eo21/Vref – 1
K22 = eo22/Vref – 1

print(“Fig2c:”, f” eo12={eo12:.2f}”, f” eo21={eo21:.2f}”, f” eo22={eo22:.2f}”)
print(“Fig2c:”, f” Rpot={Rpot:.1f}”, f” R11={R11:.1f}”, f” R22={R22:.1f}”, f” R23={R23:.1f}”)
checkEq(R11, R22, R23)

# since the solution we got may be very sensitive due to a possible presence of a singular point in its vicinity (i.e. a small deviation of a resistor’s value can have large impact on the voltage) – hence 2 conclusions follows:
# – tolerances of resistors R11, R22, R23 have to be not worse than 1%;
# – the solution above has to be considered as a preliminary one, so we’ll make it more precise by the following code:

R23lim=100*R23
R23=R23/3
while R23 < R23lim:
eo21_x=Vref*(par(R23,R22)/(Rp+R11) +1)
eo22_x=Vref*(par(R22,R23+Rp)/R11 +1)
if eo21_x – eo21 > 0.2: break
if abs(eo22 – eo22_x) < 0.1: break    # if eo22-x – eo22 < 0.1: break
R23 += 10   # +10 Ohm
else:  exit(“full cycle”)
print( f” eo21={eo21_x:.2f}”, f” eo22={eo22_x:.2f}”,  f” R23={R23:.1f}”)

#-end-of-code-

The 50 μA (typ.) current iA from the adjustment terminal, representing an error term, makes a voltage drop on R23. Together with a nominal 1.25V reference voltage, Vref, this drop determines the output voltage when a breakdown of potentiometer Rp occurs:

eoBreak = iA * R22 + Vref

So, when decreasing the value of R22 you can decrease—to some extent—the value of eoBreak.

Peter Demchenko studied math at the University of Vilnius and has worked in software development.

Related Content

We will be happy to hear your thoughts Enable registration in settings - general
• Total (0)
0