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 E et d’une résistance de sortie R=50Ω. Il est relié à une diode D dont la relation intensité tension est:

i=Is(exp(uDVD)1)

avec Is=95μA et VD=30mV

../_images/diode.png

Fig. 17 Titre#

Point de fonctionnement :

  1. 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.

  2. Déterminer graphiquement le point de fonctionnement pour E<0 puis pour E supérieur à VD.

  3. Montrer, dans le cas général que la tension u aux bornes du générateur doit, à un instant t doit vérifier l’équation suivante:

Is(exp(uVD)1)EuR=0
  1. On note f la fonction précédente précédente dont u doit être racine. Tracer u pour E=1V sur un intervalle où f s’annule et estimer graphiquement la valeur de u.

  2. Utiliser la fonction bisect pour trouver u lorsque E=1V.

Réponses aux questions théoriques
  1. et 2. Les deux dipôles {E+RS} et D étant branchés ensemble, l’intensité qui circule est la même dans les deux dipoles et la tension u 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 E<0, l’intersection est proche de i=0 (diode bloquée est assimilable à un interrupteur ouvert)

  • Quand E>VD, l’intersection est proche de u=VD (diode passante assimilable à une fem VD)

  1. 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
../_images/el_bases_num_1_0.png
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 que E(t) est une tension sinusoïdale:

E(t)=E0cos2πft

avec E0=2V et f=50Hz.

  1. Même si E varie, pourquoi u est toujours racine de f à chaque instant t ?

  2. Ecrire une fonction Esource(t:float) -> float qui renvoie la valeur de E(t) et, si ce n’est pas déjà fait une fonction f(u:float) -> float qui renvoie f(u) (on prendra la valeur Einstantanee=E(t) comme une valeur globale pour la fonction f)`.

  3. Créer un vecteur Ek contenant les 1000 valeurs E(tk) aux instants tk équirépartis sur 2 périodes de E.

  4. Pour chaque valeur Ek, déterminer la tension uk et l’intensité ik correspondant au point de fonctionnement du circuit et stocker ces valeurs dans deux listes. Transformer ensuite ces listes en des vecteurs.

  5. Tracer uR(t)=Ri(t) grâce aux résultats précédents puis lui superposer E(t). 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
../_images/el_bases_num_4_0.png ../_images/el_bases_num_4_1.png