# CHAPTER 18 : SOLID-STATE SWITCHING CIRCUITS¶

## Example 18.1 : Page number 472¶

In [2]:
#Variable declaration
VCC=10;             #Supply voltage, V
beta=100.0;           #Base current amplification factor
VBE=0.7;            #Base-emitter voltage, V

#Calculation
IC_sat=VCC/RC;              #Collector saturation current, mA
IB=IC_sat/beta;             #Base current, mA
V=IB*RB+VBE;                #Input voltage, V

#Result
print("Input voltage required to saturate the transistor switch=%.1fV."%V);

Input voltage required to saturate the transistor switch=5.4V.


## Example 18.2 : Page number 475¶

In [3]:
#Variable declaration
VCC=10;             #Supply voltage, V
ICBO=10.0;            #Collector leakage current, Î¼A
V_knee=0.7;         #Knee voltage, V

#Calculation
#(i)
IC=ICBO;                    #Collector current, Î¼A
VCE=VCC-(ICBO/1000)*RC;            #Collector-emitter voltage, V

print("(i) The collector emitter voltage at cut-off=%.2fV."%VCE);

#(ii)
#Since, saturation current=IC_sat=(VCC-V_knee)/RC;
VCE=V_knee;                    #Collector-emitter voltage, V

print("(ii) The collector emitter voltage at saturation=%.1fV."%VCE);

(i) The collector emitter voltage at cut-off=9.99V.
(ii) The collector emitter voltage at saturation=0.7V.


## Example 18.3 : Page number 475-476¶

In [4]:
#Variable declaration
VCC=10;             #Supply voltage, V
VBB=2;              #Supply voltage to base, V
V_knee=0.7;         #Knee voltage, V
VBE=0.7;            #Base-emitter voltage, V

#Calculation
#(i)
IB=round((VBB-VBE)/RB,2);           #Base current, mA
Ic_sat=(VCC-V_knee)/RC;             #Collector saturation current, mA
beta_min=Ic_sat/IB;                 #Minimum value of base current amplification factor
print("(i) Minimum Î²=%.1f."%beta_min);

#(ii)
VBB=1;                       #Supply voltage to base(changed), V
beta=50;                     #Base current amplification factor
IB=(VBB-VBE)/RB;             #Base current, mA
IC=beta*IB;                  #Collector current,mA

if(IC<Ic_sat):
print("(ii) The transistor will not be saturated.");
else:
print("(ii) The transistor will be saturated.");

(i) Minimum Î²=19.4.
(ii) The transistor will not be saturated.


## Example 18.4 : Page number 480¶

In [5]:
#Variable declaration
C1=0.01;                #Capacitor of 1st transistor, Î¼F
C2=0.01;                #Capacitor of 2nd transistor, Î¼F

#Calculation
C=C1*10**-6;                 #Capacitance, F
T=round((1.4*R*C)*1000,2);   #Time period,m sec
f=1/(T*10**-3);              #Frequency, Hz
f=f/1000;                    #Frequency, kHz

#Result
print("Time period of the square wave=%.2f m sec."%T);
print("Time frequency of the square wave=%d kHz."%f);

Time period of the square wave=0.14 m sec.
Time frequency of the square wave=7 kHz.


## Example 18.6 : Page number 485¶

In [6]:
#Variable declaration
R=10;               #Resistance in differentiating circuit, kÎ©
C=2.2;              #Capacitance in differentiating circuit, Î¼F
d_ei=10;            #Change in input voltage, V
dt=0.4;             #Time in which change occurs, s

#Calculation
eo=R*1000*C*10**-6*d_ei/dt

#Result
print("The output voltage=%.2fV."%eo);

The output voltage=0.55V.


## Example 18.7 : Page number 489¶

In [7]:
#Variable declaration
Vin_peak=12;                #Peak value of input voltage, V
V_D=0.7;                    #Forward bias voltage of diode, V

#Calculation
Vout_peak=Vin_peak-V_D;         #Peak value of output voltage, V

#Result
print("The peak output voltage=%.1fV."%Vout_peak);

The peak output voltage=11.3V.


## Example 18.8 : Page number 489¶

In [8]:
#Variable declaration
Vin_peak=10;                #Peak value of input voltage, V

#Calculation
Vout_peak=(Vin_peak*RL)/(R+RL);         #Peak output voltage, V

#Result
print("The peak output voltage=%dV."%Vout_peak);

The peak output voltage=8V.


## Example 18.9 : Page number 490¶

In [9]:
#Variable declaration
Vin=-10;                #Input voltage, V
V_D=0.7;                #Forward bias voltage of the diode, V

print("The diode will be forward biased for the negative half-cycle of input signal.");
Vout=-V_D;              #Output voltage, V
V_R=Vin-(-V_D);         #Voltage across resistor R, V

#Result
print("The output voltage=%.1fV."%Vout);
print("The voltage across R=%.1fV."%V_R);

The diode will be forward biased for the negative half-cycle of input signal.
The output voltage=-0.7V.
The voltage across R=-9.3V.


## Example 18.10 : Page number 490-491¶

In [10]:
#Variable declaration
V_F=0.7;                        #Forward bias voltage of diode, V
R=200.0;                          #Input resistor of the circuit,  Î©
Vin_peak=10.0;                    #Peak input voltage, V

#Calculations

#Positive half-cycle:
print("During the positive half cycle, the diode is foward biased and can be replaced by battery of %.1fV."%V_F);
print("Therefore, Vout=%.1fV."%V_F);

#Negative half-cycle:
print("During the negative half cycle, the diode is reverse biased and hence behaves as an open circuit.");
Vout_peak=RL*(-Vin_peak)/(R/1000+RL);
print("Therefore, Vout_peak=%.2fV."%Vout_peak);

During the positive half cycle, the diode is foward biased and can be replaced by battery of 0.7V.
Therefore, Vout=0.7V.
During the negative half cycle, the diode is reverse biased and hence behaves as an open circuit.
Therefore, Vout_peak=-8.33V.


## Example 18.12 : Page number 491¶

In [11]:
%matplotlib inline
import matplotlib.pyplot as plt
from math import sin
from math import pi

V_biasing=10.0;                        #Biasing voltage, V
vin=[30*sin(t/10.0) for t in range(0,(int)(2*pi*10))]      #input voltage  waveform, V

plt.subplot(211)
plt.plot(vin);
plt.xlabel('t-->');
plt.ylabel('Vin(V)');
plt.title('Input waveform');

vout=[];                             #Output voltage waveform, V
for v in vin[:]:
if(v-V_biasing)>0 :              #Diode is forward biased.
vout.append(v-V_biasing);
else:                            #Diode is reverse biased.
vout.append(0);

plt.subplot(212)
plt.plot(vout);
plt.xlabel('t-->');
plt.ylabel('Vout(V)');
plt.title('Output waveform');


## Example 18.13 : Page number 492¶

In [12]:
%matplotlib inline
import matplotlib.pyplot as plt

Vin=[];      #Input voltage waveform, V
t1=50;         #Assumed time interval, s
t2=100;         #Assumed time interval, s
V_biasing=10;  #Biasing voltage, V
for t in range(0,151):                  #time interval from 0s to 151s
if(t<=t1):
Vin.append(15);               #Value of input voltage for time 0 to t1 seconds
elif(t<=t2 and t>t1):
Vin.append(-30);             #Value of input voltage for time t1 to t2 seconds
else :
Vin.append(15);             #Value of input voltage after t2 seconds

plt.subplot(211)
plt.plot(Vin);
plt.xlim([0,160])
plt.ylim([-35,20])
plt.xlabel('t-->');
plt.ylabel('Vin(V)');
plt.title('Input waveform');

vout=[];                 #Output voltage waveform, V
for v in Vin[:]:                  #Loop iterating input voltage
if(v<=0):
vout.append(0);               #Diode reverse biased
else:
vout.append(v-V_biasing);      #Diode forward biased

plt.subplot(212)
plt.plot(vout);
plt.xlim(0,160)
plt.ylim(-35,20)
plt.xlabel('t-->');
plt.ylabel('Vout(V)');
plt.title('Output waveform');


## Example 18.14 : Page number 492-493¶

In [13]:
%matplotlib inline
import matplotlib.pyplot as plt

Vin=[];      #Input voltage waveform, V
t1=50;         #Assumed time interval, s
t2=100;         #Assumed time interval, s
V_biasing=5;  #Biasing voltage, V
for t in range(0,151):                  #time interval from 0s to 151s
if(t<=t1):
Vin.append(10);               #Value of input voltage for time 0 to t1 seconds
elif(t<=t2 and t>t1):
Vin.append(-10);             #Value of input voltage for time t1 to t2 seconds
else :
Vin.append(0);

plt.subplot(211)
plt.plot(Vin);
plt.xlim(0,101)
plt.ylim(-20,20)
plt.xlabel('t-->');
plt.ylabel('Vin(V)');
plt.title('Input waveform');

vout=[];                 #Output voltage waveform, V
for v in Vin[:]:                  #Loop iterating input voltage
if(v<=0):
vout.append(v);               #Diode reverse biased
else:
vout.append(v-V_biasing);      #Diode forward biased

plt.subplot(212)
plt.plot(vout);
plt.xlim(0,101)
plt.ylim(-20,20)
plt.xlabel('t-->');
plt.ylabel('Vout(V)');
plt.title('Output waveform');


## Example 18.15 : Page number 493¶

In [14]:
%matplotlib inline
import matplotlib.pyplot as plt

Vin=[];      #Input voltage waveform, V
t1=50;         #Assumed time interval, s
t2=100;         #Assumed time interval, s
V_D1=0.6;          #Forward Biasing voltage of the 1st diode, V
V_D2=0.6;          #Forward Biasing voltage of the 2nd diode, V
for t in range(0,151):                  #time interval from 0s to 151s
if(t<=t1):
Vin.append(10);               #Value of input voltage for time 0 to t1 seconds
elif(t<=t2 and t>t1):
Vin.append(-10);             #Value of input voltage for time t1 to t2 seconds
else :
Vin.append(0);

plt.subplot(211);
plt.plot(Vin);
plt.xlim(0,110)
plt.ylim(-20,20)
plt.xlabel('t-->');
plt.ylabel('Vin(V)');
plt.title('Input waveform');

vout=[];                 #Output voltage waveform, V
for v in Vin[:]:                  #Loop iterating input voltage
if(v<=0):
vout.append(-V_D1);               #Diode D1 forward biased,
else:
vout.append(V_D2);      #Diode D2 forward biased

plt.subplot(212)
plt.plot(vout);
plt.xlim(0,110)
plt.ylim(-1,1)
plt.xlabel('t-->');
plt.ylabel('Vout(V)');
plt.title('Output waveform');


## Example 18.16 : Page number 493-494¶

In [15]:
%matplotlib inline
import matplotlib.pyplot as plt
from math import sin
from math import pi

VZ=20;                   #Assumed zener voltage, V
VF=0.7;          #Assumed forward biasing voltage of the zener diode, V
Vin=[];      #Input voltage waveform, V
for t in range(0,(int)(2*pi*10)):                  #time interval from 0s to 151s
Vin.append(30*sin(t/10.0));

plt.subplot(211)
plt.plot(Vin);
plt.xlabel('t-->');
plt.ylabel('Vin(V)');
plt.title('Input waveform');

vout=[];                 #Output voltage waveform, V
for v in Vin[:]:                  #Loop iterating input voltage
if(v<=-VF):
vout.append(-VF);               #Zener diode forward biased,
elif(v>=VZ):
vout.append(VZ);        #Input voltage exceeds zener voltage
else:
vout.append(v);           #Zener diode reverse biased

plt.subplot(212)
plt.plot(vout);
plt.xlim([0,80])
plt.ylim([-1,40])
plt.xlabel('t-->');
plt.ylabel('Vout(V)');
plt.title('Output waveform');


## Example 18.17 : Page number 494¶

In [16]:
%matplotlib inline
import matplotlib.pyplot as plt
from math import sin
from math import pi

VZ1=20;                   #Assumed zener voltage, V
VF1=0.7;          #Assumed forward biasing voltage of the zener diode, V
VZ2=20;                   #Assumed zener voltage, V
VF2=0.7;          #Assumed forward biasing voltage of the zener diode, V
Vin=[];      #Input voltage waveform, V
for t in range(0,(int)(2*pi*10)):                  #time interval from 0s to 151s
Vin.append(30*sin(t/10.0));

plt.subplot(211)
plt.plot(Vin);
plt.xlabel('t-->');
plt.ylabel('Vin(V)');
plt.title('Input waveform');

vout=[];                 #Output voltage waveform, V
for v in Vin[:]:                  #Loop iterating input voltage
if(v<=-(VZ1+VF2)):
vout.append(-(VZ1+VF2));               #Zener diode forward biased,
elif(v>=VZ2+VF1):
vout.append(VZ2+VF1);        #Input voltage exceeds zener voltage
else:
vout.append(v);           #Zener diode reverse biased
plt.subplot(212)
plt.plot(vout);
plt.xlim([0,80])
plt.ylim([-40,40])
plt.xlabel('t-->');
plt.ylabel('Vout(V)');
plt.title('Output waveform');

In [ ]: