Capacités numériques
Contents
Capacités numériques#
Redressement simple alternance#
Cet exercice est basé sur la résolution d’équations stationnaires dont la méthode est proposée ici. On fera l’activité correspondate avant de se lancer dans cet exercice et on utilisera directement la fonction scipy.optimize.bisect
pour résoudre une équation.
On considère un générateur de tension modélisé par un modèle de Thévenin composé d’une f.e.m. de tension
avec

Fig. 17 Titre#
Point de fonctionnement :
Justifier que si l’on trace les caractéristiques statiques de la diode et du générateur de Thévenin, l’intersection des deux courbes donne l’intensité circulant dans le circuit et la tension aux bornes des deux dipôles en régime indépendant du temps. On précisera notamment les conventions choisies pour tracer chaque caractéristique. On appelle ce point, le point de fonctionnement du circuit.
Déterminer graphiquement le point de fonctionnement pour
puis pour supérieur à . Montrer, dans le cas général que la tension
aux bornes du générateur doit, à un instant doit vérifier l’équation suivante:
On note
la fonction précédente précédente dont doit être racine. Tracer pour sur un intervalle où s’annule et estimer graphiquement la valeur de . Utiliser la fonction
bisect
pour trouverlorsque .
Réponses aux questions théoriques
et 2. Les deux dipôles
et étant branchés ensemble, l’intensité qui circule est la même dans les deux dipoles et la tension sera la même à condition de prendre l’un en convention générateur et l’autre en convention récepteur. On prendra le générateur de Thévenin en convention générateur et la diode en convention récepteur. On cherche alors l’intersection entre une droite décroissante et une exponentielle.
Quand
, l’intersection est proche de (diode bloquée est assimilable à un interrupteur ouvert)Quand
, l’intersection est proche de (diode passante assimilable à une fem )
On égalise les deux expressions des intensités données par l’équation de la diode et celle du générateur de Thévenin.
Click to show
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import bisect
E = 1
def f(u):
global E # Car E va changer ensuite
Is = 95e-6
VD = 30e-3
R = 50
return Is * (np.exp(u / VD) - 1) - (E - u) / R
"""Tracé de f entre 0 et 0.2"""
u = np.linspace(0, 0.2)
fig, ax = plt.subplots()
ax.set_xlabel('u(V)')
ax.set_ylabel('i(A)')
ax.plot(u, f(u))
ax.grid()
plt.show()
Click to show

Click to show
"""Détermination de la racine"""
u_fonc = bisect(f, 0, 2)
print(u_fonc)
Click to show
0.15558332601176517
Redressement monoalternance :
On suppose maintenant queest une tension sinusoïdale:
avec
Même si
varie, pourquoi est toujours racine de à chaque instant ? Ecrire une fonction
Esource(t:float) -> float
qui renvoie la valeur deet, si ce n’est pas déjà fait une fonction f(u:float) -> float
qui renvoie(on prendra la valeur comme une valeur globale pour la fonction f
)`.Créer un vecteur
contenant les 1000 valeurs aux instants équirépartis sur 2 périodes de . Pour chaque valeur
, déterminer la tension et l’intensité correspondant au point de fonctionnement du circuit et stocker ces valeurs dans deux listes. Transformer ensuite ces listes en des vecteurs. Tracer
grâce aux résultats précédents puis lui superposer . Pourquoi parle-t-on de redressement monoalternance ?
Click to show
def Esource(t):
E0 = 2
freq = 50
return E0 * np.cos(2 * np.pi * freq * t)
def iThevenin(u):
"""Pour obtenir i à partir de u"""
R = 50
return (E - u) / R
N = 1000
freq = 50
R = 50
tk = np.linspace(0, 2 / freq, N) # tk sur deux périodes
Ek = Esource(tk)
uk = []
ik = []
for E in Ek:
uk.append(bisect(f, -3, 3)) # Recherche de uk sur intervalle plus grande à cause des valeurs négatives de E
ik.append(iThevenin(uk[-1])) # Calcul des ik
"""Tracé (non demandé) de uk(tk)"""
fig1, ax = plt.subplots()
ax.set_xlabel('t(s)')
ax.set_ylabel('u(V)')
ax.plot(tk, uk)
ax.grid()
"""Tracé de ik(tk)"""
fig2, ax = plt.subplots()
ax.set_xlabel('t(s)')
ax.set_ylabel('uR(V)')
ax.plot(tk, R * np.array(ik)) # On doit transformer la liste ik en vecteur numpy pour pouvoir multiplier simplement chaque terme par R
ax.grid()
Click to show

