Forum: Analoge Elektronik und Schaltungstechnik PWM-Signal mit sauberen Flanken in LTspice


von Abdurrahman K. (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Probier mal ein anders Rechenverfahren...

von M. K. (sylaina)


Lesenswert?

schaut aus als ob das was mit der Step-Weite zu tun hat. Gibt doch mal 
eine Nanosekunde als Schrittweite an ;)

von Abdurrahman K. (Gast)


Angehängte Dateien:

Lesenswert?

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?

von J. S. (engineer) Benutzerseite


Lesenswert?

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.

von M. K. (sylaina)


Lesenswert?

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
1
.tran 0 5m 4.9m
mal schreiben
1
.tran 1n 5m 4.9m

: Bearbeitet durch User
von HildeK (Gast)


Lesenswert?

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.

von Abdurrahman K. (Gast)


Lesenswert?

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?

von J. S. (engineer) Benutzerseite


Lesenswert?

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"

von Abdurrahman K. (Gast)


Angehängte Dateien:

Lesenswert?

> 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?

von bla (Gast)


Angehängte Dateien:

Lesenswert?

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.

von bla (Gast)


Lesenswert?

Nachtrag: falls der Ausgang eine Last treiben soll, kann ein 
"Rout"-Statemeint im diffschmtbuf hilfreich sein.

von Abdurrahman K. (Gast)


Lesenswert?

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?

von Abdurrahman K. (Gast)


Lesenswert?

Nein, anscheinend ist Diffschmtbuf die beste Option, aber die Anstiegs- 
und Abfallzeiten sind sowieso vernachlässigbar gering.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.