Určování parametrů ZV obvodů "ručně" a SYRUPem -- příklad 2 (napětím řízený zdroj proudu -- zajímavé díky "rozměrům" koeficientů).

© Jiří Hospodka

soubor pro MAPLE 6

> restart;

Načtení knihovny

> with(Syrup):

[Maple OLE 2.0 Object]

Zadání obvodu podle obrázku.

> Obvod:= "zesilovač
V1 1 0
R0 1 2
R1 2 4
G1 3 4 2 4 S
R2 4 0
Rz 3 0
.end":

Výpočet uzlových napětí a proudů větví obvodu. Výpočet napěťového přenosu symbolicky i číselně (místo funkce pro výběr lze samozřejmě použít i příkaz assign pro globální přiřazení).

> napeti:=syrup(Obvod, ac, 'proudy'):
p:=simplify(subs(napeti,v[3]/v[1]));
pn:=evalf(subs({R0=50,R1=2500,R2=1000,Rz=5000,S=0.04},p));

Syrup/parsedeck:   Analyzing SPICE deck "zesilovač" (ignoring this line)

p := -Rz*S*R1/(R0+R1+S*R2*R1+R2)

pn := -4.828585225

Určení jednotlivých přenosových koeficientů a výpočet napěťového přenosu s jejich použitím a ověření správnosti výpočtu SYRUPem. Vyčíslení vratného rozílu a napěťového přenosu.

> Rp:=R2*(R1+R0)/(R0+R1+R2);
K1:=(R1)/(R0+R1+R2);
K:=S;
K2:=-Rz;
K4:=-R1*Rp/(R1+R0);
F:=1-K4*K;
pk:=simplify(K1*K2*K/F);
simplify(p-pk);
Fn:=evalf(subs({R0=50,R1=2500,R2=1000,Rz=5000,S=0.04},F));
pkn:=evalf(subs({R0=50,R1=2500,R2=1000,Rz=5000,S=0.04},pk));

Rp := R2*(R1+R0)/(R0+R1+R2)

K1 := R1/(R0+R1+R2)

K := S

K2 := -Rz

K4 := -R1*R2/(R0+R1+R2)

F := 1+R1*R2*S/(R0+R1+R2)

pk := -Rz*S*R1/(R0+R1+S*R2*R1+R2)

0

Fn := 29.16901408

pkn := -4.828585225

Výpočet vstupního odporu bez vlivu ZV a s jejím vlivem. Vstupní odpor je v tomto případě chápán bez odporu R0 , proto je nutné ho v tomto případě vynulovat (je seriově s odporem R1 ).

> Rvst_bez:=R1+R2;

> Rvst_:=simplify(Rvst_bez*subs(R0=0,F));

Rvst_bez := R1+R2

Rvst_ := R1+S*R2*R1+R2

Je možné si zkontrolovat i zesílení bez vlivu ZV. Výsledek je v takto jednoduchém případě zřejmý.

> pk_bez:=simplify(K1*K2*K);

pk_bez := -R1*Rz*S/(R0+R1+R2)

Ověření vztahu pro vstupní odpor pomocí SYRUPu a jeho vyčíslení.

> Rvst:=simplify(subs(napeti,proudy,v[2]/i[R0]));

> Rvstn:=evalf(subs({R0=50,R1=2500,R2=1000,Rz=5000,S=0.04},Rvst));

Rvst := R1+S*R2*R1+R2

Rvstn := 103500.00

>