So, jetzt kommt die Berechnung des n-ten Spannungsminimus und -maximums
des Ripple-Signals:
Das Eingangsrechtecksignal habe für die Zeitdauer t_H die Spannung U_H
und für die Zeitdauer t_L die Spannung U_L und beginne mit einer
H-Phase.
Die Spannungsminima liegen an den Zeitpunkten t=(t_H+t_L)·i (i=0,1,2,…)
und sind mit U_min,i bezeichnet.
Die Spannungsmaxima liegen an den Zeitpunkten t=t_H+(t_H+t_L)·i
(i=0,1,2,…) und sind mit U_max,i bezeichnet.
Der besseren Lesbarkeit wegen werden folgende Abkürzungen eingeführt:
Zwischen den Extrema U_min,i und U_max,i findet ein Ladevorgang,
zwischen U_max,i und U_min,i+1 ein Entladevorgang statt. Nach der
Lade-/Entladeformel aus meinem letzten Beitrag ist (etwas umgeformt):
Erhöht man in Gleichung (1) den Index i um 1, erhält man
Einsetzen von (2) in (3) und von (1) in (2) ergibt
Die Teilausdrücke a_max, a_min und b sind dabei konstant, so dass diese
Gleichungen die rekursive Berechnung von U_max,n und U_min,n mit
geringen Aufwand ermöglichen. Um zu erkennen, wie man die Gleichungen
entrekursivieren kann, schreibt man am besten die ersten paar Ergebnisse
für U_max,n allgemein auf:
usw.
Für U_min,n sehen die Terme entsprechend aus.
Allgemein kann man also schreiben:
Der penibel veranlagte Leser möge die Richtigkeit dieser Gleichungen per
vollständiger Induktion nachweisen :)
Die Summen über b^i sind geometrische Reihen und lassen sich auch ohne
Summenzeichen schreiben:
Die zweite Gleichung lässt sich direkt so verwenden. U_min,0 ist dabei
die Kondensatorspannung zu Beginn und wird im folgenden einfach mit U_0
bezeichnet. Wird mit entladenem Kondensator gestartet, ist U_0=0.
In der ersten Gleichung muss das zunächst unbekannte U_max,0 aus
U_0=U_min,0 bestimmt werden, was mittels Gleichung (1) geschieht. Die
Maxima und Minima können somit mit folgenden Formeln direkt berechnet
werden:
Im eingeschwungenen Zustand, also für n→∞, wird b^n=0 (wegen 0<b<1).
Übrig bleibt
Um diese Formeln auf ihre Richtigkeit zu überprüfen, habe ich für ein
paar "krumme" Parameter die ersten vier Minima und Maxima sowie das
Minimum und Maximum im eingeschwungenen Zustand durch ein kleines
Python-Programm berechnen lassen und die entsprechende Schaltung mit
LTspice simuliert. Die Ergebnisse stimmen auf mindestens 8 Stellen
überein :)
1 | from math import *
|
2 |
|
3 | t_L = 1.5e-3
|
4 | t_H = 0.5e-3
|
5 | tau = 10e3 * 100e-9
|
6 | U_L = -3
|
7 | U_H = 8
|
8 | U_0 = 5
|
9 |
|
10 | E_L = exp(-t_L/tau)
|
11 | E_H = exp(-t_H/tau)
|
12 | E_LH = exp(-(t_L + t_H)/tau)
|
13 | a_max = (1 - E_H) * U_H + (E_H - E_LH) * U_L
|
14 | a_min = (1 - E_L) * U_L + (E_L - E_LH) * U_H
|
15 | b= E_LH
|
16 |
|
17 |
|
18 | print('———————————————————————')
|
19 | print('n Umin Umax')
|
20 | print('———————————————————————')
|
21 | for n in range(4):
|
22 | U_max = a_max * (1 - b**n) / (1 - b) + b**n * ((1 - E_H) * U_H + E_H * U_0)
|
23 | U_min = a_min * (1 - b**n) / (1 - b) + b**n * U_0
|
24 | print('%d %10.7f %10.7f' % (n, U_min, U_max))
|
25 |
|
26 | u_min_inf = a_min / (1 - b)
|
27 | u_max_inf = a_max / (1 - b)
|
28 | print(': : :')
|
29 | print('∞ %10.7f %10.7f' % (u_min_inf, u_max_inf))
|
30 | print('———————————————————————')
|
Ausgabe:
1 | ———————————————————————
|
2 | n Umin Umax
|
3 | ———————————————————————
|
4 | 0 5.0000000 6.1804080
|
5 | 1 -0.9515741 2.5705959
|
6 | 2 -1.7570321 2.0820609
|
7 | 3 -1.8660389 2.0159449
|
8 | : : :
|
9 | ∞ -1.8831004 2.0055966
|
10 | ———————————————————————
|