import math
##Example 8.1
##let thermal resistance parameters be R
Rdcase=1.75;##degree celsius per watt
Rcsnk=1.;##degree celsius per watt
Rsamb=5.;##degree celsius per watt
Rcamb=50.;##degree celsius per watt
Tamb=30.;##ambient temperature
Tjmax=150.;##maximum junction temperature
Tdev=150.;##device temperature
##when no heat sink is used
P=(Tjmax-Tamb)/(Rdcase+Rcamb);
print"%s %.2f %s"%('\nmaximum power dissipation= ',P,' W\n')
##when heat sink is used
P=(Tjmax-Tamb)/(Rdcase+Rcsnk+Rsamb);
print"%s %.2f %s"%('\nmaximum power dissipation= ',P,' W\n')
import math
##Example 8.3
Rcsnk=1.;##degree celsius per watt
Rsamb=5.;##degree celsius per watt
Tjmax=175.;##maximum junction temperature
Toc=25.;
Tamb=25.;
Pr=20.;##rated power W
Rdcase=(Tjmax-Toc)/Pr;
print"%s %.2f %s"%('\ndevice to case thermal resistance= ',Rdcase,' C/W\n')
P=(Tjmax-Tamb)/(Rdcase+Rcsnk+Rsamb);
print"%s %.2f %s"%('\nmaximum power dissipation= ',P,' W\n')
import math
##Example 8.7
Vdd=10.;
Rl=20.;
K=0.2;
Vt=1.;
vo=5.;
iL=vo/20.;
print"%s %.2f %s"%('\niL= ',iL,' A\n')
Idq=0.05;
##Idq=K*(Vbb/2-Vt)
Vbb=(math.sqrt(Idq/K)+1.)*2.;
print"%s %.2f %s"%('\nVbb= ',Vbb,' V\n')
iD=iL;
Vgsn=math.sqrt(iD/K)+Vt;
print"%s %.2f %s"%('\nVgsn= ',Vgsn,' V\n')
Vsgp=Vbb-Vgsn;
print"%s %.2f %s"%('\nVsgp= ',Vsgp,' V\n')
vi=vo+Vgsn-Vbb/2.;
print"%s %.2f %s"%('\ninput voltage= ',vi,' V\n')
import math
##Example 8.8
Vcc=24.;
Rl=8.;
P=5.;
Vbe=0.7;
b=100.;
Vp=math.sqrt(2.*Rl*P);
print"%s %.2f %s"%('\npeak output voltage= ',Vp,' V\n')
Ip=Vp/Rl;
print"%s %.2f %s"%('\npeak output current = ',Ip,'A\n')
a=0.9*Vcc/Vp;
print"%s %.2f %s"%('\na= ',a,'\n')
Icq=Ip/(0.9*a);
print"%s %.2f %s"%('\nIcq= ',Icq,' A\n')
Pq=Vcc*Icq;
print"%s %.2f %s"%('\nmaximum power dissipated in the transistor= ',Pq,' W\n')
Ibq=Icq/b;
Ibq=Ibq*1000.;##mA
print"%s %.2f %s"%('\nbase current Ibq= ',Ibq,' mA\n')
Rth=2.500;
##Vth=Vcc*Rth/R1 and Vth=Ibq*Rth+Vbe
R1=Vcc*Rth/(Ibq*Rth+Vbe);
print"%s %.2f %s"%('\nR1= ',R1,' KOhm\n')
R2=Rth*R1/(R1-Rth);
print"%s %.2f %s"%('\nR2= ',R2,' KOhm\n')
import math
##Example 8.9
Iso=3*10**-14;
Isq=10**-13;
b=75.;
Vt=0.026;
Rl=8.;
P=5.;
Vp=math.sqrt(2.*Rl*P);
print"%s %.2f %s"%('\npeak voltage Vp= ',Vp,' V\n')
Vcc=Vp/0.8;
print"%s %.2f %s"%('\nsupply voltage= ',Vcc,' V\n')
Ien=Vp/Rl;
print"%s %.2f %s"%('\nemitter current= ',Ien,' A\n')
Ibn=Ien/(1.+b);
Ibn=Ibn*1000.;##mA
print"%s %.2f %s"%('\nbase current= ',Ibn,' mA\n')
iD=0.020;
Vbb=2.*Vt*math.log(iD/Iso);
print"%s %.2f %s"%('\nVbb= ',Vbb,' V\n')
Icq=Isq*math.exp((Vbb/2.)/Vt);
Icq=Icq*1000.;##mA
print"%s %.2f %s"%('\nquiescent collector current= ',Icq,' mA\n')
Ibias=20.;##mA
iD=Ibias-Ibn;
print"%s %.2f %s"%('\ndrain current= ',iD,' mA\n')
iD=iD*0.001;##A
Vbb=2.*Vt*math.log(iD/Iso);
print"%s %.2f %s"%('\nVbb= ',Vbb,' V\n')
Icn=1.12;
Vben=Vt*math.log(Icn/Isq);
print"%s %.2f %s"%('\nB-E voltage of Qn= ',Vben,' V\n')
Vebp=Vbb-Vben;
print"%s %.2f %s"%('\nemitter base voltage of Qp= ',Vebp,' V\n')
Icp=Isq*math.exp(Vebp/Vt);
Icp=Icp*1000.;##mA
print"%s %.2f %s"%('\nIcp ',Icp,' mA\n')
import math
##Example 8.11
R1=2.;##KOhm
R2=R1;
Rl=.1;##KOhm
b=60.;
Vbe=0.6;
Veb=0.6;
V1=15.;
V2=V1;
iR1=(V1-Vbe)/R1;
##iR1=iR2=iE1=iE2
print"%s %.2f %s"%('\niR1= ',iR1,' mA\n')
vo=10.;
io=vo/Rl;
print"%s %.2f %s"%('\noutput current= ',io,' mA\n')
iB3=100./61.;
print"%s %.2f %s"%('\niB3= ',iB3,'mA\n')
iR1=(V1-(10.+Vbe))/R1;
print"%s %.2f %s"%('\ncurrent in R1= ',iR1,' mA\n')
iE1=iR1-iB3;
print"%s %.2f %s"%('\niE1= ',iE1,' mA\n')
iB1=iE1/(1.+b);
iB1=iB1*1000.;##micro A
print"%s %.2f %s"%('\niB1= ',iB1,' microA\n')
iE2=(10-0.6+15.)/R1;
print"%s %.2f %s"%('\niE2= ',iE2,' mA\n')
iB2=iE2/(1.+b);
iB2=iB2*1000.;
print"%s %.2f %s"%('\niB2= ',iB2,' microA\n')
Ii=iB2-iB1;
print"%s %.2f %s"%('\ninput current= ',Ii,' microA\n')
Ii=Ii*0.001;##mA
Ai=io/Ii;
print"%s %.2f %s"%('\ncurrent gain=\n',Ai,'')
Ai=(1.+b)*R1/(2.*Rl);
print"%s %.2f %s"%('\npredicted current gain=\n',Ai,'')