Adloun

électricité (PTSI) · Chapitre 6 · Exercice de TD

Fabriquer une sinusoïde à partir d'un créneau (capacité numérique)

Filtrage linéaire · D. Action d'un filtre sur un signal · niveau 3 (difficile)

Énoncé

Un générateur ne délivre qu'un créneau symétrique de fréquence , d'amplitude , dont la décomposition est fournie : . On veut en tirer une sinusoïde à l'aide d'un filtre passe-bande d'ordre 2 de fréquence centrale et de facteur de qualité : On mesure la pureté de la sortie par son taux de distorsion harmonique , où est l'amplitude de la raie en sortie et la raie que l'on veut garder.

1) Avant tout calcul : pourquoi un filtre linéaire ne peut-il que modifier l'amplitude et la phase des raies du créneau ? Que vaut le THD du créneau lui-même ?

2) Écrire un script Python qui, pour et donnés, calcule le gain et la phase sur chaque harmonique (), affiche le THD et l'amplitude de la raie gardée, et trace l'entrée et la sortie sur deux périodes.

3) : THD pour , , , . Quel assure un THD de 1 % ? Expliquer la loi observée.

4) (on veut une sinusoïde à ) : mêmes calculs. Pourquoi faut-il un dix fois plus grand ? Quelle raie domine le résidu ?

5) Quelle est l'amplitude de la sinusoïde obtenue dans chaque cas, et sa phase ? Comparer, pour , avec un passe-bas d'ordre 1 de coupure (une ligne du script à changer). Conclure sur le choix du modèle de filtre.

Corrigé

1) Ce que la linéarité permet et interdit. Le créneau est une somme de sinusoïdes ; un filtre linéaire transforme chacune en une sinusoïde de même fréquence, multipliée par et déphasée de , et la sortie est la somme de ces sorties. Il ne crée donc aucune raie, et il ne peut pas en supprimer une exactement (sauf si s'annule pile à sa fréquence) : il ne fait que changer les proportions.

Le THD du créneau : , donc . C'est le complément des 81 % de l'exercice 1 : .

2) Le script. Il applique exactement la méthode du cours : spectre fourni, gain et phase raie par raie, somme.

import numpy as np
import matplotlib.pyplot as plt

f0 = 1000.0                      # frequence du creneau (Hz)
n = np.arange(1, 2000, 2)        # harmoniques impaires, n <= 1999
A = 4 / (np.pi * n)              # spectre FOURNI du creneau

def passe_bande(f, fr, Q):
    return 1 / (1 + 1j * Q * (f / fr - fr / f))

def filtrer(fr, Q, H=passe_bande):
    Hn = H(n * f0, fr, Q)        # gain et phase, raie par raie
    B = A * np.abs(Hn)           # amplitudes de sortie
    k = (n == round(fr / f0))    # la raie que l'on garde
    thd = np.sqrt(np.sum(B[~k]**2)) / B[k][0]
    return thd, B[k][0], np.degrees(np.angle(Hn[k][0])), Hn

def tracer(fr, Q):
    t = np.linspace(0, 2 / f0, 2000)
    Hn = filtrer(fr, Q)[3]
    w = 2 * np.pi * n[:, None] * f0 * t
    e = np.sum(A[:, None] * np.sin(w), axis=0)
    s = np.sum((A * abs(Hn))[:, None]
               * np.sin(w + np.angle(Hn)[:, None]), axis=0)
    plt.plot(t * 1e3, e, t * 1e3, s); plt.xlabel("t (ms)")
    plt.show()

print("THD du creneau :", np.sqrt(np.sum(A[1:]**2)) / A[0])
for fr in (f0, 3 * f0):
    for Q in (1, 3, 10, 30):
        thd, a, phi, _ = filtrer(fr, Q)
        print(f"fr={fr:.0f} Hz Q={Q:>2} : THD={100*thd:6.2f} %"
              f"  amplitude={a:.3f}  phase={phi:+.1f} deg")
    Q = 1.0
    while filtrer(fr, Q)[0] > 0.01:
        Q += 0.1
    print(f"fr={fr:.0f} Hz : THD = 1 % pour Q = {Q:.1f}")
pb = lambda f, fr, Q: 1 / (1 + 1j * f / fr)   # passe-bas, fc = f0
thd, a, phi, _ = filtrer(f0, None, H=pb)
print(f"passe-bas ordre 1 : THD={100*thd:.1f} %"
      f"  amplitude={a:.3f}  phase={phi:+.0f} deg")
tracer(f0, 10)

Résultat obtenu en l'exécutant :

THD du creneau : 0.48316720724507284
fr=1000 Hz Q= 1 : THD= 12.69 %  amplitude=1.273  phase=+0.0 deg
fr=1000 Hz Q= 3 : THD=  4.46 %  amplitude=1.273  phase=+0.0 deg
fr=1000 Hz Q=10 : THD=  1.35 %  amplitude=1.273  phase=+0.0 deg
fr=1000 Hz Q=30 : THD=  0.45 %  amplitude=1.273  phase=+0.0 deg
fr=1000 Hz : THD = 1 % pour Q = 13.5
fr=3000 Hz Q= 1 : THD=115.99 %  amplitude=0.424  phase=+0.0 deg
fr=3000 Hz Q= 3 : THD= 42.34 %  amplitude=0.424  phase=+0.0 deg
fr=3000 Hz Q=10 : THD= 12.88 %  amplitude=0.424  phase=+0.0 deg
fr=3000 Hz Q=30 : THD=  4.30 %  amplitude=0.424  phase=+0.0 deg
fr=3000 Hz : THD = 1 % pour Q = 129.0
passe-bas ordre 1 : THD=16.4 %  amplitude=0.900  phase=-45 deg

(Spectre tronqué à , d'où au lieu de .) Le tracé montre, pour , une sortie qu'on ne distingue pas à l'œil d'une sinusoïde, d'amplitude , superposée au créneau.

3) Centré sur le fondamental. Le THD passe de à quand passe de à : il est inversement proportionnel à , et 1 % est atteint pour . L'explication. Pour la raie et grand, et . La raie de sortie vaut donc , et ce qui donne bien pour 1 %.

4) Centré sur l'harmonique 3. Pour un même , le THD est environ dix fois plus grand ( pour , pour ), et il faut pour atteindre 1 %. Deux raisons s'ajoutent. La raie qu'on veut garder est trois fois plus faible que le fondamental ( contre ). Et le fondamental, qu'il faut maintenant éliminer, n'est qu'à un facteur trois en fréquence sous : . Le résidu est dominé par le fondamental : pour , il ressort à , deux fois plus que la raie 5 (). Extraire une harmonique est bien plus difficile qu'extraire le fondamental.

5) Amplitude, phase, et choix du modèle. À , exactement : le passe-bande transmet la raie gardée sans l'atténuer ni la déphaser (amplitude pour le fondamental, pour l'harmonique 3). Le passe-bas d'ordre 1 de coupure , lui, donne un THD de , moins bon que le passe-bande avec , et il atténue de (amplitude ) et déphase de la raie qu'on veut garder. Pour isoler une raie, le bon modèle est le passe-bande : il atténue des deux côtés et sa sélectivité se règle par . Le passe-bas ne sait qu'atténuer d'un côté, avec une pente douce.

Ce que l'exercice installe. La capacité numérique du programme : simuler l'action d'un filtre sur un signal périodique de spectre donné, raie par raie, et étudier l'influence d'un paramètre du filtre. Et deux lois à retenir : la distorsion résiduelle décroît comme ; on ne crée pas une sinusoïde, on rend les autres raies négligeables.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →