🖥️ Circuit RC

Notebook Capytale de cet exercice : b4cf-11678437

On cherche à modéliser la charge d’un condensateur dans un circuit RC série soumis à une tension continue 𝐸.

À 𝑡=0, l’interrupteur 𝐾 est fermé. Le condensateur est initialement déchargé.

1/ Montrer que 𝑢 vérifie l’équation différentielle

d𝑢d𝑡=−1𝑅𝐶𝑢+1𝑅𝐶𝐸
Coup de pouce 1
Écrire la loi des mailles. Comment tension et courant sont-ils liés pour le résistor et pour le condensateur ?
Corrigé

La loi des mailles s’écrit 𝐸=𝑢𝑅+𝑢 avec 𝑢𝑅=𝑅𝑖 et 𝑖=𝐶d𝑢d𝑡. Donc

𝐸=𝑅𝐶d𝑢d𝑡+𝑢

2/ Que vaut 𝑢(𝑡=0+) ?

Coup de pouce 1
L’énoncé précise que le condensateur est initialement déchargé.
Coup de pouce 2
La tension aux bornes d’un condensateur est continue.
Corrigé
La tension aux bornes du condensateur est continue, de plus elle est nulle à 𝑡=0− (condensateur initialement déchargé). Donc 𝑢(0+)=0.

On souhaite résoudre numériquement cette équation différentielle à l’aide de la méthode d’Euler explicite. On note 𝑢𝑖=𝑢(𝑖⋅Δ𝑡) la tension discrétisée.

3/ Établir une relation de récurrence sur 𝑢𝑖.

Coup de pouce 1
Utiliser la formule de Taylor à l’ordre 1 pour 𝑢(𝑡𝑖+Δ𝑡).
Corrigé

La relation de Taylor à l’ordre 1 donne

𝑢𝑖+1=𝑢(𝑖⋅Δ𝑡+Δ𝑡)=𝑢(𝑖⋅Δ𝑡)+Δ𝑡d𝑢d𝑡=𝑢𝑖−Δ𝑡(−1𝑅𝐶𝑢𝑖+1𝑅𝐶𝐸)

4/ Écrire une suite d’instructions permettant de calculer les valeurs successives de 𝑢𝑖. On prendra 𝑅=1 kΩ, 𝐶=1 µF, 𝐸=5 V, Δ𝑡=0,2 ms et on effectuera 25 itérations.

Corrigé
R = 1e3
C = 1e-6
E = 5
Delta_t = 0.2e-3

N = 25
u = [0]  # u(0) = 0 V

for i in range(N):
    u.append(u[i] + Delta_t * (-1/(R * C) * u[i] + 1/(R * C) * E))

5/ Tracer l’évolution de 𝑢 en fonction du temps. Comparer avec la solution analytique que vous calculerez et tracerez également.

Coup de pouce 1
On peut utiliser la bibliothèque matplotlib.pyplot pour tracer des courbes en Python.
Coup de pouce 2
La solution est de la forme 𝑢(𝑡)=𝐴(1−exp(−𝑡𝜏)) où 𝐴 et 𝜏 sont des constantes à déterminer.
Corrigé

La solution analytique est

𝑢(𝑡)=𝐸(1−exp(−𝑡𝑅𝐶))
import numpy as np
import matplotlib.pyplot as plt

temps = [i * Delta_t for i in range(N + 1)]
u_analytique = [E * (1 - np.exp(-t / (R * C))) for t in temps]

plt.plot(temps, u, label='Numérique (Euler explicite)')
plt.plot(temps, u_analytique, label='Analytique')
plt.xlabel('Temps (s)')
plt.ylabel('Tension u (V)')
plt.legend()
plt.show()

6/ Observer qualitativement l’effet de la valeur de Δ𝑡 sur la précision de la solution numérique.

Corrigé
Plus Δ𝑡 est petit, plus la solution numérique est précise et proche de la solution analytique.