Comment calculer le temps de charge/décharge d'un condensateur à travers une résistance en Python

Vous pouvez facilement calculer le temps nécessaire pour charger ou décharger un condensateur à travers une résistance avec la bibliothèque Python UliEngineering :

capacitor_resistor_charge_discharge_time.py
from UliEngineering.Electronics.Capacitors import *
from UliEngineering.EngineerIO import *

# Calculer le temps de charge d'un condensateur de 100uF à travers 10k depuis une source de 5V
# à travers une diode Schottky avec une tension de seuil de 0.3V, jusqu'à 3.0V
charge_time = capacitor_resistor_charge_time(
    capacitance="100uF", resistance="10kΩ", source_voltage="5V",
    initial_voltage="0V", target_voltage="3.0V", diode_voltage="300mV"
)

# Calculer le temps de décharge du même condensateur à travers 10k jusqu'à 1.0V
# à travers une diode en silicium avec une tension de seuil de 0.7V
discharge_time = capacitor_resistor_discharge_time(
    capacitance="100uF", resistance="10kΩ", initial_voltage="5.0V",
    target_voltage="1.0V", diode_voltage="700mV"
)

# Formater et afficher automatiquement les résultats
print(f"Temps de charge : {format_value(charge_time, 's')}")
print(f"Temps de décharge : {format_value(discharge_time, 's')}")

Exemple de sortie

capacitor_charge_discharge_time_output.txt
Temps de charge : 1.02 s
Temps de décharge : 2.66 s

capacitor charge time plot.svg

La charge et la décharge d’un condensateur à travers une résistance suivent une courbe exponentielle décrite par la constante de temps RC τ = R × C. La constante de temps détermine la rapidité avec laquelle le condensateur se charge ou se décharge : après une constante de temps, le condensateur atteint environ 63,2 % de sa tension finale pendant la charge, ou décroît à 36,8 % pendant la décharge.

Le graphique ci-dessus montre la courbe caractéristique de charge RC pour un condensateur de 100 µF se chargeant à travers une résistance de 10 kΩ depuis une source de 5V. Les lignes rouges en pointillé marquent les constantes de temps (τ, 2τ, 3τ, 4τ, 5τ), montrant que le condensateur atteint 99,3 % de la tension source après 5 constantes de temps. Cela démontre pourquoi la constante de temps est fondamentale pour les circuits de temporisation, les filtres et les applications de mise en forme d’impulsion.


Script de génération du graphique

plot_capacitor_charge_time.py
#!/usr/bin/env python3
import matplotlib.pyplot as plt
import numpy as np
import sys
sys.path.insert(0, '/home/uli/dev/UliEngineering')

from UliEngineering.Electronics.Capacitors import capacitor_resistor_charge_time

# Plage de temps pour le tracé
t = np.linspace(0, 0.005, 200)  # 0 à 5ms

# Créer le graphique
plt.figure(figsize=(10, 6))

# Paramètres fixes
C = 100e-6  # 100 µF
R = 10e3  # 10 kΩ
V_source = 5.0  # 5V
V_initial = 0.0

# Calculer la tension en fonction du temps pour la charge RC
tau = R * C
V = V_source + (V_initial - V_source) * np.exp(-t / tau)

plt.plot(t * 1000, V, color='blue', linewidth=2)
plt.xlabel('Temps (ms)', fontsize=12)
plt.ylabel('Tension du condensateur (V)', fontsize=12)
plt.title('Courbe de charge RC du condensateur (R=10kΩ, C=100µF)', fontsize=14, fontweight='bold')
plt.grid(True, alpha=0.3)

# Marquer les constantes de temps
for n in [1, 2, 3, 4, 5]:
    t_n = n * tau
    V_n = V_source + (V_initial - V_source) * np.exp(-n)
    plt.axvline(x=t_n * 1000, color='red', linestyle='--', alpha=0.3)
    plt.text(t_n * 1000, V_n + 0.1, f'{n}τ', fontsize=9, color='red')

plt.tight_layout()
plt.savefig('capacitor_charge_time_plot.svg', format='svg', dpi=300)

Check out similar posts by category: Electronics, Python