« Filtre elliptique/Modélisation sous MATLAB » : différence entre les versions

De testwiki
Aller à la navigation Aller à la recherche
imported>Crochet.david.bot
m Robot : remplacement de texte automatisé (-\n(==={0,3})(?: *)([^\n=\s]+)(?: *)\1(?: *)\n +\n\1 \2 \1\n)
 
(Aucune différence)

Dernière version du 22 août 2023 à 11:53

Modèle:Chapitre

Introduction

Dans cet article est décrite une manière de concevoir un filtre passe-bande analogique à caractéristique elliptique (de Cauer) à l'aide de l'outil MATLAB et de le simuler. Le logiciel MATLAB nous permet de calculer rapidement les filtres partiels nécessaires à sa réalisation.

Cahier des charges

Le gabarit de la figure 1 défini la réponse en fréquence de notre filtre. Il est sensé ne laisser passer que le bip de fréquence la plus élevée d'un signal radiophonique soit f0=1250Hz.

Figure 1: Gabarit de réalisation


Sur le gabarit nous avons les valeurs suivantes qui sont données :

H0=0dB
H1=0.5dB
H2=40dB
f0=1250Hz
f1=1kHz
f2=1220Hz

Étant donnée que la fréquence centrale d’un passe bande se trouve au centre du gabarit, nous pouvons facilement à l’aide de la moyenne géométrique calculer les fréquences f3 et f4.

f3=125021220=1280,7Hz
f4=125021000=1562.5Hz

Conception avec MATLAB

Le programme MATLAB nous met à disposition tout un set de fonctions qui nous permettent de concevoir facilement notre filtre.

ellipord, ellip, zp2sos, zpk, bode, lsim, waveread, wavplay

Script de conception

Ce script permet de calculer le filtre complet ainsi que les deux filtres d’ordre 2 qui le composent. De plus il affiche les diagrammes de bode des filtres partiels et de leur mise en cascade. Le script suivant n'a été testé que sous MATLAB 7.1

%*********************************************************************
%       CONCEPTION D'UN FILTRE ELLIPTIQUE                            *
%*********************************************************************
clear; clc;
close all;
%Definitions des paramètres du gabarit
fr=1250;
f1=1000;
f2=1220;
f3=fr^2/f2;
f4=fr^2/f1;
H0=0;
H1=-0.5;
H2=-40;

%Fréquences de stop et de pass
Wp=2*pi*[f2 f3];
Ws=2*pi*[f1 f4];
%Amplitudes des "vagues" ripples
Rp=abs(H1);
Rs=abs(H2);

%Détermine l’ordre du filtre ainsi que ses fréquences propres
[N, Wn] = ellipord(Wp, Ws, Rp, Rs, 's');
%Créée une matrice contenant les zéros, les poles et le gain du filtre 
[Z,P,K] = ellip(N, Rp, Rs, Wn, 's');
%Donne les coefficients des polynômes du numérateur et du dénumérateur 
[num, den] = ellip(N, Rp, Rs, Wn, 's');

%Matrice SOS contenant les coefficients de la forme standard de la fonction
% de transfert d'ordre 2 (selon Laplace). 
[SOS, G] = zp2sos(Z,P,K);

%Plotting complete filter
syst = ZPK(Z,P,K);
delta_f=1;
fmin=0;
fmax=10000;
%f=(fmin:delta_f:fmax); %linear frequency axis
f=logspace(0,4,10000); %logaritmic frequency axis
[Ampl, Phase] = bode(syst, 2*pi*f);
Ampl = squeeze(Ampl);

figure(1);
plot(f, 20*log10(Ampl+eps));
xlabel('Frequency [Hz]');
ylabel('Amplitude response [dB]');
grid on;

%Plotting 1st second-order section
[Z1,P1,K1]=sos2zp(SOS(1,1:6), G);
syst2=ZPK(Z1,P1,K1);
delta_f=1;
fmin=0;
fmax=10000;
%f=(fmin:delta_f:fmax); %linear frequency axis
f=logspace(0,4,10000); %logaritmic frequency axis
[Ampl, Phase] = bode(syst2, 2*pi*f);
Ampl = squeeze(Ampl);

figure(2);
plot(f, 20*log10(Ampl+eps));
xlabel('Frequency [Hz]');
ylabel('Amplitude response [dB]');
grid on;

%Plotting 2nd second-order section
[Z1,P1,K1]=sos2zp(SOS(2,1:6), 1);
syst2=ZPK(Z1,P1,K1);
delta_f=1;
fmin=0;
fmax=10000;
%f=(fmin:delta_f:fmax); %linear frequency axis
f=logspace(0,4,10000); %logaritmic frequency axis
[Ampl, Phase] = bode(syst2, 2*pi*f);
Ampl = squeeze(Ampl);

figure(3);
plot(f, 20*log10(Ampl+eps));
xlabel('Frequency [Hz]');
ylabel('Amplitude response [dB]');
grid on;

%Test with the sound
figure(4);
[bach,FS,NBITS,OPTS]=wavread('R:\Labos\SI\2321_Eln1\bach_bip_short.wav');
wavplay(bach, FS);
t=(0:length(bach)-1)/FS;
Y=lsim(syst,bach,t);
plot(Y);
sound(Y,FS);

Fonction de transfert

La fonction de transfert d'un filtre de deuxième ordre oscillant est exprimée par rapport aux paramètres suivants :

  • Qn : Facteur de qualité des zéros
  • Q0 : Facteur de qualité des pôles
  • ωn : Pulstation du zéro
  • ω0 : Pulstation du pôle

H(s)=H01+sQn*ωn+s2ωn21+sQ0*ω0+s2ω02

Modèle:Bas de page