Cours 10h30, TD 4h30, deux partiels, un sur la prtie analogique et un sur la partie numérique
Evaluation : 50% premier partiel, 50% deuxième partiel
contenu de cours
- Première partie : conception de filtre dans le domaine temps continu
- Chapitre 1 : introduction au filtrage, notations et définition du gabarit
- Chapitre 2 : Definition du filtre protoitype, Conception du filtre prototype, approximation Butterworth, approximation Chebyshev
- Chapitre 3 : Transformation de fréquence: Prototype vers passe-bas, passe-haut, passe-bande, et coupe-bande, conception circuit passif LC
- Chapitre 4 : Synthèse filtre actif, décomposition en élément d'ordre 1 et 2, synthèse de filtre actif d'ordre 1 et 2 (passe-bas, passe-haut, passe-bande), synthèse à base d'intégrateur
- Deuxième partie : conception de filtre dans le domaine temps discret (numérique)
- Chapitre 5
- Introduction au filtrage numérique
- Définition de gabarit
- Synthèse à partir des filtres analogiques, méthode invariance impulsionnelle, approximation de dérivé, approximation de l'intégral (bilinéaire)
- Filtre non-récursif (RIF), utilisation de fenêtres, méthodes assisté par ordinateur
Des outils de calcul
L'ordre du filtre Butterworth=
L'ordre du filtre ChebyShev=
Une self est trabsformée en une mise en série d'une self et d'un condensateur:
Valeur de L =
Valeur de C =
Un condensateur est trabsformé en une mise en parallèle d'une self et d'un condensateur:
Valeur de L =
Valeur de C =
Quelsues Fonctions Matlab
[z,p,k] = buttap(n); % Butterworth filter prototype d'odre n
[num,den] = zp2tf(z,p,k); % Convert to transfer function form
[H,w]=freqs(num,den);
semilogx(w,20*log10(abs(H)));grid on;
wp=1000; wa=3000;Amax=1; Amin=50;
[n,wn]=buttord(wp,wa,Amax,Amin,'s'); % Butterworth filter prototype
[num,den]=butter(n,wn,'s');
[H,w]=freqs(num,den);
semilogx(w,20*log10(abs(H)));grid on;
wp=1000; wa=3000;Amax=1; Amin=50;
[n,wn]=cheb1ord(wp,wa,Amax,Amin,'s'); % Chebyshev lowpass filter
[num,den]=cheby1(n,Amax,wn,'s');
[H,w]=freqs(num,den);
semilogx(w,20*log10(abs(H)));grid on;
wp=[w1 w2];
wa=[w3 w4];
[n,wn]=buttord(wp,wa,Amax,Amin,'s'); % Butterworth filter prototype
[n,wn]=cheb1ord(wp,wa,Amax,Amin,'s'); % Chebyshev lowpass filter
[num,den]=butter(n,wn,ftype,'s'); %ftype peut être 'low','high','stop' ou 'bandpass'
[num,den]=cheby1(n,Amax,wn,'s');
[H,w]=freqs(num,den);
semilogx(w,20*log10(abs(H)));grid on;
sys=tf(1,[1 2 2 1],'variable','p'); % create a rational system
p=tf('p');
sys2=sys*(p^2+2*p+1);
bode(sys);
syms p
f=1/(p^3+2*p^2+2*p+1);
fplot(f); % tracer la courbe de la fonction
factor(f); % factorise la fontion f en élément simple
g=10/p;
h=compose(f,g); % donne f(g(p))
simplify(h);
poly2sym([1 2 2 1],p); %donne un polynom symbolique
sym2ploy(1/f); %donne les coefficients d'un polynome symbolique
vpa(h); %transforme les valeur rationnelles en format décimal
digits(5); % régle la précision dans l'affichage'
Utiliser la fonction residue pour decomposer une expression rationnelle en somme d'éléments simples
% definition de H(p)
% par exemple
b=[1 2 5];a=[1 5 6];
% fs = 1/Ts, fréquence d'échantillonnage
[bz, az]=impinvar(b,a,fs);
freqz(bz, az);
% definition de H(p)
% par exemple
b=[1 2 5];a=[1 5 6];
% fs = 1/Ts, fréquence d'échantillonnage
[bz, az]=bilinear(b,a,fs);
freqz(bz, az);
function [b,a] = filtre_passebande_numerique(F3,F1,F2,F4,Amax,Amin,Fe)
% Les frequence analogiques d'un filtre passe-bande est donnée
% On donne le H(Z) du filtre numérique qui le réalise (Butterworth)
% La méthode est bilineaire
% 1- calcul de gabarit numerique
W=2*pi*[F1 F2 F3 F4];
w=W/Fe; %omega=OMEGA.Te
% 2- Transformation bilineaire pour trouver le gabarit analogique de referencec(T=1)
% W=(2/T)tan(w/2),
Wr=2*tan(w/2);
% 3- Normaliser et calcul du gabarit prototype
if (Wr(1)*Wr(2)>Wr(3)*Wr(4))
Wr(3)=Wr(1)*Wr(2)/Wr(4);
else
Wr(4)=Wr(1)*Wr(2)/Wr(3);
end
Wr0=sqrt(Wr(1)*Wr(2));
B=(Wr(2)-Wr(1))/Wr0;
WPa=(Wr(4)-Wr(3))/(Wr(2)-Wr(1)); % coin de la bande attenuee du filtre prototype
% Gabarit prototype est donc connue
%---------------------------------------------------
% Calcul de Hp(P)
e = sqrt(10^(0.1*Amax)-1); % epsilon
% calcul de l'ordre du filtre
[n,wn]=buttord(1,WPa,Amax,Amin,'s');
%calcul de HP(s)
[b,a]=butter(n,wn,'s'); %HP(s)=b(s)/a(s)
%denormalisation pour calculetr le filtre passe-bande
% P-> 1/B(p/W0+w0/p)
syms p
H=poly2sym(b,p)/poly2sym(a,p);
digits(4);
pretty(vpa(H))
F=1/B*(p/Wr0+Wr0/p);
[Num,Den]=numden(collect(compose(H,F)));
b=sym2poly(Num); a=sym2poly(Den);
[b,a]=bilinear(b,a,1);
end
pour l'appeler on peut utiliser l'exemple ci-dessous :
F1=900;F2=1100;F3=600;F4=1400;Amax=2;Amin=20;Fe=5000;
[b,a]=filtre_passebande_numerique(F3,F1,F2,F4,Amax,Amin,Fe);
sys=tf(b,a,1/Fe,'variable','z^-1') % ceci est juste pour présenter sur l'écran le H(z)
[H,w]=freqz(b,a);plot(w*Fe/(2*pi),20*log10(abs(H)));grid; % abscisse en fréquence réelle
Les instructions vpa(H) et digits(d) (par exemlpe d=4) sont utiles pour présenter le H(p) obtenu dans la fonction.