TP Diagramme de Bode

publicité
Diagramme de Bode
Compétence visée : Utilisation de quelques fonctions d’une bibliothèque et de leur
documentation en ligne.
Le but de ce TP est d’étudier les bibliothèques python permettant de tracer des
graphiques.
Introduction : matplotlib.pyplot
La bibliothèque matplotlib.pyplot permet de tracer des graphiques mathématiques.
Programme permettant de tracer un segment :
# On importe les bibliothèques
from matplotlib.pyplot import *
xA=0
xB=1
yA=0
yB=1
# On trace le segment AB
plot([xA,xB],[yA,yB])
#On montre le graphique
show()
Programme permettant de représenter graphiquement une fonction :
# On importe les bibliothèques
from matplotlib.pyplot import *
from numpy import *
# On définit la fonction que l’on souhaite tracer
def fonction_1(x):
"""
fonction_1(x) -> réel
renvoie la valeur en t de la fonction
"""
return x**2+2*x+1
# On définit l’ensemble des abscisses des points qu’on veut représenter.
## Soit on définit le pas
x=arange(x_min,x_max,pas)
##Soit on définit par le nombre de points
x=linspace(x_min,x_max,nombre_points)
#On demande de tracer la fonction avec comme étiquette ou descriptif pour la
courbe « legende »
plot(x,fonction_1(x),label=’legende’)
#On écrit une légende qui reprend les étiquettes renseignées dans les
des plots
legend()
labels
#On met un titre
title(‘titre’)
PCSI – Lycée Brizeux
Informatique Pour Tous
#On met des légendes sur les axes
xlabel(‘légende des abscisses’)
ylabel(‘légende des ordonnées’)
#On écrit un texte
text(abscisse,ordonnée,'texte')
#On fixe les bornes du tracé
xlim(min,max)
ylim(min,max)
#On trace une grille
grid(True)
#On montre le graphique
show()
Il est possible de modifier la couleur du segment, le type de trait (pointillés, …), la largeur du
trait, une légende…
(Voir : aide python ou sur le site http://matplotlib.org/api/pyplot_summary.html).
Programme permettant de représenter graphiquement un diagramme de Bode :
# On
from
from
from
importe les bibliothèques
matplotlib.pyplot import *
numpy import *
pylab import *
# La fonction de transfert ici H(j.w)=1/(1+0.01.j.w-w²)
def H(w):
return 1/(1 + 0.01*1j*w - w*w)
# Découpage régulier des puissances en base 10 de la pulsation ici de 10^-2
à 10^3
puissance_w = arange(-2,3,0.01)
# Les pulsations w
W = 10**puissance_w
# La phase en degré
phase = angle(H(W),'deg')
# Le module en dB
module = 20*log(absolute(H(W)))
#Tracer du diagramme de Bode
subplot(211) # Permet d’afficher plusieurs graphes (nombre de graphe (2),
colonne (1), ligne (1))
semilogx(W,module) # Tracé en semilog du module
grid(True) # Activation de la grille
subplot(212)
semilogx(W,phase) #Tracé en semilog du module
grid(True)
#Activation de la grille
#On montre le graphique
show()
Remarque : Si on veut deux axes logarithmiques on utilise la fonction loglog()avant un
simple plot(x,y).
PCSI – Lycée Brizeux
Informatique Pour Tous
1. Problématique
Madame Petitjean dispose d’un filtre électrique intégré dans une boite noire. Sur la boite est
écrit : Filtre passe bas d’ordre 1 de fréquence de coupure de 1 𝑘𝐻𝑧. Madame Petitjean veut
vérifier si la nature du filtre est correcte.
Avec un GBF, Madame Petitjean crée des signaux sinusoïdaux d’amplitude 10 𝑉, de pulsation
variable et de phase nulle. Elle choisit 4 fréquences quelconque pour ces signaux : 10 𝐻𝑧,
100 𝐻𝑧, 1 𝑘𝐻𝑧 et 10 𝑘𝐻𝑧.
A l’aide de l’oscilloscope elle récupère pour chaque signaux d’entrée un fichier texte (.csv).
Ce fichier comprend trois colonnes : une colonne temps (en seconde), une colonne tension
d’entrée du filtre (en volts) et une colonne pour la tension de sortie du filtre (en volts).
Exemple de fichier :
x-axis,1,2
second,Volt,Volt
-2.500000E-03,+804.020107E-03,+2.613065347E+00
...
Madame Petitjean dispose donc de 4 fichiers : 10Hz.csv, 100Hz.csv, 1kHz.csv et
10kHz.csv.
Pour effectuer votre programme python, vous utiliserez le fichier élève disponible sur
l’espace d’échange.
2. Modélisation
On cherche à modéliser la tension en entrée du filtre par une fonction mathématique de la forme
𝑢𝑒 (𝑡) = 𝑈𝑒 𝑐𝑜𝑠(2𝜋𝑓𝑡 + 𝜑𝑒 ) avec 𝑈𝑒 l’amplitude, 𝜑𝑒 la phase, 𝑓 la fréquence de la tension
d’entrée et 𝑡 le temps.


Ecrire une fonction tension_entree(Ue,phie,f,t) ayant pour paramètres 𝑈𝑒
l’amplitude, 𝜑𝑒 la phase, 𝑓 la fréquence de la tension d’entrée et 𝑡 le temps et renvoyant
la tension d’entrée 𝑢𝑒 (𝑡).
Reproduire le graphique suivant à l’aide de la fonction précédente.
PCSI – Lycée Brizeux
Informatique Pour Tous
3. Lecture des données

-
A partir du fichier texte créer trois listes :
Une liste L_temps constituée des valeurs des temps en seconde contenues dans la
première colonne.
Une liste L_tension_entree constituée des valeurs des tensions en entrée du filtre
en volts contenues dans la deuxième colonne.
Une liste L_tension_sortie constituée des valeurs des tensions en sortie du filtre
en volts contenues dans la troisième colonne.
On pourra utiliser la fonction split() qui transforme une chaine de caractère.
Exemple d’utilisation de la fonction split() :
chaine_caractere='abc,def,ghi'
Liste=chaine_caractere.split(',')
# Alors print(Liste) renvoie la liste ['abc', 'def', 'ghi']
Madame Petitjean souhaite retracer sur python le graphe observé sur l’oscilloscope.


Tracer le graphe représentant les tensions en entrée et en sortie en fonction du temps à
partir des trois listes L_temps et L_tension_entree et L_tension_sortie.
Mettre un titre au graphe, aux axes, préciser les unités et ajouter une légende.
4. Filtre passe bas d’ordre 1
Madame Petitjean souhaite maintenant tracer le diagramme de Bode d’un filtre passe bas
d’ordre 1 de fonction de transfert :
𝐺0
𝐻 (𝜔 ) =
𝜔
1+𝑗𝜔
𝑐
Avec 𝐺0 le gain statique sans dimension et 𝜔𝑐 = 2𝜋𝑓𝑐 la pulsation de coupure du filtre en
𝑟𝑎𝑑. 𝑠 −1 .
On rappelle que :
- La réponse en gain : 𝐺𝑑𝐵 (𝜔) = 20 log (|𝐻(𝜔)|)
-
La phase : 𝜑(𝜔) = arg (𝐻 (𝑗𝜔))
Le logarithme en base 10 s’écrit dans python : log10()


Ecrire une fonction Transfert(G0,wc,w)ayant pour paramètres 𝐺0 le gain
statique et 𝜔𝑐 la pulsation de coupure du filtre et 𝜔 une pulsation et renvoyant la
fonction de transfert complexe 𝐻(𝜔).
Tracer le diagramme de Bode de ce filtre d’ordre 1 de fréquence de coupure 𝜔𝑐 =
1000 𝑟𝑎𝑑. 𝑠 −1 et de gain statique 𝐺0 = 1 pour des pulsations comprissent entre
100 𝑟𝑎𝑑. 𝑠 −1 et 100000 𝑟𝑎𝑑. 𝑠 −1 .
PCSI – Lycée Brizeux
Informatique Pour Tous
5. Point expérimental
Dans cette partie on dispose donc d’une fonction dephasage_gain qui détermine à partir
les trois listes L_temps et L_tension_entree et L_tension_sortie et de la
fréquence du signal :
- Le gain entre le tension d’entrée et la tension de sortie.
- Déphasage entre le tension d’entrée et la tension de sortie.
Cette fonction utilise un ajustement curve_fit de la bibliothèque optimize qui permet
d'obtenir le déphasage et le gain pour nos courbes expérimentales. Cette fonction cherche le
cosinus qui passe au mieux par tous les points expérimentaux.



Compléter la fonction lecture_donnees ayant comme paramètre un fichier
expérimental et renvoyant les trois listes L_temps et L_tension_entree et
L_tension_sortie.
Déterminer le gain et le déphasage entre le tension d’entrée et la tension de sortie pour
les fichiers disponibles.
Placer alors les points expérimentaux correspondants aux fichiers étudiés sur le
diagramme de Bode tracé dans la partie précédente.
6. Filtre passe bas d’ordre 2
Madame Petitjean souhaite bien vérifier que le filtre n’est pas d’ordre 2.
On étudie maintenant un filtre passe bas d’ordre 2 de fonction de transfert :
𝐺0
𝐻 (𝑗𝜔) =
𝑗 𝜔
𝜔 2
1 + 𝑄 𝜔 − (𝜔 )
0
0
Avec 𝐺0 le gain statique sans dimension et 𝜔0 la pulsation propre du circuit en 𝑟𝑎𝑑. 𝑠 −1 et 𝑄
le facteur de qualité.



Ecrire une fonction Transfert_2(G0,w0,w,Q)ayant pour paramètres 𝐺0 le gain
statique, 𝑄 le facteur de qualité et 𝜔0 la pulsation propre du circuit et 𝜔 une pulsation
et renvoyant la fonction de transfert complexe 𝐻 (𝜔).
Tracer le diagramme de Bode de ce filtre d’ordre 2 de pulsation propre 𝜔0 =
1000 𝑟𝑎𝑑. 𝑠 −1 , de facteur de qualité 𝑄 = 0,1 et de gain statique 𝐺0 = 1 pour des
pulsations comprissent entre 100 𝑟𝑎𝑑. 𝑠 −1 et 100000 𝑟𝑎𝑑. 𝑠 −1 .
Placer alors les points expérimentaux correspondants aux fichiers étudiés sur le
diagramme de Bode.
PCSI – Lycée Brizeux
Informatique Pour Tous
Téléchargement