print "Given tr = 35 ns"
bw=0.35/(35*10**-9) # in Hz
x1=bw*10**-6 #in MHz
print "We know that, tr = 0.35 / BW"
print "Therefore, BW = 0.35 / tr =%0.2f MHz"%x1
print "Given ton = 70 ns"
C=(70*10**-9)/(0.1*600) # in faraday
x1=C*10**12 # in pF
print " C = ton / 0.1*Rs =%0.2f pF"%x1 # approximately 1200 pF
tre=2.3*(5.6*10**3)*(1200*10**-12) # in seconds
x2=tre*10**6 #in us
print " tre = 2.3*RB*C =%0.2f u-seconds"%x2
f=1./(2*(15*10**-6)) #in Hz
x3=f*10**-3 #in kHz
print " f = 1/2T = 1/2tre =%0.2f kHz"%x3
from numpy import arange,sin,pi
%matplotlib inline
from matplotlib.pyplot import plot,subplot,title,xlabel,show,ylabel
amp = 15.
vi_t=3.# # transition voltage
t=arange(0,2*pi+0.1,0.1)
vi=[]
for x in t:
vi.append(amp*sin(x))
vo=[]
for x in vi:
vo.append(x+3)# # output voltage
print 'transition voltage: %0.2f'%vi_t
for i in range(0,len(t)):
if(vo[(i)]<=0):
vo[(i)]=0
subplot(2,1,1)
plot(t,vo,2,'011','',[0,0,7,18])
title('Ouptut voltage in sin wave')
xlabel('t')
ylabel('vo')
show()
t=arange(0,20+0.1,0.1)
vo=[]
for i in range(0,int(len(t)/2)):
vo.append(15+3)
for i in range(int(len(t)/2-1),len(t)-1):
vo.append(0)
subplot(3,1,2)
plot(t,vo,2,'011','',[0,-5,21,20])#
title('Ouptut voltage in square wave')
xlabel('t')
ylabel('vo')#
show()
from numpy import arange
%matplotlib inline
from matplotlib.pyplot import plot,subplot,title,xlabel,show,ylabel
t= arange(0,20+0.1,0.1)
x=[]
for i in range(0,len(t)):
if(t[(i)]<=5):
x.append((15.0/5)*t[(i)])
elif(t[(i)]>=5 and t[(i)]<=15):
x.append(-3.2*t[(i)]+30)
elif(t[(i)]>=15 and t[(i)]<=20):
x.append((15./5)*t[(i)]-60)
y=[]
for i in range(0,len(t)):
if(x[(i)]>3):
y.append(x[(i)])
elif(x[i]<=3):
y.append(3)
plot(t,y,2,'011','',[0,0,20,16])#
title('output voltage')
xlabel('t')
ylabel('Vo')
show()
from numpy import arange
%matplotlib inline
from matplotlib.pyplot import plot,subplot,title,xlabel,show,ylabel,legend
#let input wave be V_in=V_p_in*sin(2*pi*f*t)
f=1.# #Frequency is 1Hz
T=1./f#
V_p_in=10# #Peak input voltage
V_th=0.7# #knee voltage of diode
#let n be double the number of cycles of output shown in graph
for n in range(0,2):
t=arange(T*n/2.,T*(n+1)/2.+0.0005,0.0005) #time for each half cycle
V_in=[]
for tt in t:
V_in.append(V_p_in*sin(2*pi*f*tt))
Vout=V_in#
if (n%2)==0: #positive half,D1 conducts till V_in=5V
a=(Vout<5)#
b=(Vout>5)#
y=[]
for vv in Vout:
y.append(a*vv+5*b)# #output follows input till 5V then is constant at 5V
else: #negative half, D2 conducts till V_in=-3V
a=(Vout<-3)#
b=(Vout>-3)#
for vv in Vout:
y.append(-3*a+b*vv) #output follows input till -3V then stays constant at -3V
plot(t,y[0:1001])
plot(t,V_in)
legend(['output','input'])
title('Positive and Negative diode limiter')
xlabel('t')
ylabel('Vo')
show()
print 'max output voltage is 5V'
print 'min output voltage is -3V'
from numpy import arange,pi,sin
%matplotlib inline
from matplotlib.pyplot import plot,subplot,title,xlabel,show,ylabel
#Positive Clamping circuit
#let input voltage be V_in=V_p_in*sin(2*pi*f*t)
V_p_in=10.#
V_DC=(V_p_in)# #DC level added to output
print 'V_DC = %0.2f V'%V_DC
for n in range(0,2):
t=arange(n/2,(n+1)/2+0.0005,0.0005)
V_in=[]
for tt in t:
V_in.append(V_p_in*sin(2*pi*tt))
Vout=[]
for vv in V_in:
Vout.append(V_DC+vv)
plot(t,Vout)
title('Positive clipper graph')
xlabel('t')
ylabel('Vo')
show()
from numpy import arange,pi,sin
%matplotlib inline
from matplotlib.pyplot import plot,subplot,title,xlabel,show,ylabel
#Negative Clamping circuit
#let input voltage be V_in=V_p_in*sin(2*pi*f*t)
V_p_in=12#
V_DC=-(V_p_in)# #DC level added to output
print 'V_DC = %0.2f V'%V_DC
#t=[]
for n in range(0,2):
t=(n/2.,(n+1)/2.+0.0005,0.0005)
V_in=[]
for tt in t:
V_in.append(V_p_in*sin(2*pi*tt))
Vout=[]
for vv in V_in:
Vout.append(V_DC+vv)
plot(t,Vout)
title('Negative clipper graph')
xlabel('t')
ylabel('Vo')
show()
f=1./(1.386*(20*10**3)*(1000*10**-12)) #in Hz
x1=f*10**-3 # in kHz
print "The frequency of a symmetrical astable multivibrator is"
print " f = 1/1.386RC =%0.2f kHz"%x1 # answer in textbook is wrong
print "The period of oscillation for an asymmetrical astable multivibrator is,"
t=0.693*(((2*10**3)*0.01*10**-6)+((10*10**3)*(0.05*10**-6))) # seconds
x1=t*10**6 # in us
print " T = 0.693(R1C1+R2C2) = %0.2f us"%x1
f=1./(360.36*10**-6) # in Hz
x2=f*10**-3 # in kHz
print "Therefore, the frequency of oscillation, f = 1/T =%0.2f kHz"%x2
t=1./(100*10**3) # in seconds
x1=t*10**6 # in us
print "The period of oscillation is, T = 1/f = %0.2f us"%x1
print " T1 = 2us (given)"
t2=10-2 # in us
print "Hence, T2 = T - T1 =%0.2f us"%t2
print " T1 = 0.693*R1C1"
c1=(2*10**-6)/(0.693*(20*10**3)) # in faraday
x1=c1*10**12 # in pF
print "Therefore, C1 = T1 / 0.693R1 =%0.2f pF"%x1 #answer in textbook is wrong
c2=(8*10**-6)/(0.693*(20*10**3)) # in faraday
x1=c2*10**12 # in pF
print " T2 = 0.693*R2*C2" #answer in textbook is wrong
print "Therefore, C2 = T2 / 0.693R2 =%0.2f pF"%x1
rc=(12-0.2)/(1*10**-3) # in ohm
x1=rc*10**-3 # in k-ohm
print " RC = 12-0.2/1*10**-3 = %0.2f kohm"%x1
r=100.*11.8*10**3 # in ohm
x1=r*10**-6 # in M-ohm
print " R <= hfe*RC"
print " R <=%0.2f Mohm"%x1
print "Hence, let us assume that R = R1 = R2 = 1 M-ohm"
print " Toff = 0.693*R*C1"
c1=(20*10**-6)/(0.693*10**6) # in faraday
x1=c1*10**12 # in pF
print "Therefore, C1 =%0.2f pF"%x1
print " Ton = 0.693*R*C2"
c1=(10*10**-6)/(0.693*10**6) # in faraday
x1=c1*10**12 # in pF
print "Therefore, C2 = %0.2f pF"%x1
print "At stable state, Q2 is ON and Q2 is OFF:"
rc2=(6.-0.3)/(6*10**-3) # in ohm
print " RC2(ohm) = RC1(ohm) = VCC-VCE(sat) / IC(sat) =%0.2f ohm"%rc2
ib2=(6.*10**-3)/20 # in ampere
x1=ib2*10**3 # in mA
print "IB2(sat) = IC(sat) / hfe(min) =%0.2f mA"%x1
print "Also, IB1(sat) = 0.3 mA"
r=(6-0.7)/(0.3*10**-3) # in ohm
x1=r*10**-3 # in k-ohm
print " R = VCC-VBE(sat) / IB2(sat) = %0.2f kohm"%x1
print " [because, VBE(sat) = 0.7 V for Si transistor]"
print "At quasi-stable state, Q1 is ON and Q2 is OFF"
print " T = 0.693*R*C"
c=(140.*10**-6)/(0.693*17.67*10**3) # in F
x1=c*10**6 # in uF
print "Therefore, C= T / 0.693*R =%0.2f uF"%x1
print "Assume, IB1(sat) = IR2"
ir2=0.3+0.3 # in mA
print "Therefore, IR1 = IB1(sat)+IR2 =%0.2f mA"%ir2
r1=((6-0.7)/(0.6*10**-3))-950 # in ohm
x1=r1*10**-3 # in k-ohm
print " VCC = VBE(sat) + IR1(RC2+R1)"
print "Therefore, R1 = (VCC-VBE(sat) / IR1) - RC2 =%0.2f kohm"%x1
r2=(0.7+1.5)/(0.3*10**-3) # in ohm
x1=r2*10**-3 # in k-ohm
print " R2 = VBE(sat)-(-VBB) / IR2 =%0.2f kohm"%x1
print "The speed up capacitor C1 is chosen such that R1C1 = 1 us and hence,"
c1=(1.0*10**-6)/(7.833*10**3) # in F
x1=c1*10**12 # in pF
print " C1 = %0.2f pF" %x1 # answer in textbook is wrong
vb1=(-12.*15*10**3)/(115.*10**3) # in volts
print " VB1 = -VBB*R2 / R2+R3 = %0.2f V"%vb1
ic2=((12-0.3)/(2.2*10**3))-((0.3+12)/(115*10**3)) # in A
x1=ic2*10**3 # in mA (Since Q2 is ON VC2(sat) = 0.3 V)
print " IC2 = [VCC-VC2(sat) / RC2] - [VC2(sat)-(-VBB) / R2+R3] =%0.2f mA"%x1 # answer in textbook is wrong
ib2=(5.35*10**-3)/20 # in A
x1=ib2*10**3 # in mA
print " IB2 > IC2 / hfe(min) > %0.2f"%x1 # approximately 0.5 mA
i6=(0.7+12)/(100) # in mA
print "Therefore, I6 = %0.2f mA"%i6
i3=0.5+0.127 # in mA
print " I3 =%0.2f mA"%i3
vc1=12-((0.627*10**-3)*(2.2*10**3))
print " VC1 = %0.2f V"%vc1
ve=5-0.7 # in volts
print "Voltage across RE is VE = VB2 - VBE =%0.2f V"%ve
re=4.3/2 # in k-ohm
print " RE = VE / IE =%0.2f kohm"%re
x=12-4.3-0.2 # in volts
print " IC*RC2 = VCC - VE - VCE(sat) = %0.2f V"%x
rc2=7.5/(2) # in k-ohm
print " RC2 =%0.2f kohm"%rc2
i2=0.1*2 # in mA
print " I2 = 0.1*IC2 =%0.2f mA"%i2
r2=5/0.2 # in k-ohm
print " R2 = VB2 / I2 =%0.2f kohm"%r2
ib2=(210**-3)/100 # in A
x1=ib2*10**6 # in uA
print " IB2 = IC2 / hfe(min) = %0.2f uA"%x1
x=7/(0.22) # in k-ohm
print "RC1 + R1 =%0.2f"%x
i1=3./25 # in mA
print " I1 = VB2 / R2 =%0.2f mA"%i1
ic1=(3-0.7)/2.15 # in mA
print " IC1 = IE = VB1-VBE / RE =%0.2f mA"%ic1
rc1=(12-((0.12*10**-3)*(56.8*10**3)))/(1.07*10**-3) # in ohm
x1=rc1*10**-3 # in k-ohm
print "Therefore, RC1 =%0.2f kohm"%x1
r1=31.8-4.84
print " R1 = %0.2f kohm"%r1
rb=(100*2.15)/10
print " RB < hfe*RE"
print " RB = hfe*RE / 10 =%0.2f kohm"%rb