Міністерство освіти РФ
Південно-Російський Державний Технічний Університет (НПІ)
ФАКУЛЬТЕТ ВТУ _
КАФЕДРА А і Т _
СПЕЦІАЛЬНІСТЬ Електроніка _
Пояснювальна записка
до курсової роботи
на тему Математичне моделювання біполярних транзисторів типу pnp
Виконав студент III курсу, групи 1б Євченко С. Є. __
(П.І.Б.)
Прийняв ________________ _____ Савелов Н. С. ___ _
(П.І.Б.)
Новочеркаськ 2001
содер жание
Вступ
1. Проблема математичного моделювання біполярних транзисторів
2. Опис досліджуваного алгоритму
3. Опис програми
4. Рішення контрольної завдання
5. Моделювання електронних пристроїв
висновок
Вступ
Розвиток обчислювальної техніки і підвищення вимог до розвивається електронної апаратури висунули на перший план створення систем автоматичного проектування.
До початку шістдесятих років обчислювальні методи використовувалися при аналізі і проектуванні ланцюгів вкрай незначно. Кваліфікований інженер міг синтезувати прості ланцюги, користуючись мінімумом обчислень. Він створював макет схеми, виробляв вимірювання і різні модифікації і в результаті отримував кінцевий варіант ланцюга.
У наступному часу ситуація сильно змінилася. З'явилися інтегральні схеми і стали доступними ЕОМ. Обидва ці обставини вплинули один на одного. Інтегральні схеми уможливили виробництво більш досконалих ЕОМ, а ті в свою чергу полегшили проектування нових інтегральних схем. Безсумнівно, що в зв'язку з цим обчислювальні методи стали мати величезне значення.
Технічний прогрес зробив можливим проектування великих функціональних блоків, що містять в одній схемі тисячі взаємопов'язаних транзисторів. Розробка таких схем стала неможлива при експериментальній налагодженні на макеті.
Достовірне моделювання різних напівпровідникових приладів досить критично. Проблема моделювання напівпровідникових приладів вимагає знання фізики напівпровідників. Але якщо фахівець в області фізики напівпровідників може надати необхідні рівняння фахівця в області САПР, то останнім залишається ввести їх в свої програми. При цьому в значній мірі усуваються труднощі, пов'язані з фізикою роботи приладу.
Якщо в рівняння, що описують схему, введені нелінійні моделі компонентів, то вирішити ці рівняння стає досить складно. При цьому в програмах САПР витрати машинного часу на визначення нелінійних функцій, що описують різні напівпровідникові прилади складають значну частину загальних витрат часу.
1. Проблема математичного моделювання біполярних транзисторів
Під моделюванням розуміється опис електричних властивостей напівпровідникового пристрою або групи таких пристроїв, пов'язаних між собою, за допомогою математичних рівнянь, еквівалентних схем або таблиць.
Термін "біполярний транзистор" пов'язаний з тим, що в ньому використовуються носії заряду двох видів: електрони і дірки. Слово "транзистор" (від англ. Transfer resistor) означає, що цей прилад погодить низкоомную ланцюг емітера з високоомній ланцюгом колектора.
При описі складних пристроїв і багатовимірних систем використовуються їх вихідні характеристики, на основі яких створюються макромоделі. Моделі, що визначають електричні властивості, використовуються для точного аналізу.
При математичному моделюванні головними проблемами є:
- відсутність математичних залежностей, точно описують реальні біполярні транзистори.
-через збільшення параметрів, що описують математичну модель, ускладнюються і формули, за якими проводиться моделювання.
Це, в свою чергу, призводить до потреби від комп'ютера все більше його ресурсів і все більше часу на вирішення конкретних завдань. Отримані вимоги реально обмежують можливість використання складних формул.
На практиці, в залежності оп поставленого завдання, застосовуються математичні моделі різної складності. Так в програмах навчального типу використовуються моделі, які описують тільки основні параметри. Такі як:
- залежно струмів від напруг;
- залежність струмів від температури;
- залежність бар'єрних ємностей від напруг, прикладених до переходів;
- залежність дифузійних ємностей від струмів, що проходять через переходи.
У програмах, призначених для моделювання складних реальних схем, використовуються більш складні математичні залежності.
Реальні транзистори мають певний розкид своїх характеристик. Це доводиться враховувати при моделюванні для отримання необхідного результату.
Кожен вид транзистора, що випускається на заводах, має набір параметрів і характеристик, описаних в паспортних даних. На даний момент часу кількість таких параметрів досягає сотні. При математичному моделюванні не завжди можливо все їх врахувати, а приймаються за замовчуванням деякі середні значення, які відносно точно відображають фізичні характеристики. Ці припущення не завжди точно моделюють реальні біполярні транзистори.
2. Опис досліджуваного алгоритму
Біполярний транзистор складається з двох взаємодіючих pn переходу, створених в обсязі монокристала кремнію або германію. Залежно від характеру домішок в цих областях прийнято розрізняти транзистори типу pnp і npn.
Модель Еберса - Молла застосовна при моделюванні за постійним струмом.
Е
U ек
Б
До
Мал. 1. Біполярний транзистор
емітер
DBE.
R Б. CCS
база
DBC. RC П - підкладка
колектор
Мал.2. Модель Еберса - Молла.
1) розрахунок температурного потенціалу.
;
- постійна Больцмана;
Кл - елементарний заряд.
T - поточна температура в Кельвіна.
2) розрахунок струму насичення, що залежить від температури і
напруги між емітером і колектором.
i so - струм насичення при TNOM;
VA - напруга Ерлі;
EG - ширина забороненої зони;
TNOM - номінальна температура в Кельвіна.
3) визначення величини I С і U С - струм і напруга на діоді при переході на лінійний ділянку.
; ;
RJ - мінімальне диференціальне опір переходу;
4) переклад температурного коефіцієнта в систему С.
TCB (в системі С) = TCB * 10 -6 (в PPM).
5) поправка коефіцієнтів передачі по струму в схемі з ОЕ на температуру.
BF (виправлене) = BF * (1 + (T-TNOM) * TCB;
BR (виправлене) = BR * (1 + (T-TNOM) * TCB.
BF - коефіцієнт передачі по струму в схемі з ОЕ для нормального включення.
BR - коефіцієнт передачі по струму в схемі з ОЕ для інверсного включення.
6) Математичний опис залежності струму діода DBE від напруги на
ньому.
при ;
при ;
д) Математичний опис залежності струму діода DBC від напруги на
ньому.
при ;
при ;
e) математичний опис керованого джерела струму.
.
ж) розрахунок струмів колектора і емітера;
i k = i у - i кб; i е = i у + i ЕБ;
і) розрахунок бар'єрної ємності переходу ЕБ ;.
при ;
при ;
CJEO - бар'єрна ємність переходу ЕБ при нульовому зміщенні;
VJE - контактна різниця потенціалів для переходів ЕБ;
MJE - показник ступеня у виразі для бар'єрної ємності.
к) розрахунок дифузійної ємності переходу ЕБ.
при > 0;
TAUF - середній час прольоту носіїв через базу в нормальному режимі.
л) розрахунок ємності CBE.
CBE = CJE + CDE;
м) розрахунок бар'єрної ємності переходу КБ.
при ;
при ;
CJCO - бар'єрна ємність переходу КБ при нульовому зміщенні;
VJC - контактна різниця для переходів КБ;
MJC - показник ступеня у виразі для бар'єрної ємності.
н) розрахунок дифузійної ємності переходу КБ.
при > 0;
CDC = 0 при 0;
TAUR - середній час прольоту носіїв через базу в інверсному режимі.
о) розрахунок ємності CBC.
CBC = CJC + CDC;
3. Опис програми
Program bipolar;
uses {wincrt, windos} crt, dos, graph;
Label 1;
var
t1, t2, t3, t4,
Uc, Uccs, Ucb, Uec, Ueb, VA, VJC, VJE,
Is0, Is, Ieb, Icb, Ib, Ic, Iy, Ik, Ie,
CJC0, CJE0, CBE, CJE, CDE, CBC, CJC, CDC,
RB, RC, RJ,
T, TNOM, TCB,
Kyf, a, BF, BR, EG, TAUF, TAUR, MJC, MJE, CCS, K, FIt, q, expon: extended;
ii, col, row: integer; {Extended 3.4e-4932..1.1e4932}
an, key: char;
function st (a: extended; b: extended): extended;
begin
if b <0 then
begin
if (-1 * b * ln (a)) <1.1356523e4 then
begin
st: = 1 / (exp ((- 1 * b) * ln (a)));
end
else st: = 1;
end
else
begin
if (b * ln (a))> 1.1356523e4 then
begin
st: = 1e4000;
end
else
begin
st: = exp ((b) * ln (a));
end;
end;
end;
Procedure Model (Ueb, Ucb: extended; var Ieb, Icb, Ib, Iy: extended);
Begin
If Ueb> Uc then Ieb: = 1 / BF * (Ic + (Ueb - Uc) / RJ)
else Ieb: = 1 / BF * Is * (st (expon, Ueb / FIt) -1);
If Ucb> Uc then Icb: = 1 / BR * (Ic + (Ucb-Uc) / RJ)
else Icb: = 1 / BR * Is * (st (expon, Ucb / FIt) -1);
Ib: = Ieb + Icb;
Iy: = Ieb * BF - Icb * BR;
end;
procedure InputTrans;
Label 1,2,3;
begin
clrscr;
BF: = 75;
BR: = 0.3;
TCB: = 2500;
Is0: = 3.5e-15;
EG: = 1.11;
CJC0: = 4e-12;
CJE0: = 1.2e-12;
RB: = 67;
RC: = 7.3;
VA: = 102;
TAUF: = 9.4e-11;
TAUR: = 6.692e-8;
MJC: = 0,33;
VJC: = 0.65;
MJE: = 0.69;
VJE: = 0.69;
CCS: = 1e-12;
RJ: = 0.01;
writeln ( 'It is default parameters of transistor KT316B (Y / N)');
gotoxy (col + 3, row + 3);
write ( '[Forward beta]');
gotoxy (col + 39, row + 3);
write (BF);
gotoxy (col + 3, row + 4);
write ( '[Revers beta]');
gotoxy (col + 39, row + 4);
write (BR);
gotoxy (col + 3, row + 5);
write ( '[Temp. coef. of BETTA (PPM)]');
gotoxy (col + 39, row + 5);
write (TCB);
gotoxy (col + 3, row + 6);
write ( '[Saturation Current]');
gotoxy (col + 39, row + 6);
write (Is0);
gotoxy (col + 3, row + 7);
write ( '[Energy gap (0.6 to 1.3)]');
gotoxy (col + 39, row + 7);
write (EG);
EG: = EG * 1.6e-19;
gotoxy (col + 3, row + 8);
write ( '[CJC0]');
gotoxy (col + 39, row + 8);
write (CJC0);
gotoxy (col + 3, row + 9);
write ( '[CJE0]');
gotoxy (col + 39, row + 9);
write (CJE0);
gotoxy (col + 3, row + 10);
write ( '[Base resistance]');
gotoxy (col + 39, row + 10);
write (RB);
gotoxy (col + 3, row + 11);
write ( '[Collector resistance]');
gotoxy (col + 39, row + 11);
write (RC);
gotoxy (col + 3, row + 12);
write ( '[Early Valtage]');
gotoxy (col + 39, row + 12);
write (VA);
gotoxy (col + 3, row + 13);
write ( '[TAU forward]');
gotoxy (col + 39, row + 13);
write (TAUF);
gotoxy (col + 3, row + 14);
write ( '[TAU reverse]');
gotoxy (col + 39, row + 14);
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
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 pnp 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.
4. Рішення контрольної завдання 5. Моделювання електронних пристроїв
.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. Лекції з дисципліни "Методи аналізу і розрахунку електронних схем". 0>0>10e5>10e5>1e4800>
|