De transfer functie van een eerste orde blok is:
$$ V_{out}=-\frac{b_1(j \omega) +b_0}{a_1(j \omega) +a_0} V_{in}$$
De transfer functie van een tweede orde blok is:
$$ V_{out} = - \frac{b_2 (j \omega)^2 + b_1(j \omega) +b_0}{a_2 (j \omega)^2 + a_1(j \omega) +a_0} V_{in}$$
Dit algemene tweede orde blok kan uitgewerkt worden in een BiQuad filter. Maar het algemene BiQuad blok vereist 4 Opamps. Daarom is het voor de meeste toepassingen handig gebruik te maken van de Sallen en Key filter, die maar 1 opamp nodig heeft.
Als eerste voorbeeld ontwerpen we een analoge 3de orde laagdoorlaatfilter van het type Butterworth met afsnijfrequentie 1 MHz. De transferfunktie $H(s)$ of $H(j\omega)$ die we bekomen is:
$$ H(s) = \frac{\sum_{n=0}^M b_n s^n}{\sum_{n=0}^N a_n s^n} = \frac{\sum_{n=0}^0 b_n s^n}{\sum_{n=0}^3 a_n s^n}$$
$a_n$ en $b_n$ zijn de coeficienten van de veeltermen in de transferfunktie. Aangezien we hier een derde orde laagdoorlaatfilter ontwerpen is $M=0$ en $N=3$. Voor deze oefening is het resultaat van de berekening van deze coefficienten:
Veelterm coefficienten teller: M= 0 b[ 0 ] = 2.4805021344239852e+20 Veelterm coefficienten noemer: N= 3 a[ 3 ] = 1.0 a[ 2 ] = 12566370.614359174 a[ 1 ] = 78956835208714.88 a[ 0 ] = 2.4805021344239852e+20
Een plot van deze transferfunctie zien we in {numref}filter_Fig8
. We stellen inderdaad vast dat de versterking (Gain) heel erg vlak is tot 1 MHz en daarna met 60 dB per decade afneemt.
Lijst der nullen: M= 0 Lijst der polen: N= 3 p[ 1 ] = (-3141592.6535897935+5441398.092702653j) p[ 2 ] = (-6283185.307179586-0j) p[ 3 ] = (-3141592.6535897935-5441398.092702653j)
Veelterm coefficienten teller: M= 0 b[ 0 ] = 9.792629913129003e+33 Veelterm coefficienten noemer: N= 5 a[ 5 ] = 1.0 a[ 4 ] = 20332814.76926104 a[ 3 ] = 206711678220539.9 a[ 2 ] = 1.2988077794177306e+21 a[ 1 ] = 5.043559043399954e+27 a[ 0 ] = 9.792629913129004e+33
Lijst der nullen: M= 0 Lijst der polen: N= 5 p[ 1 ] = (-1941611.0387254667+5975664.329483111j) p[ 2 ] = (-5083203.69231526+3693163.6609809133j) p[ 3 ] = (-6283185.307179586-0j) p[ 4 ] = (-5083203.69231526-3693163.6609809133j) p[ 5 ] = (-1941611.0387254667-5975664.329483111j)
Veelterm coefficienten teller: M= 7 b[ 7 ] = 6.334013983218556e+58 b[ 6 ] = 0.0 b[ 5 ] = 0.0 b[ 4 ] = 0.0 b[ 3 ] = 0.0 b[ 2 ] = 0.0 b[ 1 ] = 0.0 b[ 0 ] = 0.0 Veelterm coefficienten noemer: N= 14 a[ 14 ] = 1.0 a[ 13 ] = 1129455138.528784 a[ 12 ] = 7.760089165897884e+17 a[ 11 ] = 3.654151505077993e+26 a[ 10 ] = 1.293535546920629e+35 a[ 9 ] = 3.5017090931362664e+43 a[ 8 ] = 7.334620231296047e+51 a[ 7 ] = 1.1783749530590898e+60 a[ 6 ] = 1.4477960023023706e+68 a[ 5 ] = 1.3643931993116192e+76 a[ 4 ] = 9.948728770520122e+83 a[ 3 ] = 5.547604782936569e+91 a[ 2 ] = 2.325495035605259e+99 a[ 1 ] = 6.681091689314365e+106 a[ 0 ] = 1.1676379112645588e+114
Lijst der nullen: M= 7 z[ 1 ] = 0j z[ 2 ] = 0j z[ 3 ] = 0j z[ 4 ] = 0j z[ 5 ] = 0j z[ 6 ] = 0j z[ 7 ] = 0j Lijst der polen: N= 14 p[ 1 ] = (-9467553.01746494-62713329.10036281j) p[ 2 ] = (-30211474.606362037-61659756.49600357j) p[ 3 ] = (-58777850.02496373-58866599.60061156j) p[ 4 ] = (-125663706.14359173-62831853.07179589j) p[ 5 ] = (-58777850.02496373+58866599.60061156j) p[ 6 ] = (-30211474.606362037+61659756.49600357j) p[ 7 ] = (-9467553.01746494+62713329.10036281j) p[ 8 ] = (-46458057.493502825+307739438.435567j) p[ 9 ] = (-126488603.88224223+258155439.82934594j) p[ 10 ] = (-167660324.09626448+167913476.98651484j) p[ 11 ] = (-125663706.14359173+62831853.07179589j) p[ 12 ] = (-167660324.09626448-167913476.98651484j) p[ 13 ] = (-126488603.88224223-258155439.82934594j) p[ 14 ] = (-46458057.493502825-307739438.435567j)
Veelterm coefficienten teller: M= 7 b[ 7 ] = 1.082225670413975e+53 b[ 6 ] = 0.0 b[ 5 ] = 0.0 b[ 4 ] = 0.0 b[ 3 ] = 0.0 b[ 2 ] = 0.0 b[ 1 ] = 0.0 b[ 0 ] = 0.0 Veelterm coefficienten noemer: N= 14 a[ 14 ] = 1.0 a[ 13 ] = 169418270.77931747 a[ 12 ] = 7.027364430041076e+17 a[ 11 ] = 1.0074611841037228e+26 a[ 10 ] = 2.1017496540749808e+35 a[ 9 ] = 2.488471395316168e+43 a[ 8 ] = 3.4683129207221617e+52 a[ 7 ] = 3.2679992552874596e+60 a[ 6 ] = 3.4107645311434367e+69 a[ 5 ] = 2.406576000783415e+77 a[ 4 ] = 1.998855398085796e+86 a[ 3 ] = 9.422413939327687e+93 a[ 2 ] = 6.463381596708082e+102 a[ 1 ] = 1.5323607880306775e+110 a[ 0 ] = 8.894760315452719e+118
Lijst der nullen: M= 7 z[ 1 ] = 0j z[ 2 ] = 0j z[ 3 ] = 0j z[ 4 ] = 0j z[ 5 ] = 0j z[ 6 ] = 0j z[ 7 ] = 0j Lijst der polen: N= 14 p[ 1 ] = (-3949021.641305336-295726397.242198j) p[ 2 ] = (-11200424.836296545-298982612.7578789j) p[ 3 ] = (-16539450.539423024-305061656.189032j) p[ 4 ] = (-18849555.92153874-313026248.8897938j) p[ 5 ] = (-16539450.539423024+305061656.189032j) p[ 6 ] = (-11200424.836296545+298982612.7578789j) p[ 7 ] = (-3949021.641305336+295726397.242198j) p[ 8 ] = (-4439819.935339821+332480313.6424786j) p[ 9 ] = (-12304586.93699407+328456965.2578802j) p[ 10 ] = (-17426275.57876118+321418687.7969175j) p[ 11 ] = (-18849555.92153874+313026248.8897938j) p[ 12 ] = (-17426275.57876118-321418687.7969175j) p[ 13 ] = (-12304586.93699407-328456965.2578802j) p[ 14 ] = (-4439819.935339821-332480313.6424786j)
Veelterm coefficienten teller: M= 0 b[ 0 ] = 2.298652790795694e+24 Veelterm coefficienten noemer: N= 3 a[ 3 ] = 1.0 a[ 2 ] = 92822184.81844565 a[ 1 ] = 5.168208012246375e+16 a[ 0 ] = 2.2986527907956946e+24
Lijst der nullen: M= 0 Lijst der polen: N= 3 p[ 1 ] = (-23205546.204611413+221335928.5095666j) p[ 2 ] = (-46411092.40922282-0j) p[ 3 ] = (-23205546.204611413-221335928.5095666j)
Veelterm coefficienten teller: M= 0 b[ 0 ] = 1.0669416336250132e+69 Veelterm coefficienten noemer: N= 8 a[ 8 ] = 1.0 a[ 7 ] = 524820305.9616953 a[ 6 ] = 1.2746966037803576e+18 a[ 5 ] = 5.1937707944741785e+26 a[ 4 ] = 5.104888759746549e+35 a[ 3 ] = 1.45769782715832e+44 a[ 2 ] = 6.590270478283454e+52 a[ 1 ] = 1.0103634193419598e+61 a[ 0 ] = 1.3431999354717115e+69
Lijst der nullen: M= 0 Lijst der polen: N= 8 p[ 1 ] = (-19974783.518686887+746281824.2305412j) p[ 2 ] = (-56883370.83720408+632667181.5530242j) p[ 3 ] = (-85131980.59479763+422734695.6263414j) p[ 4 ] = (-100420018.03015907+148444684.39010677j) p[ 5 ] = (-100420018.03015907-148444684.39010677j) p[ 6 ] = (-85131980.59479763-422734695.6263414j) p[ 7 ] = (-56883370.83720408-632667181.5530242j) p[ 8 ] = (-19974783.518686887-746281824.2305412j)
Veelterm coefficienten teller: M= 0 b[ 0 ] = 1.780752121671573e+16 Veelterm coefficienten noemer: N= 2 a[ 2 ] = 1.0 a[ 1 ] = 121560720.41014235 a[ 0 ] = 2.5153792295277244e+16
Lijst der nullen: M= 0 Lijst der polen: N= 2 p[ 1 ] = (-60780360.20507117+146490750.93199244j) p[ 2 ] = (-60780360.20507117-146490750.93199244j)
Veelterm coefficienten teller: M= 2 b[ 2 ] = 1.0 b[ 1 ] = 0.0 b[ 0 ] = 0.0 Veelterm coefficienten noemer: N= 2 a[ 2 ] = 1.0 a[ 1 ] = 10882.796185405305 a[ 0 ] = 39478417.60435742