Como calcular o tempo de carga/descarga de capacitor através de um resistor usando Python
Você pode calcular facilmente o tempo que leva para carregar ou descarregar um capacitor através de um resistor usando a biblioteca Python UliEngineering:
from UliEngineering.Electronics.Capacitors import *
from UliEngineering.EngineerIO import *
# Calcular o tempo de carga de um capacitor de 100uF através de 10k a partir de uma fonte de 5V
# através de um diodo Schottky com 0.3V de tensão direta, até 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 o tempo de descarga do mesmo capacitor através de 10k até 1.0V
# através de um diodo de silício com 0.7V de tensão direta
discharge_time = capacitor_resistor_discharge_time(
capacitance="100uF", resistance="10kΩ", initial_voltage="5.0V",
target_voltage="1.0V", diode_voltage="700mV"
)
# Formatar automaticamente e imprimir os resultados
print(f"Charge time: {format_value(charge_time, 's')}")
print(f"Discharge time: {format_value(discharge_time, 's')}")Exemplo de saída
Charge time: 1.02 s
Discharge time: 2.66 sO carregamento e descarregamento de um capacitor através de um resistor segue uma curva exponencial descrita pela constante de tempo RC τ = R × C. A constante de tempo determina a rapidez com que o capacitor carrega ou descarrega: após uma constante de tempo, o capacitor atinge aproximadamente 63,2% de sua tensão final durante o carregamento, ou decai para 36,8% durante o descarregamento.
O gráfico acima mostra a curva característica de carga RC para um capacitor de 100 µF carregando através de um resistor de 10 kΩ a partir de uma fonte de 5V. As linhas tracejadas vermelhas marcam as constantes de tempo (τ, 2τ, 3τ, 4τ, 5τ), mostrando que o capacitor atinge 99,3% da tensão da fonte após 5 constantes de tempo. Isso demonstra por que a constante de tempo é fundamental para circuitos de temporização, filtros e aplicações de modelagem de pulsos.
Script de geração do gráfico
#!/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
# Intervalo de tempo para o gráfico
t = np.linspace(0, 0.005, 200) # 0 a 5ms
# Criar gráfico
plt.figure(figsize=(10, 6))
# Parâmetros fixos
C = 100e-6 # 100 µF
R = 10e3 # 10 kΩ
V_source = 5.0 # 5V
V_initial = 0.0
# Calcular tensão vs tempo para 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 tempo
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)