Závislost proudu na napětí v diodě v propustném směru

Následující interaktivní notebook vykresluje závislost proudu na napětí měřených na diodě zapojené v elektrickém obvodu v propustném směru. Změnou parametru T, který představuje teplotu dané diody, a parametru emisní koeficient lze měnit tvar zobrazené voltampérové charakteristiky diody. Pomocí posuvníku (Subscript[U, 0]) lze měnit polohu aktuálního bodu na zobrazené křivce.
Volitelně lze zobrazit:
	prahové napětí diody (Subscript[U, p]);
	aktuální bod zobrazené voltampérové charakteristiky charakterizovaný napětím (Subscript[U, 0]);
	diferenciální odpor pomocí tečny k zobrazené chrakteristice v jejím bodě [(Subscript[U, 0]); (Subscript[I, 0])];
	souřadnice tohoto bodu;
	hodnoty teploty, napětí (Subscript[U, 0]), proudu (Subscript[I, 0]) a diferenciálního odporu.

Tlačítkem Ulož obrázek se uloží právě zobrazené "bílé" okno do aktuální složky (složka, v níž je uložen tento notebook) pod jménem, které je uloženo v proměnné jmenosouboru. K tomuto jménu souboru je při opakovaném ukládání grafu přidáváno pořadové číslo.
Pozor! Při každém spuštění tohoto apletu se začínají soubory číslovat opět od jedné! Tak může dojít k přepsání minule uložených obrázků.

© Jaroslav Reichl, 2010

Příprava pro vykreslení grafu

ClearAll["Global`*"];
jmenosouboru="dioda_.jpg";
cesta=NotebookDirectory[];
pocetulozeni=0;

x1=-10;x2=-x1;
y1=-10;y2=-y1;
stredx=((x1+x2)/2);stredy=((y1+y2)/2);
ugrafu=0.18x2;
igrafu=0.1y2;

T0=300;Tmin=250;Tmax=470;deltaT=10;
n0=1.8;nmin=1;nmax=2;deltan=0.01;
napeti00=0;napeti0min=0;napeti0max=ugrafu;deltanapeti0=0.01ugrafu;
k=1.38 (10^(-23));
q=1.602 (10^(-19));
proudnasyceny=(10^(-9));

tloustka=0.006;
velikostbodu=0.02;
velikostpisma=17;
delkatecny=0.2ugrafu;

barva=Black;
barvagrafu=Blue;
barvabodu=Red;
barvaup=Orange;
barvatecny=Magenta;
barvasouradnic=Black;

VADiody=Manipulate[Deploy[
proud[napeti_]:=proudnasyceny((E^( ((napeti q)/(n k T))))-1);
derivace[napeti_]=D[proud[napeti],napeti];
reseni=FindRoot[derivace[napetipom]==(10^(-3)),{napetipom,0}];
up=napetipom/.reseni[[1]];
bodup=Point[{up,proud[up]}];
bod=Point[{napeti0,proud[napeti0]}];
pruvodic=Line[{{napeti0,stredy},{napeti0,proud[napeti0]},{stredx,proud[napeti0]}}];
tecna[napeti_]:=derivace[napeti0](napeti-napeti0)+proud[napeti0];
pisnapeti0=StringJoin[ToString[Style["(Subscript[U, 0])",barvabodu],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[Round[napeti0,0.01]],barvabodu],StandardForm],ToString[Style[" V",barva],StandardForm]];
pisproud0=StringJoin[ToString[Style["(Subscript[I, 0])",barvabodu],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[Round[1000proud[napeti0]]],barvabodu],StandardForm],ToString[Style[" mA",barva],StandardForm]];
pisteplotu=StringJoin[ToString[Style["T",barvaup],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[T],barvaup],StandardForm],ToString[Style[" K",barva],StandardForm]];
If[derivace[napeti0]≠0∧napeti0>up,
{difodpor=(1/(derivace[napeti0])),
pisodpor=StringJoin[ToString[Style["(Subscript[R, dif])",barvatecny],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[Round[difodpor,0.1]],barvatecny],StandardForm],ToString[Style[" Ω",barva],StandardForm]]},
pisodpor=StringJoin[ToString[Style["(Subscript[R, dif])",barvatecny],StandardForm],ToString[Style[" -> ∞",barva],StandardForm]]];
grafik=Show[
Plot[proud[napeti],{napeti,stredx,ugrafu},PlotStyle->{barvagrafu,Thickness[tloustka]}],
If[zobrazitaktualnibod∧zobrazittecnu,
Plot[tecna[napeti],{napeti,napeti0-delkatecny Cos[ArcTan[derivace[napeti0]]],napeti0+delkatecny Cos[ArcTan[derivace[napeti0]]]},PlotStyle->{barvatecny,Thickness[0.85tloustka]}],
Plot[0,{proud,-1.11x1,-1.1x1},PlotStyle->{White,Thickness[0.00001]}]],

Graphics[{
If[zobrazitup,
{{barvaup,PointSize[velikostbodu],bodup},
Text[Style["(Subscript[U, p])",15,barvaup,FontFamily->Times],{up,0.01y1},{Center,Top}]},
Text[""]],
If[zobrazitaktualnibod,
{{barvabodu,PointSize[velikostbodu],bod},
If[zobrazitsouradnice,
{{barvasouradnic,Dashed,Thickness[0.5tloustka],pruvodic},
Text[Style["(Subscript[U, 0])",15,barvasouradnic,FontFamily->Times],{napeti0,0.01y1},{Center,Top}],
Text[Style["(Subscript[I, 0])",15,barvasouradnic,FontFamily->Times],{0.01x1,proud[napeti0]},{Right,Center}]},
Text[""]]},
Text[""]]
}],
FormatType->StandardForm,AspectRatio->Automatic,AxesOrigin->{0,0},PlotRange->{{-0.1ugrafu,ugrafu},{0.02y1,igrafu}},AxesLabel->{Style["(U/V)",14,barva,FontFamily->Times],Style["(I/A)",14,barva,FontFamily->Times]},ImageSize->500
]],

{{T,T0,Style["T",15,barvaup]},Tmin,Tmax,deltaT},
{{n,n0,Style["emisní koeficient",15,barva]},nmin,nmax,deltan},
Delimiter,
{{napeti0,napeti00,Style["(Subscript[U, 0])",15,barvabodu]},napeti0min,napeti0max,deltanapeti0},
Delimiter,
Item[Style["Zobrazit",20,barva,FontFamily->Times,Bold,Underlined],Alignment->Left],
{{zobrazitup,True,Style["prahové napětí",15,barvaup,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitaktualnibod,True,Style["aktuální bod",15,barvabodu,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazittecnu,False,Style["diferenciální odpor",15,barvatecny,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitsouradnice,False,Style["souřadnice",15,barvasouradnic,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazithodnoty,False,Style["hodnoty",15,barvasouradnic,FontFamily->Times]},{True,False},ControlType->Checkbox},
Delimiter,
Dynamic[
Grid[{
{If[zobrazithodnoty,
Item[Style[pisteplotu,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazithodnoty∧zobrazitaktualnibod,
Item[Style[pisnapeti0,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazithodnoty∧zobrazitaktualnibod,
Item[Style[pisproud0,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazithodnoty∧zobrazitaktualnibod∧zobrazittecnu,
Item[Style[pisodpor,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]}
}]],
Delimiter,
Button[" Ulož obrázek ",{pocetulozeni=pocetulozeni+1,Export[StringInsert[StringJoin[cesta,jmenosouboru],ToString[pocetulozeni],-5],grafik]},ImageSize->{100,Automatic}],
ControlPlacement->Left,
FrameLabel->{Style["© Jaroslav Reichl, 2010",10,Black,FontFamily->Times],"",Style["Závislost proudu na napětí v diodě zapojené v propustném směru",25,Black,FontFamily->Times],""}];

Spuštění animace
Zpracujte běžným způsobem následující buňku a na dotaz, který se objeví, odpovězte ANO.

VADiody