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); endpour 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.