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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.