On s’intéresse ici à un montage suiveur dont l’entrée est sinusoïdale. Si la fréquence de la sinusoïde est trop élevée, la vitesse de balayage de l’ALI va déformer le signal. On cherche à simuler numériquement la forme du signal de sortie obtenu.
Le signal d’entrée noté avec et est envoyé à l’entrée du montage suiveur.
1/ Quelle valeur minimale doit avoir la vitesse de balayage pour que le signal de sortie ne soit pas déformé ?
Si le signal de sortie n’est pas déformé, il est égal au signal d’entrée et sa dérivée vaut
Sa valeur maximale est donc , la vitesse de balayage doit être au moins égale à cette valeur pour ne pas avoir de déformation.
L’ALI simulé a une vitesse de balayage de .
2/ Compléter le code suivant pour mettre en place les variables nécessaires à la simulation.
import numpy as np
f = 300e3 # fréquence du signal d'entrée (Hz)
SR = 14e6 # vitesse de balayage de l'ALI (V/s)
N = 20000 # nombre de points de la simulation
n_périodes = 4 # nombre de périodes du signal à simuler
A = 10 # amplitude du signal d'entrée (V)
T = ... # période du signal d'entrée (s)
t = np.linspace(0, n_périodes * T, N) # tableau des instants de la simulation (s)
dt = ... # période d'échantillonnage de la simulation (s)
e = ... # signal d'entrée (V)sin de la bibliothèque numpy peut s’appliquer directement à un tableau et renvoie alors un tableau.import numpy as np
f = 300e3 # fréquence du signal d'entrée (Hz)
SR = 14e6 # vitesse de balayage de l'ALI (V/s)
N = 20000 # nombre de points de la simulation
n_périodes = 4 # nombre de périodes du signal à simuler
A = 10 # amplitude du signal d'entrée (V)
T = 1 / f # période du signal d'entrée (s)
t = np.linspace(0, n_périodes * T, N) # tableau des instants de la simulation (s)
dt = t[1] - t[0] # période d'échantillonnage de la simulation (s)
e = A * np.sin(2 * np.pi * f * t) # signal d'entrée (V)Le principe de la simulation est le suivant : à chaque instant, on calcule la dérivée qu’aurait la sortie si elle suivait parfaitement l’entrée.
3/ Compléter le code suivant pour simuler l’évolution de la tension de sortie de l’ALI.
s = [e[0]] # initialisation : la sortie est initialement égale à l'entrée
for i in ...: # on parcourt tous les instants de la simulation
if abs(s[i-1] - e[i]) / dt < SR: # la vitesse de balayage n'est pas dépassée
s.append(...)
elif e[i] > s[i-1]: # la sortie doit croitre
s.append(...)
else: # la sortie doit décroitre
s.append(...)s = [e[0]] # initialisation : la sortie est initialement égale à l'entrée
for i in range(1, N):
if abs(s[i-1] - e[i]) / dt < SR: # la vitesse de balayage n'est pas dépassée
s.append(e[i])
elif e[i] > s[i-1]: # la sortie doit croitre
s.append(s[i-1] + SR*dt)
else: # la sortie doit décroitre
s.append(s[i-1] - SR*dt)Les instructions suivantes permettent de tracer les signaux d’entrée et de sortie simulés.
import matplotlib.pyplot as plt
plt.plot(t,e, label='Entrée')
plt.plot(t,s, label='Sortie')
plt.xlabel('Temps (s)')
plt.ylabel('Tensions (V)')
plt.title('Effet de la vitesse de balayage sur un signal sinusoïdal')
plt.legend()
plt.grid()
plt.show()4/ Le résultat de la simulation est-il conforme à votre réponse à la première question ?