Par groupe
Pour la classe
La mesure d’un signal, qualifié « d’analogique », se réalise en général à l’aide d’un « capteur » auquel il faut souvent ajouter un « adaptateur ». Par exemple un microphone ne délivrera une tension que de l’ordre du , il faudra donc l’amplifier.
Si l’on désire réaliser un traitement numérique de ce signal, une conversion « analogique-numérique » (« CAN ») doit être réalisée. C’est par exemple ce que réalise une carte d’acquisition. On peut représenter l’ensemble de la chaine d’acquisition ainsi :
Au cours de ce TP, vous rédigerez, en plus du compte-rendu habituel, une fiche méthode à la fin de votre cahier de TP. Cette fiche méthode devra contenir les points suivants :
L’échantillonnage est l’opération qui consiste à mesurer un signal en capturant des valeurs à intervalles réguliers.
L’intervalle de mesure s’appelle la période d’échantillonnage, notée . Se pose alors la question de savoir si les échantillons sont représentatifs du signal initial.
Parfois, dans les vidéos montrant des objets tournant (roues de voiture, pales d’hélicoptère, …), ceux-ci ne semblent pas tourner à la « bonne » vitesse, voire dans le mauvais sens. Cela est dû à une inadéquation entre la fréquence de rafraichissement des images (24 images par seconde en général), la vitesse de rotation et le nombre de barreaux des roues. Voir par exemple : https://youtu.be/C6f0tTdba8Y?feature=shared&t=107
Observer un disque en rotation à vitesse constante, éclairé par un stroboscope.
Quelle relation doivent vérifier la fréquence du stroboscope (fréquence d’échantillonnage) et la fréquence de rotation de la roue (fréquence du signal) pour que le mouvement de la roue soit correctement observé ?
En supposant que la roue tourne dans le sens horaire, compléter les schémas ci-dessous en représentant la position du trait sur la roue.
Dans les deux cas, dire si le mouvement de la roue est correctement observé.
À la suite des constatations précédentes, on admet le théorème de Nyquist-Shannon :
Un signal est correctement représenté à partir de ses échantillons ssi
Pour visualiser l’influence de la fréquence d’échantillonnage sur l’acquisition, on va acquérir un signal sinusoïdal de fréquence connue produit par un GBF puis en tracer le spectre grâce à Latis-Pro (voir Annexe A).
Réaliser une acquisition d’un signal sinusoïdal de fréquence produit par un GBF en respectant largement le critère de Shannon.
En tracer le spectre et vérifier que la fréquence observée est bien la fréquence réelle.
Conserver cette acquisition qui resservira par la suite.
Réaliser une acquisition d’un signal sinusoïdal de fréquence produit par un GBF en ne respectant pas le critère de Shannon.
En tracer le spectre et vérifier que la fréquence observée est bien différente de la fréquence réelle.
Lorsque la fréquence d’échantillonnage n’est pas suffisante, la fréquence mesurée sur le spectre n’est pas la fréquence réelle du signal. On dit qu’il y a repliement du spectre.
L’acquisition est réglée par 3 nombres :
On a donc 2 « degrés de liberté » sur l’acquisition. Lorsqu’on change un des trois paramètres dans le logiciel d’acquisition, un des deux autres est nécessairement modifié.
La résolution spectrale (écart de fréquence entre 2 points successifs sur le spectre) est liée à la durée de l’acquisition.
Si on veut plus de détails sur le spectre, il faut acquérir plus longtemps.
La fréquence la plus grande observable sur le spectre est la fréquence donnée par le critère de Shannon : .
Si on veut observer des fréquences plus élevées, il faut acquérir plus vite.
Le calcul du spectre à partir du signal est effectué avec un algorithme appelé FFT (Fast Fourier Transform). Cet algorithme, de complexité quasi-linéaire et utilisant le principe « diviser pour régner », est implanté par exemple dans les oscilloscopes numériques, dans Latis-Pro et dans la bibliothèque numpy de Python, notamment les fonctions np.fft.rfft et np.fft.rfftfreq.
Le spectre d’un signal peut être calculé à partir des lignes suivantes, à supposer que le signal soit dans la variable s et la période d’échantillonnage dans la variable Te.
import numpy as np
s_fourier = np.abs(np.fft.rfft(s)) # Calcul de spectre
freqs = np.fft.rfftfreq(len(s), Te) # Calcul des fréquences en HzOn souhaite tracer le signal avec sur une durée de . Réaliser le tracé pour des périodes d’échantillonnage de , et . On pourra utiliser les fonctions arange ou linspace pour créer les vecteurs de temps.
Avec Python, définir les variables t1, t2 et t3 correspondant aux 3 périodes d’échantillonnage, puis tracer les 3 signaux sur le même graphique. Lequel est fidèle au signal réel ? Est-ce cohérent avec le critère de Shannon ? Les signaux seront affichés par des points non reliés.
Tracer ensuite le spectre de ces 3 signaux. Lequel est fidèle au signal réel ? Est-ce cohérent avec le critère de Shannon ?
Annexe A : Tracé de spectre avec Latis-Pro
Pour tracer le spectre avec Latis-Pro, il faut cliquer sur « Traitements » puis « Calculs spécifiques » puis « Analyse de Fourier » ou appuyer sur la touche F6 du clavier. Une fenêtre s’ouvre alors. On peut alors ouvrir le menu « Avancé » et mettre le niveau de validité1 à . Il ne reste alors plus qu’à faire glisser la courbe dont on souhaite tracer le spectre dans le cadre « Courbe ».
Annexe B : Transférer des données de à Python
Pour traiter avec Python des données acquise avec Latis-Pro, il faut les exporter (« Fichier » puis « Exportation »). Le format le plus pratique est le format TXT, avec comme séparateur décimal le point et entre les données le point-virgule. Il faut ensuite faire glisser les courbes à exporter vers la colonne de droite.
Pour importer les données avec Python, on utilise la fonction loadtxt de la bibliothèque numpy. Le paramètre skiprows permet d’ignorer les premières lignes qui contiennent des en-têtes (une seule pour Latis-Pro).
data = np.loadtxt(nom_fichier, skiprows = 1, delimiter = ";")
t = data[:,0] # la première colonne contient les temps
s1 = data[:,1] # la seconde colonne contient le premier signal
... # on fait de même pour tous les signaux à importerAnnexe C : Tracer un spectre avec Python
La bibliothèque numpy implémente l’algorithme FFT (pour Fast Fourier Transform) dans son sous-module numpy.fft. En particulier, la fonctions np.fft.rfft permet de calculer le spectre d’un signal et np.fft.rfftfreq les fréquences associées.
Le spectre d’un signal s échantillonné avec la période d’échantillonnage Te peut être calculé à partir des lignes suivantes.
s_fourier = np.abs(np.fft.rfft(s)) # Calcul de spectre
freqs = np.fft.rfftfreq(len(s), Te) # Calcul des fréquences en Hz