Forum: Analoge Elektronik und Schaltungstechnik Analoge Filter optimieren mittels NGSPICE


von Michael H. (Gast)


Lesenswert?

Hallo,
ich habe einen größeren Filter mit 8 Parametern zum drehen.
Die Idee kam jetzt auf, Gütefaktoren zu definieren und dann den 
optimalen Wertekombination auszuwählen.
Hat jemand schon mal ein Batch-Programm geschrieben, das quasi alle 
Parameter in ngspice oder ähnliches durchrechnet und dann die Werte nach 
Gütefunktion sortiert ausgibt?
Für Input bin ich sehr dankbar!
Michael

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Ich hab' nix wirklich konstruktives beizutragen. Aber u.a. fuer das 
Problem hier (bis heute ungeloest, aber tatsaechlich auch eher nicht so 
dringend):
Beitrag "Impedanzanpassung mit LC Gliedern"
hatte ich auch schon mal sowas in Erwaegung gezogen.
Aber weiter als bis zur Kenntnisname dieses Links:
http://ngspice.sourceforge.net/octavespice.html
bin ich nicht gekommen.

Gruss
WK

von Alexander S. (alesi)


Lesenswert?

Hallo,
hier gibt es noch weitere Links
http://ngspice.sourceforge.net/extras.html#scripts
Z.B. spice optimizer using differential evolution
http://www.h-renrew.de/h/python_spice/optimisation.html
oder ASCO (A SPICE Circuit Optimizer)
http://asco.sourceforge.net/
Ähnliche Sachen gibt es wahrscheinlich auch für LTspice.

von udok (Gast)


Lesenswert?

Zeig doch mal deinen Filter her?  Was willst du da optimieren?

Filtertherie ist uralt, und es gibt zu fast allem spezielle Programm,
oder Toolboxen (Matlab).

Spice kann auch Parameter steppen, das hat in meinen Fällen immer
ausgereicht (mit einem Step-Parameter kannst du auch viele andere
Parameter über eine Tabelle setzen).

Ansonsten, was hindert dich, einfach ein Skript zu schreiben, das
eine Netzliste generiert?

von Wolfgang (Gast)


Lesenswert?

Michael H. schrieb:
> Hat jemand schon mal ein Batch-Programm geschrieben, das quasi alle
> Parameter in ngspice oder ähnliches durchrechnet und dann die Werte nach
> Gütefunktion sortiert ausgibt?

Rechne dir mal aus, wie groß ein Parameterraum mit 8 Parametern wird. Da 
alles durchzurechnen, kann länger dauern.
Üblicherweise wird man wohl eher einen Optimierungsalgorithmus 
verwenden, der sich per Suchstrategie durch das Wertegebirge der 
Gütefunktion bewegt und die optimalen Parameterwerte bestimmt.
Man muss allerdings bei den Startwerten drauf achten, dass man nicht in 
einem lokalen Maximum hängen bleibt.

von MeinName (Gast)


Lesenswert?

Hi, habe ich persönlich so noch nicht mit ngspice gemacht. Im rahmen 
eines Projektes haben wir mal was mit ADS und Matlab gebaut, aber eher 
eine Approximation wegen komplexer verkopplungen.
Ich wurde schätzen das sich das ganz gut mit Python und Spice lösen 
lasst.
Es gibt diverse Möglichkeiten Spice in Python einzubinden dann kannst du 
relativ einfach die gewonnen Daten weiter verarbeiten.
Beispiel PySpice:
https://pyspice.fabrice-salvaire.fr/releases/v1.4/examples/filter/low-pass-rc-filter.html

Mit minimalen Programmierkenntnissen denke ich ist das schnell zu 
realisieren. Einfach eine Schleife um deine Filtersimulation mit den 
Parametersweeps und dann mal laufen lassen. Für einen Optimierer musst 
du dann hakt eine Kostenfunktion definieren.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Irgendwie habe ich nicht das Ziel mitgekriegt. Maximale Bandbreite?

Jedwede Anpaßschaltung transformatorischer Art kann ja nur an einem 
Frequenzpunkt optimal sein.

Diplexer bzw. Zobel? Absorbierendes Filter?

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.