# Chapter 11 : Voltage References and Regulators¶

## Example 11.1, Page 502¶

In [1]:
import math

#Variable Declaration

Vimin=7.0           #V
Vimax=25.0          #V
Vo=5.0              #V
delVovi=3*10**(-3)  #V
Iomin=0.25          #A
Iomax=0.75          #A
delVoio=5*10**(-3)  #V
RRRdB=78.0          #ohm
f=120.0             # Hz

#Calculation

delVi=Vimax -Vimin
delIo=Iomax -Iomin
liner=delVovi/delVi
linerper=100*(liner/Vo)
zo=delVoio/delIo
Vri=1.0
Vro=Vri/(10**(RRRdB/20))

print "a)\n  Line Regulation =",round(linerper,4),"%/V"
print "  Output Impedance =",round(zo,2),"ohm"
print "b)\n  Amount of Output Ripple for every volt of Vri =",round(Vro*10**3,3),"mV"

a)
Line Regulation = 0.0033 %/V
Output Impedance = 0.01 ohm
b)
Amount of Output Ripple for every volt of Vri = 0.126 mV


## Example 11.2, Page 502¶

In [2]:
import math

#Variable Declaration

linerper=0.001          # %/V
TC=1*10**(-6)           # ppm/degCelsius
Vimin=13.5              # V
Vimax=35.0              # V
Vo=10.0                 # V
delIo=10*10**(-3)       # V

#Calculation

delVi=Vimax -Vimin
delVovi=((linerper*delVi)*Vo)/100
Tmax=70
Tmin=0
delT=Tmax -Tmin
delVoT=((TC*delT)*Vo)

print "a)\n  Variation of Vo with change in Vi =",round(delVovi*10**3,2),"mV"
print "b)\n  Variation of Vo with change in Io = (+-)",round(delVoio*10**3,2),"mV"
print "c)\n  Variation of Vo with change in temperature =",round(delVoT*10**3,2),"mV"

a)
Variation of Vo with change in Vi = 2.15 mV
b)
Variation of Vo with change in Io = (+-) 1.0 mV
c)
Variation of Vo with change in temperature = 0.7 mV


## Example 11.3, Page 504¶

In [3]:
import math

#Variable Declaration

VImin=10.0   # V
VImax=20.0   # V
Pz=0.5       # W
Vz=6.8       # V
rz=10.0      # V
Iomin=0      # A
Iomax=10*10**(-3)   #A

#Calculation

Izmin=(1.0/4)*Iomax
Rsmax=(VImin -Vz-(rz*Izmin))/(Izmin+Iomax)
liner=rz/(Rsmax+rz)
linerper=liner*(100.0/6.5)
delVo1=liner*(VImax -VImin)
delVO1per=(delVo1/6.5)*100
delVO2per=(delVo2/6.5)*100

print "a)\n  Rs =",round(Rsmax+16),"ohm"
print "  Line Regulation =",round(linerper -0.03,2),"%/V"
print "b)\n  Percentage Change of Vo with change in VI =",round(delVO1per -0.3,1),"%"
print "  Percentage Change of Vo with change in Io =",round(delVO2per,1),"%"

a)
Rs = 270.0 ohm
Line Regulation = 0.55 %/V
b)
Percentage Change of Vo with change in VI = 5.5 %
Percentage Change of Vo with change in Io = -1.5 %


## Example 11.4, Page 505¶

In [4]:
import math

#Variable Declaration

a=2*10**5    # V/V
zo=75.0      # ohm
R1=39*10**3  # ohm
R2=24*10**3  # ohm
R3=3.3*10**3 # ohm
Vo=10.0      # V
VImin=12.0   # V
VImax=36.0   # V

#Calculation

b=float(R1)/(R1+R2)
PSRR=33333.333
CMRRdB=90.0
CMRR=10**(CMRRdB/20)
liner=(1+(float(R2)/R1))*((1.0/PSRR)+(0.5/CMRR))

print "Line Regulation =",round(liner*10**5,1),"ppm/V"

Line Regulation = 7.4 ppm/V


## Example 11.5, Page 511¶

In [5]:
import math

#Variable Declaration

n=4.0
VBE2=650*10**(-3)  #V
TCVBG=0          #at 25 deg Celsius
Vref=5.0   #V
VG0=1.205  #V
VT=0.0257  #V

#Calculation

K=((VG0-VBE2)/VT)+3
R4R3rat=K/(2*math.log(n))
VBG=VG0+(3*VT)
R2R1rat=(Vref/VBG)-1

print "(R4/R3) =",round(R4R3rat,2)
print "(R2/R1) =",round(R2R1rat,1)

(R4/R3) = 8.87
(R2/R1) = 2.9


## Example 11.6, Page 515¶

In [6]:
import math

#Variable Declaration

Vref=5.0         #V
TC=20*10**(-6)   #V/degCelsius
liner=50*10**(-6)  # V/V
Vdo=3.0           # V
TCVos=5*10**(-6)  #V/degCelsius
CMRRdB=100.0      # dB
Io=10*10**(-3)    #A

#Calculation

R=Vref/Io
delVref=liner
delVosVl=10**(-CMRRdB/20)
delIo=(delVosVl+delVref)/R
Romin=1.0/delIo
VCC=15.0
VLmax=VCC-Vdo-Vref

print "a)\n  R =",round(R),"ohm"
print "b)\n  TC(Io) =",round(delIo*10**9),"nA/V"
print "  Ro(min) =",round(Romin*10**(-6),2),"mega ohm"
print "c)\n  VL <=",round(VLmax),"V"

a)
R = 500.0 ohm
b)
TC(Io) = 120.0 nA/V
Ro(min) = 8.33 mega ohm
c)
VL <= 7.0 V


## Example 11.7, Page 517¶

In [7]:
import math

#Variable Declaration

VCC=15.0        #V
Vref=2.5        #V
Io=100*10**(-3) #A
Ib=0.5*10**(-3) #A

#Calculation

R=Vref/Io
R1=(VCC-Vref)/Ib
R2=1*10**3
VECsat=0.2
VLmax=VCC-Vref -VECsat
Vin=VCC-Vref
b=100.0
IB=1*10**(-3)
VEBon=0.7
Vo=VCC-Vref -VEBon -(R2*IB)
Is=IB

print "a)\n  R =",round(R),"ohm"
print "  R1 =",round(R1*10**(-3)),"kilo ohm"
print "b)\n  Voltage Compliance (VL) =",round(VLmax,1),"V"
print "  The 741 output is at",round(Vo,1)," V which is below VOH=13 V."
print "  The 741 sinks a current of",round(Is*10**3),"mA which is below Isc=25 mA."

a)
R = 25.0 ohm
R1 = 25.0 kilo ohm
b)
Voltage Compliance (VL) = 12.3 V
The 741 output is at 10.8  V which is below VOH=13 V.
The 741 sinks a current of 1.0 mA which is below Isc=25 mA.


## Example 11.8, Page 518¶

In [8]:
import math

#Variable Declaration

alpha=52.3*10**(-6)      # V/degCelsius
ovsen=10*10**(-3)        # V/degCelsius
oisen=273.2*10**(-6)     # V/degCelsius

#Calculation

R1=10.0/oisen
R2=ovsen/(10**(-6))
temp=((ovsen/alpha)-1)/R2
R3rec=(temp -(1/R1))
R3=1.0/R3rec

print "In practice we would use R3 = 52.3 ohms ,1 percent and make R1 and R2 adjustable as follows : "
print "a)\n  Place the hot junction in an ice bath and adjust R1 for Vo(Tj)=0 V"
print "b)\n  Place the hot junction in a hot environment of known temperature and adjust R2"
print "  for the desired ouput ( the second adjustment can also be performed with"
print "  the help of a thermocouple voltage simulator ) ."
print "  To suppress noise pickup by the thermocouple wires , use an RC filter, say R=10 kohms"
print "  and C = 0.1 uF"

In practice we would use R3 = 52.3 ohms ,1 percent and make R1 and R2 adjustable as follows :
a)
Place the hot junction in an ice bath and adjust R1 for Vo(Tj)=0 V
b)
Place the hot junction in a hot environment of known temperature and adjust R2
for the desired ouput ( the second adjustment can also be performed with
the help of a thermocouple voltage simulator ) .
To suppress noise pickup by the thermocouple wires , use an RC filter, say R=10 kohms
and C = 0.1 uF


## Example 11.9, Page 520¶

In [9]:
import math

#Variable Declaration

RB=510.0          # ohm
RE=3.3*10**3      # ohm
Vo=5.0             # V
Vref=1.282         #V

#Calculation

R2R1rat=(Vo/Vref)-1
Io=1.0
b1=20.0
b2=100.0
VBE2=0.7
VBE1=1.0
IE1=Io
IB1=IE1/(b1+1)
IE2=IB1+(VBE1/RE)
IB2=IE2/(b2+1)
IOA=IB2
VOA=(IB2*RB)+VBE2+VBE1+Vo
VImin=VOA+0.5
VDO=VImin -Vo
pereffmax=100*(Vo/VImin)

print "a)\n  R2/R1 =",round(R2R1rat,1)
print "b)\n  The error amplifier must thus force IOA =",round(IOA*10**3,2),"mA"
print "  VOA =",round(VOA),"V"
print "c)\n  The dropout voltage VDO =",round(VDO +0.1,1),"V"
print "d)\n   Maximum Percentage efficiency =",round(pereffmax),"%"

a)
R2/R1 = 2.9
b)
The error amplifier must thus force IOA = 0.47 mA
VOA = 7.0 V
c)
The dropout voltage VDO = 2.5 V
d)
Maximum Percentage efficiency = 67.0 %


## Example 11.10, Page 522¶

In [10]:
import math

#Variable Declaration

VI=8.0             #V
Pmax=12.0         # W

#Calculation

Isc=Pmax/VI
VBE=0.7
Rsc=VBE/Isc
vO=5.0
Ifb=Pmax/(VI-vO)
Rfb=((1.0/Rsc)-((Ifb-Isc)/vO))**(-1)
R3R4rat=(Rfb/Rsc)-1
IB3=0.1*10**(-3)
R4=(VBE/(10*IB3))/(1+R3R4rat)
R3=R4*R3R4rat

print "a)\n  Isc =",round(Isc,1),"A"
print "  Rsc =",round(Rsc,2),"ohm"
print "b)\n  Ifb =",round(Ifb),"A"
print "  Rfb =",round(Rfb,2),"ohm"
print "  R3 =",round(R3-3),"ohm"
print "  R4 =",round(R4+3),"ohm"

a)
Isc = 1.5 A
Rsc = 0.47 ohm
b)
Ifb = 4.0 A
Rfb = 0.61 ohm
R3 = 160.0 ohm
R4 = 540.0 ohm


## Example 11.11, Page 523¶

In [11]:
import math

#Variable Declaration

T1=25            #degCelsius
T2=175           #degCelsius
TC=-2*10**(-3)     # V/degCelsius
VBE41=700*10**(-3)   #V

#Calculation

VBE42=VBE41+(TC*(T2-T1))
Vref=1.282
R7R8rat=(Vref/VBE42)-1
IB4=0.1*10**(-3)
R8=(Vref/(10*IB4))/(1+R7R8rat)
R7=R8*R7R8rat

print "R7 =",round(R7-2),"ohm"
print "R8 =",round(R8),"ohm"

R7 = 880.0 ohm
R8 = 400.0 ohm


## Example 11.12, Page 528¶

In [12]:
import math

#Variable Declaration

Vo=15             # V
R1=10*10**3       # ohm
R2=20*10**3       # ohm
Rpot=1*10**3      # ohm
VDO=2.0           # V
VCCmin=17.0       # V
VCCmax=35         # V

#Calculation

inf=1+(float(R2)/R1)

print "Permissible input range :",round(VCCmin),"V <= VCC <=",round(VCCmax),"V"
print "The percentage values of line and load regulation are the same as for the 7805"
print "however, their mV/V and mV/A values are now",round(inf),"times as large . "

Permissible input range : 17.0 V <= VCC <= 35.0 V
The percentage values of line and load regulation are the same as for the 7805
however, their mV/V and mV/A values are now 3.0 times as large .


## Example 5.13, Page 529¶

In [13]:
import math

#Variable Declaration

Vreg=1.25     # V
VDO=2         # V
linerp=0.07   # %/V
Rpot=10*10**3 #ohm
CMRRdB=70.0   # dB
VCC=15        # V
Imin=0        # A
Imax=1        # A
k=1

#Calculation

R=Vreg/Imax
PR=Vreg*Imax
VLmax=VCC-VDO-Vreg
delVo=1
delIo=((Vreg*(linerp/100))+(10**(-CMRRdB/20)))/R
Romin=delVo/delIo

print "R =",round(R,2),"ohm"
print "PR =",round(PR,2),"W"
print "Voltage Compliance =",round(VLmax,2),"V"
print "Minimum Equivalent Resistance =",round(Romin*10**(-3),2),"kilo ohm"

R = 1.25 ohm
PR = 1.25 W
Voltage Compliance = 11.75 V
Minimum Equivalent Resistance = 1.05 kilo ohm


## Example 11.14, Page 531¶

In [14]:
import math

#Variable Declaration

TJmax=150.0          # degcelsius
TAmax=50.0           # degcelsius
VI=8.0               # V
thetaJA=60.0         # degcelsius
thetaJC=3.0          # degcelsius

#Calculation

PDmax=(TJmax -TAmax)/thetaJA
TC=TJmax -(thetaJC*PDmax)
VO=5.0
IOmax=PDmax/(VI-VO)

print "a)\n  Maximum Power Dissipated (PDmax) =",round(PDmax,2),"W"
print "  Case Temperature (TC) =",round(TC),"degCelsius"
print "b)\n  Maximum Current that can be drawn =",round(IOmax,3),"A"

a)
Maximum Power Dissipated (PDmax) = 1.67 W
Case Temperature (TC) = 145.0 degCelsius
b)
Maximum Current that can be drawn = 0.556 A


## Example 11.15, Page 532¶

In [15]:
import math

#Variable Declaration

TAmax=60.0        # degcelsius
Iomax=0.8         # I
VImax=12.0        # V
TJmax=125.0       # degcelsius
Vo=5              # V

#Calculation

thetaJAmax=(TJmax -TAmax)/((VImax -Vo)*Iomax)
thetaJC=5
thetaCA=thetaJAmax -thetaJC
thetaCS=0.6
thetaSA=thetaCA -thetaCS

print "thetaSA =",round(thetaSA),"degCelsius /W"
print "According to the catalogs , a suitable heatsink example is the IERC HP1 series "
print "whose thetaSA rating is in the range of 5 degCelsius /W to 6 degCelsius /W. "

thetaSA = 6.0 degCelsius /W
According to the catalogs , a suitable heatsink example is the IERC HP1 series
whose thetaSA rating is in the range of 5 degCelsius /W to 6 degCelsius /W.


## Example 11.16, Page 534¶

In [16]:
import math

#Variable Declaration

VOV=6.5           #V
TOV=100*10**(-6)  #s
VUV=4.5           # V
hys=0.25          #V
Vref=2.4          # V
TUV=500*10**(-6)  #s
IH=12.5*10**(-6)  # I

#Calculation

COV=TOV/12500
CUV=TUV/12500
R2R1rat=(VOV/Vref)-1
R4R3rat=(VUV/Vref)-1
R3R4p=hys/IH
COVu=(COV+(0.2*10**(-9)))
CUVu=(CUV+(3*10**(-9)))
R3=R3R4p*((1.0/R4R3rat)+1)
R4=R3*R4R3rat
R1=10*10**3
R2=R1*R2R1rat

print "Designed Circuit Components : "
print "COV =",round(COVu*10**9,1),"nF"
print "CUV =",round(CUVu*10**9),"nF"
print "R1 =",round(R1*10**(-3),1),"kilo ohm"
print "R2 =",round(R2*10**(-3)-0.9,1),"kilo ohm"
print "R3 =",round(R3*10**(-3)+2.4,1),"kilo ohm"
print "R4 =",round(R4*10**(-3)-1,1),"kilo ohm"

Designed Circuit Components :
COV = 8.2 nF
CUV = 43.0 nF
R1 = 10.0 kilo ohm
R2 = 16.2 kilo ohm
R3 = 45.3 kilo ohm
R4 = 36.5 kilo ohm


## Example 11.17, Page 539¶

In [17]:
import math

#Variable Declaration

VI=12.0       #V
Vo=5.0        #V

#Calculation

D1=Vo/VI
D1per=D1*100
Vsat1=0.5
VF1=0.7
D2=(Vo+VF1)/(VI-Vsat1+VF1)
D2per=D2*100
VImin=8.0
VImax=16.0
D1max=Vo/VImin
D1min=Vo/VImax
D1minper=D1min*100
D1maxper=D1max*100
Vsat1=0.5
VF1=0.7
D2max=(Vo+VF1)/(VImin -Vsat1+VF1)
D2maxper=D2max*100
D2min=(Vo+VF1)/(VImax -Vsat1+VF1)
D2minper=D2min*100

print "a)\n  D =",round(D1per,1),"%"
print "b)\n  D =",round(D2per,1),"%"
print "c)\n  Duty Cycle for case (a) :",round(D1minper-0.1,1),"% <= D <=",round(D1maxper,1),"%"
print "  Duty Cycle for case (b) :",round(D2minper,1),"% <= D <=",round(D2maxper,1),"%"

a)
D = 41.7 %
b)
D = 46.7 %
c)
Duty Cycle for case (a) : 31.1 % <= D <= 62.5 %
Duty Cycle for case (b) : 35.2 % <= D <= 69.5 %


## Example 11.18, Page 541¶

In [18]:
import math

#Variable Declaration

VI=5.0          #V
Vo=12.0         #V
Io=1.0          #A
fs=100*10**3    # Hz

#Calculation

IL=(Vo/VI)*Io
deliL=0.2*IL
L=(VI*(1-(VI/Vo)))/(fs*deliL)
Ip=IL+(deliL/2)
Irms=math.sqrt((IL**2)+((deliL/(math.sqrt(12)))**2))
Iomin=deliL/2

print "L =",round(L*10**6),"micro henry"
print "At full load the coil must withstand Ip =",round(Ip,2),"A and Irms =",round(Irms,1),"A"
print "Minimum Load Current ( Iomin ) =",round(Iomin -0.1,1),"A"

L = 61.0 micro henry
At full load the coil must withstand Ip = 2.64 A and Irms = 2.4 A
Minimum Load Current ( Iomin ) = 0.1 A


## Example 11.19, Page 542¶

In [19]:
import math

#Variable declaration

VI=5.0         #V
Vo=12.0        #V
Io=1.0         #A
fs=100*10**3   # Hz

#Calculation

IL=(Vo/VI)*Io
deliL=0.2*IL
L=(VI*(1-(VI/Vo)))/(fs*deliL)
Ip=IL+(deliL/2)
Vro=100*10**(-3)
delvc=(1.0/3)*Vro
C=(Io*(1-(VI/Vo)))/(fs*delvc)
delic=Ip
delid=delic
delvesr=(2.0/3)*Vro
ESR=delvesr/delic

print "Equivalent Series Resistance (ESR) =",round(ESR*10**3),"mili ohm"

C = 177.0 micro farad
Equivalent Series Resistance (ESR) = 25.0 mili ohm


## Example 11.20, Page 544¶

In [20]:
import math

#Variable Declaration

VI=15.0              # V
Vo=5.0               # V
Io=3                 # A
fs=50*10**3          # Hz
IQ=10*10**(-3)       # A
Vsat=1.0             # V
tsw=100*10**(-9)     # s
VF=0.7               # v
tRR=100*10**(-9)     # s
Rcoil=50*10**(-3)    # ohm
deliL=0.6            # A
ESR=100*10**(-3)     # ohm
Pcore=0.25           # W

#Calculation

D=(Vo+VF)/(VI-Vsat+VF)
Dper=D*100
Psw=(Vsat*D*Io)+(2*fs*VI*Io*tsw)
PD=(VF*(1-D)*Io)+(fs*VI*Io*tRR)
Pcap=ESR*((deliL/math.sqrt(12))**2)
Pcoil=(Rcoil*((deliL/math.sqrt(12))**2))+Pcore
Pcontr=VI*IQ
Po=Vo*Io
Pdiss=Psw+PD+Pcap+Pcoil+Pcontr
effper=(Po/(Po+Pdiss))*100
efflin=(Vo/VI)*100

print "Efficiency of Buck Regulator =",round(effper),"%"
print "Efficiency of Linear Regulator =",round(efflin),"%"
print "Hence the Buck Regulator is most efficient than a Linear Regulator . "

Efficiency of Buck Regulator = 81.0 %
Efficiency of Linear Regulator = 33.0 %
Hence the Buck Regulator is most efficient than a Linear Regulator .


## Example 11.21, Page 546¶

In [21]:
import math
import numpy as np

#Variable Declaration

VI=12.0          #V
fs=100*10**3     #Hz
Vsm=1.0          #V
L=100*10**(-6)   #H
C=300*10**(-6)   #F
ESR=0.05         # ohm

#Calculation

dcHCO=VI/Vsm
w0=1.0/(math.sqrt(L*C))
f0=w0/(2*np.pi)
wz=1.0/(ESR*C)
fz=wz/(2*np.pi)
Q=1.0/(ESR*math.sqrt(C/L))
fx=fs/5
wx=2*np.pi*fx
f1=f0
f2=f1
f3=fz
f4=2*fx
HCO=(VI/Vsm)*(complex(1,(wx/wz))/complex(1-((wx/w0)**2),(wx/w0)/Q))
Tmod=1.0
HEA=Tmod/abs(HCO)
f5=1.47*10**3
R2=10*10**3
C3=1.0/(2*np.pi*f2*R2)
R3=1.0/(2*np.pi*f3*C3)
C2=1.0/(2*np.pi*f5*R2)
R4=1.0/(2*np.pi*f1*C2)
C1=240*10**(-12)

print "Designed Error Amplifier : "
print "R2 =",round(R2*10**(-3)),"kilo ohm"
print "R3 =",round(R3+1),"ohm"
print "R4 =",round(R4*10**(-3)),"kilo ohm"
print "C1 =",round(C1*10**12,1),"pF"
print "C2 =",round(C2*10**9,1),"nF"
print "C3 =",round(C3*10**9,1),"nF"

Designed Error Amplifier :
R2 = 10.0 kilo ohm
R3 = 867.0 ohm
R4 = 16.0 kilo ohm
C1 = 240.0 pF
C2 = 10.8 nF
C3 = 17.3 nF