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 ?