Synthèse numérique d`un signal périodique

publicité
TP MP
Licence Creative Commons
1
Synthèse numérique d'un signal périodique
1.
Introduction
La synthèse numérique d'un signal consiste à générer les échantillons d'un signal par le
calcul, avant d'en faire la conversion numérique-analogique. Les générateurs numériques
de signaux fonctionnent de cette manière.
L'objectif de ces TP est d'apprendre à générer les échantillons du signal, puis à en faire
la conversion numérique-analogique avec la carte SysamSP5. On verra enn pourquoi il
est nécessaire d'ajouter un ltre passe-bas analogique pour eectuer le lissage du signal
obtenu.
2.
Méthodes de synthèse
Les deux méthodes que nous allons voir consistent à enregistrer des échantillons du
signal périodique dans une table, qui sera stockée dans la mémoire du convertisseur
numérique-analogique, et lue au moment de la conversion, à la fréquence d'échantillonnage.
2.a.
Échantillonnage d'une période
Soit T la période du signal périodique à synthétiser, qui sera déni par une fonction
python. Pour dénir le signal indépendamment de sa période, on utilise sa phase θ. Par
exemple, un signal sinusoïdal sera déni par la fonction Python suivante :
def signal(theta):
return 5.0*math.cos(theta)
La première méthode consiste à échantillonner exactement une période, c'est-à-dire
l'intervalle de phase [0, 2π]. Soit N le nombre d'échantillons sur une période. Ce nombre
doit vérier la condition de Nyquist-Shannon. En pratique, on cherchera à être en suréchantillonnage par rapport à l'harmonique la plus haute. Par exemple, pour un signal
comportant 3 ou 4 harmoniques, on prendra si possible N = 100.
Écrire le code python qui eectue l'échantillonnage et stocke les valeurs dans
un tableau numpy. Tracer les échantillons avec matplotlib.pyplot.plot.
Le convertisseur numérique-analogique lit les valeurs de la table et eectue la conversion à la période d'échantillonnage Te . Plus précisément, deux valeurs consécutives dans
la table sont espacées d'une durée Te . La programmation de la carte SysamSP5 depuis
python est expliquée plus loin.
La période d'échantillonnage est nécessairement un multiple entier de la période de
l'horloge τ du convertisseur : Te = qτ . Pour la SysamSP5, cette période est τ = 0.2 µs.
Exprimer la fréquence du signal en fonction de N , q et τ .
Pour N = 100, quelle est la plus grande fréquence possible ? Quelles sont les 5
plus grandes fréquences possibles ?
TP MP
Licence Creative Commons
2
On voit ainsi que cette méthode ne permet pas de faire varier nement la fréquence
du signal, du moins lorsque celle-ci est grande.
2.b.
Échantillonnage de plusieurs périodes
Lorsque la mémoire interne du convertisseur numérique-analogique est assez grande
(c'est le cas de la SysamSP5), on peut échantillonner plusieurs périodes. De cette manière, le nombre d'échantillons par période n'est plus nécessairement entier. Le nombre
d'échantillons total est N . Soit Np le nombre de périodes à échantillonner (nombre entier), qui permet de contrôler la fréquence lorsque la fréquence d'échantillonnage est
xée.
Sachant que la mémoire de la SysamSP5 peut contenir 218 échantillons, jusqu'à quelle valeur de Np peut-on aller pour avoir environ 100 échantillons par
période ?
Exprimer la fréquence du signal en fonction des diérents paramètres et expliquer pourquoi on peut ajuster cette fréquence beaucoup plus nement qu'avec la
méthode précédente. Montrer que la résolution fréquentielle obtenue lorsqu'on
fait varier Np est :
1
(1)
∆f =
N Te
On commence par xer N , par exemple N = 100000. On calcule Te en fonction de
la précision en fréquence souhaitée puis on arrondit à la valeur multiple de τ la plus
proche. Si la période d'échantillonnage obtenue est trop petite (inférieure à τ ), il sut
d'augmenter la précision de la fréquence. On calcule enn Np (un nombre entier) en
fonction de la fréquence souhaitée.
Écrire le code python eectuant ces calculs.
2.c.
Programmation de la carte SysamSP5
Il y a deux convertisseurs numérique-analogique sur la SysamSP5. Les sorties analogiques correspondantes sont SA1 et SA2. Les tensions sont comprises entre −10 et 10
volts. La période d'échantillonnage minimale est τ = 0.2 µs.
On commence par importer le module et ouvrir l'interface :
import pycanum.main as pycan
sys = pycan.Sysam("SP5")
sys.ouvrir()
Supposons que te soit la période d'échantillonnage (en secondes) et que echantillons
soit un tableau numpy contenant les échantillons. La conguration de la sortie 1 (SA1)
se fait de la manière suivante :
sortie = 1
sys.config_sortie(sortie,te*1.0e6,echantillons,-1)
TP MP
Licence Creative Commons
3
Le dernier argument indique combien de fois la conversion du tableau complet doit
être répétée. Lorsque la valeur est négative, la répétition se fait sans n, ce qui permet
de générer un signal périodique.
Pour déclencher la conversion, il faut exécuter :
sys.declencher_sorties(1,0)
Ici, on ne déclenche que la première sortie. Cette fonction retourne immédiatement.
Il faut donc prévoir soit une attente avec time.sleep, soit une autre fonction bloquante,
par exemple la fonction matplotlib.pyplot.show.
Voici ce qu'il faut faire pour bloquer l'exécution avec une fenêtre. Lorsque l'utilisateur
ferme la fenêtre, on peut stopper la sortie et fermer l'interface.
figure()
show(block=True)
sys.stopper_sorties(1,0)
sys.fermer()
3.
Réalisation d'une synthèse
Écrire une fonction signal(theta) qui dénit un signal périodique comportant
3 ou 4 harmoniques.
Programmer le convertisseur numérique-analogique en utilisant la méthode
d'échantillonnage sur plusieurs périodes. On cherchera à obtenir une fréquence
de 10, 53 kHz , 1053 Hz et 105, 3 Hz (avec la précision indiquée).
Observer le signal à l'oscilloscope. Observer les paliers de tension pendant la
durée Te . Mesurer la fréquence du signal avec l'analyseur de spectre de l'oscilloscope (fonction FFT).
4.
Filtre de lissage
Le signal obtenu en sortie du convertisseur numérique-analogique n'est pas tout à
fait le signal analogique souhaité, car il comporte des paliers de tension à chaque période
d'échantillonnage. Il faut donc ajouter un ltre de lissage (ou ltre de reconstruction) en
sortie du convertisseur. La gure suivante montre le principe du lissage :
TP MP
Licence Creative Commons
4
G
Convertisseur
Numérique-analogique
Signal
numérique
1
Signal
analogique
Fréquence
d'échantillonnage fe
fe/2
f
Filtre de lissage
Le ltre de lissage doit avoir une fréquence de coupure égale à la moitié de la fréquence
d'échantillonnage. Idéalement, il doit avoir un gain constant dans la bande passante (et
un déphasage linéaire) et un gain nul dans la bande atténuée. En pratique, on doit bien
sûr se contenter de la réponse fréquentielle réelle du ltre analogique utilisé.
Nous allons utiliser le ltre passe-bas du second ordre étudié dans les TP Réponse
fréquentielle d'un ltre analogique. Comme sa fréquence de coupure est de 1000 Hz , nous
allons xer la fréquence d'échantillonnage à fe = 2000 Hz .
Programmer sur la sortie SA1 un signal périodique de fréquence 105, 3 Hz .
Utiliser le ltre passe-bas pour eectuer le lissage et observer le résultat.
Tester le ltre de lissage pour diérentes fréquences du signal, avec un nombre
d'harmoniques variable. Conclure sur l'ecacité du lissage. Quel est l'inconvénient du ltre de lissage ?
Téléchargement