Hallo an alle, derzeit versuche ich mich an der mathematischen Beschreibung, wie man aus einer Messreihe von rohen ADC Werten, den komplexen Real und Imaginäranteil für den Strom und die Spannung berechnet. Da es sich um ein periodisches Sinusförmiges Signal handelt sollte eine Fourier-Transformation nicht nötig sein. Meiner Recherche nach ist der Goertzel Algorithmus wohl der richtige Ansatz, allerdings gelingt es mir nicht die Brücke zwischen der mathematischen Beschreibung in https://de.wikipedia.org/wiki/Goertzel-Algorithmus und Beitrag "Görtzel Algorithmus einfach erklärt" zu schlagen. Kann mir jemand bezüglich dieser Herleitung weiterhelfen? Grüße und Danke Ron
Schau dir mal den englischen Wikipedia Artikel an, der ist ausführlicher: https://en.wikipedia.org/wiki/Goertzel_algorithm
Hallo Bernhard, danke für die schnelle Antwort. Den englischen Artikel hatte ich natürlich auch gelesen. Um mein Problem zu konkretisieren, hier noch ein paar Zusatzinfos. -Einen Algorithmus zur Berechnung des Stroms und der Spannung aus den ADC Werten habe ich bereits. Er ist recht simpel: Summe[0-n]für (ADC_Raw_Value[n] * Sollwert[n])(Sinus/Cosinus des Erregersignals). Daraus ergibt sich der komplexe Ausdruck des Stroms und der Spannung. -Aus diesem wird anschließend die Admittanz und die Amplitude des Stroms berechnet. -Aus der Admittanz wird anschließend Leitwert und Kapazität/Induktivität berechnet. -Die Ergebnisse des Algorithmus sind verifiziert und sind korrekt. Dummerweise passt das nicht oder ich sehe noch nicht den Zusammenhang, zum Goertzel Algorithmus. Tendentiell erinnert der Algo den ich verwende eher einer Kreuzkorrelation. In dem bereits angeführten Link: Beitrag "Görtzel Algorithmus einfach erklärt" Zitat: "Rechnerisch haben wir also das sample E1 mit A1 multipliziert, das sample E2 mit A2 multipliziert, das sample E3 mit A3 multipliziert bis E? mit A?. Daraus haben wir die Summe S1 gebildet. Dann wanderte das Eingnagssignal um eins nach rechts und wieder haben wir E1(neu) mit A1 multipliziert, E2(neu) mit A2 multipliziert..." Ein Antwortender schrieb daraufhin: Zitat "uns wurde genau dieser Algorithmus in Regelungstechnik als Matching-Filter verkauft. http://en.wikipedia.org/wiki/Matched_filter Wenn man die Seite zum Goertzel anschaut (die ich nicht kannte), wird da von FFT gesprochen. Also im Frequenzbereich. Das was du beschreibst ist im Zeitbereich." und ein weiterer: Zitat: "Einfach erklärt funktioniert der Görtzel-Algorithmus ungefähr so: Das Eingangssignal wird mit Sinus- und Cosinus multipliziert, danach integriert und der Betrag berechnet. Letzendlich entspricht das einer Linie einer Fourier-Transformation." Von der Formel würde ich sagen der Matched Filter ist der richtige theoretische Ansatz zur Erklärung. Dieser gibt scheint aber nicht im Zusammenhang mit dem komplexen Strom/Spannungswert zu stehen. Der Goertzel Algorithmus schein genau dies zu ermöglichen, die Formel ist aber anders. Wichtig is mir zu verstehen wie man auf den Real & Imaginäranteil des Stroms kommt, der sich aus dem rohen ADC Messwert ergibt.
Falls das zu analysierende Signal 50 Hz hat, Taste mit 10ms ab. Die Summe der beiden letzten Abtastwerte ergeben den COS-Wert, die Differenz den SIN-wert. Begründung: 1. Zerlegung einer Funktion in geraden und ungeraden Teil. 2. Die Phase ist bezogen auf das Generatorsignal. (Auch aus der Steckdose kommt nicht zwangsläufig ein Sinus, sondern ein Sinus oder Cos - Signal mit Phase.)
Ronald W. schrieb: > Da es sich um ein periodisches Sinusförmiges Signal handelt sollte eine > Fourier-Transformation nicht nötig sein. Sollen das jetzt nur Fingerübungen werden oder steckt da mehr dahinter???
Ronald W. schrieb: > aus einer Messreihe von rohen ADC Werten Was drückt der ADC Wert aus? Wurde die Spannung gemessen oder der Strom oder beides? Michael
Ronald W. schrieb: > Von der Formel würde ich sagen der Matched Filter ist der richtige > theoretische Ansatz zur Erklärung. Dieser gibt scheint aber nicht im > Zusammenhang mit dem komplexen Strom/Spannungswert zu stehen. Also Fingerübungen. ...oder die Suche nach einem Ansatz, aber Mathe is ja eigentlich nich' so mein Ding.
@Michael: Es werden sowohl Spannung als auch Strom gemessen. @letallec: Der Teil des Ansatzes welcher aus den rohen ADC Werten, den komplexen Strom und die Spannung berechnet ist quasi ein Erbstück. Ich konnte diesen verifzieren, indem ich die Berechnung der komplexen Admittanz, der Amplitude, der Kapazität und des Widerstands hinzugefügt haben. Nur die Einordnung ist mir bisher nicht gelungen, da er nirgendwo richtig reinpasst. @Max123: Es handelt sich leider nicht um Netzspannung. Das Signal liegt um die 100kHz. ADC und gemessenes Sinussignal sind Phaselocked. Grüße und Danke vorab
Görtzel liefert ja einfach die Amplitude der Grundwellen deiner beiden Signale. Für Real- und Imaginärteil des Stromes brauchst du aber auch noch die Phasenlage gegenüber der Spannung.
Moin, Zu dem Thread 322687: Es muss nicht immer alles 100% stimmen, was in irgendwelchen Threads von irgendjemandem geschrieben wurde. Hier gibts eine etwas ausfuehrlichere Beschreibung zum Goertzel: https://en.wikipedia.org/wiki/Goertzel_algorithm Ronald W. schrieb: > Es handelt sich leider nicht um Netzspannung. > Das Signal liegt um die 100kHz. ADC und gemessenes Sinussignal sind > Phaselocked. Das klingt aber garnicht nach Goertzel, sondern eher nach Abtastung von Bandpasssignalen, im Gegensatz zur ueblicheren Bandbegrenzung durch einen Tiefpass. Gruss WK
>Das Signal liegt um die 100kHz. ADC und gemessenes Sinussignal sind phaselocked.
Wieviele Samples macht der ADC pro 100kHz-Schwingung? Wie ist die
Phasenlage zwischen den beiden? Werden Spannung und Strom gleichzeitig
oder nacheinander gemessen?
:
Bearbeitet durch User
Ronald W. schrieb: > Das Signal liegt um die 100kHz. ADC und gemessenes Sinussignal sind > Phaselocked Ich nehme an das bezieht sich auf das Spannungssignal und Spannung und Strom werden gleichzeitig abgetastet? Das bedeutet das Spannungssignal ist rein real (es hat keine Phasenverschiebung gegenüber dem Phaselock). Der Strom ist bei nicht rein Ohmschen Lasten phasenverschoben gegenüber der Spannung. > Wichtig is mir zu verstehen wie man auf den Real & Imaginäranteil > des Stroms kommt, der sich aus dem rohen ADC Messwert ergibt. Mit einer komplexen fft kannst du Real- und Imaginäranteil des Stroms ermitteln. Dazu musst du die fft mit Real- und Imaginärteilen des Stroms füttern. Das bedeutet nichts anderes, als dass du re und im getrennt samplest, d.h. du tastest um 90° zeitversetzt ab um die Real und Imaginär Anteile zu ermitteln: 100 kHz => 0° Real-Anteil 100 kHz + 1*(1/100kHz) / 4 => 90° Imaginär-Anteil 100 kHz + 2*(1/100kHz) / 4 => 180° = -re => kannst du vergessen 100 kHz + 3*(1/100kHz) / 4 => 270° = -im => kannst du vergessen Letztlich samplest du mit der 4-fachen Abtastfrequenz gegenüber einer rein realen Abtastung und verwirfst die Hälfte der Samples. Michael
:
Bearbeitet durch User
Moin, Michael D. schrieb: > 100 kHz + 2*(1/100kHz) / 4 => 180° = -re => kannst du vergessen > 100 kHz + 3*(1/100kHz) / 4 => 270° = -im => kannst du vergessen Es ist allgemein ziemlich unclever, Werte, die man schon vorliegen hat, einfach so aus Gruenden nicht zu verwerten... Gruss WK
phaselocked heißt, man bekommt immer Abtastwerte bei derselben Phase. Damit kann die Auflösung nicht genauer sein als die Anzahl der Stützstellen. Wenn die Werte nicht synchronisiert wären, dann hätte man wenigstens wandernde Punkte auf der Kurve und könnte eventuell noch über viele Perioden mitteln.
Dergute W. schrieb: > Es ist allgemein ziemlich unclever, Werte, die man schon vorliegen hat, > einfach so aus Gruenden nicht zu verwerten... Klar, das ist dann der zweite Schritt, nachdem man verstanden hat wie es funktioniert. Wenn man bei der Erklärung gleich alles auf einmal zu erklären versucht, dann kann man es schlecht verstehen. Dann noch die Preisfrage: Was genau gewinnst du, wenn du die Samples nicht wegwirst? Michael
:
Bearbeitet durch User
@Christoph db1uq K. Gesampelt wird abwechselnd je ein Sample Spannung, ein Sample Strom. Der Phaselock bezieht sich auf das anregende Spannungssignal. Der Strom ist quasi die Eingangsgröße, die zurück von der Messstrecke kommt. Die Akquisitionrate beträgt ca. 1MSample/s aufgeteilt auf Strom und Spannung -> Also ca. 500kSample/s pro Kanal. FFT hatte ich auch bereits analysiert und hergeleitet. Allerdings komme ich damit auf den oben genannten Term. Sie wäre grundsätzlich auch eine Möglichkeit die komplexen Ausdrücke für Strom und Spannung zu bestimmen. Allerdings wird die FFT hauptsächlich bei periodischen Signalen, die keinem Sinus entsprechen angewandt, weshalb sie eventuell ein wenig Overkill ist. Und das Erbstück scheint es auch so hinzubekommen... Nur die mathematische Herleitung fehlt. Es werden bei dabei auch keine Samples weggeworfen. Im Prinzip wird die Produktsumme gebildet also: Realanteil = Sample[0]*Cosinus_Erwartungswert[0]+...+Sample[n]*Cosinus_Erwartungswert [n]...+Sample[N]*Cosinus_Erwartungswert[N] Imaginäranteil = Sample[0]*Sinus_Erwartungswert[0]+...+Sample[n]*Sinus_Erwartungswert[n]. ..+Sample[N]*Sinus_Erwartungswert[N] Für die Sollwert-Tabellen wurde relative simpel im Vorfeld die Werte von der Sinus und Cosinus der Errungungsignals berechnet. u = U *sin(wt) i = I * sin(wt) t ist definiert durch die Acquisitionrate des ADC.
Ronald W. schrieb: > Und das Erbstück scheint es auch so hinzubekommen... > Nur die mathematische Herleitung fehlt. Naja... sie wird als bekannt vorausgesetzt. > Im Prinzip wird die Produktsumme gebildet also: Richtig. Im Diskreten nennt man das "Skalarprodukt"; im Stetigen wohl "Faltung". Der Korrelationskoeffizient beruht darauf. Das Skalarprodukt lässt sich als "Ähnlichkeitsmaß" für die Vektoren im n-dimensionalen Raum auffassen. Wenn das (auf die euklidische Länge des Vektors normalisierte) Skalarprodukt Null ist, sind die Vektoren maximal "unähnlich", d.h. sie stehen senkrecht aufeinander. Ist das Skalarprodukt "Eins", sind beide Vektoren "maximal ähnlich" -- nämlich identisch. Zeigen sie "ungefähr in dieselbe Richtung", kommt ein Wert kleiner als Eins heraus, und so weiter. > Realanteil = > Sample[0]*Cosinus_Erwartungswert[0]+...+Sample[n]*Cosinus_Erwartungswert > [n]...+Sample[N]*Cosinus_Erwartungswert[N] > Imaginäranteil = > Sample[0]*Sinus_Erwartungswert[0]+...+Sample[n]*Sinus_Erwartungswert[n]. > ..+Sample[N]*Sinus_Erwartungswert[N] Formel ist korrekt; Bezeichnung "Erwartungswert" ist Quark, das stammt aus der Statistik und hat hier nichts zu suchen. > Für die Sollwert-Tabellen wurde relative simpel im Vorfeld die > Werte von der Sinus und Cosinus der Errungungsignals berechnet. > u = U *sin(wt) > i = I * sin(wt) > t ist definiert durch die Acquisitionrate des ADC. Richtig. Im Prinzip ist das nur die Definition für einen einzigen FOURIER-Koeffizienten; es wird halt die "Ähnlichkeit" des Eingangssignales mit der entsprechenden Harmonischen bestimmt. Die FFT ist nur ein schnellerer Algorithmus, der sehr trickreich alle Spektrallinien gleichzeitig berechnet und durch geschickte Ausnutzung von Zwischenergebnissen viel Aufwand einspart. Von der rein mathematischen Seite bietet die FFT nichts neues oder anderes. Den Artikel zum Görtzel-Algorithmus habe ich nur überflogen; meiner Meinung nach spart Görtzel nur die Berechnung der Winkelfunktionen ein, indem rechnerisch ein "Sinusoszillator" der gewünschten Frequenz simuliert wird. Wenn man Platz für eine Sinustabelle hat, bringt Görtzel mMn keinen Vorteil. Mathematisch ist es ohnehin identisch.
Ronald W. schrieb: > Allerdings wird die FFT hauptsächlich bei periodischen Signalen, die > keinem Sinus entsprechen angewandt, weshalb sie eventuell ein wenig > Overkill ist. Es ging nicht um die konkrete Implementierung sondern um die Herleitung, die Implementierung hast du ja. Bei einem perfekten Sinus wären alle bis auf einen Term der fft 0. > Und das Erbstück scheint es auch so hinzubekommen... Nur die > mathematische Herleitung fehlt. @egon_d hat das ja gut beschrieben, hier nur noch eine Ergänzung: https://de.wikipedia.org/wiki/Korrelation_(Signalverarbeitung)#Korrelationsfaktor_als_Ma%C3%9F_f%C3%BCr_die_%C3%84hnlichkeit_zweier_Signale Michael
Ronald W. schrieb: > Da es sich um ein periodisches Sinusförmiges Signal handelt sollte eine > Fourier-Transformation nicht nötig sein. .. das ganze rumgelaber, sagt mir, hier sieht keiner von euch durch, zb. Götzel ist ja voll daneben bei den Bedingungen "periodisches Sinusförmiges Signal" , weil dann gilt einfach Realanteil = Einzelamplitude einer Frequence Imaginäranteil = Phasenlage Strom/Spannung Wie man dann die Phase berechnet ist wohl klar, oder? cos oder sin und Wissen der 7/8. Klasse.
Snafu schrieb: > ... rumgelaber > ... hier sieht keiner von euch durch > ... voll daneben > ... ist wohl klar, oder? > ... Wissen der 7/8. Klasse.
Trolle ignoriert man, auch wenn es schwerfällt. Don't feed the Troll... Michael
Fourieransatz, Goertzel und dieser hier:
>>>>>>>>>>>
Realanteil =
Sample[0]*Cosinus_Erwartungswert[0]+...+Sample[n]*Cosinus_Erwartungswert
[n]...+Sample[N]*Cosinus_Erwartungswert[N]
Imaginäranteil =
Sample[0]*Sinus_Erwartungswert[0]+...+Sample[n]*Sinus_Erwartungswert[n].
..+Sample[N]*Sinus_Erwartungswert[N]
<<<<<<<<<<<
sind dasselbe Vorgehen.
Als Nachrichtentechniker würde man das 'Mischen mit einem komplexen
Träger' nennen.
Also mach es so wie Du selbst beschrieben hast für den Strom und die
Spannung. Du bekommst zwei komplexe Werte, der Winkel zwischen denen ist
die Phasenverschiebung zwischen Strom und Spannung.
math rulez!
Cheers
Detlef
Hallo Leute, vielen Dank für die Vielzahl an hilfreichen Posts. anbei die Herleitung der Formel mit der die Werte für die Tabelle mit den "Referenzwerten" berechnet werden. Sie müsste so stimmen aber je mehr Augen drauf schauen desto besser. Sofern diese Herleitung stimmt, heißt das wir bestimmen n Werte der Fourierreihe eines Sinus (Spannung)und Cosinus (Strom). Somit wäre schonmal geklärt warum und wie wir die Vergleichswerte bestimmen. Im nächsten Schritt stünde dann der Algo an der bewertet, wie groß das Mass der Übereinstimmung beider Signale ist (Eingangssignal & Referenzsignal). Die Antwort von Egon erscheint mir soweit plausibel. Wir bilden als für jeden ADC Messwert das Skalarprodukt mit dem Wert des Vergleichssignals und bilden über diese die n Skalarprodukte die Summe. Ein Wert nahe null dieser Skalarproduktsumme impliziert eine geringe Korrelation. Ein sehr hoher Wert (muss noch normiert werden) impliziert ein sehr hohes Mass der Korrelation. Somit verbliebe für mich nur noch die Frage zu klären ist es lediglich eine Kreuzkorrelation oder handelt es sich bereits um einen Matched Filter. Ich denke mein Hauptproblem dabei ist, dass sich beide anscheinend nur in Nuancen unterscheiden. Ein möglicher Unterschied ist, das die Kreuzkorrelation zwei Signale miteinander vergleicht und der Matched Filter eher als Filter betrachtet wird. Habt ihr diesbezüglich noch was auf Lager? Grüße und Danke Ron
Eine Korrektur noch: Laut der Fourier-Analyse Funktion bildet man die Summe (wie in der Herleitung gezeigt). Das ist noch ein wenig inplausibel. Da wir ja die Summe der Skalarprodukte bilden und nicht das Skalarprodukt der Summen.
>> ron sxchrieb: >> Laut der Fourier-Analyse Funktion bildet man die Summe (wie in der >> Herleitung gezeigt). >> Das ist noch ein wenig inplausibel. >> Da wir ja die Summe der Skalarprodukte bilden und nicwieht das >> Skalarprodukt der Summen. Wir multiplizieren im Zeitbereich wie bei einem FIR . Oder nehmen eine Spektrallinie heraus und bezeichnen das als Filter (goerzel)
@max123. Das ist korrekt wir multiplizieren in der Time Domain. Das entspricht einem FIR Filter, der ja im Prinzip eine Kreuzkorrelation darstellt. Damit wäre aus meiner Sicht aber das Thema Fourier ersmtal raus. Für mich bleibt damit aber nach wie vor die Frage offen, wieso wir daraus den komplexen Strom und die komplexe Spannung bestimmen können.
@Max123 Hättest ihr eine konkrete Herleitung für Goertzel, die ich mir mal ansehen kann. Bei den Wikipedia Artikeln erkenne ich keinen Zusammenhang zwischen den Gleichungen die man aus dessen Herleitung erhält und der von mir verwendeten Gleichung. Im allgemeinenen wäre mathematische Darstellungen eventuell hilfreich.
Ich würde die Zeitdifferenz zwischen den Nulldurchgängen zwischen den steigenten Strom und Spannungswerte messen. 0ms = 0° , 5ms = 90° , 10ms = 180°
Moin, Das klingt fuer mich doch arg kryptisch: Ronald W. schrieb: > Der Phaselock bezieht sich auf das anregende Spannungssignal. > Der Strom ist quasi die Eingangsgröße, die zurück von der Messstrecke > kommt. > Die Akquisitionrate beträgt ca. 1MSample/s aufgeteilt auf Strom und > Spannung -> Also ca. 500kSample/s pro Kanal. Ok, wenn du also ca. 2x500kSamples/s samplest, was hat dann das anregende Spannungssignal fuer eine Frequenz - und (wie) ist da die Phase zum Sampletakt gelockt? Gruss WK
Wie oben erwähnt hat das abgetastet Signal 100kHz. Der ADC und die den Sinus erzeugenden Output Compare Schaltung werden zum Zeitpunkt t=0 synchroninisiert. Davon ausgehende werden die Werte der gesuchten Grundschwingung zum Zeitpunkt der ADC Samplings berechnet.
Moin, ron schrieb: > Der ADC und die den Sinus erzeugenden Output Compare Schaltung werden > zum Zeitpunkt t=0 synchroninisiert. Hm. OK, wenn danach der ADC Takt und der Sinus auseinanderdriften wird's wohl nix bringen. Aber ich seh' auch nicht, warum's unbedingt dann ein Goerzel sein muss. Ich wuerd' da halt aus Strom- und Spannungssamples die Schein- und Wirkleistung berechnen, daraus geht die Blindleistung und damit sollte man dann alles ausser dem Vorzeichen des Im-Teils ueber die Impedanz wissen, ohne Goertzel, Fourier, oder irgendwelchen Filtereien. Gruss WK
Wenn die Frequenz fest und vorgegeben ist, benoetigt man weder FFT noch Goertzel. Dann ist es viel einfacher. Der Anteil in Phase ist der Realteil, der ausser Phase ist der Imaginaerteil. Also, die Messwerte mit Sin & Cos multiplizieren und addieren, resp tiefpassen, ergeben gleich die Anteile an Real & Imaginär. Die Tiefpass Zeitkonstante soll einige dutzend Periode betragen.
Joggel E. schrieb: > Wenn die Frequenz fest und vorgegeben ist benoetigt man weder FFT noch Goertzel. Die zweite Bedingung die zusätzlich erfüllt sein muss ist, dass der Strom einen rein sinusförmigen Verlauf hat. Beispielsweise würden Phasen-Anschnitt/-Abschnitt Steuerungen das Ergebnis verfälschen. Ich denke nicht, dass dies in diesem Projekt der Fall ist (das weiss nur der TO alleine), aber wenn jemand ein Smartmeter baut, dann bitte berücksichtigen und vor allem testen. Michael
@Joggel: Danke für die Info. Wie nennt man das ganze dann? Kreuzkorrelation und wie kann man den mathematischen Zusammenhang herbekommen? @Michael: Der Strom ist Sinusförmig.
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.