Forum: Analoge Elektronik und Schaltungstechnik Curve Fitter für komplexe Werte


von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Hallo!

Nach einigen Stunden mit Google muß ich doch mal fragen:
Hat irgendjemand ne Lösung für einen Fitter bei dem man als Input ein 
komplexes Frequenzspektrum (= Liste von R+jX bzw. real+phase) reingibt 
und am Ausgang ein Filternetzwerk n-ter Dimension auf minimalen Fehler 
und Welligkeit rausbekommt?
Curve Fitter gibts ja einige für Realwerte, aber eben anscheinend nicht 
für Netzwerke aus RCL. Die meisten neigen auch eher zum Schwingen als 
zum Glätten.

Benötigt wird sowas für die Modellierung realer Bauelemente in 
Ersatzschaltungen inkl. parasitärer Elemente. Am Ende kann man dann in 
SPICE weiterarbeiten. Daher wäre was kompatibles zu gängigen Strukturen 
ideal, wie z.B. die universale C-Komponente von LTspice. Mit der man 
z.B. auch direkt die Werte für Quarze verwenden kann. Prinzipiell könnte 
es aber auch ne andere Struktur sein, Ladder oder Transmission line. Die 
ideale Struktur ist sowieso Bauelementtyp abhängig.

Von HP gabs mal einen Impedanzmesser, der das Bauelement in eine 
Ersatzschaltung aus 6 idealen Bauelementen umwandelte.

Wie funktioniert sowas in einem Programm? Gibts was fertiges kostenloses 
oder billig?

von Ulrich (Gast)


Lesenswert?

Für nicht so komplizierte Schaltungen, bis etwa 6 einfache Bauteile kann 
die Übertragungsfunktion noch analytisch berechnet werden - sogar rein 
auf Papier.

Zum Fit von Komplexen werten sollte sich im Prinzip auch Software finden 
- man kann sich aber auch mit einem reellen Fit für Realteil und 
Imaginärteil getrennt behelfen - man muss halt nur die Daten und 
Funktionen entsprechend aufteilen.

So kompliziert ist das auch nicht so eine Funktion zu schreiben - 
eigentlich müsste ich sogar noch einen entsprechenden Code haben. Schon 
etwas älter, aber so viel hat sich C++ in den letzten 15 Jahren nicht 
verändert. Damals machte es wegen der Rechenzeit auch noch Sinn die 
Funktion mit vom Compiler übersetzen zu lassen.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Aha. Das übersteigt meine mathematischen Fähigkeiten bei weitem. Ich 
finds nur erstaunlich, daß ich dazu nichts halbwegs fertiges oder 
wenigstens durchdachtes fand.
Das Problem ist doch sehr häufig. Sind die meisten Leute mit 3 
Ersatzwerten zufrieden? Vielleicht realisieren gar nicht, wie falsch 
ihre Sim dann sein kann, sobald sie breitbandiger wird!

Kannst du deinen Code irgendwie in ein lauffähiges Programm packen? 
Tabelle rein, ein paar Werte raus.

Ich glaube das einzige was ich hinkriegen würde, wäre einfach z.B. die 
ganze E-Reihe auf gut Glück durchzuprobieren. Was bei 6 Freiheitsgraden 
schon ne Menge Rechenzeit wäre. Vielleicht in einigen Minuten fertig. 
Ich weiß nicht.

von al3ko (Gast)


Lesenswert?

Hallo Abdul,

ich kann dir leider keine konkrete Lösung auf das Problem geben, möchte 
aber aus Neugier mich einmischen:

Ein Filter wird doch über seine Eingangs- und Ausgangsgröße beschrieben. 
Wegen C und L wendet man Laplace an und bekommt eine analytische 
Gleichung, die sich durch umformen in eine Übertragungsfunktion 
beschreiben lässt.

Die Koeffizienten der Übertragungsfunktion sind unbekannt, kann man 
allerdings auf Basis von Messungen und einfacher Mathematik mittels der 
kleinsten Fehlerquadrate ausrechnen lassen.

Die Übertragungsfunktion wiederum kann entweder aus dem Netzwerk/System 
hergeleitet werden (bei elektrischen Systemen durch die Kirchhoffschen 
Gesetze) oder abgeschätzt werden, wie z.B. aus Testreihen.

Ich nehme an, dass du "lediglich" das BODE Diagramm besitzt und nun 
wissen möchtest, wie du die Funktion dazu beschreiben kannst?


Gruß

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

So in der Art. Meßprogramm mit besserer Soundkarte und man ist bis 
100KHz dabei. WIMA mißt übrigens nach eigener Aussage auch nur bei 
100KHz. Will man mehr, muß man es extra erbetteln. Hatte das mal gemacht 
und bekam dann bessere Kurven als die rudimentären Ansätze in den 
Datenblättern.

So ein HP Bolide im Tausch gegen das Eigenheim, kanns vermutlich 
automatisch.

von Kai K. (klaas)


Lesenswert?

>Hat irgendjemand ne Lösung für einen Fitter bei dem man als Input ein
>komplexes Frequenzspektrum (= Liste von R+jX bzw. real+phase) reingibt
>und am Ausgang ein Filternetzwerk n-ter Dimension auf minimalen Fehler
>und Welligkeit rausbekommt?

Wie soll denn die Kurve aussehen?

von Abdul K. (ehydra) Benutzerseite


Angehängte Dateien:

Lesenswert?

Du meinst ein reales Beispiel? z.B. wie im Anhang.

von Achim M. (minifloat)


Lesenswert?

Dein Beispiel willst du kompensieren, dass ein konstanter realer Wert 
herauskommt?

Oder möchtest du ein Sammelsurium an Bauteilen, das dir diese Kurve 
möglichst genau nachzeichnet?

Naja, beides ist eigentlich dasselbe Problem. Schau einfach, welche 
Kurvenprimitive zusammengesetzt deiner Wunschfunktion am besten 
nachkommen.
Das kann man mit irgendeinem Spice auch halbautomatisch durchprobieren 
lassen.

mfg mf

von Abdul K. (ehydra) Benutzerseite


Angehängte Dateien:

Lesenswert?

Habe mal das Modell von LTspice angehangen. Scheint mir im ersten Ansatz 
als erfolgversprechende Struktur für eine Vielzahl von Bauelementtypen.

von Fralla (Gast)


Lesenswert?

Ich verwende auch heute noch häufig den alten HP 4194 Analyzer. Der 
berechnet  Werte für 5 verschiedene Ersatzschaltbilder (mit Software 
Update noch mehr) und diese decken sich perfekt wenn man die Werte in 
ein Spice-Software klopft. Zum ausmessen von Ausgangselkos und 
Simulation von conducted EMI ideal. Man kann sich den Table auch 
ausgeben lassen.
Beim RLC Model eines Elkos ist es ja noch leicht auf die Werte zu 
kommen. Bei den komplexeren Modelen ist es aber nicht nachzuvollziehen. 
Ich hatte HP mal gefragt und die ANtworteten nur, dass es sich um einen 
"speziellen mathematischen Algorithmus" handelt. Wer hätte des 
gedacht...

Die Impedanz des Models kann man ja mittels Laplace ausdrücken. Dann 
mittels eines Polynomfits (je nach Ordnung des ESB) die Koeffizienten 
berechnen. Und dann mittels Koeffizientenvergleich die Bauteilparameter 
auflösen....Nur so eine Idee. Die Phase müsste auch noch einbeziehen.

Auch in die "System Identification Toolbox" von Matlab reinsehen. Die 
macht ähnliches für Regelstrecken. Die einfache lineare Pole/Nullstellen 
Näherung aus einem gemessen Bodediagramm (Vanable) funktioniert 
brauchbar. Kann man eventuel auch auf Impedanzen Anwenden.
http://www.mathworks.de/products/sysid/description3.html


MFG Fralla

von Achim M. (minifloat)


Lesenswert?

Fralla schrieb:
> Ich hatte HP mal gefragt und die ANtworteten nur, dass es sich um einen
> "speziellen mathematischen Algorithmus" handelt. Wer hätte des
> gedacht...

Wenigstens scheinen die Jungs Humor zu besitzen :)

Fralla schrieb:
> Die Impedanz des Models kann man ja mittels Laplace ausdrücken. Dann
> mittels eines Polynomfits (je nach Ordnung des ESB) die Koeffizienten
> berechnen. Und dann mittels Koeffizientenvergleich die Bauteilparameter
> auflösen....Nur so eine Idee. Die Phase müsste auch noch einbeziehen.

Da sagst du was... Der Koeffizientenvergleich lässt sich ja einmal 
getrennt nach Real- und Imaginärteil ausführen. Somit wäre die Phase 
auch mit einbezogen. Es steckt also ein Polynomfit dahinter. 
Entsprechend werden Bauteile mit "unsinnigen" Werten eben rausgeworfen.
* R oder L gegen ∞ oder C gegen 0 == Open circuit an dieser Stelle
* R oder L gegen 0 oder C gegen ∞ == Short circuit

Nun wäre eine Art kanonische Form eines Filternetzwerks gut, die sich 
schnell in eine Ersatzschaltung überführen lässt. Genau so wie in der 
Regelungstechnik(Fralla brauch ich das ja nicht zu erzählen...).

mfg mf

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

> http://www.mathworks.de/products/sysid/description3.html

Die dort erwähnten Methoden klingen wie Folterpraktiken.

Wäre nun interessant, ob die freien Softwareversionen das auch können. 
Sciworks oder wie das hieß. Noch nie benutzt.

Momentan übersteigt das meinen Horizont.

von Achim M. (minifloat)


Lesenswert?

Abdul K. schrieb:
> ob die freien Softwareversionen das auch können

Scilab? http://www.scilab.org/
Und ja, irgendein Curve fitting wird schon vorhanden sein.
Im Extremfall könnte man ja die Wertetabelle als Gleichungssystem 
angeben und lösen lassen.

Eine ganz andere Methode wäre noch Excel. Da kann man sich ja auch 
"schöne" Kurven in den Graphen reinlegen lassen. Die Parameter kann man 
dann ebenfalls irgendwo rausholen.

mfg mf

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Hast du dabei auch bedacht:
1. es sind 3D Kurven, keine 2D
2. Es ist nicht irgendeine schöne mathematische Funktion gesucht, 
sondern genau die Übertragungsfunktion obigen Bildes!

Damit kannst du die allermeisten Programme sofort kippen!

Ich habe den ganzen Abend rumgesucht, aber es ist nichts zu finden. Am 
Ende bleibt wirklich die E12 hoch 6 Variante. Vielleicht ist die Idee 
gar nicht so schlecht.

von Michael (Gast)


Lesenswert?

Abdul K. schrieb:
> Benötigt wird sowas für die Modellierung realer Bauelemente in
> Ersatzschaltungen inkl. parasitärer Elemente.

Ein Curve-Fitting Programm, dass aus dem komplexen Spektrum die 
Bauteilwerte im Ersatzschaltbild liefert, muß erstmal mit dem 
Ersatzschaltbild "gefüttert" werden, d.h. es reicht nicht irgendein 
Polynomfit, sondern das Basissystem der für den Fit verwendeten 
Funktionen muß dem Ersatzschaltbild entsprechen. Man kann z.B. die Lage 
von Pol- und Nullstellen bestimmen und daraus die Werte in alternativen 
Ersatzschaltbildern durch Koeffizentenvergleich ableiten.

von Fralla (Gast)


Lesenswert?

In Matlab gibt es auch 3D Curve Fitter. Doch dieser ist für 2D 
Einagbedaten und fittet die Fläche darüber. Eine Liste mit Real und 
Imgaginärteil ist doch etwas anderes.

> http://www.mathworks.de/products/sysid/description3.html
>Die dort erwähnten Methoden klingen wie Folterpraktiken.
>Wäre nun interessant, ob die freien Softwareversionen das auch können.
>Sciworks oder wie das hieß. Noch nie benutzt.
Ich glaube nicht, das Funktionen wie diese Toolbox im freien Scilab 
vorhanden sind, kostet schließlich 1k€ und setzt die Control System 
Toolbox vorraus (wieder 1k€), wenn man es wirklich kauft. (Für privat 
ist downloaden schon ok;)) Allerdings kann nur einen Brauchteil des 
Funktionsumfanges verwenden, also Pole/Nullstellen lienarer System 
identifizieren, bzw die Zustandsraumkoeffizienten. Mit dem Rest weis ich 
nichts anzufangen...

>>Fralla schrieb:
>> Die Impedanz des Models kann man ja mittels Laplace ausdrücken. Dann
>> mittels eines Polynomfits (je nach Ordnung des ESB) die Koeffizienten
>> berechnen. Und dann mittels Koeffizientenvergleich die Bauteilparameter
>> auflösen....Nur so eine Idee. Die Phase müsste auch noch einbeziehen.
>Mini Float schrieb:
>Da sagst du was... Der Koeffizientenvergleich lässt sich ja einmal
>getrennt nach Real- und Imaginärteil ausführen. Somit wäre die Phase
>auch mit einbezogen. Es steckt also ein Polynomfit dahinter.
Und da sagts du was... Den Koeffizientenvergleich mit Real und 
Imaginärteil machen. Die Impedanzfunktion in Laplace Form wird ja Zähler 
und Nennerpolynome haben, Fitter für Polynome im Zähler und Nenner gibt 
es ja.

MFG Fralla

von Purzel H. (hacky)


Lesenswert?

Google ... aeh, ja ...

Man koennte einen Fitter schreiben, der die gewuenschte Funktion 
aufgrund minimaler quadratischer Fehlerquadrate fittet. Das Problem 
dabei ist dass nicht der gesammte Parameterraum zur Verfuegung steht. 
Denn Aufgrund der Energieerhaltung ist eine Uebertragunsfunktion 
analytisch. Siehe Kramers-Kronig. Nun koennte man, um zusaetzliche 
Freiheitsgrade zu gewinnen, einfach die Ordnung erhoehen. Ja, koennte 
man. Dann stellt sich aber die Frage, wie genau sind die Daten. Wie 
genau ist das komplexwertige Spektrum? Und wie genau muessen nachher die 
Bauteilwerte sein. Wenn ein Kondensator 2 pF auf 0.2% genau sein muss, 
hat man nichts gewonnen. Dh man benoetigt auch noch eine Fehlerrechnung.

Ich wuerd mal betragmaessig fitten und mir die Phase anzeigen lassen. 
Dann etwas an den Bauteilen wackeln und schauen, ob das mit der Phase 
etwa machbar waere.

von Kai K. (klaas)


Lesenswert?

>Du meinst ein reales Beispiel? z.B. wie im Anhang.

Das ist doch der Impedanzfrequenzgang eines 8R-Lautsprechers? Das 
Ersatzschaltbild für einen solchen Lautsprecher ist wohl bekannt:

http://portal.tugraz.at/portal/page/portal/Files/audiotechnik/Lehre/fertige%20BA%20PA%20DA/PA_Deboy_Dietze_Lautsprecherentwicklung_V1.3.pdf

von Achim M. (minifloat)


Lesenswert?

Abdul K. schrieb:
> 1. es sind 3D Kurven, keine 2D

Es sind also zwei 2D-Kurven...
Sagen wir mal zu einem Eingangswert x ist eine komplexe Zahl z 
zugeordnet.
z lässt sich zerlegen in a + jb .
Zu jedem x ist also ein a und ein b vorhanden. Man kann auch 
Gleichungssysteme aufstellen. Man kann auch "Splinen". Das Problem ist 
durchaus lösbar!

mfg mf

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Mein Kenntnisstand hört beim Gaußschen Algorithmus für lineare 
Gleichungssysteme auf. Das habe ich mal als Schüler implementiert und 
das ging. Allerdings eben für ideale Systeme. Hier sind aber immer 
Fehler in den Werten. Sozusagen ist immer ein kleiner Fehlervektor bis 
zum idealen Punkt. Daher wird der klassische Gauß hier versagen. Wie 
sollte er eine Lösung finden? Vielleicht kann man ihn modifizieren??

Eigentlich ist es eine 2D-Kurve, denn es sind jeweils gekoppelte Real- 
und Imaginärwerte. Wenn denn der Fitter mit komplexen Eingangswerten 
umgehen kann. Vermutlich findet man auch mit 'entkoppelten' Werten in 
einem 3D-Fitter eine Lösung. Es wird einfach nur erheblich länger dauern 
und schwingungsanfälliger. Das in meinen bescheidenen Worten - über die 
ein Mathematiker schmunzeln wird.

Mich erinnert das Problem stark an die Positionsauflösung bei GPS.


Tja, und der Test ;-) Kai hat ihn bestanden. Wollte doch mal gucken, wer 
die Daten richtig interpretiert.
Mir gehts aber nicht um Lautsprecher. Sollte nur ein realer Datensatz 
sein. Im Umfeld Lautsprecher habe ich schon geforstet und nichts 
befriedigendes gefunden.


Nachdem ich die Nacht mit Google verbrachte, kamen ein paar Hinweise 
zusammen. Werde das später posten. Erstmal selber probieren hier...


Hat vielleicht jeman alte Ausgaben der Byte? Das hier wäre nämlich 
interessant:
"Fitting Curves to Data: the Simplex Algorithm is the Answer".
M.S. Caceci and W.P. Cacheris.
Byte Magazine 9(5), 340-362 (1984).

aus:
http://www.chemitech.com/marco/freestuf.htm

Ich habs leider nicht so mit Pascal ;-)

von Ulrich (Gast)


Lesenswert?

Man hat hier 2 Aufgaben: einmal aus dem Ersatzschaltbild die 
Übertragungsfunktion bzw. Impedanz zu berechnen. Das ist für so eine 
relativ einfache Schaltung wie oben sogar noch per Hand möglich. Sonst 
müsste man ggf. ein CAS Tool wie Mathematica (teuer) oder Maxima (frei) 
zur Hilfe nehmen. Damit hat man dann die Funktion die man an die Daten 
anpassen kann.
Diesen Teil muss man ja auch nur für jede Ersatzschaltung einmal machen.

Die Anpassung ist dann der 2. Schritt. Dafür gibt es frei verfügbaren 
Sourcecode, oder man nutzt ein fertiges Programm zur 
Messdatenbearbeitung (Excel, Gnuplot, XMgr,...), die aber meist nur den 
Fit für reelle Daten bieten. Da kann man sich helfen indem man die 
Funktion in 2 Teilebereiche aufteilt, einmal für den Realteil und einmal 
für den Immaginärteil. Das macht die Funktion etwas komplizierter, aber 
die meisten Programme bieten so etwas wie eine stückweise Definition. 
Man kann z.B. für "negative" Frequenzen den Imaginärteil nehmen, und für 
positive Frequenzen den Realteil.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ich verstehe nur den ersten Absatz. Daher suche ich nach einem Fitter 
für komplexe Daten.

von the last commentator (Gast)


Lesenswert?

Abdul K. schrieb:
> So in der Art. Meßprogramm mit besserer Soundkarte und man ist bis
>
> 100KHz dabei. WIMA mißt übrigens nach eigener Aussage auch nur bei
>
> 100KHz.

was aber auch daran liegt, wie das gute Stück hernach eingebaut und 
angesteuert wird, bzw was sonst noch so in der Nähe liegt.

Bei 100kHz fängt die EMV so langsam an, relevant zu werden und die 
parasitären Kapazitäten der Leiterbahnen und Bedrahtungen werden 
relevant.

Ich gebe Dir aber zu, dass man , wenn man das berechnen und simulieren 
wollte, genaue Nettoinfos braucht. Allerdings kann ich es von meinem 
Wissen sagen, dass gerade Kondensatoren da immer stärkere 
Exemplarsteuungen aufweisen,

von branadic (Gast)


Lesenswert?

Hallo,

ich mische mich auch mal mit in das Gespräch. Ich habe mich selbst schon 
mit dieser Thematik (Parameter eines Ersatzschaltbildes aus der Messung 
bestimmt) beschäftigt, kann davon hier aber aus verschiedenen Gründen 
nicht ausführlich berichten. Dennoch möchte ich einige Hinweise geben.

Meine ermittelten Parameter haben in der anschließenden Simulation sogar 
besser mit der Messung überein gestimmt, als die vom guten alten HP4194A 
ermittelten, was zu Teil auch auf Rundungsfehler zurückzuführen ist. 
Dennoch ist mir dieser Brocken Technik sehr ans Herz gewachsen.

Zunächst sei der Hinweis auf's "Agilent Impedance Measurement Handbook" 
gegeben. Dort steht im Prinzip der gesamte Lösungsweg für die "einfachen 
Ersatzschaltbilder" und auch die Funktionsweise des HP 4194A drin. Nicht 
verzweifeln wenn man es nicht auf Anhieb findet, es ist nicht in 
Klartext an einer einzigen Stelle beschrieben, stattdessen auf vielen 
Seiten und auch in den Abbildungen zu finden.
Eine weitere Beschreibung findet sich in "RCL Analysis with the MSA" von 
Sam Wetterlin.
Weiterhin seien die Quellen "Equivalent Circuit Extraction from Measured 
S-Parameters of Electronic Packages" und "The Complete Electrical 
Equivalent Circuit of a Double Heterojunction Laser Diode Using 
Scattering Parameters" genannt.
Die Methode kleinster Fehlerquadrate ist natürlich auch ein möglicher 
Ansatz.

Passen die Ersatzparameter/Simulationen mit diesen nicht mit der Messung 
überein, dann stimmt entweder das Ersatzschaltbild nicht, man hat sich 
an irgendeiner Stelle verrechnet oder aber falsche Randbedingungen für 
die Lösung zugrunde gelegt.

Man darf nicht erwarten, dass aus einer schmalbandige Messung ein 
breitbandiges Ersatzschaltbild zu extrahieren sei, dass wäre utopisch 
und vermessen. Man kann aber wohl erwarten, dass man aus der 
schmalbandigen Messung Ersatzparameter extrahieren kann, die das 
Verhalten der schmalbandigen Messung sehr gut beschreiben.

Viel Spaß beim Lösen der Aufgabe, dass verlängerte Wochenende lässt ja 
genug Zeit dafür.

branadic

von Wolfgang (Gast)


Lesenswert?

Abdul K. schrieb:
> Mein Kenntnisstand hört beim Gaußschen Algorithmus für lineare
> Gleichungssysteme auf. Das habe ich mal als Schüler implementiert und
> das ging. Allerdings eben für ideale Systeme. Hier sind aber immer
> Fehler in den Werten. Sozusagen ist immer ein kleiner Fehlervektor bis
> zum idealen Punkt. Daher wird der klassische Gauß hier versagen.

Der Gauß Algorithmus bestimmt dir deine Koeffizienten immer so, dass der 
quadratische Fehler minimal wird. Anders ausgedrückt heißt das, dass er 
die Projektion der Meßwerte auf den von deinem Gleichungssystem 
aufgespannten Teilraum liefert. Du mußt "nur" dein Gleichungssystem 
passend zu deinem Problem vorgeben. Da kann es dir passieren, dass deine 
gesuchten Größen nicht einfach als Koeffizienten in deinem linearen 
Gleichungssystemauftauchen und dann brauchst du zusätzlich einen 
passenden Suchalgorithmus, der mit deinen nichtlinearen Parametern 
"spielt".

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Naja, es hat Jahre gedauert bis ich LTspice halbwegs beherrschte. Was 
ich nun schon von mir behaupten kann.
Ich möchte daher nicht noch eine weitere Baustelle öffnen und mich 
weitere Jahre mit solchen Fitting-Algorithmen beschäftigen, um dann 
irgendwann ein Programm passabler Funktionalität realisiert zu haben.
Außer jemand hätte Interesse gegen Bares seine Bauelemente von mir 
fitten zu lassen. Was ich nun kann. Muß aber noch viele Experimente 
machen.

Man erkennt oftmals erstaunliche Wissenslücken bei sich und in benutzten 
Tools wie LTspice.

Vielen Dank für eure Beiträge!

von Wolfgang H. (Firma: AknF) (wolfgang_horn)


Lesenswert?

Hi, Abdul,

ich habe mich bisher zurück gehalten zwecks Minimierung des Risikos der 
Blamage.

Du willst in SPICE einen Zweipol nachbilden, der eine hohe Zahl an Polen 
und Nullstellen aufweist?

Warum misst Du nicht die Übertragungsfunktion von Spannungswerten zu 
Strom, indem Du:
1. Den zu testenden Zweipol mit Rauschen anregst,
2. Die komplexe FFT des Rauschens misst,
3. Die Stromantwort des Zweipols misst und ebenfalls die FFT berechnest,

durch Faltung der beiden FFT's die komplexe Übertragungsfunktion des 
Zweipol erhältst, und die in SPICE einbindest?

Schau Dir mal den AD5933 an - der macht den messtechnischen Teil von 
dem, was Du suchst - wenn ich Deine Suche richtig verstanden habe.

Ciao
Wolfgang Horn

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Hallo Wolfgang. Genau! Du hast es komplett erfasst. Die FFT ist eine 
komplexwertige.

Bei meiner 50 Stunden Recherche habe ich auch den AD5933 abgeklopft, 
aber nichts verwertbares gefunden. Wenn überhaupt, dann werden die für 
den auch nur RLC auswerten. Der Baustein ist prinzipiell schon 
interessant für ein Einzelgerät.

Jetzt habe ich zwar offensichtlich eine Lösung, aber Krach mit der Frau 
;-) Als sie fragte, warum ich immer beim Suchen im Net so rummeckerte, 
sagte ich: Ich möchte eine Punktewolke auf eine mathematische Funktion 
abbilden und finde einfach nix gescheites.


Wer will, kann man eine Z Mag Phase Tabelle posten und ich versuche mich 
dran. Brauche noch die Bauelementart als Info.


Das Ganze werde ich mal an einem Ultraschallwandler härtetesten.

von Helmut S. (helmuts)


Angehängte Dateien:

Lesenswert?

Hier mal ein "Hand-fit".
Achtung, das Vorzeichen der Phase in der Datei von Abdul K. ist falsch. 
Man muss das Vorzeichen vertauschen. Das war bestimmt ein Test um zu 
sehen ob wir's "blicken". :-)

Mit diesen guten Startwerten könnte man es mit dem Optimizer von der 
LTspice Yahoo group probieren.
http://tech.groups.yahoo.com/group/LTspice/files/%20Tut/Optimization/
In "Examples from Helmut" gibt es Beispiele und eine Anleitung.


Die home page von Friedrich Schmid, dem Author dieses Optimizers.
http://members.aon.at/fschmid7/page_3_1.html
NEW: Perl based optimizer ( flexible polyhedron , differential evolution 
) for Spice ( with Perl/TK GUI )

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ne direkte Lösung in LTspice ist natürlich auch sehr cool. Werde es mir 
anschauen.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Fralla schrieb:
> Ich verwende auch heute noch häufig den alten HP 4194 Analyzer. Der
> berechnet  Werte für 5 verschiedene Ersatzschaltbilder (mit Software
> Update noch mehr) und diese decken sich perfekt wenn man die Werte in
> ein Spice-Software klopft. Zum ausmessen von Ausgangselkos und
> Simulation von conducted EMI ideal. Man kann sich den Table auch
> ausgeben lassen.
> Beim RLC Model eines Elkos ist es ja noch leicht auf die Werte zu
> kommen. Bei den komplexeren Modelen ist es aber nicht nachzuvollziehen.
> Ich hatte HP mal gefragt und die ANtworteten nur, dass es sich um einen
> "speziellen mathematischen Algorithmus" handelt. Wer hätte des
> gedacht...
>

Mich würde interessieren, aus welcher Zeit der 4194 stammt? So um 1991 
rum?

von Helmut S. (helmuts)


Angehängte Dateien:

Lesenswert?

Nachtrag zu meinem Beispiel:
Ich hatte vergessen das Symbol für "EL_Speaker" anzuhängen.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Kennt jemand ein kleines Tool um Files mit magnitude+phase in 
real+imaginary zu konvertieren? Bin ich zu blöde zum Googeln?

von asdf (Gast)


Lesenswert?

re = |magnitude| * cos(phase)
im = |magnitude| * sin(phase)

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Weiß ich. Ich brauch ein Programm um ganze Files zu konvertieren.

von Arc N. (arc)


Lesenswert?

Abdul K. schrieb:
> Weiß ich. Ich brauch ein Programm um ganze Files zu konvertieren.

Datei-Format(e)?

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Wenn ich bettel, kann ich nichts wünschen. Irgendwas CSV. Space oder 
Tab.:
freq mag phase
zu
freq Re Im


Mich wundert nur, das es das nicht fertig gibt. bin<>hex gibts ja auch.

von wewölk (Gast)


Lesenswert?

Excel?

von egal (Gast)


Lesenswert?

Abdul K. (ehydra) schrieb:

> Wenn ich bettel, kann ich nichts wünschen. Irgendwas CSV. Space oder
> Tab.:
> freq mag phase
> zu
> freq Re Im

> Mich wundert nur, das es das nicht fertig gibt. bin<>hex gibts ja auch.

Mach doch einfach eine nette kleine Programmierübung draus. ;)

C oder C#

oder biste ein Pascal'ler (Delphianer)?

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Perl wäre vermutlich am schnellsten realisierbar? Ich brauche nur ne 
Vorlage, wie man Text mit gewünschtem Delimiter aus einer Datei parst 
und in ne andere Datei sequentiell schreibt.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

@Helmut:
Kann es sein, daß du die Datei ps2sp.pl nicht korrekt eingeordnet hast? 
Ich konnte sie erstmal nicht finden und mußte dann auf seiner HP suchen 
gehen. Dort ist sie in den Examples.

http://members.aon.at/fschmid7/loadflow_examples.zip

Ehrlich gesagt, ich verstehe von dem was da veranstaltet wird kein 
Stück.

Automatisches Löschen des NET-files MUSS man deaktivieren? Ich habe das 
immer an. Gibts dafür ein Control, damit ich das in das Schematic 
schreiben kann? Damits nur für diese Projekt aktiv ist.

von Wolfgang H. (Firma: AknF) (wolfgang_horn)


Lesenswert?

Hi, Abdul,

> Hallo Wolfgang. Genau! Du hast es komplett erfasst. Die FFT ist eine
> komplexwertige.
Ich habe noch Restzweifel, ob da nicht doch ein Rest von Missverständnis 
ist.

Und zwar meine ich so: Du kannst das Verhalten eines Vierpols mit einem 
Vektor aus komplexen FFT-Koeffizienten beschreiben.

Die Halbleiterhersteller tun das schon seit Jahr und Tag, indem sie in 
die Vierpolmatrix ihrer Transistoren S22 als komplexen Vektor eintragen 
- häufig in Polarkoordinaten.

Ich habe hier eine Uraltversion von HP VEE. Mit der lassen sich solche 
komplexen Vierpolvektoren durchrechnen. Dasselbe geht gewiss auch mit 
Labview, MathLab und Konsorten.

> Das Ganze werde ich mal an einem Ultraschallwandler härtetesten.
Ach du liebes Lieschen! Wenn es Dir nur darum ging und besagter Wandler 
ein Piezo ist, dann nimm das Standard-Ersatzschaltbild des 
Schwingquarzes, auch der Piezoresonatoren - oder gleich die 
Berechnungsformeln.
Aus physikalischen Gründen kann sich der Piezowandler gar nicht anders 
verhalten, allenfalls etwas mehr Dämpfung als ein Quarz, der im Vakuum 
schwingt...

Ciao
Wolfgang Horn

von perlbastel (Gast)


Lesenswert?

Abdul K. schrieb:
> Weiß ich. Ich brauch ein Programm um ganze Files zu konvertieren.

Kannst du damit was anfangen?
1
#perl
2
use strict;
3
use warnings;
4
5
my $re;
6
my $im;
7
8
while(<>)
9
{
10
  /([\d\.-]+)[[:blank:]]([\d\.-]+)[[:blank:]]([\d\.-]+)/;
11
  $re=abs($2)*cos($3);
12
  $im=abs($2)*sin($3);
13
  printf("%.2f %.2f %.2f\n",$1,$re,$im);
14
}
1
perl conv.pl <eingabe.txt >ausgabe.txt

?

von Kai K. (klaas)


Lesenswert?

>Hat irgendjemand ne Lösung für einen Fitter bei dem man als Input ein
>komplexes Frequenzspektrum (= Liste von R+jX bzw. real+phase) reingibt
>und am Ausgang ein Filternetzwerk n-ter Dimension auf minimalen Fehler
>und Welligkeit rausbekommt?

In der Physik gibt es ein ähnliches Problem. Da will man oft wissen was 
in ein Spektrum gehört, also Gaußpeaks, Lorentzlinien, 
Poissonverteilungen und noch anderes Gedöns. Da macht man 
Least-Squares-Fits mit unterschiedlichen Annahmen und vergleicht deren 
Güte mit dem Chi-Quadrat- und F-Test.

Hier ist ein gutes Buch darüber: ISBN 0-07-005135-6

In deinem Fall würde ich sagen, daß aus der konkreten Situation fast 
immer schon mit physikalischer Intuition auf ein passendes 
Ersatzschaltbild geschlossen werden kann. Also dürfte eigentlich ein 
Programm ausreichen, daß ausgehend von einem bekannten Erstazschaltbild, 
solange die Bauteilewerte verändert bis es passt. Das kann man aber fast 
immer auch von Hand in einem Simulator machen, wenn man geschickt 
separiert und dafür etwaige Resonanzen und das Verhalten bei tiefen und 
hohen Frequenzen ausnutzt.

von Helmut S. (helmuts)


Angehängte Dateien:

Lesenswert?

> Das kann man aber fast
immer auch von Hand in einem Simulator machen, wenn man geschickt
separiert und dafür etwaige Resonanzen und das Verhalten bei tiefen und
hohen Frequenzen ausnutzt.

Leider hat der von mir erwähnte Perl-Optimizer diese Aufgabe nicht 
geschafft. Dafür kann man aber mit intelligenter Handoptimierung bei 
dieser Schaltung sehr gut zu einer Lösung kommen. Siehe Kommentare im 
Schaltplan.

Es gibt übrigens eine strenge mathematische Beziehung zwischen Betrag 
und Phase bei Minimum-Phase-System (=kein Allpass-Faktor). Daher reicht 
es bei dieser Schaltung allein die Betragsfunkion anzunähern.
http://www.dcsc.tudelft.nl/~wb2207/transp/sr10-8.pdf, Seite 4

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Das stimmt natürlich alles.

Der Ultraschallwandler ist für mich einfach nur ein Testobjekt. Zumal 
hier schon öfters nach diesbezüglichem Ersatzschaltbildwerten gefragt 
wurde. Lautsprecher interessieren mich nicht sonderlich und lassen einen 
nur in dem ganzen Esoterikkram die Richtung verlieren.

Vielleicht kann man auch die ganzen S-Parameter Tools verwenden. Ich 
habe nur keine Ahnung, warum die immer eine Systemimpedanz (z.B. 50 Ohm) 
verlangen und in unserem Fall hier das nirgends auftaucht. Warum brauche 
ich bei solchen Meßwerten keine Systemimpedanz? Man sieht, von 
Vierpoltheorie verstehe ich nichts: 1 Tor, 2 Tor, skalar oder 
vektoriell, hm.

Dann gibts noch scheinbar ein ultimatives Fitting-Tool: LEVMW
Aber nirgends ein Beispiel wie man es verwendet.

Ich werde erstmal Perl ausprobieren. Ein Fitter direkt in LTspice wäre 
sehr zielorientiert. Obs der beste Lösungsansatz ist, muß ich testen.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Helmut S. schrieb:
>> Das kann man aber fast
>> immer auch von Hand in einem Simulator machen, wenn man geschickt
>> separiert und dafür etwaige Resonanzen und das Verhalten bei tiefen und
>> hohen Frequenzen ausnutzt.
>
> Leider hat der von mir erwähnte Perl-Optimizer diese Aufgabe nicht
> geschafft. Dafür kann man aber mit intelligenter Handoptimierung bei
> dieser Schaltung sehr gut zu einer Lösung kommen. Siehe Kommentare im
> Schaltplan.
>

Schade. Werds trotzdem testen.
Welche Beispiele schaffte er denn? Das ist ja Jahre her. Hast du da noch 
was im Kopf?

Mich dünkt speziell bei diesem Beispiel, was ich eigentlich eher 
willkürlich wählte bei der Suche nach realen Daten, daß es zufällig ein 
eher schwieriges Beispiel ist. Ich weiß nur noch nicht warum.

Jedenfalls sind deine handoptimierten Werte schon sehr gut. Lob!


> Es gibt übrigens eine strenge mathematische Beziehung zwischen Betrag
> und Phase bei Minimum-Phase-System (=kein Allpass-Faktor). Daher reicht
> es bei dieser Schaltung allein die Betragsfunkion anzunähern.
> http://www.dcsc.tudelft.nl/~wb2207/transp/sr10-8.pdf, Seite 4

Da schreibst du was was ich seit Tagen auch vermute. Schön wenn man dann 
eine Referenz zum Weiterlesen findet. Danke.
Ich vermute momentan, daß man mit der zusätzlichen Phaseninformation 
schlicht schneller zu einem Optimum rein algorithmisch gelangt.
Aber bei welchen Strukturen brauch man dann unbedingt die Phase?? Das 
irritiert mich. Dabei dachte ich 20 Jahre, jetzt kann ich komplex 
rechnen. Pustekuchen, doch nicht ganz verstanden.

Werde das Paper lesen. Vielleicht geht mir ein Licht auf.

von Helmut S. (helmuts)


Lesenswert?

>Schade. Werds trotzdem testen.
Welche Beispiele schaffte er denn? Das ist ja Jahre her. Hast du da noch
was im Kopf?

In der Yahoo group sind zwei Beispiele von mir. Am besten lässt du die 
mal "rennen".
Du brauchst übrigens neben Schaltplan.asc und Schaltplan.net die zwei 
Perl-Skripte optimizer.pl und simend.pl und eine Initialisierungsdatei 
Schalplan_init.txt.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

In deinen Beispielen ist ein Bandpaß dabei. Das ist ja kurios. Warum 
geht der und obiger nicht?

Das obige Paper versteh ich nicht so ganz. Bislang dachte ich, wenn kein 
aktives Bauelement in der Schaltung ist, dann ist sie immer stabil? 
Ist das falsch?

Habe noch etwas mit der Phase gespielt. Tatsächlich, man kann sie auch 
problemlos in meinem Beispiel weglassen. Sie baut sich sozusagen rein 
aus der Amplitude wieder korrekt auf.

Da sind wir ja wieder bei dem Test mit der inversen Phase ;-)

von Helmut S. (helmuts)


Angehängte Dateien:

Lesenswert?

Abdul,
Ich hatte vergessen, dass der Optimizer wohl nur 1e-6 aber nicht 1u 
versteht. Jetzt rennt der Optimizer zusammen mit LTspice wie gewünscht, 
sogar mit 5 Variablen. Im zip-file sind alle Dateien die man braucht um 
das zu testen. Lies bitte auch die "instrcutions.txt".

Ehre wem Ehre gebührt:
Die home page von Friedrich Schmid, dem Author dieses Optimizers.
http://members.aon.at/fschmid7/page_3_1.html
NEW: Perl based optimizer ( flexible polyhedron , differential evolution
) for Spice ( with Perl/TK GUI )

von Helmut S. (helmuts)


Lesenswert?

Nachtrag:
Ich habe das Perl-script optimizer.pl mit "tinyperl" ausgeführt.
Hier ist der Link:
http://tinyperl.sourceforge.net/

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Hm. Ich habe soweit alles zusammen und tinyperl installiert. Mal ne 
blöde Frage: Ich dachte PATH-Einstellungen gibt es mindestens seit WinME 
nicht mehr??

Und welche Datei muß ich nun wie starten? DOS-Box mit perl optimizer.pl 
oder sowas?

Etwas mehr Doku wäre schon toll.

von Helmut S. (helmuts)


Lesenswert?

1.
Navigiere in der CMD-shell zum Verzeichnis mit dem Schaltplan und den 
Perl-Sktipts.

2.
.....> _path.bat

Das_path.bat dient dazu, dass du nicht den langen Pfad zu Tinyperl 
eintippen musst und dass scad3.exe ohne langen Pfadnamen im 
Schaltplan_init.txt angegebenen werden kann.

3. Jetzt gehts los.

.....> tinyperl optimizer.pl Z_speaker1opt_init.txt


Am Ende der Optimierung öffnet das Skript einen zusätzlichen Schaltplan 
mit den optimierten Werten.

von perlbastel (Gast)


Lesenswert?

Abdul K. schrieb:
> Hm. Ich habe soweit alles zusammen und tinyperl installiert. Mal ne
> blöde Frage: Ich dachte PATH-Einstellungen gibt es mindestens seit WinME
> nicht mehr??
Doch doch, unter XP gibt es sie auch noch. :-)

> DOS-Box mit perl optimizer.pl oder sowas?
So wird das in der Regel gemacht...

Kannst du mit meinem Converterscript von oben etwas anfangen?

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

perlbastel schrieb:
> Abdul K. schrieb:
>> Hm. Ich habe soweit alles zusammen und tinyperl installiert. Mal ne
>> blöde Frage: Ich dachte PATH-Einstellungen gibt es mindestens seit WinME
>> nicht mehr??
> Doch doch, unter XP gibt es sie auch noch. :-)
>

Dann habe ich das wohl verwechselt mit einer anderen Sache die nicht 
mehr ausgewertet wird.


>> DOS-Box mit perl optimizer.pl oder sowas?
> So wird das in der Regel gemacht...
>
> Kannst du mit meinem Converterscript von oben etwas anfangen?

Sieht sehr kryptisch aus. Sollen wohl Hausaufgaben für mich werten??

Ich muß erstmal den Perl-Optimizer zum Laufen kriegen.

@Helmut:
Ich habe Path passend geändert und auch in auto-exec.bat eingetragen. 
Er sagt aber:
C:\...\test>tinyperl optimizer.pl Z_speaker1opt_init.txt
Befehl oder Dateiname nicht gefunden.

Er kann offensichtlich mit tinyperl gar nichts anfangen. Muß man das 
irgendwie aktivieren?

von Helmut S. (helmuts)


Lesenswert?

Du musst natürlich tinyperl.exe und die ganze tinyperl Unterstruktur in 
dem Verzeichnis C:\tinyperl haben. In AUTOEXEC.bat mache ich gar nichts. 
Ich habe hier hier gerade XP. Auf WIN7 habe ich es jetzt nicht getestet.

C:\tinyperl\tinyperl.exe

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ich habe tinyperl unter Programme gepackt. Und wenn ich es dort starte, 
erzeugt es ein eigenes Arbeits-Directory und beendet sich danach.

Wenn ich es woanders aufrufen will, kennt er es nicht.

Wäre es nicht sinnvoller, die Extension pl mit tinyperl zu verknüpfen? 
Geht das nicht mit diesem Programm? Doppelclick fertig.

von Helmut S. (helmuts)


Lesenswert?

Du musst natürlich tinyperl in einer CMD-shell aufrufen. Nicht im 
Windows-Explorer draufklicken.

Wenn du den Pfad für tinyperl gesetzt hast (_path.bat ausführen), dann 
tippe mal im CMD-Fenster das Folgende. Achtung das ">" ist der Prompt 
der cmd-shell, also nicht ">" eintippen.

> tinyperl -help

Und findet es tinyperl?

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Nein. Erwartungsgemäß geht das nur im Ordner tinyperl. Da wo es 
installiert ist.

Immer die gleiche Scheiße mit Windoof. Auf dem Mac würde das längst 
laufen.

von Helmut S. (helmuts)


Lesenswert?

Arbeitest du etwa noch mit WIN98? Also ich habe das auf mindestens zwei 
Rechnern mit XP am Laufen.
C:\tinyperl

von asdf (Gast)


Lesenswert?


von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ich habe jetzt den ganzen Kram von Perl in meinen Arbeitsordner gepackt 
und dort kann ich es starten.
Dann kommt aber:
optimizer with flexible polyhedron alg. combined with thermal 
fluctuations
from the book : numerical recipes in C - second edition - Cambridge 
University P
ress

starting optimization .....
reading initfile .....
reading circuitfile .....


inital simplex points:

Befehl oder Dateiname nicht gefunden.
Can't open source file : z_speaker1opt.log


--------
Wo soll das File denn sein?

von Helmut S. (helmuts)


Lesenswert?

Im Log-file steht der Wert (Ergebnis) der cost-function.

LTspice:

Tools -> Control Panel -> Operation

Automatically delete.net files: NO
Automatically delete.log files: NO

(Automatically delete.log files: NO) Wahrscheinlich braucht es den 
nicht.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Eine Stunde später.... toll

"net" hatten wir ja schon. Offensichtlich brauch er auch "log". Jetzt 
läuft irgendwas. Aber wo kann ich zwischenzeitlich den aktuellen 
Arbeitszustand sehen? Bzw. beenden triggern und den letzten 
Optimierungsergebnis sehen?

Nochmal die Frage:
Kann man diese Optionen pro Projekt im Schaltplan definieren?

Tut mir leid wenn ich dich nerve. Entweder ich bin zu blöde oder es ist 
einfach schlecht dokumentiert.

von Helmut S. (helmuts)


Lesenswert?

Geduld, Geduld. Wenn der Optimizer fertig ist, dann erzeugt er den 
Schaltplan_opti.asc und öffnet den mit LTspice. Da stehen dann die 
optimierten Parameter drin. Siehe meine Screenshots.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Läuft noch immer. Wie lange dauert das Beispiel auf welchem Rechner?

Mal zu Perl: Gibt es da eine kompakte Entwicklungsumgebung inkl. 
Debugger?

von Helmut S. (helmuts)


Lesenswert?

Das Beispiel Speaker_optimization.zip braucht keine 30sec auf einem 
alten Laptop(1,5GHz). Es macht ca. 40 Simulationen bis es sagt "fertig".

Mach auch mal
Control Panel -> SPICE-> Reset to default.
Manche glauben da drin müsste man etwas verstellen. Da muss man aber gar 
nichts verstellen, außer falls man mal den Alternate solver braucht. All 
diese Einstellungen die man da machen könnte, schreibt man besser gleich 
in den Schaltplan, z. B. .options gmin=1e-10 falls nötig.

Bist du schon an einem anderen Beispiel?

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Naja, meinen Kenntnisstand bezüglich LTspice kennst du doch. Ich bin der 
der immer meckert ;-)

Ich bin immer noch am Warten. Wenn der Optimizer weitere Verbreitung 
finden soll, dann muß der schon bedienbarer werden.

Was ist nun, wenn ich abbreche? Ja ja, ich bin doch blöde. Kein Backup 
vorm Start gemacht.

Woher weißt du wieviele Sims er gemacht hat? Popt da regelmäßig LTspice 
auf? Ich sehe nix. Ich würde behaupten, es wurde nie gestartet.

von Helmut S. (helmuts)


Lesenswert?

Du kannst ihn jeder Zeit abbrechen. Da geht nichts kaputt. Der Optimizer 
packt nicht den Schaltplan an. Der manipuliert nur den .net file. Dann 
ruft er LTspice im batch mode mit dem .net file auf. Aus dem log-file 
liest er dann das Ergebnis. Das wiederholt sich dann immer wieder.

Der .net file wird bei jeder Simulation des Schaltplans neu gemacht.
Alternativ: View -> SPICE netlist
Das erzeugt auch den .net file.

Die letzte/neueste Version des Optimizers von Friedrich hat ein GUI. 
Kannst ja mal den probieren.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Nach Abbruch ist kein log im Arbeitsordner. Das ASC-file ist auch nicht 
verändert. net ist auch unverändert.

Ich vermute es kommt nie dazu das LTspice gestartet wird. Vermutlich 
findet er es nicht und ne Fehlermeldung, naja wozu auch. Brauch kein 
Mensch.

Dann habe ich in optimizer.pl reingeschaut und gleich in den ersten 
Zeilen steht:
$simendfile="tinyperl simend.pl";

Ein simend.pl gibts aber gar nicht. Es gibt nur ein "simend-ltspice.pl"

Es ist aber genau der Ordner den du mir zum Donwloaden oben anbotest.

Soll ich das ändern?


Sagt mal, bin ich der einzige der das ausprobiert? Geht es bei 
irgendwem?

von asdf (Gast)


Lesenswert?

Ja bei mir funktionert es.

asdf schrieb:
> unter win7 funzt dein path batch skript nicht.
>
> http://geekswithblogs.net/renso/archive/2009/10/21...

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Das GUI ist eine Perl-Datei, die vergebens eine Datei Tk.pm aufruft, die 
ich auch nicht finden kann.
Wenigstens ein Bild, wie diese GUI nun aussehen soll, fände ich gerne. 
Ist aber nicht da.

Helmut, hast du ehemals diesen Optimizer für LTspice angepaßt? Da steigt 
doch keiner durch.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ah. Eine Beschreibung des GUI findet sich in einem der zip's.

Zurück zur optimizer.pl :
Gerade gecheckt. Es ist wirklich deine Datei.
Und nach der ominösen Zeile kommt:
$ascfile="myfile.asc";

Da muß doch der richtige Projektname stehen, oder?


GUI fällt wohl vorerst flach, da steht:
The optimizer now comes now with a simple perl/TK based gui:
============================================================

The gui only works with a full Perl/TK installation. (get it free for 
windows at www.activestate.com)

The gui simplifies and organizes the use of the optimizer


Also nix mit tinyperl.

von Helmut S. (helmuts)


Lesenswert?

>Dann habe ich in optimizer.pl reingeschaut und gleich in den ersten
Zeilen steht:
$simendfile="tinyperl simend.pl";


Dafür steht im xxxxxxx_init.txt file der wirklich benutzte Aufruf.

simendfile=tinyperl simend_ltspice.pl

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Dann weiß ich auch nicht weiter. Selbst wenn ich LTspice komplett in den 
Arbeitsordner reinkopiere, geht es nicht. An den Pfaden liegt es wohl 
dann auch nicht.
Liegts vielleicht an irgendwelchen Aufrufparametern, die es in WinME 
noch nicht gab? Ansonsten müßte ich den ganzen Schrott mal auf Win7 
probieren.

von Helmut S. (helmuts)


Lesenswert?

WinME, schlimmer geht's nimmer!  Wer das verwendet, der ist selber 
Schuld. :-)

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Muß eigentlich bei tinyperl dessen lib.zip ausgepackt werden oder kann 
die so da als eine Datei liegen?

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Win7 ist noch schlimmer. Ich habe hier die Auswahl.

von Helmut S. (helmuts)


Lesenswert?

Abdul K. schrieb:
> Muß eigentlich bei tinyperl dessen lib.zip ausgepackt werden oder kann
> die so da als eine Datei liegen?

Bei mir ist sie nicht ausgepackt.

von Helmut S. (helmuts)


Lesenswert?

Hab es gerade unter WIN-7 probiert. Läuft auch dort!

Beachte bei WIN-7 den Pfadnamen zu scad3.exe in meiner Datei _path.bat
obwohl er in menem Explorer als "Programme (x86)" angezeigt wird.

path=c:\tinyperl;"C:\Program Files (x86)\LTC\LTspiceIV";%path%C:\c

von egonotto (Gast)


Lesenswert?

Hallo,

 bei mir gehts.

Ich habe tinyperl installiert und die Pathvariable in 
"Systemsteuerung->System->Erweiterte 
Systemeinstellung->Erweitert->Umgebungsvariablen->Systemvariablen->Path- 
>Bearbeiten"  um den Path zu tinyperl und Ltspice erweitert.

Schaut dann etwa so aus:

"
......;C:\Program Files (x86)\LTC\LTspiceIV;C:\Program Files 
(x86)\tinyperl;C:\Program Files (x86)\tinyperl\optimizer
"

Dann habe ich das File von Helmut S.
"
Datum: 27.05.2012 21:24
Angehängte Dateien:

    Speaker_optimization.zip (10,6 KB, 9 Downloads)
"
in meine Ramdisk entpackt. Darin habe ich das File 
"Z_speaker1opt_init.txt" in "myfile_init.txt" umbenannt.

Dann habe ich ein neues cmd.exe-Fenster geöffnet (ist wichtig damit die 
neue Pathvariable wirkt) bin mittels cd in das Verzeichnis gewechselt, 
in dem die Files von "Speaker_optimization.zip" liegen und habe den 
Befehl
"tinyperl optimizer.pl" eingegeben.

MfG
egonotto

von Proxxon (Gast)


Lesenswert?

Helmut S. (helmuts) schrieb:

> Hab es gerade unter WIN-7 probiert. Läuft auch dort!

Zur Not kann Abdul ja mal ein anderes Perl ausprobieren

"Erdbeeren-Perl" ab XP
http://strawberryperl.com/

oder hier das (läuft auch ab Win98)
http://www.chip.de/downloads/ActivePerl-for-Windows_12995284.html
Editor (ab W2k)
http://www.chip.de/downloads/Komodo-Edit_29950542.html

Habe selber aber gerade keines installiert.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Auf Win7 läuft es nun. DOS-Box ist überflüssig. Einfach eine BAT-Datei 
erzeugen.

Was mich wundert: Völlig irrsinnige Startwerte bringen trotzdem das 
richtige Ergebnis.
Also ich ändere die Startwerte in Z_speaker1opt.asc und lasse LTspice 
einmal laufen und dann den Optimizer.

Naja, erstmal ruhen.

von Helmut S. (helmuts)


Lesenswert?

Der Optimizer nimmt die Startwerte aus xxxx_init.txt. Dort stehen auch 
die Grenzwerte für die gesuchten Variablen.

von perlbastel (Gast)


Lesenswert?

Abdul K. schrieb:
>> Kannst du mit meinem Converterscript von oben etwas anfangen?
> Sieht sehr kryptisch aus. Sollen wohl Hausaufgaben für mich werten??

Ach was kryptisch und Hausaufgaben, simples Perl und 
"Windowskommandozeilensprache".

Das Skript mit Endung .pl speichern, eine DOS-Box öffnen, in den Ordner 
vom Skript navigieren und mittels oben hinterlegtem Aufruf starten. Das 
Wort "perl" musst du u.U. durch "tinyperl" ersetzen. "<eingabe.txt" sagt 
Windows dem Skript zeilenweise die Datei eingabe.txt in die Nase zu 
schieben und ">ausgabe.txt" die Ausgabe des Skriptes zeilenweise in 
ausgabe.txt zu speichern. So einfach ist das. :-)

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Das meinte ich auch nicht. Eher das hier:
  /([\d\.-]+):blank:([\d\.-]+):blank:([\d\.-]+)/;

Ehrlich, jetzt weiß ich warum ich irgendwo las, Perl wäre nicht gerade 
leserlich. Erwartet hätte ich eher sowas:

set zeile = read file bluberbla with delimiter="CRLF"
set vector wörter to line with delimiter=" "

oder so. AppleScript fand ich mal sehr schön. Zumal man damit direkt in 
dein DOM-Modell der benutzten Programme eingreifen kann.

von perlbastel (Gast)


Lesenswert?

Abdul K. schrieb:
> Das meinte ich auch nicht. Eher das hier:
>
1
   /([\d\.-]+)[[:blank:]]([\d\.-]+)[[:blank:]]([\d\.-]+)/;
OK, zugegeben die Zeile hat was...
Das ist ein Regular Expression, in Fachkreisen auch Regex. Das Ding wird 
Stück für Stück mit einer Zeile Text verglichen. Es handelt sich hier um 
ein relativ einfaches Regex, da gibt es deutlich Schlimmere.
1
/ -->leitet den Regex ein
2
[] -->die in den eckigen Klammern stehenden Zeichen sollen vorkommen:
3
\d -->digit 0-9
4
\. -->ganz normaler Punkt (Der Punkt hat normalerweise eine andere Bedeutung und wird deshalb mittels \ escaped.)
5
- -->ganz normales Minuszeichen
6
+ -->Die Zeichen innerhalb der eckigen Klammern können mehrfach vorkommen (>=1 mal).
7
() -->Alles was zum Ausdruck in den runden Klammern passt in Variable $n ($1,$2,...) speichern
8
[[:blank:]] -->frisst das Leerzeichen zwischen zwei Werten, da sollte eigentlich noch ein + hinter (hab ich vergessen)
9
und wieder das gleiche noch zwei mal

Erwartet hätte ich eher sowas:
> set zeile = read file bluberbla with delimiter="CRLF"
> set vector wörter to line with delimiter=" "
Bloss nicht, das riecht wie Basic grusel. Viel zu geschätzig.

von perlbastel (Gast)


Lesenswert?

Achso: angewendet wird das Regex hier auf die Variable $_ welche von der 
while-Schleife gefüllt wird.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Danke. Ich bin nur Gelegenheitsprogrammierer und brauche was, wo ich 
nicht nach 6 Monaten alles wieder lernen muß.

von Proxxon (Gast)


Lesenswert?

Abdul K. (ehydra) schrieb:

> Danke. Ich bin nur Gelegenheitsprogrammierer und brauche was, wo ich
> nicht nach 6 Monaten alles wieder lernen muß.

Kann ich voll nachvollziehen. Nach der Code Erklärung durch perlbastel 
ist klar: Alles weiterhin unklar.

Wie man sich sowas freiwillig antun kann ist mir schleierhaft. Da soll 
sich noch mal einer über ein goto bei BASIC aufregen.

von perlbastel (Gast)


Lesenswert?

Abdul K. schrieb:
> Danke. Ich bin nur Gelegenheitsprogrammierer
Du wirst es nicht glauben: Ich auch.

> und brauche was, wo ich
> nicht nach 6 Monaten alles wieder lernen muß.
Och, mit Perl-Reference-Cards aus dem Internet geht es ganz gut. 
Irgendwann hat man das Zeug intus, für C brauche ich schon keinen K&R 
(Buch) mehr. Sooo kompliziert ist das alles nicht.

Proxxon schrieb:
> Wie man sich sowas freiwillig antun kann ist mir schleierhaft. Da soll
> sich noch mal einer über ein goto bei BASIC aufregen.
Also ich find das genial und Basic gruselig, aber jedem das Seine. :-)

Genug OT...

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ja, das ist ne geile Sache wenn man es jeden Tag verwendet. Sehr 
effektiv.
Ich kenne den Effekt auch von LTspice. Mal ein Jahr nicht benutzt und 
man geht einige Tage sozusagen virtuell am Stock.

Ich handhabe das Problem mittlerweile generell so, daß ich alle meine 
Tools regelmäßig a bisserl benutze. Sozusagen die berühmte 
Bewegungsfahrt bei der BW ;-) Dann ist die Restartphase deutlich kürzer.

Ich schaue mir auch abundzu meine alten Platinenentwicklungen an und 
sogar alte Ordner. Mit dem Hobbythek-Brief zum TMS1000 Türgong hatte 
mich meine Mutter ca. 1978 vollends infiziert. Sie ist schuld und ich 
habs im Ordner, lustigerweise.


Für den Optimzier gibts zwei super Anwendungen:
- Temperaturausgleichnetzwerke (in Minuten)
- SMPS Regelkonstanten testen (wohl über Nacht)

von Proxxon (Gast)


Lesenswert?

perlbastel (Gast) schrieb:

> Also ich find das genial und Basic gruselig, aber jedem das Seine. :-)

Das ist normal, wenn man tief in einer Materie drinsteckt, wie das bei 
dir wohl der Fall ist. Ich finde es nur abartig ein goto in anderen 
Programmiersprachen für "unnachvollziehbares wildes springen" zu 
verunglimpfen, während solche Kauderwelchausdrücke dann normale 
Programmierkunst sein sollen. Dagegen ist selbst C geradezu 
selbsterklärend (wenn man es nicht in pervertierter Form verwendet, was 
bei C auch möglich ist). ;)

Abdul K. (ehydra) schrieb

> Ich kenne den Effekt auch von LTspice. Mal ein Jahr nicht benutzt und
> man geht einige Tage sozusagen virtuell am Stock.

Den "Effekt" kenne ich von vielen Programmen die (zu) wenig intuitiv 
sind.

> Ich handhabe das Problem mittlerweile generell so, daß ich alle meine
> Tools regelmäßig a bisserl benutze. Sozusagen die berühmte
> Bewegungsfahrt bei der BW ;-) Dann ist die Restartphase deutlich kürzer.

Ich schreibe mir vieles in persönlichen Liesmich Dateien auf. Das 
Wichtigste ist möglichst schnell alles (wieder) zu finden. Informationen 
sind ja prinzipiell seit dem es das WWW gibt genug vorhanden. Nur muss 
man sich die jedesmal (wenn man eine zeitlang mal ein Tool nicht mehr 
angepackt hat) wieder zeitaufwendig zusammensuchen. Also besser Notizen 
machen. Mir sind gut kommentierte Beispiele zum Einstieg immer lieb und 
wichtig.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Da ist doch Ironie drinnen, oder? Bloß nicht den großen Matrizen-Meister 
kritisieren wegen dem GUI. Du fällst so wie ich in Ungnade! Anstatt, daß 
er sich auf den Kernel konzentriert und das GUI von einem anderen Profi 
machen läßt. Client-Server Architektur wäre dann auch gleich 
miterledigt.
So kommt es dann eben zu Kuriositäten wie WMF-Export von Bildchen.


Bei mir landet möglichst alles in ASCII-Dateien, notfalls RTF. Nach dem 
Suchen kommt nämlich das Wiederfinden. Momentan mit locate32. 
Organisieren tue ich nach Thema nur halbherzig.

M$ interessiert sich ja nur für das was man sich multimediamäßig 
reinzog. Das wird dann in unsichtbaren Ordnern zwischengespeichert, die 
im normalen Dateibrowser unerreichbar sind (Es fehlen Pfad-Teile im 
Dateipfad).

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ich habe noch weiter rumgespielt. Man kann die Start- und Grenzwerte 
noch viel weiter fassen und er findet trotzdem ne Lösung. Dauert dann 
regelmäßig 60 Runden, also 50% länger.

Da steckt sicher weitere Musik drinnen! Danke Helmut für die Starthilfe.

von kay (Gast)


Lesenswert?

Eine Frage an Helmut: Warum hast du bei der Kostenfunktion noch 
zusätzlich durch f dividiert?

mfg

von Helmut S. (helmuts)


Lesenswert?

kay schrieb:
> Eine Frage an Helmut: Warum hast du bei der Kostenfunktion noch
> zusätzlich durch f dividiert?
>
> mfg

Diese Gewichtung mache ich, damit bei der Integration die Werte bei 
hohen Frequenzen nicht total überbewertet werden. Stell mal die 
Frequenzachse auf linear, dann siehst du, dass der wichtige untere 
Bereich zu "kurz" käme, wenn man keine Gewichtungsfunktion hätte.
Meine Gewichtungsfunktion hier ist Faktor 1/freq.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Läuft jetzt auch unter WinME. Ich weiß nicht warum. Zwischenzeitlich 
hatte ich den Rechner aber mal neugestartet.

von Abdul K. (ehydra) Benutzerseite


Angehängte Dateien:

Lesenswert?

1. Das mit der nicht notwendigen Phase habe ich probiert. Der Fitter 
kann es tatsächlich ohne diese Info. Das ermöglicht rein skalare 
Messungen, also eine simple einkanalige Soundkarte tuts!
Ich denke als Kriterium reicht: Lineare Schaltung ohne verstärkende 
Elemente. Oder ist jemand anderer Meinung?

2. Leider ist der Fitter nicht fähig, selbst passende Startwerte zu 
finden. Sobald man etwas weiter von den idealen Ergebniswerten startet, 
findet er nicht den Weg.



und dann das Problem :
3. So, der Realitycheck mit einer DCF77 Ferritantenne. Problem dabei: 
Ich kann mir nicht erklären, wieso LTspice beim Einlesen der realen 
Daten alles kleiner -40dB auf diese -40dB begrenzt. Höhere Werte sehen 
richtig aus. Dazu habe ich dann mal einige Testzeilen in den 
PWL-Abschnitt des SUBs reingeknallt.
Das verstehe ich nicht!

Anbei alle notwendigen Daten. In den FFT-Daten der Ferritantenne ist 
noch ein Auflösungsfehler der zu einem nicht vorhandenen Peak führt, 
wird gerade untersucht. Ist aber kein Fehler von LTspice und hier 
erstmal ohne Belang.

von Helmut S. (helmuts)


Lesenswert?

Hallo Abdul,
danke für die Frage 3.

DCF77.sub
Ändere den Wert für R1 auf 0.00001. Dann geht es bis -100dB.

* 2012-06-07 16:40:05.0 0.3662 49999.8779
*F [Hz]  Imp [Ohm]  Phase [ø]
.subckt captured 1 2
R1 1 10  0.00001
V1 10 11 0
B1 11 2 V=I(V1)  DB FREQ=
+49999.8779 -92.5 0

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Danke Helmut!
Habe das jetzt eigenständig um eine Null nochmals erweitert, damit ich 
bis -120dB gehen kann. Weiter brauch ich es nicht.

Kannst du mal erklären, was die Magie darin ist? Warum reicht nicht eine 
B-Quelle? Deine Spannungsquelle dient wohl der Strommessung, aber wozu 
ein Widerstand?

von Helmut S. (helmuts)


Lesenswert?

Ich muss intern einen Widerstand einfügen, damit man außen auch eine 
Spannungsquelle anschließen kann. Hätte ich intern direkt eine 
Spannungsquelle, dann würde das nicht gehen, da ich dann zwei 
Spannungsquellen parallel hätte. Das geht aber in SPICE nicht.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Du mußt ein Gott sein. Ich trau mich an deine Konstrukte gar nicht mehr 
ran.

von Kai K. (klaas)


Lesenswert?

>Du mußt ein Gott sein.

Ja, der Helmut kann was...

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Der Olymp ist nur etwas sehr übersichtlich. Drei Leser, drei Downloads. 
Dabei ist das ne geile Geschichte. Kann man ja beliebig abwandeln für 
eigene Interessen.

Das mit der unnötigen Phase ist einen eigenen Hüpfer wert.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Gibt es bei der PWL-Struktur auch ein Format bei dem ich nicht die 
Frequenz in jeder Zeile angeben muß? Mir ist aufgefallen, daß man z.B. 
mit geschweiften Klammern berechenbare Ausdrücke während des Einlesens, 
benutzen kann. Leider gibt mir SpectrumLab keine Einzelfrequenzen zu den 
FFT bins mit aus. Die muß ich dann reinfummeln und auch noch 
sequenzieren.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Morgendlich nochmal das mit der Frequenz. Ich habe die Struktur auf das 
hier reduziert:
* 2012-06-07 23:43:34.9 46.8750 0.0000
*F [Hz]  Imp [Ohm]  Phase [ø]
.subckt captured 1 2
.param f=46.8750
R1 1 10  0.0000001
V1 10 11 0
B1 11 2 V=I(V1)  DB FREQ=
+{0*f} -75.2 0
+{1*f} -97.6 0
+{2*f} -90.7 0
+{3*f} -82.9 0
+{4*f} -83.9 0
+{5*f} -85.9 0
+{6*f} -85.5 0
+{7*f} -80.2 0

Nur die Hochzählerei kriege ich nicht raus. Habe mir die bekannten 
PWL-Varianten alle angeschaut, aber alle wollen die Frequenz und die 
Phase in der Liste explizit drinnenhaben. Gibts da keinen Trick die zu 
entfernen, also nur einmal zu definieren? Und dann die Frequenz 
automatisch hochsteppen lassen!

Da muß ich mich ja doch mit Perl schon jetzt rumquälen. Früher hatte ich 
mal einen Texteditor (auf dem Mac), der automatisch Zeilennummern 
einsetzen konnte für ganze Listen. Gibts da einen der auf Windoof läuft?


Warum hat die Liste eigentlich jeweils ein + am Zeilenanfang. Scheint 
mir ein Trick zu sein, um im Time-Domain die Frequency-Domain 
abzubilden. Oder sehe ich das falsch?

von Helmut S. (helmuts)


Lesenswert?

> Warum hat die Liste eigentlich jeweils ein + am Zeilenanfang. Scheint
mir ein Trick zu sein, um im Time-Domain die Frequency-Domain
abzubilden. Oder sehe ich das falsch?

Das + am Anfang der Zeile haben die Väter von SPICE vor 40 Jahren 
definiert.
Das bedeutet nichts anderes als eine Fortsetzung der vorherigen Zeile.
Zum Glück gibt es das. Sonst müsste man elend lange Zeilen machen.
Das + geht übrigens mit jeder Art von SPICE-Zeilen.


B1 11 2 V=I(V1)  DB FREQ=
+{0*f} -75.2 0
+{1*f} -97.6 0

Das macht SPICE beim Einlesen daraus.

B1 11 2 V=I(V1)  DB FREQ= {0*f} -75.2 0 {1*f} -97.6 0

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Stimmt, hatte ich mit dem + für Werterhöhung verwechselt.

Aber auch in deinem Vorschlag bleibt f jeweils für jeden Bin drinnen. Da 
kann wohl nur Mike was dran ändern.

Vielleicht kann das Excel, hm. Aber bevor ich Excel lerne, dann lieber 
Perl ;-)

von Helmut S. (helmuts)


Lesenswert?

> Aber auch in deinem Vorschlag bleibt f jeweils für jeden Bin drinnen.
> Da kann wohl nur Mike was dran ändern.

So groß ist der Aufwand für den Anwender nicht.
Mike macht da bestimmt keine Extralösung, wenn brauchbare Standards 
(SPICE-Syntax) existieren und bereits implementiert sind.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Hm. Du meinst ich soll bei HSPICE gucken gehen...

Aber mir fällt gerade was auf, was wenn erstes + für Zeilenanhängung und 
zweites + für Werterhöhung. Dann hätte ich eine Konstante. Werde ich mal 
probieren.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Scheint nicht zu gehen. Habe es in diversen Varianten getestet. Seltsam.
Selbst das geht nicht:
+ {+46.8750} -75.2 0

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Zum HP4194 gibts von Agilent noch diverse Applikationsschriften:
http://www.home.agilent.com/agilent/facet.jspx?k=HP4194&neighborhood=ETM&kt=1&cc=DE&lc=ger&homesearch=Search&searchbtn=Suche

zum Beispiel http://cp.literature.agilent.com/litweb/pdf/5950-2882.pdf
"Impedance Characterization of Resonators using the 4194A Impedance / 
Gain-Phase Analyzer (AN 339-1)" von 1985, darin sind auf Seite 4 die 
fünf Ersatzschaltungen zu sehen.

im HP-Journal stand im Jan 1980 nur etwas zum Vorgänger HP4191:
http://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/hpjindex.html#1981

Der 4195 hatte wohl dieselbe Funktion wie der 4194, dazu habe ich hier 
ein gedrucktes Einführungs-Handbuch (deutsche Ausgabe) und auch das oben 
erwähnte Impedance Measurement Handbook.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Christoph Kessler (db1uq) schrieb:
> Zum HP4194 gibts von Agilent noch diverse Applikationsschriften:
> 
http://www.home.agilent.com/agilent/facet.jspx?k=HP4194&neighborhood=ETM&kt=1&cc=DE&lc=ger&homesearch=Search&searchbtn=Suche
>
> zum Beispiel http://cp.literature.agilent.com/litweb/pdf/5950-2882.pdf
> "Impedance Characterization of Resonators using the 4194A Impedance /
> Gain-Phase Analyzer (AN 339-1)" von 1985, darin sind auf Seite 4 die
> fünf Ersatzschaltungen zu sehen.
>
> im HP-Journal stand im Jan 1980 nur etwas zum Vorgänger HP4191:
> http://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/hpjindex.html#1981
>

Danke Christoph. Werde ich lesen.


> und auch das oben
> erwähnte Impedance Measurement Handbook.

Das ist online.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Stimmt, meine gedruckte Version ist wesentlich älter
http://cp.literature.agilent.com/litweb/pdf/5950-3000.pdf (von 2009)
ab PDF-Seite 124 sind die fünf Modelle mit je drei bzw vier Elementen.

von Abdul K. (ehydra) Benutzerseite


Angehängte Dateien:

Lesenswert?

So, das ganze Spektrum ist enthalten. Ich habe noch die Meßdaten per 
Hand auf absoluten Pegel gebracht.

Muß leider erstmal aufgeben trotz einigen Versuchen u.a. Einschränkung 
des Frequenzbereichs. Der Fitter findet keine Lösung. Vielleicht liegts 
an dem Rauschen. Ein Mensch kann ohne viel Aufwand den resonanten 
Bereich erkennen.

Vielleicht will ja jemand spielen. Im Generator sind die gemessenen 
Ersatzwerte der Ferritantenne, wobei der R der Spule nur den 
DC-Widerstand beeinhaltet. Also nicht perfekt.
In der FFT zeigt die reale Antenne aber klar die Impulse von DCF77.

von Helmut S. (helmuts)


Angehängte Dateien:

Lesenswert?

Die Lösung ist einfach.
Man muss hier die Daten auf den Zielbereich beschränken und eventuell 
sogar noch filtern. Ein einfacher Bandpass bei 77,5kHz kann nicht 
mehrere Peaks haben.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Das sind echte Daten direkt aus der Ferritantenne. Also sind auch einige 
Peaks durch Sender drinnen.
Die Frage stellt sich einfach, wie man dem Optimizer beibringt was 
wichtig und was unwichtig. Die Gewichtungsfunktion ist das Problem.
Auch weiß ich nicht, was er zu dem Grundrauschen sagt.

Speziell bei der Ferritantenne wäre es auch praktisch gesehen, nicht 
möglich diese komplett abzuschirmen und dann einen Rauschgenerator als 
Quelle zum Vermessen zu benutzen. Sobald man eine Ferritantenne mit nur 
etwas besserem Q versucht irgendwie abzuschirmen, wird sie total 
verstimmt! Bei einem Q von z.B. mehreren hundert, reicht das bloße 
Sitzem vor dem Meßaufbau für ordentlich andere Werte.
Schon die Frage, ob Scope während der Messung dran oder ab, ist ein 
Problem. Die zusätzliche Erdverbindung verstimmt bereits deutlich die 
Antenne.

Um zu prüfen, ob ich keinen Mist mache, habe ich die PAL-Frequenz Peaks 
drinnengelassen, also das TV im gleichen Raum blieb an.
Das sind so mehr oder weniger die einzigen Peaks die man aus dem 
Spektrum noch entfernen könnte.

Das Ersatzmodell für die Antenne ist auch erstmal in seiner Struktur ok.

Ich werde mal eine andere Form der FFT benutzen und schauen.

von Abdul K. (ehydra) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hm. Da fehlt noch das Diagramm, welches Helmut selbst erzeugte. Hatte 
ich wohl vergessen heute morgen hochzuladen.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Zur Messung von RLC-Bauteilen mit der Soundkarte gibt es hier ein 
Vortragsskript von DL4SDC:
http://www.p26.org/p26/vortraege/rlc/rlc-meter.pdf
http://www.p26.org/p26/vortraege/rlc/rlcmeter-20051108.tar.gz  Source 
dazu
http://www.p26.org/p26/vortraege/rlc/rlcmeter.static.zip Objectcode

Vom gleichen Autor gibt es noch einen Artikel im Praxisheft18 der AATiS:
http://www.aatis.de/content/praxisheft-18

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ich habe noch weiter mit dem Fitter gespielt, bin aber nicht wirklich 
erfolgreich gewesen.

Erst habe ich die FFT in SpectrumLab durch eine FFT in LTspice ersetzt. 
In der Hoffnung, eine längere Aufzeichnung wird weicher ohne den 
heftigen Rauschteppich. Das kann man in SL gut sehen, wenn man die 
Anzahl der Bins erhöht.
Dazu wurde in LTspice ein längeres Stück Samples (20 Sekunden) von der 
Soundcard eingelesen. Irgendwie ist die FFT in beiden Programmen aber 
sehr unterschiedlich implementiert, so daß in SL 2048 bins kein Problem 
sind, in LTspice aber 2 Millionen bins notwendig sind, damit die obere 
Grenzfrequenz die 100KHz erreicht. Also ist das kein toller Weg. Die 
entstehende exportierte FFT-Datei ist 100MB groß! Eine Länge von einer 
Sekunde brachte auch keinen Fortschritt.

Dann habe ich mit dem Frequenzbereich der Simulation gespielt. Da sieht 
es so aus, daß diese möglichst symmetrisch zur f0 Wunschfrequenz sein 
sollte, dann läuft der Fitter am besten. Vielleicht wäre eine 
geometrische Relation sogar noch besser?

Weiter habe ich die Anzahl der Stützfrequenzen variiert. Auch hier kein 
eindeutiges Ergebnis. Eine Umstellung von linear auf dekadisch scheint 
leicht besser.

Desweiteren wurde die Cost-Funktion in diversen Abwandlungen 
ausgetestet. Auch in einer Variante, die f0 konzentrisch arbeitet. Hat 
nichts gebracht.

Dann habe ich versucht, die Verstärkung beider Kanäle z und z1 nominal 
gleich zu machen. Das verändert das Fitter-Verhalten sehr stark. Nur 
leider weiß ich nicht, wie man eine Fitter-Funktion bauen könnte, die 
diese Verstärkungsabhängigkeit eliminiert. Bloßes Einführen einer 
weiteren Variable, die durch den Fitter automatisch als 5. Variable 
mitoptimiert wird, hat nur Chaos verursacht. Vielleicht müßte man hier 
die Gewichtung der Freiheitsgrade auch noch unterschiedlich machen. Die 
sind ja momentan alle gleichberechtigt und nur durch die Cost-Funktion 
miteinander verknüpft.

Mir scheint es so, daß der Optimierer immer dann eine akzeptable Lösung 
findet, wenn die Voreinstellung den Peak in den Bereich des Bandpasses 
bringt. Er dann also nur noch links oder rechts den Berg hoch optimieren 
muß. Ist er weiter weg, dann verrennt er sich total.

Ich bin also erstmal am Ende mit dem Latein.


Dann noch ne Frage zur Cost-Funktion nach Helmut:
In deiner Funktion wertest du nur die Magnitude aus, richtig? Also die 
jeweilige Phase bleibt unberücksichtigt. Ich stelle mir das Ignorieren 
der Phase als optimal vor, wenn man eine Messung machte die diese nicht 
beeinhaltet.

von Abdul K. (ehydra) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich wollte ja schon fast erstmal aufgeben, aber nach einigem Überlegen 
dann: Hier eine neue Version.
Ich habe die Cost-Funktion so umgeschrieben, daß sie nun unabhängig vom 
absoluten Pegel ist. Der ist ja zumindest bei einer Messung als Antenne 
mit nur einem Rauschteppich durch die Atmosphäre nicht definierbar.
Damit wird sie offensichtlich wesentlich stabiler. Nun kann ich sogar 
den Frequenzbereich völlig großzügig maximal machen und es 
funktioniert. War vorher undenkbar.

Vielleicht geht ja noch mehr durch Verbesserung der Cost-Funktion? 
Spielt mal damit!

Sieht danach aus, daß nun an anderen Baustellen optimiert werden muß:
- Ersatzmodell der Antenne
- bessere Messung
Also was ich meine: Vermutlich kann das Fitting momentan gar nicht 
besser werden.


Das ZIP enthält alle notwendigen Dateien außer LTspice und Tinyperl.
Ergebnis_2a: Vollansicht des Spektrums
Ergebnis_2b: Zoom in die interessante Region

Die Startwerte liegen ordentlich neben dem Maximum, so daß der Fitter 
nicht zufällig zu nahe am Optimum startet.

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.