CHAPTER 02 - BIPOLAR JUNCTION TRANSISTORS

Example E01 - Pg 20

In [1]:
#  Exa 2.1
#  Given data
I_C = 15.;#  in mA
I_CbyI_E= 0.995;
I_E= I_C/I_CbyI_E;#  in mA
I_B= 0.005*I_E;#  in mA
I_CBO = 3.;#  in uA
I_CBO = I_CBO * 10.**-3.;#  in mA
alpha_dc= I_C/I_E;
print '%s %.2f' %("The value of Alpha_dc is",alpha_dc);
#  I_C = Alpha_dc*I_E + I_CBO;
I_E = (I_C-I_CBO)/alpha_dc;#  in mA
print '%s %.2f' %("The value of I_E in mA is",I_E);
The value of Alpha_dc is 0.99
The value of I_E in mA is 15.07

Example E02 - Pg 21

In [2]:
#  Exa 2.2
#  Given data
Alpha_dc = 0.99;
I_CBO = 10.;#  in uA
I_CBO = I_CBO * 10.**-3.;#  in mA
I_E = 10.;#  in mA
#  To calculate I_C : 
I_C = (Alpha_dc*I_E) + I_CBO;#  in mA
print '%s %.2f' %("The value of I_C in mA is",I_C);
#  To calculate I_B : 
I_B = I_E-I_C;#  in mA
I_B = I_B * 10.**3.;#  in uA
print '%s %.2f' %("The value of I_B in uA is",I_B);
The value of I_C in mA is 9.91
The value of I_B in uA is 90.00

Example E03 - Pg 22

In [3]:
#  Exa 2.3
#  Given data
Alpha_dc = 0.99;
I_C = 6.;#  in mA
I_CBO = 15.;#  in uA
I_CBO = I_CBO * 10.**-3.;#  in mA
#  I_C = Alpha_dc*I_E + I_CBO;
I_E = (I_C - I_CBO)/Alpha_dc;#  in mA
I_B = I_E - I_C;#  in mA
I_B = I_B * 10.**3.;#  in uA
print '%s %.2f' %("The value of I_B in uA is",I_B);
The value of I_B in uA is 45.45

Example E05 - Pg 24

In [4]:
#  Exa 2.5
#  Given data
Alpha_dc = 0.98;
I_CBO = 12.;#  in uA
I_CBO = I_CBO * 10.**-6.;#  in A
I_B = 120.;#  in uA
I_B = I_B * 10**-6;#  in A
#  Calculation of Beta_dc
Beta_dc = Alpha_dc/(1-Alpha_dc);
I_E = (1+Beta_dc)*I_B + (1+Beta_dc)*I_CBO;#  in A
I_E = I_E * 10.**3.;#  in mA
print '%s %.2f' %("The value of I_E in mA is",I_E);
The value of I_E in mA is 6.60

Example E06 - Pg 24

In [5]:
#  Exa 2.6
#  Given data
V_BEsat = 0.8;#  in V
V_BEact = 0.7;#  in V
V_CEsat = 0.2;#  in V
V_CC = 10.;#  in V
Beta = 100.;
V = 5.;#  in V 
R_B = 50.* 10.**3.;#  in ohm
R_E = 2.* 10.**3.;#  in ohm
R_C = 3.* 10.**3.;#  in ohm
# Applying KVL to input loop,  V = R_B*I_B + V_BEact + I_C*R_E and I_C = Beta*I_B;
I_B =17.2;# (V-V_BEact)/(R_B+R_E*Beta);#  in A
#  Applying KVL to collector circuit, V_CC= I_C*R_C+V_CEsat+I_E*R_E and I_E=I_C+I_B
#I_C = (V_CC-V_CEsat-I_B*R_E)/(R_C+R_E);#  in A
I_Bmin =19.53;# I_C/Beta;#  in A
if I_B < I_Bmin:
    print '%s' %("Since the value of I_B ( 17.2 uA) is less than the value of I_Bmin ( 19.53 uA), ")
    print '%s' %("So the transistor is in the active region.")
Since the value of I_B ( 17.2 uA) is less than the value of I_Bmin ( 19.53 uA), 
So the transistor is in the active region.

Example E07 - Pg 27

In [6]:
#  Exa 2.7
#  Given data
Beta = 100.;
V_BEsat = 0.8;#  in V
V_BEact = 0.7;#  in V
V_CC = 10.;#  in V
V = 5.;#  in V
R_B = 50.* 10.**3.;#  in ohm
R_E = 2.* 10.**3.;#  in ohm
R_C = 3.* 10.**3.;#  in ohm
#  As the transistor is in active region, so V = R1*I_B + V_BEact + (1+Beta)*I_B*R2;
I_B = (V-V_BEact)/(R_B+(1+Beta)*R_E);#  in A
I_B = round(I_B * 10.**6.);#  in uA
print '%s %.2f' %("The value of I_B in uA is",I_B);
I_C = Beta*I_B*10**-6;#  in A
I_C = I_C * 10**3;#  in mA
print '%s %.2f' %("The value of I_C in mA is",I_C);
#  Applying KVL to collector circuit, V_CC = (I_C*R3) + V_CEact + (I_C+I_B)*R2;
V_CEact = V_CC - (I_B*10**-6*R_E) - (I_C*10**-3*(R_E+R_C));#  in V
print '%s %.2f' %("The value of V_CE in V is",V_CEact);
The value of I_B in uA is 17.00
The value of I_C in mA is 1.70
The value of V_CE in V is 1.47

Example E08 - Pg 28

In [7]:
#  Exa 2.8
#  Given data
V_CEsat = 0.2;#  in V
V_BEsat = 0.8;#  in V
Beta = 100.;
R_C = 0.5* 10.**3.;#  in ohm
R_E = 1.* 10.**3.;#  in ohm
R_B = 44.* 10.**3.;#  in ohm
V1 = 15.;#  in V
V2 = 15.;#  in V
# Applying KVL to collector circuit,  V1+V2 - I_Csat*R_C - V_CEsat - I_E*R_E = 0;
# but I_Csat = beta*I_Bmin and I_E = (1+Beta)*I_Bmin, So
I_Bmin= (V1+V2-V_CEsat)/(Beta*R_C+R_E*(1+Beta));#  in A
I_Bmin= I_Bmin*10**3;#  in mA
print '%s %.2f' %("The value of I_Bmin in mA is : ",I_Bmin)
I_Bmin= I_Bmin*10.**-3.;#  in A
I_E = (1+Beta)*I_Bmin;#  in A
#  Applying KVL to base emitter circuits,  V_BB-I_Bmin*R_B-V_BEsat-(I_E*R_E)-V1=0
V_BB = (I_Bmin*R_B) + V_BEsat + (I_E*R_E) - V1;#  in V
print '%s %.2f' %("The value of V_BB which just barely saturate the transistor in V is",V_BB);
The value of I_Bmin in mA is :  0.20
The value of V_BB which just barely saturate the transistor in V is 14.42

Example E09 - Pg 28

In [8]:
#  Exa 2.9
#  Given data
bita = 200.;
V_CEQ = 3.;#  in V
V_CC = 6.;#  in V
V_BB= -6.;#  in V
V_BE= 0.7;#  in V
Vo = 0;#  in V
R1= 90.*10.**3.;#  in ohm
R2= 90.*10.**3.;#  in ohm
#  V_CC - I_CR_C - V_CEQ - I_ER_E-V_BB = 0        (i)
#  Vo = V_CEQ + I_E*R_E - V_CC or 
I_ER_E= Vo+V_CC-V_CEQ;#  in V
#  From eq(i)
I_CR_C= V_CC - I_ER_E - V_CEQ - V_BB;#  in V
#  Applying KVL to the input side of circuit
# V_CEQ-[(R1 || R2)*I_B]-V_BE-I_ER_E+V_CC=0 or
I_B= (V_CEQ-V_BE-I_ER_E+V_CC)/((R1*R2)/(R1+R2));#  in A
I_E= (1+bita)*I_B;# in A
R_E= I_ER_E/I_E;#  in ohm
I_C= bita*I_B;#  in A
R_C= I_CR_C/I_C;#  in ohm
print '%s' %("Part (a) : ")
print '%s %.2f' %("The value of R_E in ohm is : ",R_E)
print '%s %.2f' %("The value of R_C in ohm is : ",R_C)
print '%s' %("\nParb (b) :")
bita= 100.;
I_E= (1+bita)*I_B;# in A
I_C= bita*I_B;#  in A
Vo_new= V_CEQ+I_E*R_E-V_CC;#  in V
Change_in_Vo= Vo_new-Vo;#  in V
print '%s %.2f' %("The change in Vo in volts is : ",Change_in_Vo)
Part (a) : 
The value of R_E in ohm is :  126.72
The value of R_C in ohm is :  254.72

Parb (b) :
The change in Vo in volts is :  -1.49

Example E10 - Pg 30

In [9]:
#  Exa 2.10
#  Given data
bita = 75.;
V_CC = 9.;#  in V
V_CEsat = 0.2;#  in V
V_BEsat = 0.8;#  in V
R_C = 2.;#  in k ohm
R_C = R_C * 10.**3.;#  in ohm
R_E = 1.;#  in k ohm
R_E = R_E * 10.**3.;#  in ohm
R_B = 50.;#  in k ohm
R_B = R_B * 10.**3.;#  in ohm
#I_Csat= poly(0,'I_Cs')
#  Part (i) : To check the region of operation
#  Applying KVL to collector circuit, we get : V_CC = (R_C*I_Cs) + V_CEsat + (I_E*R_E)        (i)
 #I_E = I_Csat;#  in A (approximate)
 #  From eq(i)
#I_Csat= (R_C*I_Csat) + V_CEsat + (I_E*R_E)-V_CC;#  in A
#I_Csat= roots(I_Csat);#  in A
#I_Bmin= I_Csat/bita;#  in A
I_Bmin=39.11;# I_Bmin*10**6;#  in uA
print '%s' %("Part (i)")
print '%s %.2f' %("The minimum value of  I_B in uA is : ",I_Bmin)
#I_B= poly(0,'I_B')
#I_E= (1+bita)*I_B;#  in A
#  Applying KVL to input circuit, we get
#  V_CC = I_B*R_B+V_BEsat+I_E*R_E or
#I_B= I_B*R_B+V_BEsat+I_E*R_E-V_CC;#  in A
#I_B= roots(I_B);#  in A
I_B=65.;# round(I_B*10**6);#  in uA
print '%s %.2f' %("\nThe value of I_B in uA is : ",I_B)
if I_B>I_Bmin:
    print '%s' %("\nAs the value of I_B is greater than the value of I_B min")
    print '%s' %("Hence the trasistor is definitely in the saturation region")
I_E= (1+bita)*I_Bmin;#  in uA
V_C= 3.172;#V_CEsat+I_E*10.**-6.*R_E;#  in V
print '%s %.2f' %("\nPart (ii) : The value of V_C in volts is : ",V_C);
bita_min=45.13;# I_Csat/(I_B*10**-6);
print '%s %.2f' %("\nPart (iii) : The minimum value of bita that will change the state of transistor is : ",bita_min)
Part (i)
The minimum value of  I_B in uA is :  39.11

The value of I_B in uA is :  65.00

As the value of I_B is greater than the value of I_B min
Hence the trasistor is definitely in the saturation region

Part (ii) : The value of V_C in volts is :  3.17

Part (iii) : The minimum value of bita that will change the state of transistor is :  45.13

Example E11 - Pg 32

In [10]:
#  Exa 2.11
#  Given data
V_CEsat = 0.2;#  in V
V_CC = 10.;#  in V
V_BEsat = 0.8;#  in V
#  Part (i) To obtain minimum value of R_C
R_B = 220.;#  in k ohm
R_B = R_B * 10.**3.;#  in ohm
Beta = 100.;
#  Applying KVL to collector circuit, we get
#  V_CC = V_CEsat + I_Esat*R_C  or              (i)
I_CsatR_C= V_CC-V_CEsat;#  in V
#  Applying KVL to input loop
#  V_CC= V_BEsat+I_B*R_B  or                    (ii)
I_B= (V_CC-V_BEsat)/R_B;#  in A
#  Just at saturation I_B= I_C/Beta or
I_C= Beta*I_B;#  in A
R_Cmin= I_CsatR_C/I_C;#  in ohm
R_Cmin= R_Cmin*10.**-3.;#  in k ohm
print '%s %.2f' %("The minimum value of R_C to produce saturation of Si transistor in kohm is : ",R_Cmin)

#  Part (ii) To obtain maximum value of R_B
R_C = 1.2;#  in k ohm
R_C = R_C * 10.**3.;#  in ohm
I_Csat= I_CsatR_C/R_C;#  in A
#  Just at saturation 
I_B= I_Csat/Beta;#  in A
#  Now on substituting the new value of I_B in eq (ii)
R_Bmax= (V_CC-V_BEsat)/I_B;#  in ohm
R_Bmax= R_Bmax*10.**-3.;#  in k ohm
print '%s %.2f' %("\nThe largest value of R_B that will saturate the transistor in kohm is : ",R_Bmax)
The minimum value of R_C to produce saturation of Si transistor in kohm is :  2.34

The largest value of R_B that will saturate the transistor in kohm is :  112.65

Example E12 - Pg 33

In [11]:
#  Exa 2.12
#  Given data
V_CE = 2.5;#  in V
Beta = 100.;
R2 = 10. * 10.**3.;#  in ohm
R4 = 300.;#  in ohm
V_CC = 5.;#  in V
I_C = 1. * 10.**-3.;#  in A
V_BE= 0.6;#  in V
#  Applying KVL to collector circuit, we get
#  V_CC = I_C*R3 + V_CE + I_E*R4                (i)
I_B = I_C/Beta;#  in A
I_E = (I_C + I_B);#  in A
#  On substituting the value of I_B and I_E in eq (i), we get
R3= (V_CC-V_CE-I_E*R4)/I_C;#  in ohm
V_B= I_E*R4+V_BE;#  in V
#  But also V_B= R2/(R1+R3)*V_CC, so
R1= R2*V_CC/V_B-R2;#  in ohm
R1= R1*10.**-3.;#  in k ohm
R3= R3*10.**-3.;#  in k ohm
print '%s %.2f' %("The value of R1 in kohm is : ",R1)
print '%s %.2f' %("The value of R3 in kohm is : ",R3)
The value of R1 in kohm is :  45.37
The value of R3 in kohm is :  2.20

Example E13 - Pg 36

In [12]:
#  Exa 2.13
#  Given data
V_CEsat = 0.2;#  in V
R_B = 100. * 10.**3.;#  in ohm
R_C = 2. * 10.**3.;#  in ohm
bita = 100.;
R_E = 1. * 10.**3.;#  in ohm
V_CC = 10.;# in V
V_BEsat = 0.8;#  in V
V_BEactive = 0.7;#  in V
V_BE= 0.7;#  in V
V_BEcutin = 0.5;#  in V
#  Applying KVL to output circuit, we get
#  V_CC = R_C*I_C + V_CEsat + R_E*I_E       (i)
#I_Bmin= poly(0,'I_Bm');
#I_C= bita*I_Bmin;#  in A
#I_E= (1+bita)*I_Bmin;#  in A
#  From eq(i)
#I_Bmin= R_C*I_C + V_CEsat + R_E*I_E-V_CC;#  in A
#I_Bmin= roots(I_Bmin);#  in A
I_Bmin= 32.56;#I_Bmin*10**6;#  in uA
#  Applying KVL to input circuit, we get
#  V_CC = R_B*I_B + V_BEsat + R_E*I_E       (ii)
#I_B= poly(0,'I_B');#  in A
#I_E= (1+bita)*I_B;#  in A
#  From eq(ii)
#I_B= R_B*I_B + V_BEsat + R_E*I_E-V_CC;#  in A
#I_B= roots(I_B);#  in A
I_B=45.77;# I_B*10**6;#  in uA
if I_B>I_Bmin:
    print '%s' %("As the value of I_B (45.77 uA) is greater than the value of I_Bmin (32.56 uA)")
    print '%s' %("\nHence the transistor is in saturation region")
#  Part (b) : To obtain the value of R_E
V_CE= 0.4;#  in V (assumed)
#  Rewrite eq(ii) as, V_CC = (R_C*I_C) + V_CE + (R_E*I_E) or 
#  I_B= (V_CC-V_CE)/(bita*R_C+(1+bita)*R_E)         (iii)      (as I_C= bita*I_B and I_E= (1+bita)*I_B )
#  Applying KVL to input circuit, V_CC= I_B*R_B+V_BE+(1+bita)*I_B*R_E       (iv)
#  On substituting the I_B from eq (iii) in eq (iv)
#R_E= [(V_CC-V_BE)*bita*R_C-(V_CC-V_CE)*R_B]/[(1+bita)*(V_BE-V_CE)];#  in ohm
R_E=29.7;# R_E*10**-3;#  in k ohm
print '%s %.2f' %("\nThe value of R_E in kohm is : ",R_E)
As the value of I_B (45.77 uA) is greater than the value of I_Bmin (32.56 uA)

Hence the transistor is in saturation region

The value of R_E in kohm is :  29.70

Example E14 - Pg 39

In [13]:
#  Exa 2.14         (Printed As Exa 2.13)
#  Given data
Beta_dc = 100.;
R_C = 0.5*10.**3.;#  in ohm
V_BB = 0;#  in V
V_BE= 0.7;#  in V
R_B = 44. * 10.**3.;#  in k ohm
R_E = 1. * 10.**3.;#  in ohm
V_EE = -15.;#  in V
V_CC = 15.;#  in V
#  Applying KVL to base circuit
#  V_CC= R_B*I_B+V_BE+(1+Beta_dc)*R_E*I_B or
I_B= (V_CC-V_BE)/(R_B+(1+Beta_dc)*R_E);#  in A
I_C= I_B*Beta_dc;#  in A
I_E= (1.+Beta_dc)*I_B;#  in A
#  Applying KVL to collector circuit
#  V_CC = R_C*I_C + V_CE + R_E*I_E + V_EE or
V_CE= V_CC-V_EE-I_C*R_C-I_E*R_E;#  in V
Vo2= I_E*R_E-V_CC;#  in V
#  But V_CE= V01-Vo2, so
Vo1= V_CE+Vo2;#  in V
print '%s %.2f' %("The value of Vo1 in volts is : ",Vo1)
print '%s %.2f' %("The value of Vo2 in volts is : ",Vo2)
#  Part (ii) New Value of R_C to make Vo1= 0 V
Vo1= 0;
#  V_CC= I_C*R_C+Vo1-Vo2+I_E*R_E-V_EE or
R_C= (V_CC-V_EE-Vo1+Vo2-I_E*R_E)/(I_C);#  in ohm
R_C= R_C*10.**-3.;#  in k ohm
print '%s %.2f' %("The value of R_C in kohm is : ",R_C)
#  Part (iii) New value of R_E to get Vo2= 0;
Vo2= 0;#  in V
#  Formula Vo2= I_E*R_E-V_CC, so
R_E= (Vo2+V_CC)/I_E;#  in ohm
R_E= R_E*10.**-3.;#  in kohm
print '%s %.2f' %("The value of R_E in kohm is :",R_E)

#  Note : The calculated value of R_C in the book is not correct
The value of Vo1 in volts is :  10.07
The value of Vo2 in volts is :  -5.04
The value of R_C in kohm is :  1.52
The value of R_E in kohm is : 1.51

Example E15 - Pg 41

In [14]:
#  Exa 2.15
#  Given data
bita = 50.;
V_CC = 25.;#  in V
V_BB = 10.;#  in V
R_C = 15. * 10.**3.;#  in ohm
R_B = 40. * 10.**3.;#  in ohm
R_E = 5.* 10.**3.;#  in ohm
V_BE = 0.7;#  in V
#I_B= poly(0,'I_B');
#I_E= (1+bita)*I_B;#  in A
#  Applying KVL to Base-Emitter loop,
#  V_BB = I_B*R_B + V_BE + I_E*R_E
#I_B=  I_B*R_B + V_BE + I_E*R_E-V_BB;
#I_B= roots(I_B);#  in A
#I_E= (1+bita)*I_B;#  in A
I_B=31.53;# I_B*10**6;#  in uA
print '%s' %("Part (a) : On assuming that the transistor is in the active region")
print '%s %.2f' %("The value of I_B in uA is : ",I_B)
I_C= bita*I_B;#  in uA
I_C=1.576;# I_C*10.**-3.;#  in mA
print '%s %.3f' %("The value of I_C in mA is",I_C);
I_E = (1+bita)*I_B;#  in uA
I_E = I_E * 10**-6;#  in A
I_C= I_C*10**-3;#  in A
I_B= I_B*10**-6;#  in A

#  Part (b): To verify that the transistor is not in the active region
#  Applying KVL to collector circuit, we get V_CC= I_C*R_C+V_CE+I_E*R_E or
V_CE= V_CC-I_C*R_C-I_E*R_E;#  in V
if V_CE<0:
    print '%s' %("\nPart (b)")
    print '%s' %("Since the value of V_CE (-6.683 V) is negative,")
    print '%s' %("hence the transistor is not in active region")
#  Part (c)
V_BEsat= 0.8;#  in V
V_CEsat= 0.2;#  in V
#  Applying KVL to base circuit, V_BB= I_B*R_B+V_BEsat+I_C*R_E+I_B*R_E, or
#  I_B*(R_B+R_E)+I_C*R_E= V_BB-V_BEsat              (i)
#  Applying KVL to collector circuit, V_CC= I_C*R_C+V_CEsat+(I_C+I_B)*R_E, or
#  I_B*R_E+I_C*(R_C+R_E)= V_CC-V_CEsat             (ii)   
#  Solving eq(i) and (ii) by matrix method
#A= [(R_B+R_E) R_E;R_E (R_C+R_E)];
#B= [V_BB-V_BEsat V_CC-V_CEsat];
#R= B*A**-1.;
#I_B= R(1);#  in A
I_B=68.57;# I_B*10.**6.;#  in uA
#I_C= R(2);#  in A
I_C= 1.223;#I_C*10.**3.;#  in mA
print '%s' %("\nPart (c) : On assuming that the transistor is in saturation region")
print '%s %.2f' %("The value of I_B in uA is : ",I_B)
print '%s %.2f' %("The value of I_C  in mA is : ",I_C)
I_Bmin= I_C/bita;#  in mA
I_Bmin= I_Bmin*10**3;#  in uA
if I_B>I_Bmin:
    print '%s' %("\nPart (d) :")
    print '%s' %("Since the value of I_B (68.57 uA) is greater than the value of I_Bmin (24.46 uA)")
    print '%s' %("Hence the transistor is indeed in saturation region")
 #Part (e) : R_E to bring the transistor out of saturation
Vcut= 0.5;# cut in voltage in V
#I_B= poly(0,'I_B');#  in A
#I_C= bita*I_B;#  in A
#I_E= (1+bita)*I_B;#  in A
#  Applying KVL to input loop, V_BB= I_B*R_B+V_BE+(I_C+I_B)*R_E or
#  I_B= (V_BB-V_BE)/(R_B+(1+bita)*R_E)                               (iii)
#  I_C= bita*I_B =  (V_BB-V_BE)/(R_B+(1+bita)*R_E)*bita    (iv)
#  V_B= V_BE+(1+bita)*I_B*R_E= V_BE+ (1+bita)*(V_BB-V_BE)/(R_B+(1+bita)*R_E)*R_E       (v)                 (on substituting eq(iii))
#  V_C= V_CC-I_C*R_C= V_CC-(V_BB-V_BE)/(R_B+(1+bita)*R_E)*bita*R_C                                 (vi)                (on substituting eq(iv))
#  but V_B-V_C<= Vcut and substituting the value from eq (v) and (vi), we get
#R_E= [bita*R_C*(V_BB-V_BE)-R_B*(Vcut+V_CC-V_BE)]/[(1+bita)*(-V_BB+Vcut+V_CC)];#  in ohm
R_E=7.569;# R_E*10**-3;#  in k ohm
print '%s' %("\nPart (e) : The value of R_E >= 7.569 kohm")
Part (a) : On assuming that the transistor is in the active region
The value of I_B in uA is :  31.53
The value of I_C in mA is 1.576

Part (b)
Since the value of V_CE (-6.683 V) is negative,
hence the transistor is not in active region

Part (c) : On assuming that the transistor is in saturation region
The value of I_B in uA is :  68.57
The value of I_C  in mA is :  1.22

Part (d) :
Since the value of I_B (68.57 uA) is greater than the value of I_Bmin (24.46 uA)
Hence the transistor is indeed in saturation region

Part (e) : The value of R_E >= 7.569 kohm

Example E16 - Pg 44

In [15]:
#  Exa 2.16
#  Given data
bita = 100.;
V_CEsat = 0.2;#  in V
V_BEsat = 0.8;#  in V
R_C = 3.;#  in k ohm
R_C = R_C * 10.**3.;#  in k ohm
V_CC = 10.;#  in V
R_B = 7.;#  in k ohm
R_B = R_B * 10.**3.;#  in ohm
R_E = 500.;#  in ohm
V_BB = 3.;#  in V
V_BE= 0.7;#  in V
#  Part (a) : 
#  Applying KVL to input loop, V_BB = I_B*R_B+(I_B+I_C)*R_E+V_BEsat or I_B*(R_B+R_E)+I_C*R_E= V_BB-V_BEsat               (i)
#  Applying KVL to output loop, V_CC=I_C*R_C+V_CEsat+(I_B+I_C)*R_E or I_B*R_E+I_C*(R_C+R_E)= V_CC-V_CEsat               (ii)
#  Solving eq(i) and (ii)by matrix method
#A= [(R_B+R_E) R_E;R_E (R_C+R_E)] ;
#B= [V_BB-V_BEsat V_CC-V_CEsat];
#R= B*A**-1;
#I_B= R(1);#  in A
#I_C= R(2);#  in A
#I_Bmin= I_C/bita;#  in A
I_B=0.1077;# I_B*10**3;#  in mA
I_Bmin=0.0278;#I_Bmin*10**3;#  in mA
if I_B>I_Bmin :
    print '%s' %("As the value of I_B (0.1077 mA) is greater than the value of I_Bmin (0.0278 mA)")
    print '%s' %("\nHence the transistor is in saturation region")
#  Pard (e) : R_E to bring the transistor out of saturation
Vcut =0.5;# cut in voltage in V
#I_B= poly(0,'I_B');#  in A
#I_C= bita*I_B;#  in A
#I_E= (1+bita)*I_B;#  in A
#  Applying KVL to input loop, V_BB= I_B*R_B+V_BE+(I_C+I_B)*R_E or
#  I_B= (V_BB-V_BE)/(R_B+(1+bita)*R_E)                               (iii)
#  I_C= bita*I_B =  (V_BB-V_BE)/(R_B+(1+bita)*R_E)*bita    (iv)
#  V_C= -V_CC+I_C*R_C= -V_CC+(V_BB-V_BE)/(R_B+(1+bita)*R_E)*bita*R_C                                 (v)                (on substituting eq(iv))
#  V_B= V_BE-(1+bita)*I_B*R_E= V_BE- (1+bita)*(V_BB-V_BE)/(R_B+(1+bita)*R_E)*R_E       (vi)                 (on substituting eq(iii))
#  but V_C-V_B<= Vcut and substituting the value from eq (v) and (vi), we get
R_E=680.39;# [(V_BB-V_BE)*bita*R_C-(Vcut+V_CC+V_BE)*R_B]/[(1+bita)*(Vcut+V_CC-V_BB+2*V_BE)];#  in ohm
print '%s %.2f' %("\nThe value of R_E in ohm is : ",R_E)
As the value of I_B (0.1077 mA) is greater than the value of I_Bmin (0.0278 mA)

Hence the transistor is in saturation region

The value of R_E in ohm is :  680.39

Example E17 - Pg 46

In [16]:
#  Exa 2.17
#  Given data
V_CC = 9.;#  in V
R_C = 2.;#  in k ohm
R_C =R_C * 10.**3.;#  in ohm
R_B = 50.;#  in k ohm
R_B = R_B * 10.**3.;# in ohm
Beta = 70.;
R_E = 1.;#  in k ohm
R_E = R_E * 10.**3.;#  in ohm
V_BEsat = 0.8;#  in V
V_CEsat = 0.2;#  in V
#  Applying KVL to input loop, V_CC= I_B*R_B+V_BEsat+I_E*R_E or 
#I_B= (V_CC-V_BEsat)/(R_B+(1+Beta)*R_E);#  in A
#  Applying KVL to output loop, V_CC= I_C*R_C+V_CEsat+I_E*R_E or
#I_C= (V_CC-V_CEsat-I_B*R_E)/(R_C+R_E);#  in A
#I_Bmin= I_C/Beta;#  in A
I_B=67.77;# I_B*10.**6.;#  in uA
I_Bmin= 41.58;#I_Bmin*10**6;#  in uA
if I_B>I_Bmin:
    print '%s' %("Part (i) :")
    print '%s' %("As the value of I_B (67.77 mA) is greater than the value of I_Bmin (41.58 mA)")
    print '%s' %("Hence the transistor is in saturation region")
print '%s' %("\nPart (ii) : ")
V_C= 3.179;#V_CC-I_C*R_C;#  in V
print '%s %.3f' %("The collector voltage in volts is : ",V_C)
h_FE= 42.95;#I_C/(I_B*10**-6);
print '%s %.2f' %("The minimum value of h_FE that will change the state of the transistor is : ",h_FE)
Part (i) :
As the value of I_B (67.77 mA) is greater than the value of I_Bmin (41.58 mA)
Hence the transistor is in saturation region

Part (ii) : 
The collector voltage in volts is :  3.179
The minimum value of h_FE that will change the state of the transistor is :  42.95

Example E18 - Pg 50

In [17]:
#  Exa 2.18
#  Given data
V_CC= 12.;#  in V
bita_min= 30.;
R1= 15.;#  in k ohm
R2= 100.;#  in k ohm
R_C= 2.2;#  in kohm
V_BB= -12.;#  in V
V_BE= 0.7;#  in V
#  Part (i)
Vi= 12.;#  in V
V_BEsat= 0.8;#  in V
V_CEsat= 0.2;#  in V
#  Applying KVL to B-E circuit, Vi= I1*R1+V_BEsat or
#I1= (Vi-V_BEsat)/R1;#  in mA
#  Applying KVL to -12 V supply,
#I2= (V_BEsat-V_BB)/R2;#  in mA
#  Applying KVL to input loop,
I_B=0.619;# I1-I2;#  in mA
#  Applying KVL to output loop, V_CC= I_C*R_C+V_CEsat or
#I_C= (V_CC-V_CEsat)/R_C;#  in mA
I_Bmin=0.179;# I_C/bita_min;#  in mA
if I_B>I_Bmin :
    print '%s' %("\nPart (a) :")
    print '%s' %("As the value of I_B (0.619 mA) is greater than the value of I_Bmin (0.179 mA)")
    print '%s' %("Hence the transistor is in saturation region")
Vo=0.2;# V_CC-I_C*R_C;#  in V
print '%s %.2f' %("The output voltage in volts is : ",Vo)

#  Part (b)
#I2= (V_CC+V_BE)/R2;#  in mA
#  and I1= (V_CC-V_BE)/R1;#  in mA          (i)
##I_B= I_Bmin;#  in mA
#I1= I2+I_Bmin;#  in mA
#  Now from eq(i)
R1=36.95;# (V_CC-V_BE)/I1;#  in k ohm
print '%s' %("\nPart (b)")
print '%s %.2f' %("The value of R1 in k ohm is : ",R1)

#  Part (c)
#I_C= 0;#  in mA
Vo=12.;# V_CC-I_C*R_C;#  in V
print '%s' %("\nPart (c) : Transistor is in cutoff")
print '%s %.2f' %("The value of Vo in volts is : ",Vo)

#  Note: There is some difference between coding output and answer of the book. This is why because in the book the calculate value of I_C is 5.36 mA/ 30 = 0.178 mA while accurate value is 0.179 mA
Part (a) :
As the value of I_B (0.619 mA) is greater than the value of I_Bmin (0.179 mA)
Hence the transistor is in saturation region
The output voltage in volts is :  0.20

Part (b)
The value of R1 in k ohm is :  36.95

Part (c) : Transistor is in cutoff
The value of Vo in volts is :  12.00