Hallo,
ich möchte ein PWM-Signal generieren, indem ich ein Sinussignal mit
einem Dreiecksignal moduliere.
Betrachte ich die Flanken des PWM-Signals und des invertierten
PWM-Signal in meiner Schaltung anbei, weisen diese einen Knick auf statt
einen sauberen geradlinigen Verlauf darzustellen.
1) Kann man diese wegbekommen, oder ist dies ein allgemeines Problem von
LTspice?
2) Kennt jemand eine Möglichkeit möglichst saubere Flanken zu bekommen?
Denn definiere ich mir hingegen ein Pulse:
Vinitial[V] -5
Von[V] 5
Trise[s] 10n
Tfall[s] 10n
Ton[s] 0.2u
Tperiod[s] 2.02u
habe ich saubere steigende und fallende Flanken, jedoch nur einen
bestimmten Duty Cycle.
Das Rechenverfahren auf "Gear" zu ändern hat funktioniert, vielen Dank!
Jetzt habe ich sauber steigende und fallende Flanken.
Was passiert da eigentlich?
Erhöht dies die Stabilität der Simulation oder so?
> schaut aus als ob das was mit der Step-Weite zu tun hat. Gibt doch mal> eine Nanosekunde als Schrittweite an
Welche step-Weite meinen Sie? tripdv? tripdt?
Was mich desweiteren verwundert: ich dachte mit tripdt kann ich die
trise/tfall-Time von 10 ns Sekunden einstellen.
Messe ich jedoch verschiedene Flanken, komme ich immer auf einen anderen
Wert, wie im beigefügten Bild zu sehen zum Beispiel 6.96 ns!
Welche Bedeutung hat tripdv und tripdt und wie bekomme ich es hin an
jeder Flanke einen trise/tfall-Time von 10 ns Sekunden zu bekommen?
Abdurrahman K. schrieb:>Was passiert da eigentlich?>Erhöht dies die Stabilität der Simulation oder so?
Die Genauigkeit! Es geht um die Optimierung der Simulationszeit, das
Generalproblem bei Simulationen.
> Welche Bedeutung hat tripdv und tripdt und wie bekomme ich es hin an> jeder Flanke einen trise/tfall-Time von 10 ns Sekunden zu bekommen?
Wahrscheinlich so richtig sicher nur, wenn die Simulationsabtastung
deutlich unter den Flankenwechseln der Schaltung liegt, sonst gibt es
Zwischenpunkte und Lösungen, die zwar für sich gesehen, richtig sind,
aber grafisch interpoliert zu falschen Eindrücken führen.
Spice rechnet ja letztlich nur einzelne Punkte aus für die die gesamte
Schaltung stimmt und eingeschwungen ist. Eingeschwungen heisst
"Simulation hat per Iteration die Realität getroffen". Und noch genauer:
Das, was die ungenauen und vereinfachten Modelle hergeben, wurde im
vorherigen Simulationsschritt mit der vorgegebenen Toleranz erreicht,
also ab zum nächsten Punkt. Deshalb wird es ohne eine entsprechende
Interpretation niemals gelingen, ein echtes Verhalten einer
Kippschaltung nachzubilden, auch wenn die real eine endliche
Anstiegszeit hat, die man theoretisch simulieren können müsste.
Abdurrahman K. schrieb:> Welche step-Weite meinen Sie? tripdv? tripdt?
Mit LTSpice kenn ich mich nicht aus aber ich meinte mal die Zeile .tran
ändern, also statt
M. K. schrieb:> Mit LTSpice kenn ich mich nicht aus aber ich meinte mal die Zeile .tran> ändern,
Ja, aber die Syntax ist leicht anders:
Syntax: .TRAN <Tstep> <Tstop> [Tstart [dTmax]] [modifiers]
.TRAN <Tstop> [modifiers]
In dem Fall müsste es dann heißen
.tran 0 5m 4.9m 1n
also
.tran Tstep Tstop Tstart dTmax
Die Steps werden feiner und die Simulationszeit länger. Aber die Kurven
passen dann besser.
Nochmal die Frage:
Gibt es eine Möglichkeit in LTspice ein PWM-Signal mit unterschiedlichem
Duty-Cycle (Tastverhältnis, Tastgrad) und mit festen Anstiegs- und
Abfallzeiten generieren zu lassen?
Ja, mit der "PULSE"-Definition. Die gibt es auch in LT-Spice, meine Ich.
Damit ist ein endlicher periodischer Signalverlauf zu definieren.
Komplexere Sachen wie unendliche periodische Signale, die sich in der
d.c. ändern, musst Du per Interferenz bauen, also mit einem Takt, der
einen anderen steuert und maskiert.
Mit einer Taktfaltung kann man sich auch eine komplizierte PWM bauen:
Beitrag "Re: Zweiklang Ton erzeugen - direkte Ausgabe per PWM"
> Ja, mit der "PULSE"-Definition. Die gibt es auch in LT-Spice, meine Ich.
Mit PULSE kann ich ein PWM-Signal mit einem festen Tastverhältnis
definieren.
Wie im Beispiel beigefügt habe ich eine PWM zwischen +5 V und -5 V,
mit einer Anstiegs- und Abfallzeit von 10 ns bei einer Periodendauer von
2 us.
Hieraus resultieren bei einem Duty-Cycle von 0.5 ein
Ton = (2 us - 10 ns - 10 ns) * 0,5 = 990 ns.
Allerdings würde ich gerne meine PWM wie in der Schaltung vom 23.10.2017
15:08 beigefügt variieren. Problem in dieser Schaltung jedoch, wie
bereits erwähnt, die schwankenden Anstiegs- und Abfallzeiten!
>... musst Du per Interferenz bauen, also mit einem Takt, der> einen anderen steuert und maskiert.
Wie schaut sowas aus?
tripdt und tripdv heißt nur, dass LTSpice die Schrittweite zwischen zwei
Simulationsschritten so lange reduziert, bis sich das Signal um weniger
als "tripdv" ändert in "tripdt" Sekunden. Siehe auch
http://ltwiki.org/index.php5?title=B_sources_(common_examples).
Für dich wäre evtl. der Diffschmtbuf interessant. Denn der nimmt Trise
und Tfall an. Du kannst (und solltest) ihm auch ein tripdt geben das
kleiner ist als Trise/Tfall. Tripdv brauchts keines, dafür kannst du die
Ausgangspegel nicht mehr variieren (festgelegt mit Vhigh und Vlow).
Siehe Bilder.
Das hatte ich mir auch soeben überlegt.
Diffschmtbuf wäre eine Option, allerdings hat dieser nicht so schöne
Flanken und weist ein Überschwingen auf.
Gibt es eine Möglichkeit in LTspice ein PWM-Signal mit
unterschiedlichem
Duty-Cycle (Tastverhältnis, Tastgrad) und mit festen und "sauberen"
Anstiegs- und Abfallzeiten generieren zu lassen?