Forum: HF, Funk und Felder FFT LTSpice optimieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Luky S. (luky)


Lesenswert?

Ich beschäftige mich gerade mit FFTs in LTSpice... Kann mir jemand gute 
Tipps geben, um die Simulationszeit zu minimieren und die Auflösung bzw. 
Punkteanzahl optimal einzustellen?
Ich brauche einen Frequenzgang bis 30MHz, wie lange sollte dann die zu 
siumulierende Zeit, die "Number of data point samples in time" und 
etwaige zusätzliche Einstellungen sein (.opt plotwinsize, .opt numdgt 
etc.)
Gibt es dafür einen allgemeinen Zusammenhang?

von Tom (tom_major)


Lesenswert?

Bevor dir jetzt wieder einer rät, erst deine Hausaufgaben zu machen: Der 
Wikipedia-Artikel zu FFT verweist auf DFT, und dort ist ziemlich am Ende 
zu lesen: Frequenzauflösung = 1 / Gesamtzeit, d.h. für 1 kHz 
Frequenzauflösung musst du 1 ms Daten haben, für 1 Hz dann eben 1 s.
Und die Schrittweite die du nehmen musst ist meines Wissens 1 / doppelte 
Grenzfrequenz, bei 30 MHz also 16,666 ns - nimm besser 10, 12,5 oder 16 
ns.

von Luky S. (luky)


Lesenswert?

Das sind keine Hausaufgaben. EMV ist viel zu praxisgerecht für die Uni 
und ganz ohne Dreifachintegrale.... Da kennt sich doch kein Prof aus! 
;-)
Ich bin hier "nur" am rumprobieren und meine Kenntnisse erweitern, 
normalerweise habe ich mit Elektrik und Steuerungs- sowie 
Fahrzeugtechnik zu tun.
Also... am Ende brauche ich tatsächlich eine Frequenzauflösung von 1 kHz 
(oder 3kHz, je nach Standard)
Ich brauche jedoch eine Simulation über mindestens eine Frequenzperiode, 
also 20ms. Wie passt man mit LTSpice dann die Frequenzauflösung oder die 
Anzeige ("Videobandbreite"?) an?
Und eine weitere Frage: Um was handelt es sich eigendlich beim Ergebnis? 
Es müsste der eingeschwungene Zustand sein, also Average, oder?

von Tom (tom_major)



Lesenswert?

Ich habe mal eine alte Schaltung rausgekramt und laufen lassen. Die 
Schwierigkeit ist dabei, dass es ein 234 kHz Signal ist, das mit 1 kHz 
moduliert wurde und eine Detektorschaltung simuliert wird. Im 
Ausgangssignal sind also 1 und 234 kHz sowie deren Oberwellen enthalten. 
Zuerst habe ich die Simulation 2 ms laufen lassen und sehe dabei, dass 
sie ersten 0,2 ms zum Einschwingen braucht. Um die 234 kHz sauber 
abgebildet zu bekommen, habe ich eine Zeitauflösung von 10 ns benutzt - 
das sind über 4200 Punkte pro Schwingung und sicher zuviel; wenn man für 
die Simulation nur wenig Zeit hat kann man auch 100 ns oder sogar 500 ns 
benutzen. Das reduziert aber natürlich die Grenzfrequenz. Ich habe dann 
fürs Erste die Simulation mit

.tran 0 2.7ms 0.7ms 10ns startup

gemacht und aus der Waveformdarstellung (1. Bild) FFT mit den Daten aus 
dem 2. Bild aufgerufen, also 262144 Datenpunkten. Mit der Gesamtlänge 
von 2 ms ist die Frequenzauflösung 0,5 kHz, und mit 262144 Datenpunkten 
liegt die Grenzfrequenz bei (262144/2) x 0,5 kHz = 65,536 MHz. Wegen der 
geringen Frequenzauflösung sind die Peaks bei 1, 2, 4 kHz usw. extrem 
breit.

Ich habe dann nochmal 200 (statt 2) ms laufen lassen

.tran 0 200.7ms 0.7ms 10ns startup

und ebenfalls mit 262144 Punkten die FFT erstellt (Bild 3), dann ist 
natürlich wegen die Frequenzauflösung 5 Hz, die Grenzfrequenz 655,36 
kHz. Hier bekommt man wegen der 100-fach höheren Frequenzauflösung 
schöne Peaks auch bei den NF-Frequenzen.

Mit der maximal möglichen Punktezahl von 16777216 Datenpunkten steigt 
die Grenzfrequenz um das 64-fache auf (16777216/2) x 5 Hz = 41,94304 MHz 
- aber natürlich auch die Rechenzeit.

von Tom (tom_major)


Lesenswert?

Da hat offenbar einer wirklich zuviel Zeit, liest jeden neuen 
veröffentlichten Beitrag und gibt ihm Daumen runter, ohne was Sinnvolles 
beizutragen.

Schafft bitte endlich diese Möglichkeit ab - wer was zu kommentieren 
hat, soll das in Worten tun!

von Kay-Uwe R. (dfias)


Lesenswert?

Tom schrieb:
> Zuerst habe ich die Simulation 2 ms laufen lassen und sehe dabei, dass
> sie ersten 0,2 ms zum Einschwingen braucht.
Dann lass die Simulation 2,2 ms laufen und analysiere von 0,2 bis 2,2 
ms. Man muss nicht bei Null anfangen!

von Tom (tom_major)


Lesenswert?

Deswegen habe ich ja beim 2. mal bei 0,7 ms angefangen - hätte auch 1 ms 
sein können. Wenn man bis 0,2 Änderungen sieht, ist sicher bei 0,3 oder 
0,4 noch was da was die FFT bei -80 dB oder so zeigt. Es geht doch nur 
ums Prinzip, an welchen Parametern man schrauben muss. Startzeit, 
Messdauer und Schrittweite eben, und das hängt ganz von der jeweiligen 
Simulation des TO ab.

von Luky S. (luky)


Angehängte Dateien:

Lesenswert?

Die Schaltung ist bei mir eingeschwungen und ich habe 20ms 
Simulationszeit, das macht dann 1200480 Punkte um die FFT bis 30MHz zu 
erhalten.
Ich habe eine Netznachbildung nach CISPR16 und die anderweitig 
simulierte Stromaufnahme der Schaltung verwendet, nicht vom Faktor 
1000000 verwirren lassen, die Ausgabe sollte damit direkt in dBµV sein.
Die Frage ist nun, wie ich die 1 oder 3 kHz Empfängerbandbreite 
simulieren kann, ohne die Simulationszeit (die braucht es um eine volle 
Periode zu haben) und die FFT Punkte zu ändern (soll immer noch bis 
30MHz gehen)
Bei einem Speki wäre es ja die "Videobandbreite", aber wie macht man das 
bei LTSpice?

von Tom (tom_major)


Lesenswert?

Luky S. schrieb:
> die braucht es um eine volle Periode zu haben

Welche "volle Periode"? Von was? 50 Hz - wieso? In dem Fall würde mich 
interessieren, warum dich dann die Frequenzen unterhalb von 9 kHz nicht 
interessieren...

Und was bedeutet "Empfängerbandbreite"? Dann müsste in der Schaltung ein 
Filter mit einer bestimmten Mittenfrequenz und Bandbreite sitzen. Wenn 
"ideal", schneidet das aus deiner FFT-Darstellung genau den 
Frequenzbereich raus, d.h. davor und danach Null (minus unendlich dB); 
wenn "real", ist es eine Faltung mit der Filterkurve.

: Bearbeitet durch User
von Luky S. (luky)


Lesenswert?

Die Schaltung wird mit 50Hz 230V versorgt und der Eingangsstrom hat auch 
eine Periode von 50Hz, daher war die Idee, es über (mindestens) eine 
Periode zu simulieren.
Grundsätzlich will ich die CISPR 22 Messung möglichst exakt abbilden. 
Daher auch der Frequenzbereich von 9kHz (eigendlich 150kHz, aber andere 
messen ab 9) bis 30MHz (leitungsgebunden) mit einer Empfängerbandbreite 
(Resolution Bandwidth) von 200Hz (unter 150kHz) bis 9kHz, wahlweise auch 
1kHz und 3kHz, aber das sollte dasselbe sein, es geht mir darum, wie man 
das in LTSpice machen könnte.
Streng genommen ist es auch kein Gaussfilter, sondern ein CISPR-Filter 
(Grenzfrequenz = -6dB), aber das kann man glaube ich mal ignorieren. Und 
das Quasi-Peak gar nicht mal so einfach zu simulieren ist, ignorieren 
anscheinend auich alle.

von Tom (tom_major)


Lesenswert?


von Luky S. (luky)


Lesenswert?

Genau, ich hätte gerne die Werte in der Simulation "vergleichbar" 
gefiltert, ansonsten bringt ein Vergleich mit der Realität halt auch 
nicht besonders viel...

von Tom (tom_major)


Lesenswert?

Das wird schwierig, zumindest wird die Darstellung in LTSpice nicht 
möglich sein:
Die Simulation erzeugt dir n Spannungswerte zu diskreten äquidistanten 
Zeitpunkten über die Gesamtdauer t. Die FFT erzeugt dir daraus n/2 
Amplituden- und Phasenwerte zu diskreten äquidistanten Frequenzen, 
beginnend bei der aus 1/t resultierenden Frequenz (= Frequenzauflösung). 
LTpice malt dir daraus ein Diagramm, das die Amplitudenwerte durch 
Spline-Linien zu einer durchgehenden Kurve verbindet, statt bei den 
diskreten Frequenzen Linien in Amplitudenhöhe zu zeigen.

Der Messempfänger bzw. Spektrumanalysator misst nicht bei diskreten 
Frequenzen, sondern hat eine bestimmte Bandbreite. Wenn das Rigol 601 
Punkte misst heißt das aber sicher nicht, dass seine Bandbreite 1/600 
der Scanbreite ist - es kann mehr oder weniger sein. Die Empfehlung ist 
ja, zB 200 Hz Bandbreite aber 100 Hz Abstand zu nehmen. Wenn du bei 1 
kHz und 2 kHz mit 200 Hz Bandbreite misst, entgeht dir eine Störung bei 
1,5 kHz, wenn sich die Bereiche überlappen nicht. Im Gegensatz zur 
Simulation werden hier grundsätzlich alle Signale innerhalb der 
Bandbreite in 1 Topf geworfen. Das heißt, wenn du bei 200 Hz Bandbreite 
ein Signal bei 1 kHz hast und alle 100 Hz misst, wirst du zwischen 800 
und 1200 Hz eine Art Gaußkurve bekommen, quasi das Abbild der 
Filterkurve. Bei einem Signal bei 950 Hz bekommst du dieselbe Gaußkurve 
zwischen 700 und 1200 Hz. In der Simulation (mit 100 Hz Auflösung) 
dagegen erhältst du beim 1-kHz-Signal eine scharfe Linie bei 1 kHz, beim 
950-Hz-Signal ein Linienspektrum ähnlich der Gaußkurve, mit den beiden 
höchsten Peaks bei 900 und 1000 Hz. Nur: LTSpice malt ja keine Linien, 
sondern verbindet die Amplitudenwerte durch einen Spline, wodurch es 
auch bei 1 kHz ähnlich aussieht wie eine Gausskurve, aber es ist nur 
angenähert.

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.