write(TAUR);
gotoxy(col+3,row+15);
write('[MJC] ');
gotoxy(col+39,row+15);
write(MJC);
gotoxy(col+3,row+16);
write('[VJC] ');
gotoxy(col+39,row+16);
write(VJC);
gotoxy(col+3,row+17);
write('[MJE] ');
gotoxy(col+39,row+17);
write(MJE);
gotoxy(col+3,row+18);
write('[VJE] ');
gotoxy(col+39,row+18);
write(VJE);
gotoxy(col+3,row+19);
write('[CSUB] ');
gotoxy(col+39,row+19);
write(CCS);
gotoxy(col+3,row+20);
write('[Minimum junction resistance] ');
gotoxy(col+39,row+20);
write(RJ);
gotoxy(col+6,row+25);
write('Accept parameters of transistor (Y/N) ');
an:=readkey;
case an of 'y': goto 3;
'Y': goto 3;
'n': goto 2;
'N': goto 2;
else
begin
sound(500);
delay(1000);
nosound;
goto 1;
end;
end;
2:
clrscr;
gotoxy(col+25,row+1);
write('Input next parameters of transistor');
gotoxy(col+3,row+3);
write('[Forward beta] ');
gotoxy(col+40,row+3);
read(BF);
gotoxy(col+39,row+3);
write(BF);
gotoxy(col+3,row+4);
write('[Revers beta] ');
gotoxy(col+40,row+4);
read(BR);
gotoxy(col+39,row+4);
write(BR);
gotoxy(col+3,row+5);
write('[Temp. coef. of BETTA (PPM)] ');
gotoxy(col+40,row+5);
read(TCB);
gotoxy(col+39,row+5);
write(TCB);
gotoxy(col+3,row+6);
write('[Saturation Current] ');
gotoxy(col+40,row+6);
read(Is0);
gotoxy(col+39,row+6);
write(Is0);
gotoxy(col+3,row+7);
write('[Energy gap (0.6 to 1.3)] ');
gotoxy(col+40,row+7);
read(EG);
gotoxy(col+39,row+7);
write(EG);
gotoxy(col+3,row+8);
write('[CJC0] ');
gotoxy(col+40,row+8);
read(CJC0);
gotoxy(col+39,row+8);
write(CJC0);
gotoxy(col+3,row+9);
write('[CJE0] ');
gotoxy(col+40,row+9);
read(CJE0);
gotoxy(col+39,row+9);
write(CJE0);
gotoxy(col+3,row+10);
write('[Base resistance] ');
gotoxy(col+40,row+10);
read(RB);
gotoxy(col+39,row+10);
write(RB);
gotoxy(col+3,row+11);
write('[Collector resistance] ');
gotoxy(col+40,row+11);
read(RC);
gotoxy(col+39,row+11);
write(RC);
gotoxy(col+3,row+12);
write('[Early Valtage] ');
gotoxy(col+40,row+12);
read(VA);
gotoxy(col+39,row+12);
write(VA);
gotoxy(col+3,row+13);
write('[TAU forward] ');
gotoxy(col+40,row+13);
read(TAUF);
gotoxy(col+39,row+13);
write(TAUF);
gotoxy(col+3,row+14);
write('[TAU reverse] ');
gotoxy(col+40,row+14);
read(TAUR);
gotoxy(col+39,row+14);
write(TAUR);
gotoxy(col+3,row+15);
write('[MJC] ');
gotoxy(col+40,row+15);
read(MJC);
gotoxy(col+39,row+15);
write(MJC);
gotoxy(col+3,row+16);
write('[VJC] ');
gotoxy(col+40,row+16);
read(VJC);
gotoxy(col+39,row+16);
write(VJC);
gotoxy(col+3,row+17);
write('[MJE] ');
gotoxy(col+40,row+17);
read(MJE);
gotoxy(col+39,row+17);
write(MJE);
gotoxy(col+3,row+18);
write('[VJE] ');
gotoxy(col+40,row+18);
read(VJE);
gotoxy(col+39,row+18);
write(VJE);
gotoxy(col+3,row+19);
write('[CSUB] ');
gotoxy(col+40,row+19);
read(CCS);
gotoxy(col+39,row+19);
write(CCS);
gotoxy(col+3,row+20);
write('[Minimum junction resistance] ');
gotoxy(col+40,row+20);
read(RJ);
gotoxy(col+39,row+20);
write(RJ);
writeln;
1:
gotoxy(col+6,row+25);
write('Accept parameters of transistor (Y/N) ');
an:=readkey;
case an of 'y': goto 3;
'Y': goto 3;
'n': goto 2;
'N': goto 2;
else
begin
sound(500);
delay(1000);
nosound;
goto 1;
end;
end;
3:;
end;
Procedure
InputCurrent;
Label
1,2,3;
begin
clrscr;
TNOM:=27;
T:=21;
Ueb:=0.8;
Uec:=2;
Ucb:=-1.2;
gotoxy(col+25,row+1);
write(' Default parameters');
gotoxy(col+3,row+3);
write('[Nominal temperature (C)] ');
gotoxy(col+39,row+3);
write(TNOM);
gotoxy(col+3,row+4);
write('[Current temperature (C)] ');
gotoxy(col+39,row+4);
write(T);
gotoxy(col+3,row+5);
write('[Emitter-Base voltage] ');
gotoxy(col+39,row+5);
write(Ueb);
gotoxy(col+3,row+6);
write('[Emitter-Collector voltage] ');
gotoxy(col+39,row+6);
write(Uec);
gotoxy(col+3,row+7);
write('[Collector-Base voltage] ');
gotoxy(col+39,row+7);
write(Ucb);
1:
gotoxy(col+6,row+25);
write('Accept current parameters (Y/N) ');
an:=readkey;
case an of 'y': goto 3;
'Y': goto 3;
'n': goto 2;
'N': goto 2;
else
begin
sound(500);
delay(1000);
nosound;
goto 1;
end;
end;
2:
clrscr;
gotoxy(col+20,row+2);
write('Input next current parameters');
gotoxy(col+3,row+3);
write('[Nominal temperature (C)] ');
gotoxy(col+40,row+3);
read(TNOM);
gotoxy(col+39,row+3);
write(TNOM);
gotoxy(col+3,row+4);
write('[Current temperature (C)] ');
gotoxy(col+40,row+4);
read(T);
gotoxy(col+39,row+4);
write(T);
gotoxy(col+3,row+5);
write('[Emitter-Base voltage] ');
gotoxy(col+40,row+5);
read(Ueb);
gotoxy(col+39,row+5);
write(Ueb);
gotoxy(col+3,row+6);
write('[Emitter-Collector voltage] ');
gotoxy(col+40,row+6);
read(Uec);
gotoxy(col+39,row+6);
write(Uec);
if (Ueb = 0) or (Uec = 0) then
begin
gotoxy(col+3,row+7);
write('[Collector-Base voltage] ');
gotoxy(col+40,row+7);
read(Ucb);
gotoxy(col+39,row+7);
write(Ucb);
if Uec <> 0 then
begin
Ueb := Uec + Ucb;
gotoxy(col+39,row+5);
write(Ueb);
end
else
begin
Uec := Ueb - Ucb;
gotoxy(col+39,row+6);
write(Uec);
end;
goto 1;
end;
Ucb := -(Uec - Ueb);
gotoxy(col+3,row+7);
write('[Collector-Base voltage] ');
gotoxy(col+39,row+7);
write(Ucb);
3:
TNOM:=TNOM+273.15;
T:=T+273.15;
BF:=BF*(1+(T-TNOM)*TCB*10e-6);
BR:=BR*(1+(T-TNOM)*TCB*10e-6);
gotoxy(col+39,row+8);
end;
procedure
OutputResult;
begin
clrscr;
writeln(' It is result ');
K:=1.38e-23;
q:=1.6e-19;
expon:=exp(1.0);
FIt:=K*T/q;
gotoxy(col+3,row+3);
write('[FIt] ');
gotoxy(col+39,row+3);
write(FIt);
Is:=Is0 * (1+ Uec/VA) * st(T/TNOM,3) * st(expon,-EG/K*(1/T-1/TNOM));
gotoxy(col+3,row+4);
write('[Is]');
gotoxy(col+39,row+4);
write(Is);
Uc:=Fit*ln(FIt/(Is*RJ));
gotoxy(col+3,row+5);
write('[Uc] ');
gotoxy(col+39,row+5);
write(Uc);
if (st(expon,(Uec/FIt))-1) < 1e4800/Is then
Ic:= Is * (st(expon,Uc/FIt)-1)
else Ic:= 1e4800;
gotoxy(col+3,row+6);
write('[Ic]');
gotoxy(col+39,row+6);
write(Ic);
Model(Ueb,Ucb,Ieb,Icb,Ib,Iy);
gotoxy(col+3,row+7);
write('[Ieb] ');
gotoxy(col+39,row+7);
write(Ieb);
gotoxy(col+3,row+8);
write('[Icb] ');
gotoxy(col+39,row+8);
write(Icb);
gotoxy(col+3,row+9);
write('[Ib] ');
gotoxy(col+39,row+9);
write(Ib);
gotoxy(col+3,row+10);
write('[Iy] ');
gotoxy(col+39,row+10);
write(Iy);
Ik:=Iy-Icb;
gotoxy(col+3,row+11);
write('[Ik] ');
gotoxy(col+39,row+11);
write(Ik);
Ie:=Iy+Ieb;
gotoxy(col+3,row+12);
write('[Ie] ');
gotoxy(col+39,row+12);
write(Ie);
If Ueb < VJE/2 then CJE := CJE0* 1 / st(1- Ueb/VJE,MJE)
else CJE := st(2,MJE) * CJE0 * (MJE* Ueb / VJE/2 + 1 - MJE);
gotoxy(col+3,row+13);
write('[CJE] ');
gotoxy(col+39,row+13);
write(CJE);
If Ieb > 0 then CDE := Ieb * BF * TAUF / FIt
else CDE := 0;
gotoxy(col+3,row+14);
write('[CDE] ');
gotoxy(col+39,row+14);
write(CDE);
CBE:=CJE+CDE;
gotoxy(col+3,row+15);
write('[CBE] ');
gotoxy(col+39,row+15);
write(CBE);
If Ucb < (VJC / 2) then CJC := CJC0 * 1 / st(1- Ucb/VJC,MJC)
else CJC := 2 * st(2,MJC) * CJC0 * (MJC * Ucb / VJC / 2 + 1 - MJC);
gotoxy(col+3,row+16);
write('[CJC] ');
gotoxy(col+39,row+16);
write(CJC);
If Icb > 0 then CDC := Icb * BR * TAUR / FIt
else CDC := 0;
gotoxy(col+3,row+17);
write('[CDC] ');
gotoxy(col+39,row+17);
write(CDC);
CBC := CJC + CDC;
gotoxy(col+3,row+18);
write('[CBC] ');
gotoxy(col+39,row+18);
write(CBC);
gotoxy(col+6,row+25);
write('Pres any key to Main menu ');
readkey;
end;
procedure
IGraph;
var
grDriver: Integer;
grMode: Integer;
ErrCode: Integer;
i,x0,y0: Integer;
stro1,stro2,stro3,stro4:string;
begin
grDriver := Detect;
InitGraph(grDriver, grMode,'');
ErrCode := GraphResult;
if ErrCode = grOk then
begin { Do graphics }
x0:=320;
y0:=350;
Kyf:=0;
OutTextXY(250,10,'Graphic Ib=f(-Ueb)');
Line(x0, y0-150, x0, Y0+150);
Line(x0-200, y0, X0+200, Y0);
setcolor(0);
LineTo(x0+200, y0-300);
setcolor(2);
for i:=200 downto -200 do
begin
Model(Ueb*(i)/200,-(Uec-Ueb*(i)/200),Ieb,Icb,Ib,Iy);
if Kyf=0 then
begin
Kyf:=300/Ib;
Str(Ieb,stro1);
Str(Ueb,stro2);
end;
if abs(Kyf*Ib)< 10e5 then Lineto(x0+i, y0-round(Kyf*Ib));
end;
Str(-Ieb,stro3);
Str(-Ueb,stro4);
OutTextXY(x0-40,Y0-300,'+Ib = ');
OutTextXY(x0+3,Y0-300,Stro1);
OutTextXY(x0+60,Y0+10,'+Ueb = ');
OutTextXY(x0+100,Y0+10,Stro2);
OutTextXY(x0-250,Y0+10,'-Ib = ');
OutTextXY(x0-210,Y0+10,Stro3);
OutTextXY(x0-300,Y0-10,'-Ueb = ');
OutTextXY(x0-250,Y0-10,Stro4);
OutTextXY(40,470,'Pres any key to Main menu');
Readkey;
CloseGraph;
end
else Writeln('Graphics error:', GraphErrorMsg(ErrCode));
end;
procedure
OGraph;
var
grDriver: Integer;
grMode: Integer;
ErrCode: Integer;
i,x0,y0: Integer;
stro1,stro2,stro3,stro4:string;
begin
grDriver := Detect;
InitGraph(grDriver, grMode,'');
ErrCode := GraphResult;
if ErrCode = grOk then
begin { Do graphics }
x0:=320;
y0:=240;
Kyf:=0;
OutTextXY(250,10,'Graphic Ik=f(Uec)');
Line(x0, y0-150, x0, Y0+150);
Line(x0-200, y0, X0+200, Y0);
setcolor(0);
LineTo(x0+200, round(y0-Kyf*Ik));
setcolor(2);
Kyf:=0;
for i:=200 downto -200 do
begin
if (i>0) or (i=0) then
begin
Is:=Is0 * (1+ Uec*(i)/200/VA) * st(T/TNOM,3) * st(expon,-EG/K*(1/T-1/TNOM));
Uc:=Fit*ln(FIt/(Is*RJ));
Ic:= Is * (st(expon,Uc/FIt)-1);
Model(Ueb,Ueb-Uec*(i)/200,Ieb,Icb,Ib,Iy);
Ik:=Iy-Icb;
end;
if i<0 then
begin
Is:=Is0 * (1- Uec*(i)/200/VA) * st(T/TNOM,3) * st(expon,-EG/K*(1/T-1/TNOM));
Uc:=Fit*ln(FIt/(Is*RJ));
Ic:= Is * (st(expon,Uc/FIt)-1);
Model(Ueb+Uec*(i)/200,Ueb,Ieb,Icb,Ib,Iy);
Ik:=(Iy-Icb);
end;
if Kyf=0 then
begin
Kyf:=abs(20/Ik);
Str(Ik,stro1);
Str(Uec,stro2);
setcolor(0);
LineTo(x0+200, round(y0-Kyf*Ik));
setcolor(2);
end;
if abs(Kyf*Ik)< 10e5 then
Lineto(x0+i, y0-round(Kyf*Ik));
end;
OutTextXY(x0-40,Y0-210,'+Ik = ');
OutTextXY(x0+3,Y0-210,Stro1);
OutTextXY(x0+60,Y0+10,'+Uec = ');
OutTextXY(x0+100,Y0+10,Stro2);
OutTextXY(40,470,'Pres any key to Main menu');
Readkey;
CloseGraph;
end
else Writeln('Graphics error:', GraphErrorMsg(ErrCode));
end;
begin
textbackground(1);
textcolor(14);
col:=-2;
row:=0;
repeat
clrscr;
writeln(' Mogel p-n-p transistor Eabers-Mol whith 1 SIDI');
writeln;
writeln(' Main menu');
writeln;
writeln('1: Input parameters of transistor');
writeln('2: Input current parameters');
writeln('3: Output text result');
writeln('4: Input-graphic result');
writeln('5: Output-graphic result');
writeln('ECS:exit');
key:=Readkey;
case key of '1': InputTrans;
'2': InputCurrent;
'3': OutputResult;
'4': IGraph;
'5': OGraph;
#27: halt ;
else
begin
sound(500);
delay(1000);
nosound;
end;
end;
until key=#27;
{donewincrt;}
end.
.model KT315v NPN(Is=21.11f Xti=3 Eg=1.11 Vaf=157 Bf=81.09
Ise=321.2f
+ Ne=1.458 Ikf=.2017 Nk=.4901 Xtb=1.5 Br=1 Isc=84.36f
Nc=1.317
+ Ikr=1.671 Rb=12 Rc=1.426 Cjc=9.716p Mjc=.33 Vjc=.75 Fc=.5
Cje=18.5p
+ Mje=.33 Vje=.75 Tr=275.6n Tf=321.4p Itf=1 Xtf=2 Vtf=60)
Ãðàôèê âèäà çàâèñèìîñòè Ic = f(Ube) Ãðàôèê
âèäà çàâèñèìîñòè Ube = f(Ibe)
ïðîãðàììû ORCAD 9.1; ìîåé ïðîãðàììû
Ïðîãðàììà, íàïèñàííàÿ ïî óêàçàííîìó
àëãîðèòìó, ïîäòâåðäèëà ñïðàâåäëèâîñòü ýòèõ àëãîðèòìîâ è îòíîñèòåëüíóþ òî÷íîñòü
ìàòåìàòè÷åñêîãî îïèñàíèÿ áèïîëÿðíûõ òðàíçèñòîðîâ. Ðåçóëüòàòû ïîëó÷åííîé
ïðîãðàììû ñðàâíèâàëèñü ñ ïðîôåññèîíàëüíûìè CAD ïðîãðàììàìè
äëÿ îäíèõ è òåõ æå òðàíçèñòîðîâ è îäèíàêîâûõ ñîîòâåòñòâóþùèõ ïàðàìåòðàõ.
Íåìíîãî èçìåíÿÿ âõîäíûå ïàðàìåòðû âîçìîæíî äîñòàòî÷íî áëèçêî ïðèáëèçèòñÿ ê èõ
ðåçóëüòàòàì.
Ïîëó÷åííàÿ ïðîãðàììà ïîçâîëÿåò
ðåøàòü ïîñòàâëåííûå ïåðåä íåþ ïðîáëåìû, íî íå îáëàäàåò óäîáñòâîì â
èñïîëüçîâàíèè è òðåáóåò äîðàáîòêè.
 äàëüíåéøåì âîçìîæíî äîáàâëåíèå áîëåå
ñëîæíûõ ìîäåëåé, ïîçâîëÿþùèõ ïðîâîäèòü àíàëèç ïî ïîñòîÿííîìó òîêó, íî è ïî
ïåðåìåííîìó íà âûñîêèõ ÷àñòîòàõ, â ðåæèìå ìàëîãî ñèãíàëà.
Äëÿ óìåíüøåíèÿ ïîãðåøíîñòè ïðè
âû÷èñëåíèÿõ ìîæíî íàïèñàòü ïðîãðàììó ïîä Windows, ãäå
ðàçðÿäíîñòü äàííûõ óâåëè÷åíà è äîñòèãàåò 64 áèòà. Ýòîò ìåòîä ïîçâîëèò óëó÷øèòü
óäîáñòâî â ðàáîòå ñ ïðîãðàììîé.
1.
Âëàõ Í., Ñèíãõàë Ê. Ìàøèííûå ìåòîäû àíàëèçà è
ïðîåêòèðîâàíèÿ ýëåêòðîííûõ ñõåì.
Ì.
: Ðàäèî è ñâÿçü, 1988 – 560 ñòð.
2.
Â. È. Ëà÷èí, Í.Ñ. Ñàâ¸ëîâ Ýëåêòðîíèêà.
3.
Íîñîâ Þ. Ð., Ïåòðîñÿíö Ê. Î., Øèëèí Â. À.
Ìàòåìàòè÷åñêèå ìîäåëè Ýëåìåíòîâ èíòåãðàëüíîé ýëåêòðîíèêè.
Ì.
: Ñîâ. ðàäèî, 1976 – 304 ñòð.
4.
Ñèãîðñêèé Â. Ï., Ïåòðåíêî À.È. Àëãîðèòìû àíàëèçà
ýëåêòðîííûõ ñõåì.
Ì.
: Ñîâ. ðàäèî, 1976 – 608 ñòð.
5.
Ìèãóëèí È. Í., ×àïîâñêèé Ì. Ç. Óñèëèòåëüíûå
óñòðîéñòâà íà òðàíçèñòîðàõ.
6.
Ëåêöèè ïî äèñöèïëèíå “Ìåòîäû àíàëèçà è ðàñ÷¸òà ýëåêòðîííûõ ñõåì”.
Ñòðàíèöû: 1, 2
|