PCSI Lycée Brizeux Informatique Pour Tous
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 labels
des plots
legend()
#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 importe les bibliothèques
from matplotlib.pyplot import *
from numpy import *
from 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égdans une boite noire. Sur la boite est
écrit : Filtre passe bas d’ordre 1 de fréquence de coupure de . 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 , de pulsation
variable et de phase nulle. Elle choisit 4 fréquences quelconque pour ces signaux : ,
,  et .
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
     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 dutilisation 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 :
  
Avec le gain statique sans dimension et   la pulsation de coupure du filtre en
.
On rappelle que :
- La réponse en gain :   
- La phase :  
Le logarithme en base 10 sécrit dans python : log10()
Ecrire une fonction Transfert(G0,wc,w)ayant pour paramètres 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
 et de gain statique   pour des pulsations comprissent entre
 et .
PCSI Lycée Brizeux Informatique Pour Tous
5. Point expérimental
Dans cette partie on dispose donc d’une fonction dephasage_gain qui 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 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 :

 
 
Avec le gain statique sans dimension et la pulsation propre du circuit en  et
le facteur de qualité.
Ecrire une fonction Transfert_2(G0,w0,w,Q)ayant pour paramètres le gain
statique, le facteur de qualité et 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
 , de facteur de qualité   et de gain statique   pour des
pulsations comprissent entre  et .
Placer alors les points expérimentaux correspondants aux fichiers étudiés sur le
diagramme de Bode.
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !