Table des matières Mathematica

Filtres passe-bas de Butterworth

1. Étude théorique

1.a. Définition

Soit ω0 la pulsation de coupure à -3 dB du filtre passe-bas. On pose :

x=ωω0

Un filtre de Butterworth d'ordre n a le gain suivant (à une constante multiplicative près) :

|H|=11+x2n

Le gain présente donc une décroissance de -20n dB par décade pour x>1.

1.b. Fonction de transfert

On pose s=jx et on cherche une transmittance de Laplace T(s) vérifiant la définition ci-dessus. On se place dans le cas où n est pair et on pose n=2p.

Pour cela, on factorise le polynôme

P(x)=1+x2n

Ces coefficients étant réels, si a est une racine alors son conjugué a* l'est aussi. P se factorise donc en polynômes du second degré de la forme :

(x-a)(x-a*)=(s-ja)(s*+ja*)=|s-ja|2

Afin d'obtenir un système stable, les pôles de T doivent avoir une partie réelle négative, i.e. Re(ja)<0 ou Im(a)>0. Notons ai les n racines dont la partie imaginaire est positive et posons ri=jai. La transmittance recherchée est :

T(s)=1(s-r1)(s-r2)

Le polynôme P étant pair, si a est racine, -a l'est aussi. Les n=2p racines ri peuvent donc être regroupées par paire de conjuguées. Le dénominateur de H est donc un produit de p polynôme du second ordre de la forme :

(s-ri)(s-ri*)=s2-2Re(ri)s+|ri|2

Calculons explicitement les 2n racines du polynôme P :

xk=expj(π2n+kπn)k=0,12n-1

On en déduit :

rk=expj(π2n+kπn+π2)

Les solutions de partie réelle négative sont obtenues pour k=0,1,n-1 . Les paires de conjugées sont (r0,rn-1, (r1,rn-2), etc. On a finalement :

|rk|=1-2Re(rk)=-2cos(π2n+kπn+π2)

pour k=0,1p-1 .

La fonction Mathematica suivante calcule la transmittance de Laplace (de gain unitaire dans la bande passante)

butterworth[p_]:=Module[{},
    n = 2*p;
    denom = 1;
    For[k=0,k<p,k++,
        c=-2*Cos[Pi/(2*n)+k*Pi/n+Pi/2];
        denom = denom*(s^2+c*s+1); 
    ];
    Return[1/denom]; 
] 
                

Exemple pour p=3 :

T=butterworth[3]
                
1(s2+2 s+1) (s2+(3-1) s2+1) (s2+(1+3) s2+1)

La fonction de transfert et le diagramme de Bode :

H[x_]:=T/.s->I*x;
GdB[x_]:=20*Log[10,Abs[H[x]]];
phase[x_]:=Arg[H[x]]*180/Pi;
                
Plot[GdB[10^lx],{lx,-2,2},AxesLabel->{"log(x)","GdB"},
                            PlotRange->{{-2,2},{-60,10}}]
plot1.pngplot1.pdf
Plot[phase[10^lx],{lx,-2,2},AxesLabel->{"log(x)","phase"}]
plot2.pngplot2.pdf

2. Réalisation

2.a. Association de filtres actifs

La décomposition de la fonction de transfert obtenue plus haut montre que le filtre de Butterworth peut être obtenu par association en série de filtres actifs.

Consisérons comme exemple la cellule du second ordre suivante :

figureA.svgFigure pleine page

Il s'agit d'une structure de Sallen et Key avec un amplificateur de tension de gain K. En pratique, on utilisera un potentiomètre pour ajuster ce gain.

Pour calculer ce circuit, on utilise le module Mathematica simulineaire.m :

Get["../simulin/simulineaire.m"];

Définition du circuit, avec g le gain en boucle ouverte de l'amplificateur :

filtre[r_,c_,k_,g_]:=Module[{},
    n=6;
    A=Table[0,{n},{n}];
    B=Table[0,{n}];
    A=ajouterResistance[A,1,2,r];
    A=ajouterResistance[A,2,3,r];
    A=ajouterResistance[A,5,4,(k-1)*r0];
    A=ajouterResistance[A,4,6,r0];
    A=ajouterCapacite[A,2,5,c];
    A=ajouterCapacite[A,3,6,c];
    {A,B}=ajouterSourceTensionSTCT[A,B,5,6,3,4,g];
    {A,B}=ajouterMasse[A,B,6];
    {A,B}=definirEntree[A,B,1];
    Return[{A,B}];
]
                

Calcul de la transmittance de Laplace :

{A,B}=filtre[R,C,K,g];
T=transfert[A,B,5]
                
g KC2 g R2 s2+C2 K R2 s2-C g K R s+3 C g R s+3 C K R s+g+K

La pulsation de coupure est

ω0=1RC

En reprenant le changement de variable défini au 1.a et en prenant la limite g , on obtient :

T(s)=Ks2+(3-K)s+1

Pour obtenir un filtre de Butterworth d'ordre n=2p, on associe en série p cellules comme celle-ci. Le coefficient Ki de la cellule i est donné par :

3-Ki=-2cos(π2n+iπn+π2)

Voici par exemple les coefficients pour p=2 :

p=2;
n=2*p;
K=Table[N[3+2*Cos[Pi/(2*n)+i*Pi/n+Pi/2]],{i,0,p-1}]
                
{2.2346331352698203, 1.1522409349774265}

et pour p=3 :

p=3;
n=2*p;
K=Table[N[3+2*Cos[Pi/(2*n)+i*Pi/n+Pi/2]],{i,0,p-1}]
                
{2.4823619097949585, 1.5857864376269049, 1.0681483474218636}

Ces coefficients (gain de l'amplificateur) permettent de réaliser un filtre de Butterworth d'ordre 6 avec 3 cellules en série. Les cellules sont placées par ordre de gain croissant.

Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.