Table des matières PDFPython

Filtres actifs de Sallen et Key

1. Introduction

Les filtres de Sallen et Key ([1]) sont des filtres actifs construits à partir de réseaux RC, comportant seulement des résistors et des condensateurs. L'absence de bobines d'auto-induction permet de les faire fonctionner à basse fréquence, par exemple pour le traitement du signal audio.

Ce document présente des exemples de filtres de Sallen et Key. On s'intéresse tout d'abord à une cellule élémentaire qui réalise un filtre d'ordre 2, puis on verra comment associer plusieurs cellules afin d'obtenir un ordre plus élevé.

2. Filtre passe-bas

2.a. Filtre d'ordre 2

La figure suivante montre le schéma d'un filtre passe-bas de Sallen et Key :

figureA.svgFigure pleine page

L'élément actif est un amplificateur de tension de gain K. Idéalement, l'amplificateur doit avoir une impédance d'entrée assez grande pour pouvoir être considérée comme infinie, et une impédance de sortie nulle. Il réalise la fonction suivante :

À l'origine, il s'agissait d'un amplificateur à tube. Aujourd'hui, les transistors (inventés en 1947) ont remplacés les tubes (ceux-ci sont encore utilisés en Hi-Fi haut de gamme). Pour réaliser un amplificateur de tension, la solution la plus simple est d'utiliser un circuit intégré appelé amplificateur linéaire intégré (ou ampli-op). Un gain K=1 peut être obtenu avec un montage suiveur :

figureA1.svgFigure pleine page

Pour obtenir un gain supérieur à 1, on utilise le montage amplificateur non-inverseur :

figureB.svgFigure pleine page

Pour un ampli-op idéal, la fonction de transfert est de la forme suivante ([2]) :

avec :

La première relation fixe la fréquence de coupure. Le coefficient m est ajusté pour optimiser la réponse fréquentielle du filtre. Une réponse de type Butterworth donne une décroissance uniforme de -40 décibels par décade dans la bande atténuée. Cela est obtenu avec

Un manière simple d'obtenir cette valeur est de choisir K=1 (amplificateur suiveur) et 2C1=C2. Cette solution a l'avantage de donner un filtre de gain unité dans la bande passante. L'inconvénient est la difficulté pratique qu'il y a à choisir deux condensateurs vérifiant cette condition tout en fixant la fréquence de coupure. Par ailleurs, il peut être intéressant de faire varier le gain K. Une solution plus souple consiste à choisir C1=C2=C. On a alors m=3-K. La valeur de K peut être ajustée précisément en plaçant un potentiomètre dans le pont diviseur. Pour obtenir le filtre de Butterworth d'ordre 2, il faut donc K=1.586.

Voici un exemple :

import numpy
from  matplotlib.pyplot import *

C=10e-9
R=22e3
m=numpy.sqrt(2)
K=3-m
fc=1.0/(1*numpy.pi*R*C)
def H(f):
    return K/(1+1j*m*f/fc-(f/fc)**2)
def bode(H,start,stop):
    freq = numpy.logspace(start=start,stop=stop,num=1000)
    h = H(freq)
    gdb = 20*numpy.log10(numpy.absolute(h))
    phi = numpy.angle(h)
    figure(figsize=(8,8))
    subplot(211)
    plot(freq,gdb)
    xscale('log')
    xlabel("f (Hz)")
    ylabel("GdB")
    grid()
    subplot(212)
    plot(freq,phi)
    xscale('log')
    xlabel("f (Hz)")
    ylabel("phi")
    grid()
bode(H,1,5)
                 
figA.svgFigure pleine page

2.b. Filtre d'ordre n

Dans certains cas, on recherche un filtre plus sélectif, c'est-à-dire dont la pente dans la bande est atténuée est plus forte. En associant en série des filtres comme le précédent, on peut obtenir un filtre de Butterworth d'ordre n=2p, dont le gain a la forme suivante :

La pente dans la bande atténuée est alors de -20n décibels par décade.

Cela est obtenu en associant en série p filtres du second ordre, avec les coefficients suivants :

avec i=0,1...p-1. Par exemple, pour obtenir un filtre d'ordre 4, on utilise deux filtres d'ordre 2 avec les mêmes valeurs de R et C, le premier avec K=1.152, le second avec K=2.235.

D'autres types de réponses fréquentielles (Bessel et Tchebychev) peuvent être obtenues avec d'autres valeurs de K ([3]).

3. Filtre passe-bande

La figure suivante montre le schéma d'un filtre passe-bande :

figureC.svgFigure pleine page

Pour un amplificateur idéal, la fonction de transfert est de la forme suivante ([2]) :

avec :

ω0 est la pulsation centrale de la bande passante, correspondant au maximum du gain et à un déphasage nul. La largeur de la bande passante est :

Le gain K permet d'ajuster la largeur de la bande passante. Il doit être inférieur à 5, sans quoi le circuit est instable. Une valeur proche de 5, par exemple K=4.8, permet d'obtenir un filtre passe-bande très sélectif. Lorsque K s'approche de 5, le gain maximal A augmente. Si l'on souhaite opérer à gain constant, on peut ajouter en sortie un étage d'amplification avec un gain 1/A.

La figure suivante montre une réalisation de ce filtre avec un ampli-op et un potentiomètre permettant de régler précisément le coefficient K entre 4.3 et 5.3.

figureD.svgFigure pleine page

Voici le diagramme de Bode pour K=4.8 :

C=10e-9
R=22e3
K=4.8
f0=numpy.sqrt(2)/(2*numpy.pi*R*C)
m=(5-K)/numpy.sqrt(2)
def H(f):
    return K/(5-K)*(1j*m*f/f0)/(1+1j*m*f/f0-(f/f0)**2)
bode(H,1,5) 
                 
figB.svgFigure pleine page

4. Filtre passe-haut

figureE.svgFigure pleine page

Pour un amplificateur idéal, la fonction de transfert est de la forme suivante ([2]) :

avec :

Comme pour le filtre passe-bas, on choisit pour avoir une pente constante de +20 décibels par décade dans la bande atténuée. Voici le diagramme de Bode :

import numpy
import math
import cmath 
from  matplotlib.pyplot import *
 
C=10e-9 
R=22e3
m=numpy.sqrt(2)
K=3-m
fc=1.0/(1*numpy.pi*R*C)
def H(f):
    return K*(f/fc)**2/(1+1j*m*f/fc-(f/fc)**2)
bode(H,1,5)
                 
figC.svgFigure pleine page
Références
[1]  R.P. Sallen, E.L. Key,  A practical method of designing RC active filters,  (J. Audio Eng. Soc p.74-85, 1955)
[2]  F. Manneville, J. Esquieu,  Electronique, systèmes bouclés linéaires, de communication et de filtrage,  (Dunod, 1998)
[3]  P. Horowitz, W. Hill,  Traité de l'électronique,  (Elektor, 1996)
Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.