from __future__ import division
# Given data
V1 = 18 # in V
V2 = 10 # in V
R = 270 # in ohm
I_S = (V1-V2)/R # in A
V_L = 10 # in V
R_L = 1 # in K ohm
R_L = R_L*1000 # in ohm
I_L = V_L/R_L # in A
I_Z = I_S-I_L # in A
print "The zener current = %0.1f mA" %(I_Z*10**3)
# Given data
I_Z = 2*10**-3 # in A
R_Z = 8.5 # in V
del_VL = I_Z*R_Z # in V
V1 = 10 # in V
print "Change in load voltage = %0.2f V" %del_VL
V_L = V1 + del_VL # in V
print "The load voltage = %0.2f V" %V_L
# Note: There is calculation error to evaluate the value of del_VL. So the answer in the book is wrong.
# Given data
R_L = 1.2 # in K ohm
R_L = R_L * 10**3 # in ohm
V_i = 16 # in V
R_i = 1 # in K ohm
R_i = R_i * 10**3 # in ohm
V = (R_L * V_i)/(R_L + R_i) # in V
V_L = V # in V
print "The load voltage = %0.2f V" %V_L
V_R = V_i - V_L # in V
print "The voltage = %0.2f V" %V_R
I_Z = 0 # A
print "The zener diode current = %0.f A" %I_Z
V_Z = 10 # in V
P_Z = V_Z*I_Z # in W
print "Power dissipation = %0.f watt" %P_Z
# Given data
I_Z1 = 20 # in mA
I_Z1= I_Z1*10**-3 # in A
I_Z2 = 30 # in mA
I_Z2= I_Z2*10**-3 # in A
V_Z1 = 5.6 # in V
V_Z2 = 5.75 # in V
del_IZ = I_Z2-I_Z1 # in A
del_VZ = V_Z2-V_Z1 # in V
r_Z = del_VZ/del_IZ # in ohm
print "Resistance of zener diode = %0.f ohm" %r_Z
# Given data
R = 1 # in K ohm
R = R * 10**3 # in ohm
V_Z = 10 # in V
V_i = 50 # in V
I_ZM = 32 # in mA
I_ZM= I_ZM*10**-3 # in A
R_Lmin = (R*V_Z)/(V_i-V_Z) # in ohm
print "The minimum value of R_L = %0.f ohm" %R_Lmin
V_R = V_i-V_Z # in V
I_R = V_R/R # in A
I_Lmin = I_R-I_ZM # in A
print "The minimum value of I_L = %0.f mA" %(I_Lmin*10**3)
R_Lmax = V_Z/I_Lmin # in ohm
print "The maximum value of R_L = %0.2f kohm" %(R_Lmax*10**-3)
# Given data
V_Z = 20 # in V
R_L = 1.2 # in K ohm
R_L = R_L * 10**3 # in ohm
R = 220 # in ohm
I_ZM = 60 # in mA
I_ZM= I_ZM*10**-3 # in A
Vi_min = (R_L + R)/R_L*V_Z # in V
print "The minimum value of Vi = %0.2f V" %Vi_min
V_L= V_Z # in V
I_L= V_L/R_L # in A
Vi_max= (I_ZM+I_L)*R+V_Z # in V
print "The maximum value of Vi = %0.2f V" %Vi_max
# Given data
V1 = 18 # in V
V2 = 270 # in V
R = 1 # in K ohm
R = R*1000 # in ohm
V = (V1*R)/(V2+R) # in V
print "The open circuit voltage = %0.1f volts" %V
if V>=10 :
print "The zener diode is operating in the breakdown region."
# Given data
R_L = 300 # in ohm
R = 200 # in ohm
V_i = 20 # in V
V = (R_L/(R_L+R))*V_i # in V
print "The value of V_L = %0.f Volts" %V
V_L = 10 # in V
V_Z= V_L # in V
I_L = V_L/R_L # A
print "The value of I_L = %0.2f mA" %(I_L*10**3)
I_R = (V_i-V_L)/R # in A
print "The value of I_R = %0.f mA" %(I_R*10**3)
I_Z = I_R-I_L # in A
print "The value of I_Z = %0.2f mA" %(I_Z*10**3)
# Formula V_Z= R_L*V_i/(R_L+R)
R_L= R*V_Z/(V_i-V_Z) # in ohm
print "The value of R_L = %0.f ohm" %R_L
# Given data
V_Z = 5 # in V
I_Zmin = 2 # in mA
I_Zmin= I_Zmin*10**-3 # in A
I_Zmax = 20 # in mA
I_Zmax=I_Zmax*10**-3 # in A
R_L = 1 # in kohm
R_L = R_L * 10**3 # in ohm
I_L = V_Z/R_L # in A
I = I_L + I_Zmin # in A
Vin_min = V_Z + (I*R_L) # in V
print "The minimum input voltage = %0.f V" %Vin_min
I = I_L + I_Zmax # in A
Vin_max = V_Z + I* R_L # in V
print "The maximum input voltage = %0.f V" %Vin_max
# Given data
V_in1 = 18 # in V
V_in2 = 22 # in V
V_o = 6 # in V
I_L = 50 # in mA
I_L= I_L*10**-3 # in A
I_Zmin = 5 # in mA
I_Zmin= I_Zmin*10**-3 # in A
P_Z = 0.5 # in Watt
V_Z= 6 # in V
I_Zmax = P_Z/V_Z # in A
print "Zener diode current = %0.2f mA" %(I_Zmax*10**3)
R_S1 = (V_in2 - V_Z)/(I_L+I_Zmax) # in ohm
print "The minimum value of Rs = %0.f ohm" %R_S1
R_S2 = (V_in1-V_Z)/(I_L+I_Zmin) # in ohm
print "The maximum value of Rs = %0.1f ohm" %R_S2
# Given data
R_S = 91 # in ohm
V_Z = 8 # in V
P_Z = 400 # in mW
P_Z= P_Z*10**-3 # in W
R_L = 0.22 # in K ohm
R_L = R_L * 10**3 # in ohm
I_L = V_Z/R_L # in A
I_Z = P_Z/V_Z # in A
print "The value of I_Zmax = %0.f mA" %(I_Z*10**3)
Vin_min = (V_Z*(R_S+R_L))/R_L # in V
print "The minimum input voltage = %0.2f V" %Vin_min
I_R = I_L + I_Z # in A
Vin_max = V_Z + (I_R*R_S) # in V
print "The maximum input voltage =%0.2f V" %Vin_max
# Given data
V_L = 12 # in V
I_Lmin = 0 # in mA
I_Lmin =I_Lmin *10**-3 # in A
I_Lmax = 200 # in mA
I_Lmax =I_Lmax *10**-3 # in A
I_Zmin = 5 # in mA
I_Zmin= I_Zmin*10**-3 # in A
I_Zmax = 200 # in mA
I_Zmax= I_Zmax*10**-3 # in A
V_i = 16 # in V
V_Z = V_L # in V
print "The value of V_Z = %0.f V" %V_Z
R_Lmin = V_L/I_Lmax # in ohm
print "The minimum value of R_L = %0.f ohm" %R_Lmin
# R_L2 = V_L/I_Lmin # in ohm
print "The maximum value of R_L = infinite"
I_Z = I_Zmin+I_Zmax # in A
print "The zener current = %0.f mA" %(I_Z*10**3)
P_Zmax = V_Z*I_Z # in Watt
print "The maximum value of Pz = %0.2f Watt" %P_Zmax
R_S = (V_i-V_L)/(I_Zmin+I_Lmax) # in ohm
print "The value of R_S = %0.2f ohm" %R_S
# Given data
V_in = 20 # in V
R_S = 220 # in ohm
V_Z = 10 # in V
P_Z = 400 # in mW
# Part (I)
R_L = 200 # in ohm
print "Part (I) For R_L= 200 Ω"
V_L = V_Z # in V
print "Load voltage = %0.f V" %V_L
I_L = V_L/R_L # in A
print "Load current = %0.2f A" %I_L
I_R = (V_in-V_Z)/R_S # in A
print "The current through resistor = %0.3f A" %I_R
I_Z = I_R-I_L # in A
print "The value of I_Z = %0.2e A" %I_Z
# Part (II)
R_L = 50 # in ohm
print "Part (II) For R_L= 50 Ω"
V_L = V_Z #
print "Load voltage = %0.f V" %V_L
I_L = V_L/R_L # in A
print "Load current = %0.1f A" %I_L
I_R = (V_in-V_Z)/R_S # in A
print "The current through resistor = %0.3f A" %I_R
I_Z = I_R-I_L # in A
print "Zener current = %0.3f A" %I_Z
print "For both values of R_L, the current I_R is less than I_L and I_Z is negative."
print "It shows that given circuit can not work successfully as a voltage regulator"
# Given data
I_Zmin = 1 # in mA
I_Zmin=I_Zmin*10**-3 # in A
I_Zmax = 5 # in mA
I_Zmax=I_Zmax*10**-3 # in A
I_Lmin = 0 # in mA
I_Lmin=I_Lmin*10**-3 # in A
I_Lmax = 4 # in mA
I_Lmax=I_Lmax*10**-3 # in A
R = 5 # in kohm
R = R * 10**3 # in ohm
V_Z = 50 # in V
print "Part (A)"
V_max = (I_Zmax+ I_Lmin)*R+V_Z # in V
print "The maximum Voltage = %0.f V" %V_max
V_min = (I_Zmin+I_Lmax)*R + V_Z # in V
print "The minimum Voltage = %0.f V" %V_min
print "Part (B)"
V_L = 50 # in V
V_in = 75 # in V
R_L = 15 # in kohm
R_L= R_L*10**3 # in ohm
I_L = V_L/R_L # in A
V_max = (I_Zmax+I_L)*R+V_Z # in V
print "The maximum Voltage = %0.f V" %round(V_max)
V_min = (I_Zmin+I_L)*R+V_Z # in V
print "The minimum Voltage = %0.f V" %round(V_min)
# Given data
V_S = 7.5 # in V
V_Z = 5 # in V
R_S = 4.75 # in ohm
I_Zmin= 0.05 # in A
I_Zmax=1.0 # in A
I_S = (V_S-V_Z)/R_S # in A
I_Lmax= I_S-I_Zmin # in A
print "The maximum value of load current = %0.3f A" %I_Lmax
# when
V_S= 10 # in V
I_S = (V_S-V_Z)/R_S # in A
I_Lmin= I_S-I_Zmax # in A
print "The minimum value of load current = %0.2f A" %I_Lmin
print "Thus, the range of load current for regulation =",round(I_Lmin,2),"<= I_L <=",round(I_Lmax,3),"A"