Chapter 07 : Choppers

Example 7.2, Page No 387

In [1]:
import math
#initialisation of variables
a=0.4     #duty cycle %a=T_on/T
V_s=230.0
R=10.0

#Calculations
V=a*(V_s-2)    
V_or=math.sqrt(a*(V_s-2)**2)    
P_o=V_or**2/R
P_i=V_s*V/R
n=P_o*100/P_i    

#Results
print("avg o/p voltage=%.1f V" %V)
print("rms value of o/p voltage=%.1f V" %V_or)
print("chopper efficiency in percentage=%.2f" %n)
avg o/p voltage=91.2 V
rms value of o/p voltage=144.2 V
chopper efficiency in percentage=99.13

Example 7.3, Page No 388

In [2]:
import math
#initialisation of variables
V_i=220.0
V_o=660.0

#Calculations
a=1-V_i/V_o
T_on=100.0     #microsecond
T=T_on/a
T_off=T-T_on    
T_off=T_off/2
T_on=T-T_off
a=T_on/T
V_o=V_i/(1-a)

#Results    
print("pulse width of o/p voltage=%.0f us" %T_off)
print("\nnew o/p voltage=%.0f V" %V_o)
pulse width of o/p voltage=25 us

new o/p voltage=1320 V

Example 7.4 Page No 288

In [3]:
import math
#initialisation of variables
I_1=12.0
I_2=16.0

#Calculations
I_0=(I_1+I_2)/2
R=10.0
V_0=I_0*R
V_s=200.0
a=V_0/V_s
r=a/(1-a)

#Results
print("time ratio(T_on/T_off)=%.3f" %r)
time ratio(T_on/T_off)=2.333

Example 7.5, Page No 390

In [4]:
import math
#initialisation of variables
V_o=660.0
V_s=220.0

#Calculations
a=(V_o/V_s)/(1+(V_o/V_s))
T_on=120
T=T_on/a
T_off=T-T_on 
T_off=3*T_off
T_on=T-T_off
a=T_on/(T_on+T_off)
V_o=V_s*(a/(1-a))   

#Results
print("pulse width o/p voltage=%.0f us" %T_off)
print("\nnew o/p voltage=%.2f V" %V_o)
pulse width o/p voltage=120 us

new o/p voltage=73.33 V

Example 7.11 Page No 408

In [7]:
import math
#initialisation of variables
R=1.0
L=.005
T_a=L/R
T=2000*10**-6
E=24.0
V_s=220
T_on=600*10**-6
a=T_on/T

#Calculations
a1=(T_a/T)*math.log(1+(E/V_s)*((math.exp(T/T_a))-1))
if a1<a :
    print("load current in continuous")
else:
    print("load current in discont.")

I_o=(a*V_s-E)/R    
I_mx=(V_s/R)*((1-math.exp(-T_on/T_a))/(1-math.exp(-T/T_a)))-E/R    
I_mn=(V_s/R)*((math.exp(T_on/T_a)-1)/(math.exp(T/T_a)-1))-E/R    
f=1/T
w=2*math.pi*f
I1=(2*V_s/(math.sqrt(2)*math.pi)*math.sin(math.radians(180*a)))/(math.sqrt(R**2+(w*L)**2))    
I2=(2*V_s/(2*math.sqrt(2)*math.pi)*math.sin(math.radians(2*180*a)))/(math.sqrt(R**2+(w*L*2)**2))    
I3=(2*V_s/(3*math.sqrt(2)*math.pi)*math.sin(math.radians(3*180*a)))/(math.sqrt(R**2+(w*L*3)**2))    
I_TAV=a*(V_s-E)/R-L*(I_mx-I_mn)/(R*T)   
P1=I_TAV*V_s
P2=E*I_o
I_or=math.sqrt(I_o**2+I1**2+I2**2+I3**2)

#Results
print("avg o/p current=%.2f A" %I_o)
print("max value of steady current=%.2f A" %I_mx)
print("min value of steady current=%.2f A" %I_mn)
print("first harmonic current=%.4f A" %I1)
print("second harmonic current=%.4f A" %I2)
print("third harmonic current=%.5f A" %I3)
print("avg supply current=%.4f A" %I_TAV)
print("i/p power=%.2f W" %P1)
print("power absorbed by load emf=%.0f W" %P2)
print("power loss in resistor=%.2f W" %(P1-P2))
print("rms value of load current=%.3f A" %I_or)
load current in continuous
avg o/p current=42.00 A
max value of steady current=51.46 A
min value of steady current=33.03 A
first harmonic current=5.0903 A
second harmonic current=1.4983 A
third harmonic current=0.21643 A
avg supply current=12.7289 A
i/p power=2800.35 W
power absorbed by load emf=1008 W
power loss in resistor=1792.35 W
rms value of load current=42.334 A

Example 7.12 Page No 411

In [10]:
import math
#initialisation of variables
R=1
L=.001
V_s=220
E=72.0
f=500.0
T_on=800*10**-6
T_a=L/R
T=1.0/f
m=E/V_s
a=T_on/T

#Calculations
a1=(T_a/T)*math.log(1+m*(math.exp(-T/T_a)-1))
if a1>a :
    print("load current is continuous")
else:
    print("load current is discontinuous")

t_x=T_on+L*math.log(1+((V_s-E)/272)*(1-math.exp(-T_on/T_a)))
 #Value of t_x wrongly calculated in the book so ans of V_o and I_o varies
V_o=a*V_s+(1-t_x/T)*E    
I_o=(V_o-E)/R    
I_mx=(V_s-E)/R*(1-math.exp(-T_on/T_a)) 

#Results  
print("avg o/p voltage=%.2f V" %V_o)
print("avg o/p current=%.2f A" %I_o) 
print("max value of load current=%.1f A" %I_mx)
load current is discontinuous
avg o/p voltage=121.77 V
avg o/p current=49.77 A
max value of load current=81.5 A

Example 7.13, Page No 412

In [11]:
import math
#initialisation of variables
a=0.2
V_s=500
E=a*V_s
L=0.06
I=10

#Calculations
T_on=(L*I)/(V_s-E)
f=a/T_on    

#Results
print("chopping freq=%.2f Hz" %f)
chopping freq=133.33 Hz

Example 7.14 Page No 412

In [12]:
import math
#initialisation of variables
a=0.5
pu=0.1 #pu ripple

#Calculations
 #x=T/T_a
 #y=exp(-a*x)
y=(1-pu)/(1+pu)
 #after solving
x=math.log(1/y)/a
f=1000
T=1/f
T_a=T/x
R=2
L=R*T_a
Li=0.002
Le=L-Li    

#Results
print("external inductance=%.3f mH" %(Le*1000))
external inductance=-2.000 mH

Example 7.15 Page No 414

In [14]:
import math
#initialisation of variables
R=10.0
L=0.015
T_a=L/R
f=1250.0
T=1.0/f
a=0.5
T_on=a*T
V_s=220.0

#Calculations
I_mx=(V_s/R)*((1-math.exp(-T_on/T_a))/(1-math.exp(-T/T_a)))   
I_mn=(V_s/R)*((math.exp(T_on/T_a)-1)/(math.exp(T/T_a)-1))    
dI=I_mx-I_mn    
V_o=a*V_s
I_o=V_o/R    
I_or=math.sqrt(I_mx**2+dI**2/3+I_mx*dI)    
I_chr=math.sqrt(a)*I_or 

#Results
print("Max value of ripple current=%.2f A" %dI)
print("Max value of load current=%.3f A" %I_mx)
print("Min value of load current=%.2f A" %I_mn)
print("Avg value of load current=%.2f A" %I_o)   
print("rms value of load current=%.2f A" %I_or)
print("rms value of chopper current=%.2f A" %I_chr)
 #Answers have small variations from that in the book due to difference in the rounding off of digits.
Max value of ripple current=2.92 A
Max value of load current=12.458 A
Min value of load current=9.54 A
Avg value of load current=11.00 A
rms value of load current=13.94 A
rms value of chopper current=9.86 A

Example 7.17 Page No 417

In [15]:
import math
#initialisation of variables
L=0.0016
C=4*10**-6

#Calculations
w=1/math.sqrt(L*C)
t=math.pi/w    


#Results
print("time for which current flows=%.2f us" %(t*10**6))
time for which current flows=251.33 us

Example 7.18, Page No 424

In [19]:
import math
#initialisation of variables
t_q=20.0*10**-6
dt=20.0*10**-6

#Calculations
t_c=t_q+dt
I_0=60.0
V_s=60.0
C=t_c*I_0/V_s 

#Results   
print("value of commutating capacitor=%.0f uF" %(C*10**6))

L1=(V_s/I_0)**2*C
L2=(2*t_c/math.pi)**2/C
if L1>L2 :
    print("value of commutating inductor=%.0f uH" %(L1*10**6))
else:
    print("value of commutating inductor=%.0f uH" %(L2*10**6))
value of commutating capacitor=40 uF
value of commutating inductor=40 uH

Example 7.19, Page No 424

In [20]:
import math
#initialisation of variables
t=100.0*10**-6
R=10.0

#Calculations
 #V_s*(1-2*math.exp(-t/(R*C)))=0
C=-t/(R*math.log(1.0/2))    
L=(4/9.0)*C*R**2    
L=(1.0/4)*C*R**2    

#Results
print("Value of comutating component C=%.3f uF" %(C*10**6))
print("max permissible current through SCR is 2.5 times load current")
print("value of comutating component L=%.1f uH" %(L*10**6))
print("max permissible current through SCR is 1.5 times peak diode current")
print("value of comutating component L=%.2f uH" %(L*10**6))
Value of comutating component C=14.427 uF
max permissible current through SCR is 2.5 times load current
value of comutating component L=360.7 uH
max permissible current through SCR is 1.5 times peak diode current
value of comutating component L=360.67 uH

Example 7.20, Page No 426

In [122]:
import math
#initialisation of variables
T_on=800.0*10**-6
V_s=220.0
I_o=80.0
C=50*10**-6

#Calculations
T=T_on+2*V_s*C/I_o    
L=20*10**-6
C=50*10**-6
i_T1=I_o+V_s*math.sqrt(C/L)    
i_TA=I_o    
t_c=C*V_s/I_o    
t_c1=(math.pi/2)*math.sqrt(L*C)    
t=150*10**-6
v_c=I_o*t/C-V_s  

#Results  
print("effective on period=%.0f us" %(T*10**6))
print("peak current through main thyristor=%.2f A" %i_T1)
print("peak current through auxillery thyristor=%.0f A" %i_TA)
print("turn off time for main thyristor=%.1f us" %(t_c*10**6))
print("turn off time for auxillery thyristor=%.3f us" %(t_c1*10**6))
print("total commutation interval=%.0f us" %(2*t_c*10**6))
print("capacitor voltage=%.0f V" %v_c)
print("time nedded to recharge the capacitor=%.0f us" %(2*V_s*C/I_o*10**6))
for firing angle = 30deg
avg output voltage=232.509 V
for firing angle = 60deg
avg output voltage=133.65 V
avg current rating=12 A
rms current rating=20.785 A
PIV of SCR=565.7 V
power dissipated=16.8 W

Example 7.21, Page No 427

In [*]:
import math
#initialisation of variables
I_o=260.0
V_s=220.0
fos=2 #factor of safety

#Calculations
t_off=18*10**-6
t_c=2*t_off
C=t_c*I_o/V_s    
L=(V_s/(0.8*I_o))**2*C    
f=400
a_mn=math.pi*f*math.sqrt(L*C)
V_omn=V_s*(a_mn+2*f*t_c)    
V_omx=V_s    

#Results
print("Value of C=%.3f uF" %(C*10**6))
print("value of L=%.3f uH" %(L*10**6))
print("min value of o/p voltage=%.3f V" %V_omn)
print("max value of o/p voltage=%.0f V" %V_omx)
firing angle delay=47.461 deg
pf=0.646
firing angle delay=127.71 deg

Example 7.22, Page No 434

In [25]:
import math
#initialisation of variables
x=2.0
t_q=30*10**-6
dt=30*10**-6
t_c=t_q+dt
V_s=230.0
I_o=200.0

#Calculations
L=V_s*t_c/(x*I_o*(math.pi-2*math.asin(1/x)))    
C=x*I_o*t_c/(V_s*(math.pi-2*math.asin(1/x)))    
V_cp=V_s+I_o*math.sqrt(L/C)    
I_cp=x*I_o    
x=3
L=V_s*t_c/(x*I_o*(math.pi-2*math.asin(1/x)))   
C=x*I_o*t_c/(V_s*(math.pi-2*math.asin(1/x)))    
V_cp=V_s+I_o*math.sqrt(L/C)    
I_cp=x*I_o    

#Results
print("value of commutating inductor=%.3f uH" %(L*10**6))
print("value of commutating capacitor=%.3f uF" %(C*10**6))
print("peak capacitor voltage=%.0f V" %V_cp)
print("peak commutataing current=%.0f A" %I_cp)
print("value of commutating inductor=%.3f uH" %(L*10**6))
print("value of commutating capacitor=%.3f uF" %(C*10**6))
print("peak capacitor voltage=%.2f V" %V_cp)
print("peak commutataing current=%.0f A" %I_cp)
value of commutating inductor=7.321 uH
value of commutating capacitor=49.822 uF
peak capacitor voltage=307 V
peak commutataing current=600 A
value of commutating inductor=7.321 uH
value of commutating capacitor=49.822 uF
peak capacitor voltage=306.67 V
peak commutataing current=600 A

Example 7.23, Page No 434

In [27]:
import math
#initialisation of variablesV_s=230
C=50*10**-6
L=20*10**-6
I_cp=V_s*math.sqrt(C/L)
I_o=200
x=I_cp/I_o

#Calculations
t_c=(math.pi-2*math.asin(1/x))*math.sqrt(C*L)   
th1=math.degrees(math.asin(1.0/x))
t=(5*math.pi/2-th1*math.pi/180)*math.sqrt(L*C)+C*V_s*(1-math.cos(math.radians(th1)))/I_o    
t=(math.pi-th1*math.pi/180)*math.sqrt(L*C)    

#Results
print("turn off time of main thyristor=%.2f us" %(t_c*10**6))
print("total commutation interval=%.3f us" %(t*10**6))
print("turn off time of auxillery thyristor=%.3f us" %(t*10**6))
turn off time of main thyristor=62.52 us
total commutation interval=80.931 us
turn off time of auxillery thyristor=80.931 us

Example 7.24, Page No 440

In [28]:
import math
#initialisation of variables
tc=0.006
R=10.0
L=R*tc
f=2000.0

#Calculations
T=1/f
V_o=50.0
V_s=100.0
a=V_o/V_s
T_on=a*T
T_off=T-T_on
dI=V_o*T_off/L
I_o=V_o/R
I2=I_o+dI/2    
I1=I_o-dI/2    

#Results
print("max value of load current=%.3f A" %I2)
print("min value of load current=%.3f A" %I1)
max value of load current=5.104 A
min value of load current=4.896 A

Example 7.27, Page No 443

In [29]:
import math
#initialisation of variables
I_a=30.0
r_a=.5
V_s=220.0

#Calculations
a=I_a*r_a/V_s    
a=1
k=.1 #V/rpm
N=(a*V_s-I_a*r_a)/k    

#Results
print("min value of duty cycle=%.3f" %a)
print("min Value of speed control=%.0f rpm" %0)
print("max value of duty cycle=%.0f" %a)
print("max value of speed control=%.0f rpm" %N)
min value of duty cycle=1.000
min Value of speed control=0 rpm
max value of duty cycle=1
max value of speed control=2050 rpm

Example 7.28, Page No 444

In [30]:
import math
#initialisation of variables
V_t=72.0
I_a=200.0
r_a=0.045
N=2500.0

#Calculations
k=(V_t-I_a*r_a)/N
E_a=k*1000
L=.007
Rm=.045
Rb=0.065
R=Rm+Rb
T_a=L/R
I_mx=230
I_mn=180
T_on=-T_a*math.log(-((V_t-E_a)/R-I_mx)/((I_mn)-(V_t-E_a)/R))
R=Rm
T_a=L/R
T_off=-T_a*math.log(-((-E_a)/R-I_mn)/((I_mx)-(-E_a)/R))
T=T_on+T_off
f=1/T    
a=T_on/T 

#Results
print("chopping freq=%.1f Hz" %f)  
print("duty cycle ratio=%.3f" %a)
chopping freq=40.5 Hz

duty cycle ratio=0.588

Example 7.29, Page No 445

In [32]:
import math
#initialisation of variablesI_mx=425
I_lt=180.0     #lower limit of current pulsation
I_mn=I_mx-I_lt
T_on=0.014
T_off=0.011

#Calculations
T=T_on+T_off
T_a=.0635
a=T_on/T
V=(I_mx-I_mn*math.exp(-T_on/T_a))/(1-math.exp(-T_on/T_a))
a=.5
I_mn=(I_mx-V*(1-math.exp(-T_on/T_a)))/(math.exp(-T_on/T_a))
T=I_mx-I_mn    
T=T_on/a
f=1/T    

#Results
print("higher limit of current pulsation=%.0f A" %T)
print("chopping freq=%.3f Hz" %f)
print("duty cycle ratio=%.2f" %a)
 #Answers have small variations from that in the book due to difference in the rounding off of digits.
higher limit of current pulsation=0 A
chopping freq=35.714 Hz
duty cycle ratio=0.50