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 (pas de bobines). Ils sont utilisés à 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 de type Butterworth, puis on verra comment associer plusieurs cellules afin d'obtenir un filtre de Butterworth d'ordre plus élevé.
La réalisation de filtres passe-bas avec une réponse de type Bessel est montré dans Filtres passe-bas de Bessel.
La figure suivante montre le schéma d'un filtre passe-bas de Sallen et Key :
Figure pleine pageL'é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 :
Figure pleine pagePour obtenir un gain supérieur à 1, on utilise le montage amplificateur non-inverseur :
Figure pleine pagePour 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)Figure pleine page
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]).
La figure suivante montre le schéma d'un filtre passe-bande :
Figure pleine pagePour 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.
Figure pleine pageVoici 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)Figure 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)Figure pleine page