%matplotlib inline
# variable declaration
delVZ=50*10**-3; #voltage in volts, from graph
delIZ=5*10**-3; #current in amperes, from rgraph
#calculation
ZZ=delVZ/delIZ; #zener impedence
# result
print "zener impedance = %d ohm " %ZZ
# variable declaration
I_ZT=37*10**-3; #IN AMPERES
V_ZT=6.80; #IN VOLTS
Z_ZT=3.50; #IN OHMS
I_Z=50*10**-3; #IN AMPERES
#calculation
DEL_I_Z=I_Z-I_ZT; #change current
DEL_V_Z=DEL_I_Z*Z_ZT; #change voltage
V_Z=V_ZT+DEL_V_Z; #voltage across zener terminals
print "voltage across zener terminals when current is 50 mA = %.3f volts" %V_Z
I_Z=25*10**-3; #IN AMPERES
DEL_I_Z=I_Z-I_ZT; #change current
DEL_V_Z=DEL_I_Z*Z_ZT; #change voltage
V_Z=V_ZT+DEL_V_Z; #voltage across zener terminals
#result
print "voltage across zener terminals when current is 25 mA = %.3f volts" %V_Z
# variable declaration
V_Z=8.2; #8.2 volt zener diode
TC=0.0005; #Temperature coefficient (per degree celsius)
T1=60; #Temperature 1 in celsius
T2=25; #Temperature 2 in celsius
#calculation
DEL_T=T1-T2; #change in temp
del_V_Z=V_Z*TC*DEL_T; #change in voltage
voltage=V_Z+del_V_Z; #zener voltage
#result
print "zener voltage at 60 degree celsius = %.3f volt" %voltage
# variable declaration
P_D_max=400*10**-3; #power in watts
df=3.2*10**-3 #derating factor in watts per celsius
del_T=(90-50); #in celsius, temperature difference
#calculation
P_D_deru=P_D_max-df*del_T; #power dissipated
P_D_der=P_D_deru*1000;
#result
print "maximum power dissipated at 90 degree celsius = %d mW" %P_D_der
# variable declaration
V_Z=5.1;
I_ZT=49*10**-3;
I_ZK=1*10**-3;
Z_Z=7;
R=100;
P_D_max=1;
#calculation
V_out=V_Z-(I_ZT-I_ZK)*Z_Z; #output voltage at I_ZK
V_IN_min=I_ZK*R+V_out; #input voltage
I_ZM=P_D_max/V_Z; #current
V_out=V_Z+(I_ZM-I_ZT)*Z_Z; #output voltage at I_ZM
V_IN_max=I_ZM*R+V_out; #max input voltage
#result
print "maximum input voltage regulated by zener diode = %.3f volts" %V_IN_max
print "minimum input voltage regulated by zener diode = %.3f volts" %V_IN_min
# variable declaration
V_Z=12.0; #voltage in volt
V_IN=24.0; #ip voltage in volt
I_ZK=0.001; #current in ampere
I_ZM=0.050; #current in ampere
Z_Z=0; #impedence
R=470; #resistance in ohm
#calculation
#when I_L=0, I_Z is max and is equal to the total circuit current I_T
I_T=(V_IN-V_Z)/R; #current
I_Z_max=I_T; #max current
if I_Z_max<I_ZM : # condition for min currert
I_L_min=0;
I_L_max=I_T-I_ZK; #max current
R_L_min=V_Z/I_L_max; #min resistance
#result
print "minimum value of load resistance = %.2f ohm" %R_L_min
print "minimum curent = %.3f ampere" %I_L_min
print "maximum curent = %.3f ampere" %I_L_max
# variable declaration
V_IN=24.0; #voltage in volt
V_Z=15.0; #voltage in volt
I_ZK=0.25*10**-3; #current in ampere
I_ZT=17*10**-3; #current in ampere
Z_ZT=14.0; #impedence
P_D_max=1.0; #max power dissipation
#calculation
V_out_1=V_Z-(I_ZT-I_ZK)*Z_ZT; #output voltage at I_ZK
print "output voltage at I_ZK = %.2f volt" %V_out_1
I_ZM=P_D_max/V_Z;
V_out_2=V_Z+(I_ZM-I_ZT)*Z_ZT; #output voltage at I_ZM
print "output voltage a I_ZM = %.2f volt" %V_out_2
R=(V_IN-V_out_2)/I_ZM; #resistance
print "value of R for maximum zener current, no load = %.2f ohm" %R
print "closest practical value is 130 ohms"
R=130.0;
#for minimum load resistance(max load current) zener current is minimum (I_ZK)
I_T=(V_IN-V_out_1)/R; #current
I_L=I_T-I_ZK; #current
R_L_min=V_out_1/I_L; #minimum load resistance
#result
print "minimum load resistance = %.2f ohm" %R_L_min
#variable declaration
V_p_in=10.0; #Peak input voltage
V_th=0.7; #forward biased zener
V_Z1=5.1;
V_Z2=3.3;
V_p_in=20.0;
V_Z1=6.2;
V_Z2=15.0;
#result
print('max voltage = %.1f V'%(V_Z1+V_th))
print('min voltage = %.1f V'%(-(V_Z2+V_th)))