Как вычислить время заряда/разряда конденсатора через резистор на Python
Можно легко вычислить время, необходимое для заряда или разряда конденсатора через резистор, с помощью библиотеки Python UliEngineering:
from UliEngineering.Electronics.Capacitors import *
from UliEngineering.EngineerIO import *
# Вычислить время заряда конденсатора 100 мкФ через резистор 10 кОм от источника 5 В
# через диод Шоттки с прямым напряжением 0.3 В до 3.0 В
charge_time = capacitor_resistor_charge_time(
capacitance="100uF", resistance="10kΩ", source_voltage="5V",
initial_voltage="0V", target_voltage="3.0V", diode_voltage="300mV"
)
# Вычислить время разряда того же конденсатора через резистор 10 кОм до 1.0 В
# через кремниевый диод с прямым напряжением 0.7 В
discharge_time = capacitor_resistor_discharge_time(
capacitance="100uF", resistance="10kΩ", initial_voltage="5.0V",
target_voltage="1.0V", diode_voltage="700mV"
)
# Автоформатирование и вывод результатов
print(f"Charge time: {format_value(charge_time, 's')}")
print(f"Discharge time: {format_value(discharge_time, 's')}")Пример вывода
Charge time: 1.02 s
Discharge time: 2.66 sЗаряд и разряд конденсатора через резистор подчиняется экспоненциальной кривой, описываемой постоянной времени RC τ = R × C. Постоянная времени определяет, насколько быстро конденсатор заряжается или разряжается: после одной постоянной времени конденсатор достигает примерно 63,2% своего конечного напряжения при зарядке или спадает до 36,8% при разрядке.
График выше показывает характерную кривую заряда RC для конденсатора 100 мкФ, заряжающегося через резистор 10 кОм от источника 5 В. Красные пунктирные линии отмечают постоянные времени (τ, 2τ, 3τ, 4τ, 5τ), показывая, что конденсатор достигает 99,3% напряжения источника после 5 постоянных времени. Это демонстрирует, почему постоянная времени является фундаментальной для схем синхронизации, фильтров и формирования импульсов.
Скрипт для построения графика
#!/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
# Диапазон времени для построения графика
t = np.linspace(0, 0.005, 200) # от 0 до 5 мс
# Создание графика
plt.figure(figsize=(10, 6))
# Фиксированные параметры
C = 100e-6 # 100 мкФ
R = 10e3 # 10 кОм
V_source = 5.0 # 5 В
V_initial = 0.0
# Расчёт напряжения от времени для заряда 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)
# Отметка постоянных времени
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)