L'intégration d'un signal est une opération courante en traitement du signal. Par exemple, le signal délivré par un capteur de vitesse doit être intégré pour fournir la position. De même, le signal délivré par un accéléromètre doit être intégré pour fournir la vitesse.
Pour un signal analogique, l'intégration est définie par :
où τ est une constante homogène à un temps (éventuellement négative). On vérifie aisément que la fonction de transfert en régime sinusoïdal est :
En régime sinusoïdal, un intégrateur est donc caractérisé par un déphasage de et par un gain en décibel décroissant à -20 dB par décade.
Considérons un signal d'entrée périodique dont la série de Fourier s'écrit :
La composante constante A0/2 (appelée composante continue) donne en sortie :
Tout signal périodique comporte une composante continue, aussi petite soit elle. On voit donc que l'intégrateur idéal produit une dérive de la tension en sortie. Autrement dit, il est instable.
L'objectif de ces TP est la mise en œuvre d'un filtre intégrateur analogique, puis d'un filtre intégrateur numérique. En verra en particulier comment résoudre le problème de la dérive due à la composante continue.
Toutes les observations et les choix effectués devront être reportés dans le compte-rendu écrit. À la fin de chaque partie, un compte rendu oral devra être fait à l'examinateur.
Matériel utilisé :
Outils numériques :
Les scripts analogiqueNumerique.py et traitementSignal.py contiennent des fonctions à utiliser. Il faut les enregistrer dans le dossier personnel de travail. Pour utiliser les fonctions dans un script python, faire les importations suivantes :
from analogiqueNumerique import * from traitementSignal import *
Voici le schéma du filtre intégrateur :
Figure pleine pageL'amplificateur linéaire intégré (ALI) TL081 est un circuit actif. Le circuit est alimenté par une alimentation double de deux fois 15 volts. La photographie suivante montre la platine utilisée :
Les différentes bornes sont :
Les deux condensateurs et les deux résistances peuvent être changées. Les valeurs par défaut sont :
La fonction de transfert du filtre s'écrit comme le produit de deux fonctions de transfert du premier ordre :
Quelle est l'opération de filtrage réalisée par H1 ? Même question pour H2.
Tracer le diagramme de Bode avec les valeurs données. De quel type de filtre s'agit-il ?
Quel est le domaine de fréquence où le filtre effectue une intégration ?
Quelle est l'utilité de la partie passe-haut du filtrage ?
L'étude se fait avec un générateur de signaux et un oscilloscope. On utilisera un signal sinusoïdal et un signal en créneau. On ne dépassera pas la fréquence de 1 kHz.
Déterminer expérimentalement le domaine de fréquence où l'intégration est réalisée.
Quelle est l'influence d'un décalage de tension (composante continue) appliqué en entrée ? Expliquer l'observation à l'aide du diagramme de Bode.
Que se passe-t-il si le condensateur C1 est remplacé par un court-circuit ? Expliquer.
L'intégrateur numérique est défini par la relation de récurrence suivante :
où xn est l'entrée du filtre, yn la sortie, et β un coefficient ajustable en fonction du gain souhaité.
Il s'agit d'un cas particulier de filtre récursif, à réponse impulsionnelle infinie. Le principe du filtrage récursif est présenté en annexe.
Tracer le diagramme de Bode de ce filtre, avec la fonction reponse_freq_filtre_bode du script traitementSignal.py. On pourra dans un premier temps choisir β=0,01.
Pour une fréquence d'échantillonnage de 2 kHz, quel est le domaine de fréquence où l'intégration est réalisée ?
Quelle est l'influence du paramètre β ?
Pour mettre en œuvre ce filtre, on commence par numériser un signal créneau avec la carte Sysam SP5. On utilisera pour cela la fonction numerisation_EA0 du script analogiqueNumerique.py. La fréquence d'échantillonnage est fixée à fe=2 kHz. Les fonctions de traitement seront ajoutées à la suite de la numérisation. On pourra ainsi faire varier la fréquence du signal et observer l'effet du filtre en exécutant le script. Pour le calcul du signal filtré, on pourra programmer une boucle afin d'appliquer soit la réalisation directe de type 1, soit la réalisation directe de type 2 (voir annexe). Pour la réalisation de type 2, on peut utiliser la fonction filtrage fournie.
Faire la numérisation d'un signal en créneau d'environ 10 Hz et calculer le signal filtré. Tracer les deux signaux sur la même figure.
Quel est l'inconvénient de ce filtre ?
Pourquoi le filtre analogique étudié précedemment n'avait pas ce défaut ?
Pour éliminer le phénomène de dérive, on considère un filtre passe-bande récursif (filtre RII). On utilisera la fonction filtre_RII_passe_bande fournie pour calculer les coefficients du filtre. Afin d'obtenir un comportement intégrateur dans la partie passe-bas, il faut un filtre d'ordre 1. Deux fréquences de coupure doivent être données pour définir un filtre passe-bande. On pourra par exemple choisir les fréquences réduites fc1=0,0005 et fc2=0,001.
Calculer les coefficients du filtre passe-bande et tracer son diagramme de Bode théorique. Combien a-t-il de coefficients ak et de coefficients bk ?
Numériser un signal créneau et lui appliquer le filtre passe-bande. Si nécessaire, multiplier les coefficients bk par un facteur supérieur à 1 pour augmenter le gain.
Pour faciliter le test du filtre à différentes fréquences, on utilisera le script acquisitionSansFinFiltrage.py, qui fait un filtrage en flux continu en traçant les signaux. Le script devra être complété pour définir les coefficients du filtre.
Déterminer la plage de fréquence pour laquelle le filtre réalise l'intégration.
Que se passe-t-il si un décalage de tension (composante continue) est ajoutée à l'entrée ?
Modifier le filtre pour que la fréquence basse de cette plage soit abaissée. Quel est l'inconvénient de ce changement ?
Que faut-il faire pour intégrer un signal de fréquence 1 kHz ?
Soit un signal numérique constitué par la suite de nombres xn, échantillonnés à la fréquence fe. D'une manière générale, un filtre linéaire est défini par la relation de récurrence suivante :
La suite yn est le signal de sortie du filtre. Il est donc défini par M coefficients ak et N coefficients bk. Par convention, on a toujours a0=1. Lorsque tous les autres ak sont nuls, le filtre a une réponse impulsionnelle finie (filtre RIF); les coefficients bk définissent alors la réponse impulsionnelle. Lorsque certains coefficients ak sont non nuls (pour k>0), le filtre est dit récursif car la sortie à l'instant n dépend de manière récursive de la sortie aux instants antérieurs. Un tel filtre a en général une réponse impulsionnelle infinie (filtre RII).
Selon l'application visée et la sélectivité souhaitée, on utilisera un filtre RIF ou un filtre RII. Les filtres RIF peuvent être très sélectifs avec un grand nombre de coefficients. Les filtres RII sont plus efficaces lorsque le nombre de coefficients doit être petit (inférieur à 10), mais ils peuvent être instables.
La réponse fréquentielle d'un filtre (gain et déphasage) est obtenue avec sa fonction de transfert en Z :
en posant :
Le rapport f/fe doit être inférieur à 1/2 (condition de Nyquist-Shannon).
Le fichier traitementSignal.py contient deux fonctions permettant de calculer le gain et le déphasage :
Ces deux fonctions prennent en argument les listes des coefficients sous forme de tableaux numpy. La fréquence calculée est en fait le rapport de la fréquence réelle sur la fréquence d'échantillonnage. La première fonction répartit les fréquences de manière linéaire sur l'intervalle [0,1/2]. La seconde les répartit de manière logarithmique, c'est pourquoi il faut lui fournir la fréquence minimale fmin.
Le calcul de la sortie par la relation nécessite de fixer les valeurs initiales des M-1 premières valeurs de yn. On choisit généralement des valeurs initiales nulles.
Le calcul directe par la relation est appelé réalisation directe de type 1. Une autre manière de calculer la sortie est d'utiliser un signal intermédiaire wn défini par :
La sortie est alors :
On montre que ces deux relations sont équivalentes à la relation (en régime stationnaire). La condition initiale consiste à fixer les M-1 premières valeurs de wk, en général à zéro. Ces deux relations définissent la réalisation directe de type 2. La fonction filtrage effectue le calcul par cette méthode.