Як обчислити час заряду/розряду конденсатора через резистор за допомогою Python
Ви можете легко обчислити час, необхідний для заряду або розряду конденсатора через резистор, за допомогою бібліотеки Python UliEngineering:
from UliEngineering.Electronics.Capacitors import *
from UliEngineering.EngineerIO import *
# Обчислити час заряду конденсатора 100мкФ через 10k від джерела 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"
)
# Обчислити час розряду того ж конденсатора через 10k до 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"Час заряду: {format_value(charge_time, 'с')}")
print(f"Час розряду: {format_value(discharge_time, 'с')}")Приклад виводу
Час заряду: 1,02 с
Час розряду: 2,66 сЗаряд та розряд конденсатора через резистор відбувається за експоненційною кривою, яка описується постійною часу 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 µF
R = 10e3 # 10 kΩ
V_source = 5.0 # 5V
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('Час (мс)', fontsize=12)
plt.ylabel('Напруга конденсатора (В)', fontsize=12)
plt.title('Крива заряду RC-конденсатора (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)