Forum: Analoge Elektronik und Schaltungstechnik Funktion fitting zur Phasenbestimmung – Probleme bei Drift


von Chantalle (chantalle2000)


Lesenswert?

Hallo zusammen 😊

ich bin neu hier und arbeite gerade an einer Praktikumsaufgabe.

Bei einem LCR-Messgeräte-Projekt soll ich mittels Fitting einer 
Sinusfunktion die Phasenlage zwischen Spannung und Strom bestimmen. Das 
funktioniert anfangs gut: Ich messe mit einem STM32 beide Signale (Strom 
und Spannung) und passe dann jeweils Phase, Amplitude und Offset der 
Sinuskurven für den Strom an, um die Phasendifferenz zu berechnen.

Anfangs stimmen die Ergebnisse gut mit dem Oszilloskop überein.
Allerdings driftet der Messfehler (Differenz zwischen Oszi und STM32) 
über längere Zeiträume (mehrere Stunden, z. B. über Nacht), obwohl das 
Messobjekt unverändert ist und ein Referenz-LCR-Meter am nächsten Tag 
den gleichen Wert liefert.

Jetzt bin ich mir unsicher:

Liegt das Problem vielleicht am Fit?

Oder stört der Offset den Nulldurchgang, sodass die Phase scheinbar 
„wandert“?

Gibt es eine einfache Möglichkeit, die Messung so zu stabilisieren – 
z. B. softwareseitig oder schon beim Messen?

Die Aufgabe ist es, die Phasenmessung auch über längere Zeiträume 
verlässlich zu vergleichen.

Danke schon mal für Tipps!

Liebe Grüße
Chantalle 2000 😊

von Rainer W. (rawi)


Lesenswert?

Chantalle schrieb:
> Oder stört der Offset den Nulldurchgang, sodass die Phase scheinbar
> „wandert“?

Was meinst du mit "Nulldurchgang"?
Der Nulldurchgang eines Sinus liegt nur dann bei Phase 0° bzw. 180°, 
wenn dem Sinus keine DC-Komponente überlagert ist.
Es kommt also auf dein Fitting an, ob es mit einem Offset umgehen kann.

: Bearbeitet durch User
von Chantalle (chantalle2000)


Lesenswert?

Rainer W. schrieb:
> Chantalle schrieb:
>> Oder stört der Offset den Nulldurchgang, sodass die Phase scheinbar
>> „wandert“?
>
> Was meinst du mit "Nulldurchgang"?
> Der Nulldurchgang eines Sinus liegt nur dann bei Phase 0° bzw. 180°,
> wenn dem Sinus keine DC-Komponente überlagert ist.
> Es kommt also auf dein Fitting an, ob es mit einem Offset umgehen kann.

Nein, das ist die Frage "Phasenlage zwischen Spannung und Strom 
bestimmen" wie beschrieben,

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Vielleicht läuft eine Variable hoch.

von Cartman E. (cartmaneric)


Lesenswert?

Eine Phasenbestimmung nur am Nulldurchgang festzumachen, ist ja auch
übler Murks. Da reicht schon ein DC-Offset um die Phasenbestimmung
in die Irre zu führen.
Richtig würde man die Summe der Abstandsquadrate zu einer Referenz
bestimmen, und durch Iteration der Phase der Referenz das Minimum
suchen. Das ist natürlich ein wenig aufwendiger.

von Chantalle (chantalle2000)


Lesenswert?

Cartman E. schrieb:
> Eine Phasenbestimmung nur am Nulldurchgang festzumachen, ist ja auch
> übler Murks. Da reicht schon ein DC-Offset um die Phasenbestimmung
> in die Irre zu führen.
> Richtig würde man die Summe der Abstandsquadrate zu einer Referenz
> bestimmen, und durch Iteration der Phase der Referenz das Minimum
> suchen. Das ist natürlich ein wenig aufwendiger.

wie geschrieben
"Bei einem LCR-Messgeräte-Projekt soll ich mittels Fitting einer
Sinusfunktion die Phasenlage zwischen Spannung und Strom bestimmen. Das
funktioniert anfangs gut: Ich messe mit einem STM32 beide Signale (Strom
und Spannung) und passe dann jeweils Phase, Amplitude und Offset der
Sinuskurven für den Strom an, um die Phasendifferenz zu berechnen."

Genau das macht die Funktion ja, also wieso ist es denn jetzt Murks?

von Cartman E. (cartmaneric)


Lesenswert?

Chantalle schrieb:
> Genau das macht die Funktion ja, also wieso ist es denn jetzt Murks?

Ja dann ist ja alles Gut.

von Henrik V. (henrik_v)


Lesenswert?

Abtastung synchron zur Anregung?
Fitverfahren?
Sinus geht als linear least Square
Kann auch einen Offset mit fitten.
Liefert Amplitude und Phase nur begrenzt von Noise bzw Messedauer.

von Chantalle (chantalle2000)


Lesenswert?

Dieter D. schrieb:
> Vielleicht läuft eine Variable hoch.

Im Prinzip ist das bei Software auch mein erster Gedanke, aber der Code 
ist so aufgebaut das es keine Variablen gibt, die von Messung zu Messung 
angepasst werden.
Aber vielleicht lass ich mir die trotzdem nochmal alle anzeigen, weil 
wenn ein Fehler drin ist, dann ist das ja unbeabsichtigt, vielleicht 
greift was auf den Speicher zu.

von Chantalle (chantalle2000)


Lesenswert?

Henrik V. schrieb:
> Abtastung synchron zur Anregung?
> Fitverfahren?
> Sinus geht als linear least Square
> Kann auch einen Offset mit fitten.
> Liefert Amplitude und Phase nur begrenzt von Noise bzw Messedauer.

Also bei mir ist das quasi synchron, weil sowohl DAC als auch ADC 
denselben Takt vom STM32 benutzen – also nicht „wild asynchron“, sondern 
beide hängen am gleichen Timer-Teiler, wenn ich das richtig verstanden 
hab.

Ich lasse den DAC einen Sinus ausgeben und messe dann mit zwei 
ADC-Kanälen gleichzeitig:

einmal die Spannung direkt am Prüfling

und den Strom (über einen Messwiderstand in Reihe zum Prüfling)

Pro Messung erfasse ich genau eine oder zwei Perioden, aktuell sind’s 
512 Werte pro Kanal im DMA-Modus. Die sind dann gleichmäßig verteilt 
über den Sinus.

Im Speicher sieht das so aus: Es kommen abwechselnd Werte rein – erst 
einer für U, dann zwei für I, dann wieder zwei für U, usw. Am Ende 
bleibt ein einzelner U-Wert übrig, sodass ich insgesamt 1024 Messwerte 
habe.

U I I U U I I U U I I U U I I U U I I U U I I ...I I U
dann werden die beiden ersten U gemittelt und die beiden ersten I, das 
ist mein erster neuer Wert
dann 3. und 4. für den zweiten neuen Wert

Danach bilde ich für jedes Messpaar den Mittelwert, sodass ich am Ende 
256 Werte für U und 256 für I habe.

Dann passe ich die neuen Stromkurve (I) so an, dass sie möglichst gut 
zur neunen Spannungskurve (U) passt – also Offset, Amplitude und Phase 
werden so geändert, dass die Summe der Fehlerquadrate möglichst klein 
ist (klassisches Least Squares-Fit). Daraus ergibt sich dann die 
Phasenlage zwischen Spannung und Strom.
Aus der Amplitude und der Phase kann ich dann den komplexen Widerstand 
berechnen und mit f dann L oder C

Aber wenn ich jetzt die Langzeitmessung sehe, dann läuft Oszi zu STM weg

Ich hoffe, das war halbwegs verständlich beschrieben

von Henrik V. (henrik_v)


Lesenswert?

Dann würde ich U und I alternierend messen, Mittelwertbildung erfolgt ja 
über den Fit. Der Phase- bzw Timedelay durch das Multiplexing ist fix, 
kann man rechnen und oder messen.
Mach dich mal schlau über den Sinusfit , Quellen kann ich Dir morgen 
schicken. Beim Sinusfit musst du die Matrix invertieren, aber das 
brauchst Du nur einmal (pro Frequenz) zu machen.
Ergebnis ist dann pro Kurve a*sin(w)+b*cos(w)+C
Über arctan dann die Phasen und dann die Phasendifferenz ...
Und dann so viele Perioden wie der Speicher hergibt ;)

Grundregel der Signalverarbeitung: Das überlegene Verfahren integriert 
länger:D

von Chantalle (chantalle2000)


Lesenswert?

Henrik V. schrieb:
> Dann würde ich U und I alternierend messen, Mittelwertbildung erfolgt ja
> über den Fit. Der Phase- bzw Timedelay durch das Multiplexing ist fix,
> kann man rechnen und oder messen.

Ja richtig, kann man messen und ist dann fix, in der Theorie ergibt sich 
aber ein minimaler Fehler wenn die Frequenz des STM nicht stabil ist, 
das ist bei 200 ppm nicht weltbewegend, das Projekt hat aber auch 
theoretische Hintergründe "unnötige" Fehlerquellen vollständig 
auszuschließen

> Mach dich mal schlau über den Sinusfit , Quellen kann ich Dir morgen
> schicken. Beim Sinusfit musst du die Matrix invertieren, aber das
> brauchst Du nur einmal (pro Frequenz) zu machen.

Ich denke schon dass Sinus Fit funktioniert, weil wenn ich verschiedene 
Phasen durch Austausch des Messobjektes habe, dann werden die Phasen 
jeweils korrekt angezeigt wenn ich das mit dem Oszilloskop vergleiche.

> Ergebnis ist dann pro Kurve a*sin(w)+b*cos(w)+C
> Über arctan dann die Phasen und dann die Phasendifferenz ...
> Und dann so viele Perioden wie der Speicher hergibt ;)

Das Problem ist die Abweichung zum Oszi über einen längeren Zeitraumm, 
der STM zeigt teils weniger Veränderung. Deswegen die Frage, was muss 
ich für die Phasenberechnung anders machen als das Signal wie es 
gemessen wird zu U zu fitten, ich habe Offset, Phase und Amplitude als 
Variablen. Muss ich den Offset doch noch in die Phase reinrechnen, ich 
denke doch eher nicht.

> Grundregel der Signalverarbeitung: Das überlegene Verfahren integriert
> länger:D

ich habe das Verfahren auch über mehrere Perioden getestet, 2 und 4, 
aber kein Unterschied, obwohl jede Langzeitmessung immer etwas anders 
aussieht, aber die Größenordnung ähnlich.

Die Phasendrift zum Oszi ist so max 1° meist weniger, also nicht so viel 
das ich glaube das die Formel für den Fit falsch ist, da würde ich 
größere Fehler erwarten und nicht das die so "driften"

Aber die 1° sind entscheidend wenn ich L oder C bestimmen will und die 
Phase zwischen Strom und Spannung nicht nahe genug an 90° ist

von Hippelhaxe (hippelhaxe)


Lesenswert?

Chantalle schrieb:

> Jetzt bin ich mir unsicher:
>
> Liegt das Problem vielleicht am Fit?

Hmm.
Also ich will es so ausdrücken: Deine Schilderung wirkt etwas
planlos -- aber ich kann nicht beurteilen, ob schon die Auf-
gabe planlos gestellt ist, oder nur Dein Vorgehen nicht optimal
ist.

Mir wird nicht klar, was feste Vorgaben sind, was als Vorschläge
oder Empfehlungen aufzufassen ist, und wo Freiheitsgrade für
eigene Entscheidungen bestehen.


> Oder stört der Offset den Nulldurchgang, sodass die Phase
> scheinbar „wandert“?

Kann man ohne Kenntnis des Algorithmus/Programms m.E. nicht
beantworten.


> Gibt es eine einfache Möglichkeit, die Messung so zu
> stabilisieren – z. B. softwareseitig oder schon beim
> Messen?

???

Ich würde einen als zuverlässig bekannten zweikanaligen
DDS-Generator direkt an den U- und I-Kanal anschließen
und schauen, ob die Phasendrift immer noch auftritt.

Noch einfacherer Test als Vorstufe: I- und U-Kanal am µC
verbinden, EINEN Generator anschließen und schauen, ob
zuverlässig 0° Phasenverschiebung gemessen werden.


> Die Aufgabe ist es, die Phasenmessung auch über längere
> Zeiträume verlässlich zu vergleichen.

???

von Rainer W. (rawi)


Lesenswert?

Chantalle schrieb:
> Dann passe ich die neuen Stromkurve (I) so an, dass sie möglichst gut
> zur neunen Spannungskurve (U) passt – also Offset, Amplitude und Phase
> werden so geändert, dass die Summe der Fehlerquadrate möglichst klein
> ist (klassisches Least Squares-Fit).

Warum möchtest du überhaupt irgendetwas anpassen?
Rechne die Werte doch direkt aus. Da du den Sinus selber ausgibst, 
kennst du seine Amplitude und die Zeit des Nulldurchgangs. Du musst dir 
dazu nur auch noch den Cosinus erzeugen und kannst dann deine Messdaten 
einmal mit dem Wert des Sinus und einmal mit dem Wert des Cosinus 
multipliziert über komplette Perioden aufintegrieren (s.u. 
Orthogonalität Seite 1-3). Phase und Amplitude kannst du direkt aus den 
beiden Integralen berechnen und irgendein Offset kann dir egal sein. 
Oder brauchst du den Offset irgendwozu?
Stichwort: Additionstheoreme für Sinus und Kosinus,
Orthogonalität (S.1-3) 
https://vhm.mathematik.uni-stuttgart.de/Vorlesungen/Fourieranalysis/Folien_Reelle_Fourier-Reihe.pdf

Chantalle schrieb:
> Ich lasse den DAC einen Sinus ausgeben und messe dann mit zwei
> ADC-Kanälen gleichzeitig:

: Bearbeitet durch User
von Hippelhaxe (hippelhaxe)


Lesenswert?

Rainer W. schrieb:

> Warum möchtest du überhaupt irgendetwas anpassen?
> Rechne die Werte doch direkt aus. Da du den Sinus
> selber ausgibst, kennst du seine Amplitude und die
> Zeit des Nulldurchgangs.

Stimmt zwar -- ist aber für die Rechnung gar nicht
notwendig.


> Du musst dir dazu nur auch noch den Cosinus erzeugen
> und kannst dann deine Messdaten einmal mit dem Wert
> des Sinus und einmal mit dem Wert des Cosinus
> multipliziert über komplette Perioden aufintegrieren
> (s.u. Orthogonalität Seite 1-3). Phase und Amplitude
> kannst du direkt aus den beiden Integralen berechnen

Korrekt.


> und irgendein Offset kann dir egal sein.

Hier habe ich erstmal gewaltig gestutzt -- aber Du hast
Recht: Konstante und Sinus (bzw. Cosinus) sind ja AUCH
orthogonal... man braucht den Offset tatsächlich nicht.

von Rainer W. (rawi)


Lesenswert?

Hippelhaxe schrieb:
> Stimmt zwar -- ist aber für die Rechnung gar nicht
> notwendig.

Naja, die Anzahl der Summanden für das Integral, i.e. die Periodendauer 
braucht man schon, damit z.B. Offsets sauber rausfallen. Die Amplitude 
geht in das Integral als Faktor ein.

Hippelhaxe schrieb:
> .. man braucht den Offset tatsächlich nicht.

Die Methode kann den Wert des Offsets nicht liefern. Man könnte 
allerdings zusätzlich das Signal über eine Periode integrieren und hätte 
ihn dann. Ob der Wert irgend wozu gebraucht wird, war eine Frage.

: Bearbeitet durch User
von Rick (rick)


Angehängte Dateien:

Lesenswert?

Rainer W. schrieb:
> Naja, die Anzahl der Summanden für das Integral, i.e. die Periodendauer
> braucht man schon, damit z.B. Offsets sauber rausfallen.
Dann sprechen wir hier offensichtlich von verschiedenen Methoden.

Wenn ich mir eine handvoll Messdaten hernehme und da einen Fit mit der 
Funktion
drauflege, dann bekomme ich schon brauchbare Werte für Amplitude, 
Frequenz, Phase und Offset.
Es muß nur der zeitlich Abstand zwischen den Samples bekannt sein.

Mit dem Fit kann man auch gleich prüfen, wie sinusförmig die Messwerte 
wirklich sind (unterste Kurve).

Bei der Anwendung hier dürfte es einfacher werden, da die Frequenz 
vorgegeben ist.


Chantalle schrieb:
> erst einer für U, dann zwei für I,
Warum so durcheinander?

Chantalle schrieb:
> Allerdings driftet der Messfehler über längere Zeiträume
Was passiert bei einem Widerstand z.B. 10 kOhm als Messobjekt?
Lass Dir doch die 512 Werte pro Kanal mal alle paar Minuten ausgeben und 
vergleiche die miteinander.

von Chantalle (chantalle2000)


Lesenswert?

Hippelhaxe schrieb:
> Chantalle schrieb:
>
>> Jetzt bin ich mir unsicher:
>>
>> Liegt das Problem vielleicht am Fit?
>
> Hmm.
> Also ich will es so ausdrücken: Deine Schilderung wirkt etwas
> planlos -- aber ich kann nicht beurteilen, ob schon die Auf-
> gabe planlos gestellt ist, oder nur Dein Vorgehen nicht optimal
> ist.
>

Was ist daran planlos, vielleicht ein bisschen zu kompakt, also es ist 
ein Projekt wie man ein LCR entwickelt, Baugruppen vorhanden die werden 
verschaltet und auf dem STM, Herzstück des LCR Meters der Algorithmus 
programmiert.
Bei der Phase die ermittellt wird läuft es zum Vergleichmessgereät über 
Zeit davon. Darum gehts,
>> Oder stört der Offset den Nulldurchgang, sodass die Phase
>> scheinbar „wandert“?
>
> Kann man ohne Kenntnis des Algorithmus/Programms m.E. nicht
> beantworten.
>
>
>> Gibt es eine einfache Möglichkeit, die Messung so zu
>> stabilisieren – z. B. softwareseitig oder schon beim
>> Messen?
>
> ???
>
> Ich würde einen als zuverlässig bekannten zweikanaligen
> DDS-Generator direkt an den U- und I-Kanal anschließen
> und schauen, ob die Phasendrift immer noch auftritt.
>
> Noch einfacherer Test als Vorstufe: I- und U-Kanal am µC
> verbinden, EINEN Generator anschließen und schauen, ob
> zuverlässig 0° Phasenverschiebung gemessen werden.

das ist ein guter Punkt, mit einem Generator als Quelle wo alles fix 
bleibt  kann ich Softwarefehler, ausschließen.
Aber wie geschrieben, es hat den Anschein, das der Offset eine Rolle 
spielt. Wenn es damit funktioniert kann ich Software als Fehler 
ausschließen und das es keinen Offset gibt, bleibt diese Möglichkeit 
bestehen.

>> Die Aufgabe ist es, die Phasenmessung auch über längere
>> Zeiträume verlässlich zu vergleichen.
>
> ???

Langzeitstabilität des Messgerätes

von Chantalle (chantalle2000)


Lesenswert?

Rainer W. schrieb:
>> Dann passe ich die neuen Stromkurve (I) so an, dass sie möglichst gut
>> zur neunen Spannungskurve (U) passt – also Offset, Amplitude und Phase
>> werden so geändert, dass die Summe der Fehlerquadrate möglichst klein
>> ist (klassisches Least Squares-Fit).
>
> Warum möchtest du überhaupt irgendetwas anpassen?

Ja, ist schon korrekt das es mehrere Lösungen gibt, natürlich kann ich 
für die Grundwelle die Fourier Komponenten bestimmen und dann habe ich 
auch die Phasenlage und Amplitude, das setzt aber voraus, das ich die 
Frequenz immer auch selber vorgebe wie ich es gerade mache, so das die 
Messung exakt ganzzahlige Perioden im Speicher lädt.

Es gibt auch andere Versuche, wo die Frequenz so eingestellt wird, das 
nicht exakt n Perioden in den Speicher passen und zwischen zwei Perioden 
auch nicht eine ganzzahlige Anzahl an Samples liegt.
Natürlich kann man dann auch erst die Frequenz genau bestimmen und dann 
mit bekannter Frequenz das Verfahren anwenden die Fourier Komponenten zu 
bestimmen, aber dann kann ich es eigentlich auch machen wie bisher.

Aber wenn ich es anders mache, wie soll dass das Problem mit der Drift 
lösen?

von Henrik V. (henrik_v)


Lesenswert?

Du weißt aber schon, das eine Phasenverschiebung durch Ableitung nur für 
einen reinen Sinus durch eine Zeitverschiebung gleichzusetzen ist?

von Henrik V. (henrik_v)


Lesenswert?

Die 'Drift' wird um Code liegen..
Andere Methoden machen andere Fehler.

Der 4 Parameter Sinusfit ist schon erfunden... Ist auch schon genormt .. 
anders als bei der FFT funktioniert der bei allen Frequenzen ohne 
Leakage ..
Ist halt 'etwas' rechenaufwendiger.

von Rainer W. (rawi)


Lesenswert?

Rick schrieb:
> Dann sprechen wir hier offensichtlich von verschiedenen Methoden.

Offensichtlich - ich sprach von einer Methode ohne Fitterei mit direkter 
Berechnung der Werte aus einem Integral über ganzzahlige Vielfache der 
Periodendauer, so wie in dem verlinkten PDF geschrieben.

Chantalle schrieb:
> ..., das setzt aber voraus, das ich die
> Frequenz immer auch selber vorgebe wie ich es gerade mache, so das die
> Messung exakt ganzzahlige Perioden im Speicher lädt.

Du schriebst, dass du den Sinus über den ADC ausgibst. Wo ist also das 
Problem.
Den Speicher bräuchtest du nur, wenn dein Rechner es nicht schafft, 
online die Integrationen zu rechnen.

: Bearbeitet durch User
von Chantalle (chantalle2000)


Lesenswert?

Henrik V. schrieb:
> Du weißt aber schon, das eine Phasenverschiebung durch Ableitung nur für
> einen reinen Sinus durch eine Zeitverschiebung gleichzusetzen ist?

Ja, um deine Frage zu beantworten,  weiß ich

Aber wie kommst darauf das ich was ableiten will

Wieso kommst du auf die idee das es kein sinus ist

von Chantalle (chantalle2000)


Lesenswert?

Rainer W. schrieb:
> Rick schrieb:
>> Dann sprechen wir hier offensichtlich von verschiedenen Methoden.
>
> Offensichtlich - ich sprach von einer Methode ohne Fitterei mit direkter
> Berechnung der Werte aus einem Integral über ganzzahlige Vielfache der
> Periodendauer, so wie in dem verlinkten PDF geschrieben.
>
> Chantalle schrieb:
>> ..., das setzt aber voraus, das ich die
>> Frequenz immer auch selber vorgebe wie ich es gerade mache, so das die
>> Messung exakt ganzzahlige Perioden im Speicher lädt.
>
> Du schriebst, dass du den Sinus über den ADC ausgibst. Wo ist also das
> Problem.
> Den Speicher bräuchtest du nur, wenn dein Rechner es nicht schafft,
> online die Integrationen zu rechnen.
Das problem ist, das es ja nicht die ursache für die ursprüngliche 
Fragestellung löst. Es gibt alternativen, ok, wusdte ich auch vorher.
Wir haben uns aber für diese verfahren entschieden, weil du es anders 
machen würdest ist dieser ansatz ja nicht falsch.

Und die frage wo kommt die drift her klärt das nicht

von Henrik V. (henrik_v)


Lesenswert?

Wenn nach einigen Stunden die Ergebnisse nicht mehr passen, jedoch ein 
Neustart Deines Systems diesen Fehler beseitigt, wird es wohl an der 
Software liegen.

Chantalle schrieb:
> Henrik V. schrieb:
>> Du weißt aber schon, das eine Phasenverschiebung durch Ableitung nur für
>> einen reinen Sinus durch eine Zeitverschiebung gleichzusetzen ist?
>
> Ja, um deine Frage zu beantworten,  weiß ich
>
> Aber wie kommst darauf das ich was ableiten will
>
> Wieso kommst du auf die idee das es kein sinus ist

Die Ableitung ( oder Integration) besorgt dir die Impedanz (L oder C), 
die Du messen möchtest.

Wenn in Deiner Anregung Oberwellen und andere Störungen wie Brummen drin 
sind, dann kann dies bei Deinem Ansatz U und I zu skalieren und zu 
verschieben um Aussagen zur Impedanz zu machen, dazu führen dass das 
Fehler-Minimum nicht an der gewünschten Stelle liegt. (Kann man sicher 
auch mal schön simulieren..)

Wenn Du die Anregung kontrollieren kannst, dann wäre eine synchrone 
Abtastung über ganze Perioden (je mehr desto besser) mit FFT und 
Betrachtung des ensprechenden BINs am einfachsten.
Wenn die Anregung asynchron ist und man bei der FFT Leakage hat, kann 
man das mit den NachbarBINS korrektur rechnen.
Oder man nimmt einen Sinusfit nach IEEE-STD-1057, der funktioniert bei 
beliebigen Frequenzen und Abtastzeitpunkten.  Hier hatte ich mal ein 
paar Quellen dazu verlinkt:
Beitrag "Re: 100A Stromquelle für Messzwecke"
(Englisch und mit Mathe ;) )

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Chantalle schrieb:
> Und die frage wo kommt die drift her klärt das nicht

Richtig, es vermeidet die Frage.

Ihr werdet die Ursache für die Drift schon ermitteln müssen. Alleine 
eure Beobachtung, dass sie da ist, reicht dafür nicht aus. Das 
anzuwendende Verfahren heißt "debuggen". Die hier im Thread nicht 
genannten Details zum verwendeten Algorithmus könnten schon eher helfen. 
Wie sehen die erfassten Daten aus und was rechnet ihr genau damit?

Chantalle schrieb:
> Die Phasendrift zum Oszi ist so max 1° meist weniger

Für die Drift müsste die Einheit ein s^-1 o.ä. enthalten.
Meinst du Phasenlage? Was genau meinst du mit "Phasendrift zum Oszi"?

: Bearbeitet durch User
von Chantalle (chantalle2000)


Lesenswert?

Rainer W. schrieb:
> Chantalle schrieb:
>> Und die frage wo kommt die drift her klärt das nicht
>
> Richtig, es vermeidet die Frage.
>
> Ihr werdet die Ursache für die Drift schon ermitteln müssen. Alleine

ok, dann hätte ich hier nicht fragen sollen

> Chantalle schrieb:
>> Die Phasendrift zum Oszi ist so max 1° meist weniger
>
> Für die Drift müsste die Einheit ein s^-1 o.ä. enthalten.
> Meinst du Phasenlage? Was genau meinst du mit "Phasendrift zum Oszi"?

über mehrere Stunden betrachtet gehen die Phasen im Bereich 1/10° rauf 
und runter, bei STM wie auch beim Oszi, aber die Differenz zum Oszi 
veränderts sich, läuft manchmal wieder zurück das am Ende gleich ist, 
manchmal aber auch weiter weg

von Hans W. (Firma: Wilhelm.Consulting) (hans-)


Lesenswert?

wie machst du den fit über mehrere stunden???

arbeitest du da vielleicht mit kontinuierlicher phase???

wenn du da z.B mit einem double in eine sin/cos funktion reingehst, dann 
wundert mich das überhaupt nicht... da stoßt du einfach irgendwann an 
die numerischen grenzen.

73

von Chantalle (chantalle2000)


Lesenswert?

Hans W. schrieb:
> wie machst du den fit über mehrere stunden???
>
> arbeitest du da vielleicht mit kontinuierlicher phase???
>
> wenn du da z.B mit einem double in eine sin/cos funktion reingehst, dann
> wundert mich das überhaupt nicht... da stoßt du einfach irgendwann an
> die numerischen grenzen.
>
> 73

Nein einen Fit mache ich nicht über mehrere stunden, sondern über 1, 2 
oder 4 perioden, im moment, es soll aber auch über nicht ganzzahlige 
perioden später funktionieren.

Wad och über mehrere Stunden mache, ist den Fit berechenen und das 
ergebnis ablegen  da fas mit dem Fit aber schnell geht macht das system 
einen delay, so dass ich nach 10 s die nächste messung starte.

Dann habe ich 360 werte pro stunde und nach 20 bis 12 stunden dann 
entsprechend
Parallel hängt das oszilloskop dran und misst den abstand zwischen den 
phasen, d.h. alle 10 sekunen, aber nicht richtig synchron wird eine 
messung abgelegt und ein python script berechnet die phasendifferenz, 
süäter offline.

So vergleiche ich dann die messungen miteinander über mehrere stunden, 
das ist so aber ein standardverfahren bei der überprüfung von 
messgeräten.

von Henrik V. (henrik_v)


Lesenswert?

Nur mal zum Vergleich: Ich messe die komplexe Übertragungsfunktion von 
Vertstärkern (Signalkonditionierer) mit einem Signalgenerator und 2 
ADCs, alles schön synchronisiert. Ebenfalls mit Sinusanregung (5mHz bis 
300 kHz).
Eine Messung ist über 5 bis 500 Perioden. So ~50k Sample
Auf beide Signale wird ein 3 Parameter Sinusfit (nach IEEE-STD-1057) 
angewendet.
Bei 50 Wiederholungen liegt die rel. Standardabweichung des 
Amplitudenverhälnisses bei kleiner 2 ppm (wenn der Verstärker wenig 
rauscht) und die Standardabweichung der Phasendifferenz liegt bei 
0,0003°
(leicht steigend zu höheren Frequenzen, bei 100 kHz etwa 5 mal mehr)
(Achtung, das ist nicht die Messunsicherheit! ;))

Das ist der Grund, warum ich vom Sinusfit nach 1057 überzeugt bin.
Es gibt Leute, die weitaus mehr von Mathe und Signaltheorie verstehen 
und die behaupten, dass dies Verfahren das mathematisch beste Ergebnis 
liefert.
Wenn man genau n Perioden erfasst, dann ist die FFT mit 
Rechteckfenster identisch, ansonsten ist das Sinusfitverfahren 
überlegen.

Diese Art der Auswertung unterscheidet sich erheblich von Deiner Methode 
(so wie ich sie Verstanden habe), da sie sehr schmalbandig ist 
(1/Messdauer). Deine Methode 'frisst' das gesammte Rauschen und alle 
Frequenzanteile.

Schaue Dir mal das Residuum von Deinen Messdaten an, nachdem Du über 
einen Sinusfit den Grundton abgezogen hast, oder eine FFT deiner 
Messdaten bzw des Residuums.

Wenn Du einen Kondensator misst, dann werden Oberwellen in Deiner 
Spannungsanregung im Strom linear stärker.. Auch weitere Störfrequenzen 
(Netz, Netzteile, ...) haben auf Dein Fitverfahren einen Einfluß.

Wenn Du nun gezwungen bist, genau Dein Verfahren zu benutzen, dann würde 
ich es mit einen digitalen Notchfilter (sehr schmalbandigen Bandpass) 
bei der Anregungsfrequnenz auf beide Signale versuchen und erst dann 
Deinen Fit. Da der Filter auf beide Signale gleich wirkt, hat er bei der 
Verhältnisbetrachtung keinen Einfluß.

: Bearbeitet durch User
von Henrik V. (henrik_v)


Lesenswert?

Ich zitiere Dich mal:

Chantalle schrieb:
> das Projekt hat aber auch
> theoretische Hintergründe "unnötige" Fehlerquellen vollständig
> auszuschließen

Dann ist Dein Fitverfahren meiner Meinung nach eine Fehlerquelle, da 
nicht schmalbandig.

: Bearbeitet durch User
von Chantalle (chantalle2000)


Lesenswert?

Henrik V. schrieb:
> Ich zitiere Dich mal:
>
> Chantalle schrieb:
>> das Projekt hat aber auch
>> theoretische Hintergründe "unnötige" Fehlerquellen vollständig
>> auszuschließen
>
> Dann ist Dein Fitverfahren meiner Meinung nach eine Fehlerquelle, da
> nicht schmalbandig.

Du hast deine IEEE STD1057 erwähnt, ich habe beschrieben das ich phase 
offset und amplitude fitte, deswegen ist mein verfahren die 
Fehlerquelle,  schon mal auf die idee gekommen das ich die frequenz 
nicht fitte weil die bekannt ist und ich deshalb nur die unbekannten 
suche.
Du sagst mein verfahren ist nicht schmalbandig genug, wenn die frequenz 
unbekannt wäre, dann würden zu wenig messpunkte natürlich bei der 
frequenz einen fehler verursachen können, meinst du das mit 
schmalbandig.
Aber die frequenz ist immer bekannt, sie passt nur nicht immer auf 
ganzzahlige samples, weswegen das fit verfahren und keine fft gewählt 
wurde ider fourierkoeffizienten

von Henrik V. (henrik_v)


Lesenswert?

Sorry, ich habe Dein Fitverfahren so verstanden, das Du die Stromkurve 
auf die Spannungskurve fittest. Wenn Du einen Sinusfit jeweils auf U und 
I anwendest, OK.
Dann brauchst Du nur mehr Daten (länger messen) damit du schmalbandiger 
wirst. Mindestens 20ms ;) damit Netzbrumm sicher nicht in den Fit 
spuckt.

von Chantalle (chantalle2000)


Lesenswert?

Henrik V. schrieb:
> Sorry, ich habe Dein Fitverfahren so verstanden, das Du die Stromkurve
> auf die Spannungskurve fittest. Wenn Du einen Sinusfit jeweils auf U und
> I anwendest, OK.
> Dann brauchst Du nur mehr Daten (länger messen) damit du schmalbandiger
> wirst. Mindestens 20ms ;) damit Netzbrumm sicher nicht in den Fit
> spuckt.

Ja mache ich auch, ich habe nur nicht die ganzen details beschrieben 
weil ich dachte, das das nichts mit der drift uu tun hat, also konkret 
fitte ich die gemessene stromkurve zum bekannten sinus im programm und 
das selbe mache ich auch mit der gemessenen spannungskurve, somit habe 
ich für strom und spannung eine phase zum sinus in der software, die 
differenz ist die phase strom zu spannung am messobjekt. Deswegen fitte 
ich die strommessung zur spannungsmessung, wie ich es ausdrücken würde.
Ich dachte die details erklären sich von selbst wenn ich von einem LCR 
messgeräte projekt schreibe.

Auf diesem weg ermittel ich dann auch das rauschen für strom und 
spannung.

Dein punkt netzbrumm unterdrückung ist denke ich ein wertvoller hinweis. 
Da ich 10s paus von messung zu messung mache, könnten kleine toleranzen 
der uC frequenz und schwankungen der netzfrq eine schwebung verursachen, 
das werde ich mal anpassen das die messdauer 20ms beträgt

von Henrik V. (henrik_v)


Lesenswert?

Auch wenn Deine Anzahl der Messpunkte begrenzt ist, lieber länger messen 
und wenn es nur 4, besser 16 Punkte pro Periode sind.

: Bearbeitet durch User
von Chantalle (chantalle2000)


Lesenswert?

Henrik V. schrieb:
> Auch wenn Deine Anzahl der Messpunkte begrenzt ist, lieber länger messen
> und wenn es nur 4, besser 16 Punkte pro Periode sind.

Wenig punkte pro periode kann man machen, aber dann sollte die 
abtastfrequenz kein ganzzahliges vielfaches der messfrequenz sein.

Das wird bei den hohen frequenzen für die messung gemacht, aber bis 1khz 
sollte es kein problem sein 20ms zu messen und mehr als 4 punkte zu 
sampeln pro periode, haben 128kB speicher, davon mindetesn di hälft zum 
messen  für 2 kanäle, als 32 kB.

Aber die letzte messung hatte wieder abweichungen zum oszi, da fehlt die 
idee

Werde den aufbau nochmals komplett durchgehen müssen

von Henrik V. (henrik_v)


Lesenswert?

Schiebe mal einen Sägezahn (intern wie extern erzeugt) rein.
Wenn das Sample Timeming nicht stimmt oder zu viel Jitter hat, haut das 
rein.

von Rainer W. (rawi)


Lesenswert?

Chantalle schrieb:
> Werde den aufbau nochmals komplett durchgehen müssen

erhöhe Einfach Einmal Den signal-rauschabstand. wenn Sich Die phase Dann 
Immer Noch Genauso Erratisch Benimmt, Liegt Es Am algorithmus, Sonst 
Wohl Eher An Deiner bandbreite. hast Du Schon Einmal Die 
fehlerfortpflanzung Deines messrauschens Auf Die phasenbestimmung 
Angesehen?

von Chantalle (chantalle2000)


Lesenswert?

Rainer W. schrieb:
> Chantalle schrieb:
>> Werde den aufbau nochmals komplett durchgehen müssen
>
> erhöhe Einfach Einmal Den signal-rauschabstand. wenn Sich Die phase Dann
> Immer Noch Genauso Erratisch Benimmt, Liegt Es Am algorithmus, Sonst
> Wohl Eher An Deiner bandbreite. hast Du Schon Einmal Die
> fehlerfortpflanzung Deines messrauschens Auf Die phasenbestimmung
> Angesehen?

Ich denke mal Signal Rauschabstand hat nicht wirklich was mit Drift zu 
tun, ich würde es auch nicht als "Erratisch"  bezeichnen, ich habe kein 
Problem mit der Wiederholbarkeit.
Und der Algorithmus zum Fitten funktioniert prinzipiell, also alle 
direkten Teste zeigt er richtig an, einzig die Langzeitmessung im 
Vergleich zum Oszilloskop hat eine Drift.

Du musst nicht mehr Fehler hineindeuten als ich beschrieben habe.

Fehlerfortpflanzung ist ein anderes Thema, da liegt eine Verwechslung 
vor und Messrauschen hat auch nichts mit Drift zu tun, Messung zu 
Messung ist sehr stabil.

Das Problem bei der Langzeitdrift ist das man nicht zig Messungen 
hintereinander machen kann, das dauert immer 12h-24h für eine Messreihe.

: Bearbeitet durch User
von Lutz (lutz66)


Lesenswert?

Chantalle schrieb:
> Das Problem bei der Langzeitdrift ist das man nicht zig Messungen
> hintereinander machen kann, das dauert immer 12h-24h für eine Messreihe.

Da hast du ein interessantes Projekt, welche Messgrößen kannst du bei 
deinen Langzeitmessungen mit aufzeichnen.

Wenn du die Abweichung zu deiner Referenz aufträgt, statt über Zeit mal 
zu anderen Messgrößen, sieht man zu irgendwelchen Größen eine 
Korrelation.

Beispiel für weitere Messgrößen
- Betriebspannung
- Temperatur
- Offset Strom oder Spannungsmessung
- Taktfrequenz uC
- ...

so würde ich erst mal eingrenzen und dann überlegen wie das 
zusammenhängen kann

von Rick (rick)


Lesenswert?

Hast Du denn eine Möglichkeit dir die Rohdaten rauszuziehen?
Bei Drift reicht es ja, das alle fünf Minuten zu machen.
Dann würde ich die Verarbeitung (Fit, Differenz, etc.) auf dem PC machen 
und weitere Untersuchung dort anstellen...

von Stephan (stephan_h623)


Lesenswert?

Das sollte sich mit Hausmitteln noch besser eingrenzen lassen.
1° ist nicht viel.

- Ist die Phase am Oszi in der Langzeitmessung (evtl. thermisches 
Gleichgewicht abwarten) konstant?
- Phase am Oszi reproduzierbar deutlich genauer als 1°? 
(Ein-/Ausschalten)
- Phase am STM reproduzierbar deutlich genauer als 1°? (Ein-/Ausschalten 
und Neustart der Software)
- Was macht die gedriftete Phasenlage am STM nach Ein-/Ausschalten bzw. 
Reset? Immer noch gedriftet oder wieder der ursprüngliche Wert?
- Temperatur konstant?
- Abstand zu Oszi  Netzteil  PC etc. deutlich erhöhen und beobachten
- in anderem Raum aufbauen (evtl. Schwebung zu "fast" synchronen 
Störern)
- mit Akku weg von Netzbrumm testen
- Betriebsspannung auch (siehe Lutz)
- Frequenz von Anregung und Abtastung um 10% variieren

Rick schrieb:
> Hast Du denn eine Möglichkeit dir die Rohdaten rauszuziehen?
> Bei Drift reicht es ja, das alle fünf Minuten zu machen.
> Dann würde ich die Verarbeitung (Fit, Differenz, etc.) auf dem PC machen
> und weitere Untersuchung dort anstellen...

Auf jeden Fall.
Daten von STM und Oszi. Rohdaten ansehen. Auf beide nen Sinusfit legen 
und die Differenz Daten-Fit ansehen.
Evtl. nimmt das Oszi nur den steilen Nulldurchgang und der Sinusfit wird 
durch kleine systematische Störungen verschoben. Zahl der Messpunkte, 
Messdauer etc. weicht beim Oszi sicher auch ab.

von Chantalle (chantalle2000)


Lesenswert?

Stephan schrieb:
> - Ist die Phase am Oszi in der Langzeitmessung (evtl. thermisches
> Gleichgewicht abwarten) konstant?
> - Phase am Oszi reproduzierbar deutlich genauer als 1°?
> (Ein-/Ausschalten)
> - Phase am STM reproduzierbar deutlich genauer als 1°? (Ein-/Ausschalten
> und Neustart der Software)
> - Was macht die gedriftete Phasenlage am STM nach Ein-/Ausschalten bzw.
> Reset? Immer noch gedriftet oder wieder der ursprüngliche Wert?

Das oszi ist permanent an, das oszi misst nur den bereich wo die 
nulldurchgänge von strom und spannung liegen und speichert dies alle 
10s, plus minus eingen ms misst auch der stm

Die daten vom oszi werden mit einem script ausgewertet, also die 
rohdaten, wegen begrenzten speicher und dem wunsch nach hoher auflöung 
sehe ich aber nicht die ganze periode in diesen Daten.
Hier sehe ich eine drift, die größer ist als die vom stm, es driften 
letztendlich beide messungen rauf und runter.
Es ist aber nicht klar was messfehler ist und was wirklich echt ust, 
wenn das messobjekt sich tatsächlich verändert.

Ein Ausschalten am stm oder reset bewirken keine änderung des 
ergebnisses.

von Stephan (stephan_h623)


Lesenswert?

Chantalle schrieb:
> Die daten vom oszi werden mit einem script ausgewertet, also die
> rohdaten, wegen begrenzten speicher und dem wunsch nach hoher auflöung
> sehe ich aber nicht die ganze periode in diesen Daten.
> Hier sehe ich eine drift, die größer ist als die vom stm, es driften
> letztendlich beide messungen rauf und runter.
> Es ist aber nicht klar was messfehler ist und was wirklich echt ust,
> wenn das messobjekt sich tatsächlich verändert.
>
> Ein Ausschalten am stm oder reset bewirken keine änderung des
> ergebnisses.

Es driften also Oszi und STM. Das Oszi sogar mehr.
Da würde ich mal mindestens deine Kommunikation als erratisch 
bezeichnen...

Ausschalten/Reset am STM liefert genau das vorherige (gedriftete) 
Ergebnis, richtig? Und 2-20 Stunden später ists um 1° verschoben und 
Ausschalten/Reset liefert aber wieder genau das unmittelbar vorherige 
Ergebnis, richtig?

Dann ists wohl eher eine Abhängigkeit von Temperatur  Luftfeuchte  
etc. des Prüflings. Schwebung mit Störsignalen ist dann eher 
unwahrscheinlich. Vorausgesetzt du gehst bei der Analyse einigermaßen 
planvoll vor, wo ich mir inzwischen aber nicht so ganz sicher bin.

Wenn die Oszi-Messung mehr driftet taugt es wohl nicht als Referenz 
(Oszi selbst oder Messmethode). Wenn der Prüfling driftet musst du für 
konstante Bedingungen sorgen, dann driftet der stationär auch nicht 
mehr.
Wenn der Kopf driftet vielleicht mal paar Tage Abstand und neu 
überlegen.

von Henrik V. (henrik_v)


Lesenswert?

Was mir imer wieder hilft (wir setzten die Sinusfit an vielen Stellen 
ein ;) ): Ein Blick auf die Residuen und mit dem Scope mal FFT schauen. 
Harmonische sind nicht das Problem, aber andere Störfrequenzen, gerade 
deutlich Tiefere, die dann im Messfenster eine Rampe hinterlassen.

Wenn Du die Rohdaten Deiner Messungen hast, dann würde ich mir die 
Residuen  von U und I bei den erwähnten extremen Schwankungen ansehen.

Dann sind da immer noch die Sampleclocks für ADC und DAC.
Wenn die nicht wirklich sauber und mit geringem Jitter sind, kann das 
böse Effekte haben.
Was auch ein sehr netter Effekt ist, wenn der DAC und ADC quasi 
gleichzeitig sampeln, das kann dann mal etwas verrutschen und schon 
liegt man erratisch einen Sampleclock daneben.   Keine Ahnung ob man dem 
STM beibiegen kann, bei gleichem Clock das eine auf steigende und das 
andere auf fallende Flanke zu legen. Aber das sollte nie nimmer nicht 
zur 'gleichen' Zeit passieren.

: Bearbeitet durch User
von Rick (rick)


Lesenswert?

Chantalle schrieb:
> Hier sehe ich eine drift, die größer ist als die vom stm, es driften
> letztendlich beide messungen rauf und runter.
Hast Du Deine Auswertung mal auf synthetisch generierte Daten 
losgelassen?
Da kann man dann auf das ideale Signal mal Rauschen oder andere 
Störkomponenten draufrechnen und schaut, wie empfindlich die eigentliche 
Rechnung ist.

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.