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.
Und wenn Du für die Messung den motor mit Vollwellen ansteuerst? Per 48V-Trafo oder was auch immer geht, ohne dass alles zu schnell dreht...
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 ;)
:
Bearbeitet durch User
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?
Genau so mache ich es (hoffentlich ;-) ) in der oben beigefügten M-Datei. Und das klappt einfach nicht...
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.
:
Bearbeitet durch User
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
Sven, hast du die Messwerte vorher noch gefiltert?
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!
Warum versuchst Du nicht, die Korrelation auf des Intervall der Übereinstimmung zu begrenzen? So bekommt man nur eine Unschärfe hinein.
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
Ja das ist nun tatsächlich einfach, du quadrierst alle Werte und addierst sie auf, und das Ergebnis ist proportional zur Leistung.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.