Kaskádní syntéza aktivního RC filtru
Výpočet kaskádních parametrů požadované pásmové propusti ( , a jednotlivých bikvadratických sekcí).
> | infolevel[syntfil]:=2: |
> | bp:=NLP2BP(f_p,fp,Gc,poles,zeros): |
H0 = 0.218810
omega_0 = 15390.59796, Q = 7.82575
omega_0 = 12785.56417, Q = 17.78230, omega_n = 8842.13093
omega_0 = 18526.40231, Q = 17.78230, omega_n = 26788.84845
Zadání příkazu " infolevel[syntfil]:=2: " vypíše typ struktury potřebný pro následné sestavení přenosové funkce a parametry jednotlivých sekcí seřazené podle velikosti činitele . Výsledná tabulka, kterou obdržíme jako výsledek funkce NLP2BP však obsahuje parametry jednotlivých sekcí, které jsou však nyní uspořádány s ohledem na optimální dynamické a šumové vlastnosti výsledného zapojení.
> | eval(bp); |
Modulová charakteristika vypočtená z kaskádních parametrů musí souhlasit s výše uvedenou charakteristikou.
> | H_BP_K:=MakeH(bp,p): |
> | mg_BP_K:=MagnitudeHdB(H_BP_K)(2*Pi*f): |
> | plot(mg_BP_K,f=0.1*f_s..1.3*fs,labels=["f [Hz]","a [dB]"],thickness=2); |
Syntéza jednotlivých bikvadratických sekcí (bikvadů) -- výběr typů obvodů a výpočet hodnot jejich prvků. Parametry funkce ARCSynt (proměnná opt_lp) lze ovlivňovat návrhový algoritmus. Lze volit velikosti některých součástek obvodu (obvykle kapacitorů), parametry operačních zesolovačů ([ , ]), celkové zesílení ([h0]) a vlastní typ obvodu (parametry v hranatých závorkách jsou nepovinné). Parametery lze zadat jak ve formě čísla, společně pro všechny bloky, tak ve formě seznamu zvlášť pro každý blok. Nastavením proměnné infolevel[syntfil] na hodnotu 3, dostaneme podrobný výpis parametrů návrhu (zejména pro obvody LP1, HP1 a BP1). Funkce ARCSynt volá funkci ARCBlock pro rozdělení zesílení, která rozdělí zesílení mezi jednotlivé bloky tak, aby bylo dodrženo vyvážení jejich dynamiky, tj. aby k omezování signálu došlo u všech bloků při stejné budicí úrovni. Zesílení jednotlivých bloků je vypsáno, pokud nastavíme proměnnou infolevel[syntfil] na hodnotu 2. V případě, že poměnnou infolevel[syntfil] nastavíme na hodnotu 3, dostaneme navíc výpis kmitočtů, při kterých nastává přenýšení (maximum) modulových charakteristik u těch bloků, které převýšení vykazují. Další výpis pak udává, jak se tyto kmitočty mění na výstupech následujících bloků. Podle hodnot maxim modulových charakteristik za jednotivými bloky jsou pak vypočítány adekvátní hodnoty zesílení těchto bloků pro vyrovnanou dynamiku celého filtru.
> | infolevel[syntfil]:=3: |
> | opt_bp:=table(['C1'=33e-9]): #Choice of capacitor value separately for each block: table(['C1'=[33e-9,12e-9,22e-9]]) |
> | ARC_bp:=ARCSynt(bp,opt_bp): |
Warning, ARCSynt: 2nd argument[h0] was not specified and will be considered to be 1.
ARCBlock:
Frequencies of modulus peaks of particular blocks: [[1, 2039.4528], [2, 2941.9654], [3, 2449.4897]].
Frequencies of modulus peaks after particular blocks: [[1, [2039.4528]], [2, [2041.4847, 2939.0372]], [3, [2050.6484, 2925.9038, 2449.4897]]].
ARCBlock:
Amplification of particular blocks h0 = [0.107446, 0.324175, 3.004485].
********************** Number of blok: 1 **********************
Warning, ARCSyntES1: 2nd argument[ft] should be entered for proper design of ES1 circuit
********************** Number of blok: 2 **********************
Warning, ARCSyntES1: 2nd argument[ft] should be entered for proper design of ES1 circuit
********************** Number of blok: 3 **********************
Warning, ARCSyntBP2: 2nd argument[ft] should be entered for proper design of BP2 circuit
***************************************************************
ARCSynt: Used circuit types in particular blocks: [ES1, ES1, BP2].
Stejná operace, avšak s definicí reálných parametrů operačních zesilovačů -- konečným stejnosměrným zesílením otevřené zpětnovazenbí smyčky a tranzitním kmitočtem . Navíc je místo funkce ARCBlock volána fuunkce ARCBlock1 (díky parametru 'arcblock1'=true ), která rozdělí celkové zesílení mezi jednotlivé sekce rovnoměrně (dynamické poměry struktury nebudou vyvážené).
> | infolevel[syntfil]:=1: |
> | opt_bp_OZ:=table(['C1'=33e-9, 'R'=1e4, 'h0'=1, 'ft'=1e6, 'A0'=1e5, 'arcblock1'=true]): |
> | ARC_bp_OZ:=ARCSynt(bp,opt_bp_OZ): |
Zaokrouhlení hodnot všech použitých rezistorů na normalizované hodnoty řady E48.
> | ARC_bp_OZ_R:=ARCRoundR(ARC_bp_OZ,48); |
Navržená kaskádní struktura filtru je složena třemi bikvady - první dva typu ES1 (eliptické sekce) a třetí typu BP2. Zapojení všech typů používaných obvodů je uvedeno zde včetně volitelných paramerů.
Analýza výsledných kaskádních struktur aktivního RC filtru - vykreslení modulových charakteristik pro ideální filtr, filtr s reálnými operačními zesilovači a pro filtr, u kterého jsou navíc zaokrouhleny hodnoty rezistorů.
> | H_BP_ARC:=MakeH(ARC_bp,p): H_BP_ARC_OZ:=MakeH(ARC_bp_OZ,p): H_BP_ARC_OZ_R:=MakeH(ARC_bp_OZ_R,p): |
> | mg_BP_ARC:=MagnitudeHdB(H_BP_ARC)(2*Pi*f): mg_BP_ARC_OZ:=MagnitudeHdB(H_BP_ARC_OZ)(2*Pi*f): mg_BP_ARC_OZ_R:=MagnitudeHdB(H_BP_ARC_OZ_R)(2*Pi*f): |
> | plot([mg_BP_ARC,mg_BP_ARC_OZ,mg_BP_ARC_OZ_R],f=0.1*f_s..1.3*fs,color=[red,blue,green],labels=["f [Hz]","a [dB]"],thickness=2); |
Vykreslení datailu frekvenčních charakteristik propustného pásma a vyčíslení modulů pro všechny zlomové frekvence.
> | plot([mg_BP_ARC,mg_BP_ARC_OZ,mg_BP_ARC_OZ_R],f=f_p..fp,color=[red,blue,green],labels=["f [Hz]","a [dB]"],thickness=2); |
> | check_ap1:=evalf(subs(f=f_p,mg_BP_ARC)),evalf(subs(f=f_p,mg_BP_ARC_OZ)),evalf(subs(f=f_p,mg_BP_ARC_OZ_R)); |
> | check_ap2:=evalf(subs(f=fp,mg_BP_ARC)),evalf(subs(f=fp,mg_BP_ARC_OZ)),evalf(subs(f=fp,mg_BP_ARC_OZ_R)); |
> | check_as:=evalf(subs(f=fs,mg_BP_ARC)),evalf(subs(f=fs,mg_BP_ARC_OZ)),evalf(subs(f=fs,mg_BP_ARC_OZ_R)); |
> | Cauer_asnew(N3); |
Analýza dynamických poměrů kaskádní struktury filtru