elo_zzv-PraCAn-ukol.mws

Ananlýza zpětnovazební soustavy

©  Jiří Hospodka

Autorská práva: Uživatel může tento text používat jako studijní materiál bez omezení. Distribbuce a tisk je možný pouze se svolením autora.

>    restart;

Nejdříve načteme potřebné knihovny.

>    with(PraCAn):with(plots):

Warning, the name changecoords has been redefined

Budeme analyzovat vliv záporné zpětné vazby (ZZV) na některé vlastnosti soustavy, která obsahuje zesilovač se dvěma póly a odporovou zápornou zpětnou vazbu (ZZV) podle následujícího obrázku. Pro další analýzy budeme potřebovat jednak přenos celkového zapojení (se ZV) - Pzv  a jednak přenos otevřené zpětnovazevbní smyčky - Pos .

[Maple OLE 2.0 Object]

Zadání soustav pro analýzu

 První pól zesilovače omega1  je zadán obecně, další dva jsou na 2MHz a 4MHz. Zpětnovazební odpor Rp  je také zadán obecně (bez numerické hodnoty). Ostatní prvky jsou zadány s numerickými hodnotami.  

>    ZZ:= "invertující zesilovač
V 1 0 0 AC
R01 1 2 10E3
Rp1 2 3
Rz1 3 0 10E3
Rp2 4 5
Rz2 4 0 10E3
R02 5 0 10E3
Ra2 5 0 100E3
X1 2 3 0 zesilovac
X2 1 4 0 zesilovac
.subckt zesilovac a b c
 Ra a c 100E3
 Ri d b 10
 E1 d c a c -500/(1+s/(2*Pi*1.6E3))/(1+s/(2*Pi*16E3))
 .ends
.end":

Analýza systému pro a Rp1 = 10000

Analýza a výpočet napěťového přenosu zesilovače se ZV a otevřené ZV smyčky.

>    napeti:=PraCAn(ZZ, tf):

>    Pzv:=simplify(subs(napeti,v("3")/v("1"))):

>    Pos:=simplify(subs(napeti,v("5")/v("1"))):

Modulová charakteristika zesilovače pro a Rp1 = .10e5 (zesilení přibližně 1).

>    modul:=simplify(evalc(abs(subs({Rp1=10E3,s=I*omega},Pzv)))):

>    semilogplot(20*log10(modul),omega=1E3..1E7,title=`MODUL`);

[Maple Plot]

Výpočet vratného rozdílu pro stejnosměrný (ss) signál a Rp1 = .10e5   

>    F:=subs(s=0,1-Pos):

>    evalf(subs(Rp2=10e3,F));

238.7329783

Výpočet zesílení pro ss signál a Rp1 = 10000  a pro systém bez ZV (nezakončeno => nevyjde A/F hlavně díky K1).  

>    evalf(subs({s=0,Rp1=10e3},Pzv));

>    evalf(subs(s=0,limit(Pzv,Rp1=infinity)));

-.9958092280

-454.0913632

 Následuje výpočet pólů přenosu pro zadaný systém (se ZV).

>    sol1:=solve(denom(subs(Rp1=10E3,Pzv)));

sol1 := -55292.03073+488075.4829*I, -55292.03073-488075.4829*I

Skutečnost, že je systém nestabilní lze také jednoduše určit Laplaceovou transformací přenosu Pzv  (impulzní charakteristikou).

>    with(inttrans);

[addtable, fourier, fouriercos, fouriersin, hankel, hilbert, invfourier, invhilbert, invlaplace, invmellin, laplace, mellin, savetable]

Impulzní charakteristika obsahuje i Diracův impulz, protože výstupní odpor zesilovače není nulový (není nulvový přenos K3). Jelikož jsou póly komplexní, musí být odezva kmitavý charakter (tlumený harmonický průběh) a úhlový kmitočet oscilací se správně rovná imag. hodnotě kořenů jmenovatele přenosu Pzv  (vyšlo).  

>    odezva:=simplify(invlaplace(subs(Rp1=10E3,Pzv),s,t));

odezva := .4754659568e-3*Dirac(t)+.1241373181e-7*exp(-55292.03073*t)*cos(488075.4829*t)-492502.6642*exp(-55292.03073*t)*sin(488075.4829*t)

Že je násobná konstanta skutečně koeficientem K3 se lze přesvědčit jednoduchým výpočtem.

>    K3:=Ra/(R0+Ra)*Ri*Rz/(Ri+Rz)/(R0*Ra/(R0+Ra)+Rp+Ri*Rz/(Ri+Rz));
evalf(subs({Ra=100E3,R0=10E3,Rp=10E3,Ri=10,Rz=10E3},%));

K3 := Ra/(R0+Ra)*Ri*Rz/(Ri+Rz)/(R0*Ra/(R0+Ra)+Rp+Ri*Rz/(Ri+Rz))

.4754659567e-3

Takto pak vypadá impulzní charakteristika. Musí se samozřejmě jednat o stabilní systém (systém pouze se ZZV a dvěma póly přenosu).  

>    plot(odezva,t=1E-10..1E-4, title=`Impulzni charakteristika`);

[Maple Plot]

Výpočet hodnoty odporu Rp1  pro maximálně plochou modulovou charakteristiku

V předešlém případě byl analyzován systém s Rp1 = 10000 , kde modulová charakteristika vykazovala výrazný překmit. Nyní vypočtěme hodnotu zpětnovazebního odporu Rp1  tak, aby modulová chrakteristika byla právě maximálně plochá, tj. reálná i imaganární část kořenů se sobě rovnala.

Výpočet kořenů obecně:

>    koreny:=solve(denom(Pzv),s);

koreny := 100000.*(-602406433.*Rp1-.5482440165e13+(.2429287136e18*Rp1^2-.5403280421e24*Rp1-.4937591895e28)^(1/2))/(1089499563.*Rp1+.9915425594e13), -100000.*(602406433.*Rp1+.5482440165e13+(.2429287136e...
koreny := 100000.*(-602406433.*Rp1-.5482440165e13+(.2429287136e18*Rp1^2-.5403280421e24*Rp1-.4937591895e28)^(1/2))/(1089499563.*Rp1+.9915425594e13), -100000.*(602406433.*Rp1+.5482440165e13+(.2429287136e...

Toto samotné nevede k vyjádření reálné části.

>    Re(koreny[1]);

100000.*Re((-602406433.*Rp1-.5482440165e13+(.2429287136e18*Rp1^2-.5403280421e24*Rp1-.4937591895e28)^(1/2))/(1089499563.*Rp1+.9915425594e13))

Toto už ano.

>    evalc(Re(koreny[1]));

100000.*(-602406433.*Rp1-.5482440165e13+1/2*abs(.2429287136e18*Rp1^2-.5403280421e24*Rp1-.4937591895e28)^(1/2)*(1+signum(.2429287136e18*Rp1^2-.5403280421e24*Rp1-.4937591895e28)))/(1089499563.*Rp1+.99154...

Musíme porovnávat absolutní hodnoty jednotlivých částí, jelikož nezáleží na znaménku, ale na velikosti.

>    Rpp:=solve(evalc(abs(Re(koreny[1])))=evalc(abs(Im(koreny[1]))),Rp1);

Rpp := -9100.899101, 890089.9193

>    Rpp:=Rpp[2];

Rpp := 890089.9193

Vykreslení modulových charakreristik pro Rp1 = Rpp_skut  (maximálně plochá charakteristika), pro Rp1 = 10*Rpp_skut  a Rp1 = Rpp_skut/10  .    

>    modul1:=simplify(evalc(abs(subs({Rp1=Rpp/10,s=I*omega},Pzv)))):

>    modul2:=simplify(evalc(abs(subs({Rp1=Rpp,s=I*omega},Pzv)))):

>    modul3:=simplify(evalc(abs(subs({Rp1=Rpp*10,s=I*omega},Pzv)))):

>    i:=semilogplot(20*log10(modul1),omega=1E3..1E6,title=`MODUL`,color=green):

>    j:=semilogplot(20*log10(modul2),omega=1E3..1E6,title=`MODUL`,color=red):

>    k:=semilogplot(20*log10(modul3),omega=1E3..1E6,title=`MODUL`,color=blue,numpoints=200):

>    display(i,j,k);

[Maple Plot]

Závislost polohy pólů zesilovače na vlivu ZV (hodnotě Rp1 , resp. vratného rozdílu F )

Výpočet pólů přenosu systému se ZV pro 3 různé hodnoty zpětnovazebího odporu ( 10*Rpp_skut, Rpp_skut, Rpp_skut/10 ).

>    poly:=seq([solve(denom(subs(Rp1=R0,Pzv)),s)],R0=[Rpp*10,Rpp,Rpp/10]);

poly := [-16157.74422, -94426.31724], [-55292.03071+55292.03071*I, -55292.03071-55292.03071*I], [-55292.03072+211495.1543*I, -55292.03072-211495.1543*I]

>    barva:=[blue,red,green];

barva := [blue, red, green]

Vykreslení pólů. Je nutné sledovat póly podle barev. Stejné barvy = stejná hodnota Rp , resp. vratného rozdílu F .

>    for i from 1 to 3 do
graf[i]:=complexplot(poly[i], Re=-1e5..0, style=point, title=`Poloha pólů přenosu ZV soustavy v závislosti na Rp`,color=barva[i]);
od:
display(graf[1],graf[2],graf[3]);

[Maple Plot]

Vykreslení pólů pro větší rozsah zpětnovazebního odporu.

>    vv:=seq(fsolve(denom(subs({Rp1=10^(R0/4)},Pzv)),s,complex),R0=1..30):complexplot([vv], Re=-1e5..0, style=point, title=`Poloha pólů přenosu ZV soustavy v závislosti na Rp`);

[Maple Plot]

Porování modulových charakteristik invertujícího a neinvertujícího při jednotkovém zesílení

[Maple OLE 2.0 Object]  

Úkolem je

>