Moin,
ich versuche gerade verzweifelt die Phasenverschiebung zwischen Zwei
Signalen zu berechnen. Das Problem ist es handelt ich um ein
Sinusförmiges und ein Phasenangeschnittenes Signal.
Alle Signale haben als Grundfrequenz 50 Hz.
Mit zwei Sinusförmigen Signalen habe ich die folgende Methode bereits
erfolgreich getestet.
1. FFT beider Signale
2. Suchen der beiden 50 Hz peaks der Signale
3. Betragsbildung der Zeiger
4. Ermittlung der Winkel zwischen beiden Zeigern
Dieser Winkel entspricht der Phasenverschiebung. Anschließend wird der
Winkel in die Verzögerungszeit zwischen beiden Signalen umgerechnet und
das zweite Signal um die Phasenverschiebung zurück verschoben. Passt
alles!
Bei Phasenangeschnittenen Signalen scheint dieses Verfahren leider nicht
zu funktionieren. Und genau hier liegt mein (Verständins)-Problem. Bzw.
ich bin mir nicht sicher, ob es generell nicht bei Phasenangeschnittenen
Signalen funktioniert oder ob es vielleicht an meiner "Erzeugung" der
angeschnittenen Spannung liegt. Anbei habe ich ein paar Bilder von
meinen Berechnungen gehängt bei (0,30,90,120)° Phasenanschnitt.
Vielleicht hat der Eine oder Andere eine Idee zu diesem Thema!
Viele Grüße
Christian
Wieso rechnest du nicht die Kreuzkorrelation beider Signale? Die sollte
einen schönen Peak haben bei der gesuchten Phasenverschiebung. Außerdem
ist Kreuzkorrelation schön rauschresistent.
Du hast einen sehr gut zu detektierenden Nulldurchgang.
Du hast, falls vorhanden, eine gut erkennbare Einschaltflanke.
Du hast einen relativ genauen Quarz für die Zeitmessung; notfalls kannst
Du sogar den nächsten Nulldurchgang zur Frequenzmessung heranziehen.
Herz, was willst Du mehr?
Ohne die Sinnhaftigkeit zu hinterfragen, sehe ich, dass sich die
eingestellten Phasenverschiebungen mit deiner Winkelmessung decken:
Bei der Kurve "30°" hast du eine Phasenverschiebung von ca 20°
bei "90°" hast du etwas mehr als 45°
bei "120°" hast du etwa 75°
Diese Phasenverschiebungen sind doch auch in den Kurven. Oder ist es
nicht genau genug? Hab es nur grob abgelesen.
Chriss D schrieb:> Und genau hier liegt mein (Verständnis)-Problem.
Ganz grob und falsch gesprochen, ergibt sich die jeweilige Phasenlagen
im wesentlichen dadurch, wo ungefähr das Maximum der Hauptschwingung
liegt. Wenn Du etwa das Bild
http://www.mikrocontroller.net/attachment/231062/sig_120.png nimmst, so
stimmen beim Graphen "verschobene Funktion" das Maximum beider
Funktionen ungefähr überein.
Das bedeutet, allein durch die Funktionsänderung Sinus ->
phasenangeschnittener Sinus erhälst Du rein mathematisch eine
Phasenverschiebung (bei Deiner Rechnung).
Gleiches würde auch bei der Verwendung der Kreuzkorrellation passieren.
Das ist aber nicht das, was Du möchtest.
Anstelle der (F)FT-Auswertung der 50Hz-Haupt-Komponente solltest Du
daher den entsprechenden Null-Durchgang als Basis verwenden.
Michael W. schrieb:> Diese Phasenverschiebungen sind doch auch in den Kurven.
Dass ein angeschnittener Sinus in der Grundwelle eine andere Phase hat
als ein reiner Sinus sollte aber klar sein, Chriss D. Ich dachte, es
geht dir nur um die Differenzen...
Hallo nochmal und vielen Dank für die schnellen und Hilfreichen
Antworten!
um die Sinnhaftigkeit dieser Berechnungen zu erklären:
ich würde gerne die Erregerspannung eines Universalmotors berechnen.
Dazu war meine Überlegung die Gesamtspannung und die Spannung zwischen
Anker und einer Erregerwicklung zu messen. Problem bei dem Ganzen ist
die Phasenverschiebung durch die Erregerinduktivität und den
Steuerwinkel. Der Plan war beide Spannungen zu messen, anschließend die
Phasenverschiebung zu ermitteln und die Spannungen übereinander zu
legen. Somit ließe sich leicht die gesuchte Erregerspannung durch
Subtraktion ermitteln.
Das Problem bei der Phasenverschiebungsberechnung ist, sind die -wie auf
dem angehängten PDF zu sehenden- großen Peaks durch die Kommutierung der
Maschine.
Meine Befürchtung ist, das der µC diese als Nulldurchgang detektiert.
Daher wollte ich eine "elegantere" Lösung finden.
Vielleicht hat der Eine oder Andere auch diesbezüglich eine Idee.
Viele Grüße
Chirstian
Achim Hensel schrieb:> Gleiches würde auch bei der Verwendung der Kreuzkorrellation passieren.
Klar, das verschmiert ebenfalls. Wird aber immer noch sehr deutlich
erkennbar sein und denke, dass die Kreuzkorrelations-Methode deutlich
weniger von Rauschen betroffen ist als die mit dem Nulldurchgang.
Ich dachte eben das wäre nicht so, da auch der angeschnittene Sinus auf
einer 50Hz Frequenz beruht (und natürlich die vielfachen ungerade
Harmonischen). Mich interessiert ja auch nicht der Betrag des Zeigers
sondern nur der Winkel zwischen den beiden.
Ich würde die Bereiche, die dem Phasenanschnitt unterliegen, überhaupt
garnicht erst in die Korrellationsbetrachtung mit einfliessen lassen,
sondern jeweils nullen.
Du vergleichst zwei komplett untgerschiedliche Signal: eine ziemlich
reine 50Hz Sinusschwingung und ein irrsinnig wildes Gemisch aus
Oberwellenschwingungen auf einer pegel und phasenmäßig malträtierten
Grundschwingung.
Die gleiche problemstellung hat der, der den cos phi bei nicht
sinusfürmigem Stromverlauf messen oder berechnen will. Hier gibt es auch
Wirk- und Blindleistung, die sich aber mathematisch nicht durch ein
einen einfachen und griffigen cos phi-Wert ausdrücken lassen.
Wenn Du aus dem phasenangeschnittenem Signal wieder ursprüngliche
Sinuswelle rekonstruieren kannst, ist wieder alles in Butter. Das geht
visuell recht gut auf einem Oszi. So mit Abschätzung der Steigung vor
dem Nulldurchgang, damit auch der Pegel halbwegs abgeschätz werden kann.
Oder Du beschneidest Deine Refernzschwinung, bis sie den selben
Oberwellengehalt hat wie das phasenangeschnitte Signal. Dann kann man
die auch wieder gut vergleichen. Wenn alelrdings ausser dem
Phasenanschnitt noch weitere Verzerrungsquellen hinzukommen (bei Dir die
Kommutierung), wird das fehlschlagen. Man müsste also beide Signal
erstmal tiefpassfiltern (beide, weil auch der Filer phasenverschiebung
evrursacht) und dann versuchen, mit dem niederfrequenten Rest
zurechtzukommen. Das wird aber irgendwann ungenau.
Chriss D schrieb:> Meine Befürchtung ist, das der µC diese als Nulldurchgang detektiert.> Daher wollte ich eine "elegantere" Lösung finden.>> Vielleicht hat der Eine oder Andere auch diesbezüglich eine Idee.
Genau deshalb habe ich die Cross Correlation vorgeschlagen -- ich bin
mir sicher, dass das gut funktionieren würde. Und leicht zu
implementieren ist es auch, man braucht nur ein paar FFTs.
Wenn du die Beispielkurven mal als CSV anhängst kann ich das sogar mal
beispielhaft plotten ;)
Ich frage mich schon die ganze Zeit, was hier eigentlich verglichen
werden soll. Wo treten denn in einem Motor komplette Verschiebungen
eines angeschnittenen Sinus auf, so wie in den Bildern gezeigt?
Ich kann mir nur vorstellen, dass man einerseits einen vollständigen
Sinus mit einem phasenangeschnittenen Sinus vergleichen möchte, um zu
sehen, wie die Phasenverschiebung der Grundwelle ist. Dass die
beschriebene Methode hier Unsinn liefert ist mehr als klar, da die
Grundwelle durch den Anschnitt in der Phase massiv beeinflusst wird und
die DFT wenig aussagt.
Oder habe ich wieder was falsch verstanden?
Hallo und ein großes Dankeschön an alle für die Unterstützung und
Ideen/Anregungen.
Also ich möchte die Leistung einer Erregerwicklung des Motors
(Universalmotor) bestimmen. Dazu habe ich den Messaufbau -wie im Anhang
zu finden- gewählt.
Die Überlegung ist nun:
1. Spannungen U1 und U2 zu messen
2. Phasenverschiebung zu bestimmen
3. U2 auf der Zeitachse zu verschieben
4. U1-U2 um die Erregerspannung zu erhalten
5. P = Uerr*Iges
Bei der Vollaussteuerung funktioniert das schon ganz gut. Problematisch
ist eben das ganze mit der angeschnittenen Phase.
Hatte auch schon überlegt:
TP-Filter mit Matlab, damit lässt sich das Rauschen schon ordentlich
entfernen.
Problem hierbei sind wieder die angeschnittenen Phasen, dort werden dann
die Anschnitte unterdrückt/geglättet. Aber man kann die
Funktion/Messwerte in mehrere Bereiche aufteilen, dann funkioniert es.
Alternativ wäre die Überlegung, filtern und anschließend die
maximal/minimalwerte der Amplitude zu suchen und über die zugehörigen
Zeitwerte die Phasenverschiebung zu bestimmen.
Leider funktionier die Korrelation bei mir nicht im Phasenanschnitt.
(Siehe beigefügtes .m-File) Vielleicht mache ich dort auch Fehler, ich
bin leider ganz neu in der Welt des DSP.
bei den angehängten Dateien ist CH1 = U1/Uges, CH2 = U2 und CH4 = Iges.
Besten Dank und Vvele Grüße
Christian
Das sind schon die beiden Kurven, zwischen denen du die Phase willst,
oder? Ein etwas ungeschickt gewähltes Beispiel, weil die hier fast null
ist ;)
Aber an der Korrelation kann man das Maximum ziemlich klar erkennen
eigentlich.
Vielen Dank Sven B.
Sven B. schrieb:> Das sind schon die beiden Kurven, zwischen denen du die Phase willst,> oder?
Ja genau!
Sven B. schrieb:> Ein etwas ungeschickt gewähltes Beispiel, weil die hier fast null> ist ;)
Leider wird die Phasenverschiebung auch nicht viel größer
Sven B. schrieb:> Aber an der Korrelation kann man das Maximum ziemlich klar erkennen> eigentlich.
So wie ich das jetzt in dem angehängten M-File auch gemacht habe, habe
ich dann in der Korrelationsfunktion, von U1 und U2, den Maximalwert
gesucht und diesen von dem Maximalwert der Autokorrelation von U1
abgezogen. Damit ergibt sich doch dann die Anzahl der Messpunkte, die
zwischen den beidem Unterschiedlichen Signalen liegen. Diesen Wert habe
ich dann mit den Zeitschritten multipliziert und bekomme so den Wert der
Phasenverschiebung auf der Zeitachse, oder habe ich das falsch
verstanden?
Ich glaube das ist schon zu kompliziert, oder? Suche einfach das Maximum
und ziehe die Hälfte der Intervallgröße ab, das ist schon die Anzahl der
Messwerte. Das teilst du durch die Periodendauer des Sinus gemessen in
Samples und multiplizierst mit 2 pi, dann hast du die Phasenverschiebung
in Radian.
Das Maximum würde ich optimalerweise mit einem Fit suchen, gerade wenn
du ordentlich Auflösung brauchst. Ich komme für dein Beispiel auf eine
Verschiebung von 35.4 Datenpunkten wenn ich einen Gauss an eine Umgebung
um das Maximum fitte, ich glaube, das ist sehr exakt.
Hier noch der Plot mit dem Fit, nicht sehr aussagekräftig allerdings :D
Ich habe die mittleren 1000 Punkte genommen für den Fit,
Phasenverschiebung 0 wäre also wenn das Maximum bei 500 wäre.
Guten Morgen Sven,
Steuert man den Sinus vollständig aus ergibt sich eine Anzahl von 16
Datenpunkten, bei 30° Steuerwinkel, ergibt das einen Abstand von 20
Datenpunkten und bei 90° Steuerwinkel kommt ein Abstand von 46 Punkten
herrraus.(Siehe beigefügte Bilder)
Nach meinem Verständnis muss doch, wenn das Verfahren funktioniert,
immer gleiche Der Gleiche Abstand ergeben, oder?
Selbst wen ich die "Vergleichskurve" nulle sind die Ergebnisse für mich
nicht plausiebel...(Siehe Korrelation_ident_[Steuerwinkel])
Sven B. schrieb:> Hmm, komisch. Muss ich mir nochmal anschauen.
Vielelicht/ Okay eher bestimmt habe ich irgendwo einen Fehler eingebaut.
Ich traue auch meiner Funktion nicht um den Phasenanschnitt
durchzuführen nicht so recht....
Hast du das mit meinen Messdaten ähnlich gemacht wie ich mit meinem?
Ich wollte erst wissen, ob das wirklich so klappt, bevor ich mich an
reelle Daten wage.
Vielen Dank
So, das kommt bei mir als Korrelationsfunktion herraus.
Bei der original-Datei ist die Funktion nicht gefiltert worden, bei der
anderen schon.
TP 2. Ordnung
Eckfrequenz: 100 Hz
Sven B. schrieb:> Suche einfach das Maximum> und ziehe die Hälfte der Intervallgröße ab, das ist schon die Anzahl der> Messwerte. Das teilst du durch die Periodendauer des Sinus gemessen in> Samples und multiplizierst mit 2 pi, dann hast du die Phasenverschiebung> in Radian.
Bis zu Hälfte der Intervallgröße kann ich das nachvollziehen. Aber warum
dann nicht durch die Periodendauer in Samples? Ich benötige doch für
meine Verschiebefunktion die Phasenverschiebung in [s]?
Anbei mein zur Auswertung verwendeter Matlab-Code:
1
%% Maximalwerte der Korrelationsfunktion bestimmen
2
[pos1,wert1] = max(Rxx1); %Suche den Maximalwert Plot 2
3
[pos2,wert2] = max(Rxx2); %Suche den Maximalwert Plot 3
4
[pos3,wert3] = max(Rxx3); %Suche den Maximalwert Plot 4
5
6
7
diffPhaseTime_points = (wert1-wert2) %Abstand der beiden Punkte
8
diffPhaseTimeI_points = (wert1-wert3) %Abstand der beiden Punkte
9
10
diffPhaseTime = ((wert1-wert2))*dt %Abstand der beiden Punkte Schritt mal Zeitdifferenz pro Schritt
11
12
diffPhaseTimeI = (wert1-wert3)*dt %Abstand der beiden Punkte Schritt mal Zeitdifferenz pro Schritt
Hallo !
Ich habe mir deine Messungen nochmal angeschaut. Es geht mir jetzt aber
nicht um die beste Methode, eine Phasenverschiebung herauszubekommen,
sondern möchte elektrotechnisch hinterfragen was du da machst. Insofern
ist mein Kommentar Off-Topic und hat nichts mit DSP zu tun.
Soweit ich verstanden habe, misst du U1 und U2. Die Differenz U1-U2 ist
die Spannung an der Erregerwicklung. Gleichzeitig misst du den Strom I,
der auch durch die Erregerwicklung fließt.
Du möchtest letztlich die Wirkleistung an der Erregerwicklung bestimmen.
Diese ist in jedem Fall das zeitliche Mittel aus (U1-U2)*I
Wenn ich mir das alles aus deiner Kurve heraushole, komme ich auf einen
sehr wilden Zeitverlauf; sowohl für U1-U2, wie auch für I, und erst
recht für P=(U1-U2)*I.
Ich habe zwar verstanden was du mit "Phasenverschiebung" zwischen U1 und
U2 meinst, aber wie soll dir diese Größe weiterhelfen, eine Leistung zu
bestimmen? Es handelt sich ja nicht mal im Ansatz um sinusförmige
Größen, daher würde mich interessieren, was du da machst. So zu tun als
hätte man Sinusgrößen und dann P = U*I*cos(phi) geht hier sicher
nicht...
Wenn ich U*I mittle, komme ich auf die lila horizontale Linie. Das ist
meines Erachtens der einzige Weg, um auf P zu kommen (abgesehen von
Filtermethoden, die das überlagerte Kommutierungs-Rauschen wegnehmen).
Warum machst du nicht eine DFT von (U1-U2), eine von I und bildest die
Wirkleistung durch Multiplikation und Aufsummieren der jeweils geraden
bzw. ungeraden DFT-Koeffizienten? Das wird genauer sein, als das Zeug
mit der Phasenverschiebung.
Ist wie gesagt aber off-topic...sorry!
Hi!
Sorry, ich war einige Tage weg und konnte deshalb nicht antworten :)
Dass das Maximum der Korrelation sich verschiebt, wenn du die Stärke vom
Anschnitt veränderst, überrascht mich sehr. Ich hätte nicht gedacht,
dass das passiert. Entweder es ist noch irgendwas falsch, oder ich habe
mich da tatsächlich getäuscht. Bei den beiden Beispieldateien, die du
oben verlinkt hast, sollte da die selbe Verschiebung rauskommen? Dann
versuche ich es nochmal.
Viele Grüße,
Sven
Sven B. schrieb:> Dass das Maximum der Korrelation sich verschiebt, wenn du die Stärke vom> Anschnitt veränderst, überrascht mich sehr. Ich hätte nicht gedacht,> dass das passiert.
Das ist vollkommen normal, wenn die Position des Ausschnitts geändert
wird oder wenn sich das Ergebnis präuisiert, dadurch, dass sich das
Nutzsignal gegenüber dem Störsignal besser durchsetzt.
Wenn das so ist, dann entschuldige ich mich für die Verwirrung -- gut
möglich, dass die Methode dann nicht tauglich ist für diesen Fall.
Schade.
Vielleicht kannst du einen Sinus an das angeschnittene Signal fitten und
dann erst die Phasenverschiebung berechnen?
Ein paar Feststellungen:
Faltung im Frequenzbereich ist Multiplikation im Zeitbereich.
Also ist die Multiplikation mit der Synchronen PWM oder Phasenanschnitt
wie eine Faltung im Frequenzbereich.
Es ist die Faltung eines 50Hz Sinus mit einer PWM der doppelten
Frequenz.
Das verschiebt die Phase der Grundwelle im Phasenanschnittsignal mit dem
Ansteuerwinkel, denn die Phase bei 50Hz ist nun die Summe mehrerer sich
ändernder Phasen durch die Faltung mit der 100Hz PWM.
Nur wenn die Mittellinie durch das PWM Rechteck mit dem Scheitelpunkt
des Sinus zusammenfällt gäbe es keine Phasenverschiebung der Grundwelle
durch variable Pulsbreiten, so wird Phasenanschnitt mit Thyristoren oder
Triacs aber kaum realisiert.
Selbst wenn man die Phasenverschiebung der Grundwelllen zwischen Netz
und phasenangeschnittenem Motorsignal hinreichend genau ermitteln
könnte, ist das wohl ungeeignet die Wirkleistung selektiv Rotor/Stator
des UVM zu ermitteln, da der Motor über Phasenanschnitt nicht mit einem
eher reinen Sinussignal läuft und zudem keine rein ohmische Last
darstellt.
Die Leistung der Erregerwicklung ist bei Phasenanschnitt oder spektral
unreiner Speisung nur hinreichend genau über den RMS wert von U*I über
eine ausreichend hohe Abtastrate und ein entsprechend langes Zeitfenster
zu ermitteln.
Hallo Leute,
vielen Dank für die weiteren Anregungen/Ideen.
Leider komme ich erst jetzt wieder zu meinen "Basteleien".
Natürlich verhält sich eine Spule bei Wechselspannung durch die
Induktivität nicht wie ein ohmischer Widerstand. Daher hätte ich gerne
phi ermittelt, um so die Spannungen wieder korrekt zurück schieben zu
können, am die Erregerwicklung als ohmischen Verbraucher betrachten zu
können. Ach Grundlagen der Elektrotechnik...:-(. Da habe ich mich wohl
selber verwirrt....
Als Anlehnung an die Korrelation müsste es doch "einfach" möglich sein,
die Flächen unter den Funktionen zu Berechnen (quasi alle Messwerte
auf-summieren) und darüber die Leistung zu bestimmen, egal wie
angeschnitten das Signal ist oder?
Viele Grüße
Christian
Chriss D schrieb:> Natürlich verhält sich eine Spule bei Wechselspannung durch die> Induktivität nicht wie ein ohmischer Widerstand.
Eine ideale Induktivität wäre einfach zu modellieren, das man ein
Frequenzgemisch in der Betriebsspannung hat ist hier das wirkliche
Problem, denn die Last ist viel komplexer als eine ideale Induktivität.
Weitere Probleme sind Nichtlinearitäten der Maschine, Abhängigkeiten der
komplexen Last auch von Drehzahl und Drehmoment, evtl. Temperatur.
Ich verstehe auch nicht warum es so gemacht werden soll.
Es wäre doch nur U1-U2 mit ausreichender Frequenz abzutasten, Strom
auch, diese Multiplizieren und den Leistungs-RMS - Wert mit Fenster was
über ausreichend viele Perioden oder exakt zwei Perioden gelegt wird
berechnen.
Raymund H. schrieb:> Es wäre doch nur U1-U2 mit ausreichender Frequenz abzutasten, Strom> auch, diese Multiplizieren und den Leistungs-RMS - Wert mit Fenster was> über ausreichend viele Perioden oder exakt zwei Perioden gelegt wird> berechnen.
Das habe ich oben auch vorgeschlagen. Scheint aber nicht auf viel
Gegenliebe gestoßen zu sein...wir sind für sowas wohl zu dumm
Michael W. schrieb:
Ich bin nicht nur zu dumm, ich bin auch immer der erste und einzige bei
dem etwas kaputt geht oder nicht funktioniert wie versprochen.
Es kann natürlich sein der op will wirklich die phase der grundwelle des
angeschnittenen signals rekonstruieten, aus "geheimen" gründen.