Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Fascicule de TP3 - Copie

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 20

FACULTE DES SCIENCES DE TUNIS LAB.

TRAITEMENT DU
SIGNAL
Département de Physique

TP de Traitement Analogique du signal


Les systèmes linéaires invariants à temps continus: Réponses
impulsionnelles, indicielles et fréquentielles.

Introduction
DIAGRAMME DE BODE DE SYSTÈMES SIMPLES
Les diagrammes de Bode de systèmes simples peuvent être tracés de façon approximative à
l'aide uniquement de segments de droites. Cette méthode est très utilisée dans l'analyse des
systèmes.
On donne dans ce tableau le diagramme asymptotique de quelques filtres élémentaires ainsi que
leur nom.
𝐺(𝑝) = 𝐾 (Gain statique) 1
𝐺(𝑝) = (intégrateur)
𝑝

𝐺(𝑝) = 𝑝 (Derivateur) 1
𝐺(𝑝) = (Passe bas 1er ordre)
1+𝑇𝑝

𝐺(𝑝) = 1 + 𝑇𝑝 (Passe haut 1er ordre) 1


𝐺(𝑝) =
1 − 𝑇𝑝
1
𝐺(𝑝) = 1 − 𝑇𝑝 𝐺(𝑝) = 2𝑧𝑝 (2ème ordre)
1+ +𝑝²/𝑤𝑛
𝑤𝑛

DIAGRAMME DE BODE DE DEUX SYSTÈMES EN SÉRIE


Lorsque deux systèmes G1(p) et G2(p) sont en série, leurs fonctions de transfert se multiplient
: G(p) = G1 (p). G2 (p)
À la lumière des résultats de la section précédente, le rapport d'amplitude de G(p) est:

Par conséquent, sur le diagramme de Bode, le rapport d'amplitude et la phase de G (p) est la
somme des rapports d'amplitude et des phases de G1(p) et G2(p)

Outils nécessaires
Dans cette partie, on donne quelques commandes qui peuvent être utiles pour votre TP
1
1. Pour la création de la fonction de transfert 𝐻(𝑝) = , taper :
𝑝²+2𝑝+1

num=1 ; coef numérateur


den=[1 2 1] coef dénominateur
sys1=tf(num,den) affiche la fonction de transfert
2. [i t]=impulse(sys1) donne la réponse impulsionnelle i du système avec le temps de
simulation t
3. [s t]=step(sys1) pour la réponse à un échelon avec le temps de simulation t ( appelé
réponse indicielle)
4. bode(sys1) pour donner le diagramme de bode
5. [Z,P,K]=zpkdata(sys1,’v’) pour le calcul des zéros, pôles et gain
6. Pour chercher la réponse à une entrée quelconque, il faut tout d’abord définir la
variable temporelle :
t=0 :0.01 :10
e=sin(t) pour définir l’entrée
r=lsim(sys1,e,t)

Travail demandé
1
1. On commence par le simple système de premier ordre 𝐻(𝑝) = 𝑝+1

• Afficher sur Matlab la fonction de transfert de ce système


• Calculer la réponse impulsionnelle i(t)
• Afficher sur la même courbe la réponse impulsionnelle calculée par Matlab et
votre réponse impulsionnelle. Que remarquez-vous ?
• Calculer la réponse indicielle s(t)
• Afficher sur la même courbe la réponse indicielle calculée par Matlab et votre
réponse indicielle. Que remarquez-vous ?
• Donner la réponse de ce système pour une entrée sinusoïdale e(t)=sin(t) avec
t=0 :0.01 :10 ;
• Afficher le diagramme de Bode. Quel est le type de ce filtre ?
1
2. On considère maintenant le système 𝐻(𝑝) = 𝑝(1+𝑝)²

• Afficher sur Matlab la fonction de transfert de ce système


• Calculer la réponse impulsionnelle i(t)
• Afficher sur la même courbe la réponse impulsionnelle calculée par matlab et
votre réponse impulsionnelle. Que remarquez-vous ?
• Monter que la réponse indicielle s(t) est 𝑠(𝑡) = (𝑡 − 2)(1 + exp(−𝑡))
Remarque : vous pouvez utiliser la commande [r,p,k]=residue(n,d) pour la
décomposition en élément simple de S(p)
• Afficher sur la même courbe la réponse indicielle calculée par matlab et votre
réponse indicielle. Que remarquez-vous ?
• Donner la réponse de ce système pour une entrée sinusoïdale e(t)=sin(t) avec
t=0 :0.01 :10 ;
• Afficher le diagramme de bode. Donner le type de ce filtre ?
• Calculer les pôles et les zéros. Est-ce que ce système est stable ?
3. Refaire les mêmes questions pour le système de fonction de transfert
1 + 5𝑝
𝐻(𝑝) =
(2𝑝 + 1)(1 + 10𝑝)

4. Ecrire sous Matlab un programme en script pour tracer la réponse indicielle du


6
système de fonction de transfert : 𝐻(𝑝) = 5𝑝2 +6𝑝+1
• En déduire le pôle dominant.
• Tracer la carte des pôles.
Correction

Outils nécessaires
Dans cette partie, on donne quelques commandes qui peuvent être utiles pour votre Tp
1
1. Pour la création de la fonction de transfert 𝐻(𝑝) = 𝑝²+2𝑝+1, taper :

num=1 ; coef numérateur


den=[1 2 1] coef dénominateur
sys1=tf(num,den) affiche la fonction de transfert
>> num=1 ;
>> den=[1 2 1] ;
>> sys1=tf(num,den)

sys1 =

1
-------------
s^2 + 2 s + 1

Continuous-time transfer function.


2. [i t]=impulse(sys1) donne la réponse impulsionnelle i du système avec le temps de
simulation t
>> [i t]=impulse(sys1)

i=

0
0.0099
0.0196
0.0291
0.0384
0.0476
0.0565
0.0653
0.0738
0.0823
0.0905
………………….
3. [s t]=step(sys1) pour la réponse à un échelon avec le temps de simulation t ( appelé
réponse indicielle)
>> [s t]=step(sys1)

s=

0
0.0000
0.0002
0.0004
0.0008
……………………
4. bode(sys1) pour donner le diagramme de bode
>> bode(sys1)
5. [Z,P,K]=zpkdata(sys1,’v’) pour le calcul des zéros, pôles et gain
>> [Z,P,K]=zpkdata(sys1,'v')

Z=

0×1 empty double column vector

P=
-1
-1

K=
1
6. Pour chercher la réponse à une entrée quelconque, il faut tout d’abord définir la
variable temporelle :
t=0 :0.01 :10
e=sin(t) pour définir l’entrée
r=lsim(sys1,e,t)
>> t=0 :0.01 :10;
>> e=sin(t);
>> r=lsim(sys1,e,t)

r=

0
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0001
0.0001
0.0001
0.0002
0.0002
0.0003
0.0003
0.0004
0.0005
0.0006
0.0008
0.0009
………………………

Travail demandé
1
1. On commence par le simple système de premier ordre 𝐻(𝑝) = 𝑝+1

• Afficher sur matlab la fonction de transfert de ce système


% Définir la fonction de transfert
num = 1; % Numérateur de H(p)
den = [1 1]; % Dénominateur de H(p)
H = tf(num, den); % Créer la fonction de transfert
disp('Fonction de transfert H(p) :');

2. Calculer la réponse impulsionnelle i(t)

1
Théoriquement, la réponse impulsionnelle d'un système de premier ordre 𝐻(𝑃) = 𝑝+1 est
donnée par : 𝑖(𝑡) = 𝑒 −𝑡 . 𝑢(𝑡)

Sous MATLAB, on peut calculer la réponse impulsionnelle avec la commande impulse.

% Calculer la réponse impulsionnelle avec MATLAB


[i_t, t] = impulse(H, 0:0.01:10); % Générer la réponse impulsionnelle

% Afficher la réponse impulsionnelle théorique et MATLAB sur la même courbe


i_t_theorique = exp(-t); % Calcul théorique
plot(t, i_t, 'b', t, i_t_theorique, 'r--');
legend('MATLAB', 'Théorique');
xlabel('Temps (s)');
ylabel('Réponse impulsionnelle i(t)');
title('Comparaison des réponses impulsionnelles');
Observation : Comparez les courbes et observez si elles se superposent, ce qui confirmerait
que la réponse théorique et celle calculée par MATLAB sont cohérentes.
3. Calculer la réponse indicielle s(t)

Théoriquement, la réponse indicielle (ou réponse à une entrée échelon unitaire) d'un système
de premier ordre est :

𝑠(𝑡) = 1 − 𝑒 −𝑡

Sous MATLAB, on utilise la commande step pour calculer cette réponse.

% Calculer la réponse indicielle avec MATLAB


[s_t, t] = step(H, 0:0.01:10);

% Afficher la réponse indicielle théorique et MATLAB sur la même courbe


s_t_theorique = 1 - exp(-t); % Calcul théorique
plot(t, s_t, 'b', t, s_t_theorique, 'r--');
legend('MATLAB', 'Théorique');
xlabel('Temps (s)');
ylabel('Réponse indicielle s(t)');
title('Comparaison des réponses indicielle');
Observation : Comme pour la réponse impulsionnelle, les deux courbes doivent se
superposer si elles sont correctes.
4. Donner la réponse de ce système pour une entrée sinusoïdale e(t)=sin(t) avec
t=0 :0.01 :10 ;

La réponse à une entrée sinusoïdale peut être obtenue en utilisant la commande lsim.

% Définir l'entrée sinusoïdale et le temps


t = 0:0.01:10;
e_t = sin(t);

% Calculer la réponse du système


y_t = lsim(H, e_t, t);

% Afficher l'entrée et la sortie sur la même figure


plot(t, e_t, 'b', t, y_t, 'r');
legend('Entrée e(t) = sin(t)', 'Sortie y(t)');
xlabel('Temps (s)');
ylabel('Amplitude');
title('Réponse du système à une entrée sinusoïdale');
5. Afficher le diagramme de Bode. Quel est le type de ce filtre ?
Pour obtenir le diagramme de Bode, on utilise bode.

% Afficher le diagramme de Bode


figure;
bode(H);
title('Diagramme de Bode du système H(p) = 1/(p+1)');
Observation :
1
• Un système de premier ordre comme 𝐻(𝑃) = agit comme un filtre passe-bas.
𝑝+1

• Dans le diagramme de Bode, vous remarquerez que l'amplitude diminue aux hautes
fréquences, confirmant le comportement passe-bas.

1
2.On considère maintenant le système 𝐻(𝑝) = 𝑝(1+𝑝)²

• Afficher sur matlab la fonction de transfert de ce système


1 1
𝐻(𝑝) = = 3
𝑝(1 + 𝑝)² 𝑝 + 2𝑝2 + 𝑝
Afficher la fonction de transfert sur MATLAB :
% Définir la fonction de transfert H(p) = 1 / (p * (1 + p)^2)
num = 1; % Numérateur
den = [1 3 3 0]; % Dénominateur, car (1 + p)^2 = p^2 + 2p + 1, donc p * (p^2 + 2p + 1)
H = tf(num, den); % Créer la fonction de transfert
disp('Fonction de transfert H(p) :');
• Calculer la réponse impulsionnelle i(t)
Théoriquement, on peut utiliser la décomposition en éléments simples pour obtenir la réponse
impulsionnelle analytique. Cependant, pour simplifier, MATLAB fournit la réponse
impulsionnelle avec la commande impulse.
% Calculer et afficher la réponse impulsionnelle
[i_t, t] = impulse(H, 0:0.01:10);
plot(t, i_t);
title('Réponse impulsionnelle i(t) de H(p) = 1 / (p * (1 + p)^2)');
xlabel('Temps (s)');
ylabel('i(t)');
Observation : Vous pouvez comparer la courbe obtenue avec celle calculée
analytiquement (si effectuée), et vérifier si elles sont similaires.

• Monter que la réponse indicielle s(t) est 𝑠(𝑡) = (𝑡 − 2)(1 + exp(−𝑡))


Remarque : vous pouvez utiliser la commande [r,p,k]=residue(n,d) pour la
décomposition en élément simple de S(p)
Pour décomposer le système en éléments simples, utilisez residue :
% Décomposer H(p) en éléments simples pour calculer s(t)
[r, p, k] = residue(num, den);
disp('Résidus :'); disp(r);
disp('Pôles :'); disp(p);
disp('Constantes :'); disp(k);

La commande residue permet de confirmer la forme analytique de s(t)s(t)s(t). Ensuite,


on peut comparer la solution obtenue analytiquement avec la réponse MATLAB.

• Observation : Comparez la courbe théorique et MATLAB pour voir si elles


coïncident.
• Afficher sur la même courbe la réponse indicielle calculée par matlab et votre
réponse indicielle. Que remarquez-vous ?
% Calculer la réponse indicielle avec MATLAB
[s_t, t] = step(H, 0:0.01:10);

% Afficher la réponse indicielle théorique et MATLAB sur la même courbe


s_t_theorique = (t - 2) .* (1 + exp(-t)); % Formule théorique
plot(t, s_t, 'b', t, s_t_theorique, 'r--');
legend('MATLAB', 'Théorique');
xlabel('Temps (s)');
ylabel('Réponse indicielle s(t)');
title('Comparaison des réponses indicielle');

Observation : Comparez la courbe théorique et MATLAB pour voir si elles


coïncident.

• Donner la réponse de ce système pour une entrée sinusoïdale e(t)=sin(t) avec


t=0 :0.01 :10 ;
% Définir l'entrée sinusoïdale et le temps
t = 0:0.01:10;
e_t = sin(t);

% Calculer la réponse du système pour une entrée


sinusoïdale
y_t = lsim(H, e_t, t);
% Afficher l'entrée et la sortie sur la même figure
plot(t, e_t, 'b', t, y_t, 'r');
legend('Entrée e(t) = sin(t)', 'Sortie y(t)');
xlabel('Temps (s)');
ylabel('Amplitude');
title('Réponse du système à une entrée sinusoïdale');

• Afficher le diagramme de bode. Donner le type de ce filtre ?


% Afficher le diagramme de Bode
figure;
bode(H);
title('Diagramme de Bode du système H(p) = 1 / (p * (1 + p)^2)');
Type de filtre : Le système H(p)=1/p(1+p)2 se comporte comme un filtre passe-bas,
car il atténue les hautes fréquences.

• Calculer les pôles et les zéros. Est-ce que ce système est stable ?
% Calculer les pôles et les zéros
poles = pole(H);
zeros = zero(H);
disp('Pôles :'); disp(poles);
disp('Zéros :'); disp(zeros);

% Vérifier la stabilité
if all(real(poles) < 0)
disp('Le système est stable.');
else
disp('Le système est instable.');
end
Stabilité : Si tous les pôles ont une partie réelle négative, alors le système est stable.

3.Refaire les mêmes questions pour le système de fonction de transfert


1 + 5𝑝 1 + 5𝑝 1 + 5𝑝
𝐻(𝑝) = = =
(2𝑝 + 1)(1 + 10𝑝) 2𝑝 + 20𝑝2 + 1 + 10𝑝 20𝑝2 + 12𝑝 + 1
4. Script pour le Système H(p)=6/5p2+6p+1
• Tracer la réponse indicielle et déterminer le pôle dominant
% Définir le système
num = 6;
den = [5 6 1];
H = tf(num, den);

% Calculer la réponse indicielle


[s_t, t] = step(H, 0:0.01:10);
plot(t, s_t);
title('Réponse indicielle de H(p) = 6 / (5p^2 + 6p +
1)');
xlabel('Temps (s)');
ylabel('Amplitude');

% Calculer les pôles pour trouver le pôle dominant


poles = pole(H);
disp('Pôles :'); disp(poles);

Pôle dominant : Le pôle le plus proche de l'origine dans le plan complexe (celui ayant
la plus petite partie réelle négative) est le pôle dominant.
• Tracer la carte des pôles
% Afficher la carte des pôles et des zéros
figure;
pzmap(H);
title('Carte des pôles et des zéros du système');
Cette carte montre les pôles et les zéros du système sur le plan complexe. La
position des pôles détermine la stabilité du système et son comportement
dynamique.

Vous aimerez peut-être aussi