Jak vypočítat dobu nabíjení/vybíjení kondenzátoru přes rezistor v Pythonu

Můžete snadno vypočítat dobu potřebnou k nabití nebo vybití kondenzátoru přes rezistor pomocí knihovny UliEngineering v Pythonu:

Ω
F
V
V
V
capacitor_resistor_charge_discharge_time.py
from UliEngineering.Electronics.Capacitors import *
from UliEngineering.EngineerIO import *

# Výpočet doby nabíjení 100uF kondenzátoru přes 10k ze 5V zdroje
# přes Schottkyho diodu s úbytkem 0.3V, až do 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"
)

# Výpočet doby vybíjení stejného kondenzátoru přes 10k na 1.0V
# přes křemíkovou diodu s úbytkem 0.7V
discharge_time = capacitor_resistor_discharge_time(
    capacitance="100uF", resistance="10kΩ", initial_voltage="5.0V",
    target_voltage="1.0V", diode_voltage="700mV"
)

# Automatické formátování a výpis výsledků
print(f"Charge time: {format_value(charge_time, 's')}")
print(f"Discharge time: {format_value(discharge_time, 's')}")

Příklad výstupu

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

capacitor charge time plot.svg

Nabíjení a vybíjení kondenzátoru přes rezistor sleduje exponenciální křivku popsanou časovou konstantou RC τ = R × C. Časová konstanta určuje, jak rychle se kondenzátor nabíjí nebo vybíjí: po jedné časové konstantě kondenzátor dosáhne přibližně 63,2% svého konečného napětí při nabíjení, nebo klesne na 36,8% při vybíjení.

Graf výše ukazuje charakteristickou RC nabíjecí křivku pro 100 µF kondenzátor nabíjející se přes 10 kΩ rezistor ze 5V zdroje. Červené přerušované čáry označují časové konstanty (τ, 2τ, 3τ, 4τ, 5τ), což ukazuje, že kondenzátor dosáhne 99,3% zdrojového napětí po 5 časových konstantách. To demonstruje, proč je časová konstanta základní pro časovací obvody, filtry a aplikace tvarování impulsů.


Skript pro generování grafu

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

# Časový rozsah pro graf
t = np.linspace(0, 0.005, 200)  # 0 až 5ms

# Vytvoření grafu
plt.figure(figsize=(10, 6))

# Pevné parametry
C = 100e-6  # 100 µF
R = 10e3  # 10 kΩ
V_source = 5.0  # 5V
V_initial = 0.0

# Výpočet napětí vs čas pro RC nabíjení
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)

# Označení časových konstant
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)

Podívejte se na podobné články podle kategorie: Calculators, Electronics, Python