Trojitý integrační RC-článek
Zadání obvodu podle výše uvedeného obrázku.
> | RC:="3 RC int. clanky |
> | V 1 0 1 |
> | R1 1 2 R |
> | C1 2 0 C |
> | R2 2 3 R*a |
> | C2 3 0 C/a |
> | R3 3 4 R*a^2 |
> | C3 4 0 C/a^2 |
> | .end": |
> | res_RC:=syrup(RC, ac); |
parsedeck: Analyzing SPICE deck "3 RC int. clanky" (ignoring this line)
Obecný výraz pro přenos.
> | P_RC:=subs(res_RC,v[4]); |
Výpočet kmitočtu
. (Pozor, argument bude v tomto případě
, resp.
!!! 0 to být nemůže. viz. graf.)
> | solve(evalc(Im(subs(s=I*omega,P_RC))),omega); |
> | om_RC:=%[2]; |
Přenos pro
.
> | P_RC1:=collect(algsubs(C*R=1,subs(res_RC,v[4])),s); |
Přenos pro
.
> | simplify(evalc(subs(s=I*(2*a+3*a^2+1)^(1/2)/a,P_RC1))); |
Závislost tohoto přenosu na velikosto koeficientu
.
> | plot(abs(%),a=1..10); |
Strmost fázové charakteristiky pro relativní kmitočet v bodě
.
> | phi_P_RC2:=evalc(argument(subs(s=I*omega,P_RC))): |
> | SR_phi_RC:=simplify(om_RC*subs(omega=om_RC,diff(phi_P_RC2,omega))); |
> | plot(SR_phi_RC,a=1..10); |
Článek je určen pro větev záporné zpětné vazby (pro určitý kmitočet článek obrátí fázi a ze ZZV se stane KZV a nastanou podmínky oscilací). Zde je výhodné, aby jeho hodnota přenosu nebyla příliš malá, protože zesilovač oscilátoru s posouvanou fází by pak pracoval s příliš velkým zesílením. Pro velikost strmosti fázové charakteristiky je také výhodná vyšší hodnota konstanty
, nicméně veký vliv její hodnota nemá. Lze konstatovat, že pro modul i pro fázi je výhodná vyšší hodnota
. Volba
je evidentně nevýhodná. Hodnota příliž veliká (
) již není příliš přínosná, naopak neúměrně zvyšuje poměr hodnot R i C.
Výpočet modulu a fáze přenosu
.
> | abs_P_RC:=evalc(abs(subs(s=I*omega,P_RC1))): |
> | phi_P_RC:=evalc(argument(subs(s=I*omega,P_RC1))): |
Následuje vykreslení kmitočtových charakteristik pro tři různé hodnoty koeficienu
. Dále pak vyčíslení velikosti modulu a strmosti fázové charakteristiky (v radiánech i ve stupních) pro
a pro všechny tři hodnoty koeficientu
.
> | plots[semilogplot]([subs(a=1,abs_P_RC),subs(a=5,abs_P_RC),subs(a=10,abs_P_RC)],omega=0.1..10,color=[blue,red,green],legend=["a=1","a=5","a=10"],thickness=2); |
> | plots[semilogplot]([subs(a=1,phi_P_RC),subs(a=5,phi_P_RC),subs(a=10,phi_P_RC)],omega=0.1..10,color=[blue,red,green],legend=["a=1","a=5","a=10"],thickness=2); |
> | evalf([subs(a=1,subs(omega=(2*a+3*a^2+1)^(1/2)/a,abs_P_RC)),subs(a=5,subs(omega=(2*a+3*a^2+1)^(1/2)/a,abs_P_RC)),subs(a=10,subs(omega=(2*a+3*a^2+1)^(1/2)/a,abs_P_RC))]); |
> | simplify([subs(a=1,subs(omega=(2*a+3*a^2+1)^(1/2)/a,abs_P_RC)),subs(a=5,subs(omega=(2*a+3*a^2+1)^(1/2)/a,abs_P_RC)),subs(a=10,subs(omega=(2*a+3*a^2+1)^(1/2)/a,abs_P_RC))]); |
> | evalf([subs(a=1,SR_phi_RC),subs(a=5,SR_phi_RC),subs(a=10,SR_phi_RC)]); |
A teď ve stupních
> | evalf(180/Pi*[subs(a=1,SR_phi_RC),subs(a=5,SR_phi_RC),subs(a=10,SR_phi_RC)]); |
Je evidentní, že pro
se již strmost fáze příliš nezvětšuje a i její hodnota není příliš velká.
> | P_RC1; |
Přenos vykazuje pouze póly, které jsou zde uvedeny, pro různé hodnoty koeficientu
.
> | solve(subs(a=1.,denom(P_RC1))); |
> | solve(subs(a=5.,denom(P_RC1))); |
> | solve(subs(a=10.,denom(P_RC1))); |