Cómo calcular el tiempo de carga/descarga de un condensador a través de una resistencia usando Python

Puedes calcular fácilmente el tiempo que tarda un condensador en cargarse o descargarse a través de una resistencia usando la librería Python UliEngineering:

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

# Calcular el tiempo de carga de un condensador de 100uF a través de 10k desde una fuente de 5V
# a través de un diodo Schottky con 0.3V de tensión directa, hasta 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"
)

# Calcular el tiempo de descarga del mismo condensador a través de 10k hasta 1.0V
# a través de un diodo de silicio con 0.7V de tensión directa
discharge_time = capacitor_resistor_discharge_time(
    capacitance="100uF", resistance="10kΩ", initial_voltage="5.0V",
    target_voltage="1.0V", diode_voltage="700mV"
)

# Formatear automáticamente e imprimir los resultados
print(f"Charge time: {format_value(charge_time, 's')}")
print(f"Discharge time: {format_value(discharge_time, 's')}")

Ejemplo de salida

capacitor_charge_discharge_time_output.txt
Charge time: 1.02 s
Discharge time: 2.66 s

capacitor charge time plot.svg

La carga y descarga de un condensador a través de una resistencia sigue una curva exponencial descrita por la constante de tiempo RC τ = R × C. La constante de tiempo determina la rapidez con la que el condensador se carga o descarga: después de una constante de tiempo, el condensador alcanza aproximadamente el 63,2% de su tensión final durante la carga, o decae al 36,8% durante la descarga.

La gráfica anterior muestra la curva característica de carga RC para un condensador de 100 µF que se carga a través de una resistencia de 10 kΩ desde una fuente de 5V. Las líneas rojas discontinuas marcan las constantes de tiempo (τ, 2τ, 3τ, 4τ, 5τ), mostrando que el condensador alcanza el 99,3% de la tensión de la fuente después de 5 constantes de tiempo. Esto demuestra por qué la constante de tiempo es fundamental para los circuitos de temporización, filtros y aplicaciones de conformación de pulsos.


Script de generación de la gráfica

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

# Rango de tiempo para la gráfica
t = np.linspace(0, 0.005, 200)  # 0 a 5ms

# Crear gráfica
plt.figure(figsize=(10, 6))

# Parámetros fijos
C = 100e-6  # 100 µF
R = 10e3  # 10 kΩ
V_source = 5.0  # 5V
V_initial = 0.0

# Calcular tensión vs tiempo para la carga 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('Time (ms)', fontsize=12)
plt.ylabel('Capacitor Voltage (V)', fontsize=12)
plt.title('RC Capacitor Charging Curve (R=10kΩ, C=100µF)', fontsize=14, fontweight='bold')
plt.grid(True, alpha=0.3)

# Marcar constantes de tiempo
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)

Echa un vistazo a artículos similares por categoría: Electronics Python