Forum: Analoge Elektronik und Schaltungstechnik LTspice: Amplitude bei einer Frequenz in der Transient-Analyse?


von Frank H. (huettili)


Lesenswert?

Hallo,

ich möchte in LTspice einen Amplituden-Modulator auf möglichst kleine 
Verzerrungen optimieren.
Dazu moduliere ich auf z.B. 900 kHz ein 1-kHz-Signal.
Idealerweise entstehen dann neben dem Träger die beiden Seitenfrequenzen 
899 und 901 kHz. Real kommen noch als "NF"-Verzerrungen Seitenfrequenzen 
hinzu, und zwar bei 898/902 kHz, 897/903 kHz usw. Die gilt es zu 
minimieren.
Man kann sie sich zwar mit "View / FFT" ansehen und die Amplitude 
händisch ausmessen. Weniger umständlich wäre aber schöner.

Eine Möglichkeit wäre, mit dem .four-Statement die Amplitude der 
Grundwelle auszugeben. Ich habe auf die Weise 2 Frequenzen "gemessen", 
die Faktor 2 auseinander sind. In der Ausgabe sind sie aber 
seltsamerweise fast gleich. Keine Ahnung, warum das so ist. Jedenfalls 
funktioniert es für diesen Zweck nicht.

Eine 2. Möglichkeit: sehr schmalbandige Filter für jede zu messende 
Frequenz mit Gleichrichter, und dann dessen Ausgangsspannung ausgeben.
Ok, kann man machen, aber ...

Gibt es eine Möglichkeit, die Amplituden bestimmter Frequenzen in der 
Transienten-Analyse mit z.B. einem .measure-Statement in die Log-Datei 
zu schreiben?

Tschüs

: Bearbeitet durch User
von Helmut S. (helmuts)


Angehängte Dateien:

Lesenswert?

Ich habe dir mal ein Beispiel mit .MEASURE gemacht. In dem Beispiel 
werden die beiden Seitenbänder und der Träger gemessen, 99kHz, 100kHz, 
101kHz.
Vermutlich muss man den maximalen Zeitschritt noch weiter reduzieren um 
genügend Genauigkeit zu bekommen. Eventuell lohnt es sich auch noch die 
Daten mit double precision zu speichern da .measure mit den 
gsepeicherten Daten verarbeitet.
.options numdgt=10

Kontrolliere bei mehreren Beispielen mit der FFT ob die gewünschte 
Genauigkeit erreicht wurde.

Ergebnis: Beachte die Werte bei v1rms, vcrms und v2rms. Die Werte 
sollten 0,25, 1, und 0,25 sein.

View -> SPICE Error Log

vavg: AVG(v(sig))=9.19984e-010 FROM 0 TO 0.005
v1re: AVG((v(sig)-vavg)*cos(360*99e3*time))=0.176542 FROM 0 TO 0.005
v1im: AVG((v(sig)-vavg)*sin(360i*99e3*time))=-2.14701e-007 FROM 0 TO 
0.005
v1rms: sqrt(2)*hypot(v1re,v1im)=0.249668
vcre: AVG((v(sig)-vavg)*cos(360*100e3*time))=1.87688e-009 FROM 0 TO 
0.005
vcim: AVG((v(sig)-vavg)*sin(360*100e3*time))=0.706176 FROM 0 TO 0.005
vcrms: sqrt(2)*hypot(vcre,vcim)=0.998683
v2re: AVG((v(sig)-vavg)*cos(360*101e3*time))=-0.176546 FROM 0 TO 0.005
v2im: AVG((v(sig)-vavg)*sin(360*101e3*time))=-2.1852e-007 FROM 0 TO 
0.005
v2rms: sqrt(2)*hypot(v2re,v2im)=0.249674

: Bearbeitet durch User
von Frank H. (huettili)


Lesenswert?

Vielen Dank, es funktioniert gut!
Das ist ja schon eine richtige Fourieranalyse; auf diese Vorgehensweise 
wäre ich jetzt nicht gekommen! SUPER!

Im 3. .MEAS-Statement steht ein i hinter der 360. Ist das beabsichtigt?

Tschüs

von Helmut S. (helmuts)


Lesenswert?

Frank H. schrieb:
> Vielen Dank, es funktioniert gut!
> Das ist ja schon eine richtige Fourieranalyse; auf diese Vorgehensweise
> wäre ich jetzt nicht gekommen! SUPER!
>
> Im 3. .MEAS-Statement steht ein i hinter der 360. Ist das beabsichtigt?
>
> Tschüs

Das i ist ein Tippfehler. Das gehört kein i hin.

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.