Les filtres analogiques permettent de transformer les signaux. Ils sont très utilisés en électronique analogique, par exemple dans les circuits de traitement des signaux audio. En électronique numérique, les filtres analogiques sont parfois nécessaires avant la conversion analogique-numérique (filtre anti-repliement) ou après la conversion numérique-analogique (filtre de lissage).
Nous avons vu, dans le TP Analyse spectrale des signaux périodiques, qu'un signal périodique peut être décomposé en somme de sinusoïdes de fréquences multiples de la fréquence fondamentale, ce qui conduit à la représentation fréquentielle du signal, appelée aussi spectre du signal.
Soit e(t) un signal périodique appliqué à l'entrée du filtre. La sortie du filtre est notée :
Les filtres sont des systèmes linéaires : si e1(t) et e2(t) sont deux signaux appliqués à l'entrée du filtre, une combinaison linéaire de ces deux signaux se transforme de la manière suivante :
Si l'on applique cette propriété à la somme de la série de Fourier d'un signal périodique, on obtient :
Pour connaître la réponse du filtre à un signal périodique, il suffit donc de connaître sa réponse à un signal sinusoïdal. On sait par ailleurs que la réponse à une sinusoïde est elle-même une sinusoïde, mais d'amplitude différente et déphasée. Si on note G(ω) la fonction gain du filtre et ψ(ω) le déphasage, on a :
Autrement dit, il suffit de connaître le gain et le déphasage pour chaque harmonique du signal.
Pour étudier complètement un système linéaire, il suffit donc d'étudier sa réponse à un signal sinusoïdal. Cette étude se fait généralement pour une plage de fréquence : c'est ce qu'on appelle l'étude de la réponse fréquentielle du filtre. D'un point de vue théorique, cela correspond à l'étude de sa fonction de transfert en régime sinusoïdal.
L'objectif de ce TP est de déterminer expérimentalement la réponse fréquentielle d'un filtre, puis de tracer le gain et le déphasage en fonction de la fréquence.
Voici le schéma du filtre utilisé :
Figure pleine pageIl s'agit d'un filtre actif, qui nécessite donc une alimentation pour fonctionner. Le signal d'entrée est une tension, représentée ici par une source de tension. Le signal de sortie est la tension Vs. L'élément actif est un amplificateur de gain K=1, qui réalise l'opération suivante :
Idéalement, cet amplificateur a une impédance d'entrée très grande (considérée comme infinie) et une impédance de sortie nulle. Le courant à l'entrée de l'amplificateur est donc négligeable.
[1] Déterminer qualitativement le comportement de ce filtre à très basse fréquence, puis à très haute fréquence. En déduire le type de filtre (passe-bas, passe-bande ou passe-haut).
La fréquence de coupure (à -3 dB) est donnée par :
Le circuit comporte trois condensateurs dont la capacité nominale est 10 nF avec une tolérance de . La capacité 2C est réalisée avec deux condensateurs en parallèle. Les résistances R=11,2 kΩ sont chacune constituées de deux résistances en série R1=10 kΩ et R2=1,2 kΩ, avec une tolérance de . Toutes ces tolérances doivent être divisées par pour obtenir des incertitudes-types.
En raison des variations des valeurs de résistance et de capacité d'un composant à l'autre, la valeur théorique de la fréquence de coupure comporte une incertitude, au même titre qu'une valeur mesurée. Concrètement, cela signifie que plusieurs circuits réalisés selon ce schéma et les mêmes valeurs nominales, n'auront pas exactement la même fréquence de coupure. On cherche alors l'incertitude-type de cette fréquence.
[2] Calculer la fréquence de coupure théorique et donner son incertitude.
Remarque : le calcul d'incertitude ci-dessus ne tient pas compte du fait que les deux résistances R peuvent être légèrement différentes (de même pour C). Sachant que les résistances d'un même circuit ont été prises dans une même série de fabrication, on peut considérer que ces variations sont négligeables (moins de ).
Le circuit est alimenté avec une alimentation double . On utilise pour cela les bornes rouge (+ 15), noir (0) et bleue (-15).
Sur l'autre côté du boitier, on trouve l'entrée du filtre (borne jaune) et la sortie (borne verte), avec la masse (GND, borne noire).
Le générateur doit délivrer un signal sinusoïdal sur l'entrée du filtre (bornes jaune et noire). L'oscilloscope est branché afin d'observer le signal d'entrée sur la voie 1 et le signal de sortie sur la voie 2 (bornes verte et noire).
[3] Vérifier qualitativement le comportement du filtre et la fréquence de coupure.
Pour mesurer l'amplitude d'un signal sinusoïdal, on relève l'amplitude de crête à crête, en s'aidant éventuellement des curseurs.
Pour mesurer le déphasage entre deux sinusoïdes, il faut procéder en couplage d'entrée AC. On mesure le décalage temporel τ entre les deux sinusoïdes, au niveau zéro de tension.
Par convention, on donne au déphasage une valeur positive (dans l'intervalle [0,π]), lorsque la sortie est en avance sur l'entrée, c'est-à-dire lorsqu'elle coupe l'axe de tension nulle avant l'entrée (le décalage est en valeur absolue inférieur à une demi-période). Si la sortie est en retard sur l'entrée, le déphasage est négatif. Remarque : la mesure automatique du déphasage, que l'on utilisera pas ici, ne peut déterminer le signe du déphasage; c'est à l'utilisateur de faire la correction pour avoir le signe correct.
Pour obtenir la réponse fréquentielle sur une large gamme de fréquences, afin de tracer un diagramme de Bode, on fait varier la fréquence de manière logarithmique. Il suffit pour cela de multiplier la fréquence par un facteur constant, par exemple un facteur 2, entre deux mesures consécutives.
[4] Faire des mesures sur 3 décades en partant de 10 Hz. Saisir les colonnes suivantes dans un tableau LibreOffice :
[5] Exporter le tableau vers Python (voir annexe). Tracer les quatre courbes suivantes :
Les courbes en échelle logarithmique (diagramme de Bode) sont utiles pour visualiser le comportement du filtre sur une large plage de fréquence, dans la bande passante et dans la bande atténuante. Les courbes en échelle linéaire sont plutôt utilisées pour étudier finement le comportement du filtre dans la bande passante.
[6] Quelle est la fréquence de coupure à -3 dB ? Est-elle en accord avec la fréquence théorique (équation ) ?
[7] Quel est le gain dans la bande passante ?
[8] Quelle est la pente du gain en décibel dans la bande atténuante ?
[9] Sur quelle plage de fréquence peut-on dire que la phase dans la bande passante varie linéairement avec la fréquence ? Quel est alors le temps de retard de la sortie par rapport à l'entrée ?
[10] Sur quelle plage de fréquence le gain est-il compris entre 0,9 et 1 ?
L'analyse spectrale permet d'obtenir rapidement une indication assez précise de la réponse fréquentielle d'un filtre, à condition d'utiliser comme signal d'entrée une fonction riche en harmoniques, par exemple un signal en dents de scie. Il s'agit d'obtenir le spectre de l'entrée et de la sortie afin de les comparer. Le script analyse-spectrale-2voies.py effectue l'acquisition sur les voies A0 et A1 de la carte Sysam SP5 et trace les deux spectres en échelle décibel, ce qui permet de lire avec précision l'amplitudes des harmoniques faibles.
[11] Choisir une fréquence pour le signal en dents de scie afin que son spectre couvre la zone fréquentielle intéressante, avec des harmoniques assez intenses au voisinage de la fréquence de coupure.
[12] Faire l'analyse spectrale de l'entrée et de la sortie du filtre. Ajuster éventuellement la fréquence d'échantillonnage pour minimiser les effets du repliement, quasi inévitable avec un signal en dents de scie.
[13] Pour chaque raie, relever l'amplitude en décibel de l'entrée et de la sortie. En déduire le gain en décibel pour la fréquence correspondante.
[14] Tracer le gain G en fonction de la fréquence et comparer à la courbe obtenue plus haut.
On s'intéresse aux incertitudes de mesures dues aux erreurs aléatoires. On considère deux mesurandes x et y et une troisième z qui se calcule par une fonction à deux variables :
On note mx une estimation de la valeur moyenne (espérance mathématique) de x. Cette estimation peut être obtenue avec une mesure unique ou bien avec plusieurs mesures dont ont fait la moyenne arithmétique. On note Δx l'incertitude-type, qui par définition est l'écart-type (la racine carrée de la variance) de la variable aléatoire x. On introduit de même les notations my et Δy pour la mesurande y. L'incertitude-type peut être évaluée en calculant l'écart-type expérimental de plusieurs mesures (évaluation de type A), ou bien lors d'une mesure unique en tenant compte des caractéristiques des appareils (évaluation de type B).
L'estimation de la valeur moyenne de z est obtenue simplement par :
On suppose que les variables aléatoires x et y sont indépendantes et que les écart-types sont très faibles (relativement à la moyenne). La formule de composition des incertitudes permet de calculer l'incertitude-type composée :
Cette relation donne le carré de l'incertitude-type, c'est-à-dire la variance. Il faut bien sûr prendre la racine carrée pour obtenir l'incertitude. Elle fait intervenir les dérivées partielles de la fonction f. Une dérivée partielle par rapport à une variable se calcule en dérivant par rapport à cette variable, les autres étant considérées comme des constantes. Dans la formule ci-dessus, les dérivées partielles sont calculées pour x=mx et y=my.
Voyons quelques exemples courants, tout d'abord la somme de deux grandeurs :
Les deux dérivées partielles sont égales à 1 et la composition s'écrit :
On voit donc que la variance composée est égale à la somme des variances. Le même résultat est obtenu pour une différence.
Considérons le cas d'un produit :
La composition s'écrit :
Dans ce cas, il est intéressant de diviser par z2 pour faire apparaître les incertitudes relatives :
Le même résultat est obtenu pour un rapport. Lors du calcul numérique, il est bon de calculer numériquement les deux termes séparément. Il est fréquent qu'une des incertitudes relatives (à plus forte raison son carré) soit négligeable devant l'autre, ce qui permet de la négliger dans les calculs ultérieurs.
Lorsque d'autres fonctions interviennent dans le calcul (puissance, fonction trigonométrique, logarithme, etc), le plus simple est de calculer d'abord l'argument de la fonction avec son incertitude-type, puis de voir l'effet de la fonction. Par exemple pour
on obtient :
En divisant par z2 on obtient :
Pour conclure, on retiendra :
Le tableau des valeurs mesurées est saisie dans une feuille de calcul LibreOffice. Cette annexe explique comment exporter ces données vers python, afin d'effectuer différents traitements ou de tracer des graphiques.
Pour créer un fichier texte depuis LibreOffice :
Ouvrir le fichier avec notepad++. Constater la présence d'une première ligne avec le nom des colonnes. Remarquer aussi que les séparateurs décimaux sont des virgules.
Il faut transférer le contenu du fichier dans une chaîne de caractères, puis convertir les virgules en points :
s = open('fichier.csv').read().replace(',','.')
Enfin un tableau numpy est obtenu de la manière suivante :
import numpy from io import StringIO data = numpy.loadtxt(StringIO(s),skiprows=1,unpack=True)
La première ligne est ici ignorée car elle comporte les noms des colonnes. Le résultat est un tableau numpy dans lequel les colonnes du tableau LibreOffice sont rangées par lignes. Pour obtenir la première colonne, par exemple la fréquence, il suffit donc d'écrire :
f = data[0]
Il est aisé d'ajouter des colonnes dans LibreOffice pour calculer de nouvelles données. Néanmoins, certains calculs complexes seront plus faciles à faire avec python. Considérons comme exemple simple le calcul du quotient de deux colonnes x et y :
z=x/y
Si l'on dispose aussi des incertitudes absolues de x et y, on peut facilement calculer celle de z :
delta_z = z*numpy.sqrt((delta_x/x)**2+(delta_y/y)**2)
Pour tracer des points expérimentaux dont les coordonnées sont dans les tableaux x et y, on utilise la fonction matplotlib.pyplot.plot :
from matplotlib.pyplot import * plot(x,y,'bo')
Le premier caractère du code de style ('bo') indique la couleur (ici bleue). Le second caractère indique qu'il faut tracer les points sous forme de petits cercles, non reliés par des segments. On peut éventuellement relier les points par des segments, mais il est important de bien voir individuellement les points expérimentaux.
Pour obtenir un graphique avec des barres d'incertitude, il faut utiliser la fonction matplotlib.pyplot.errorbar :
errorbar(x,y,xerr=delta_x,yerr=delta_y,fmt='o')
Les arguments xerr et yerr sont des listes ou des scalaires qui donnent la demi-largeur des barres. On peut utiliser pour cette demi-largeur les valeurs des incertitudes-types. Si l'on souhaite utiliser une incertitude élargie avec un intervalle de confiance de , il suffit de multiplier les incertitudes par 2. Si l'abscisse a une incertitude négligeable, il suffit de poser xerr=0.