Hallo,
folgendes Setup:
Ich möchte vom 50Hz Netz aus Frequenz, Amplitude & Phasenlage bestimmen.
Das ganze mit möglichst wenig Rechenaufwand (=Laufzeit).
Cortex M4 habe ich zum Rechenen, also sollte einiges gehen.
Ich messe z.B. mit einer Abtastrate von 10kHz die Netzfrequenz und
möchte (nach einer Einschwingzeit x) die oben genannten Werte erhalten.
Was ich mir bisjetzt überlegt hatte:
1. FFT
"Haste keine Ahnung mach 'ne FFT" und lies die entsprechenden Werte
raus. Die Phasenlage würde ich aber so nicht bekommen.
Was mir suspekt ist: Viel zu viel Rechnerei.
2. Pony
Hier im Forum gefunden
Beitrag "Frequenz, Amplitude und Phase eines Sinussignals bestimmen"
Was mir suspekt ist: Abtastratensensibel
3. "PHASOR MEASUREMENT UNIT ALGORITHM USING DELAY DEVICES"
Irgendwie basierend auf Lisagou-Figuren, ohne das ich das jetzt richtig
verstanden habe.
Demo
https://www.youtube.com/watch?v=ItjDd4kSHJc
Paper
http://www.eurasip.org/Proceedings/Eusipco/Eusipco2015/papers/1570093445.pdf
Sieht eigentlich ganz okay aus, jedoch immer noch Rechnerei.
4. Idee: Sinusfrequenz mit Bandpass filtern (z.B. 49Hz-51Hz) +
Nulldurchgang messen
Welche Algorythmen ich schon ausgeschlossen habe:
-Nulldurchgangsmessung: Ungenau bei Netzmodulation
Meine Fragen an euch.
Habt ihr schon was implementiert, und wenn ja mit was habt ihr gute
Erfahrungen? Wieviel Rechenzeit habt ihr einplanen müssen? Was sollte
man auf jeden Fall bleiben lassen?
Danke für den Support,
Michael
Michael H. schrieb:> Irgendwie basierend auf Lisajous-Figuren, ohne das ich das jetzt richtig> verstanden habe.
Ist aber das einfachste.
Ausser dem zu messenden Signal brauchst du eine genaue und stabile
Referenzfrequenz, z.B. aus DCF77 oder GPS abgeleitet.
P.S.:
Fourier kannst du hier vergessen; der zeigt dir nur, ob das Signal
verzerrt ist oder andere Frequenzen enthält.
Frquenzmessung kannste ja schonmal so machen:
http://www.fritzler-avr.de/HP/netzfreq.php
oder mit einem internen 32Bit Zähler im µC.
Phasenlage vergleichste dann mit einem internen 50Hz Signal.
Frizler, du machst das Quasi über einen gefilterten Nulldurchgang. Ich
finde das mit den Transistoren eine clevere Lösung!
Ich habe die Hardware schon fertig (Netzmessung) und möchte eigentlich
"nurnoch" einen Algo drüberprogrammieren.
./. schrieb:>> Phasenlage>> ist ja wohl Kaese.> Woher soll die Bezugsphase kommen?
Wie ich schon sagte, dazu braucht man "einfach" ein genaues internes
50Hz Signal und vergleicht dazu.
Mir fällt aber nicht ein wozu man das bräuchte.
Michael H. schrieb:> Ich habe die Hardware schon fertig (Netzmessung) und möchte eigentlich> "nurnoch" einen Algo drüberprogrammieren.
Das Problem ist eben, dass die Netzfrequenz auf 10mHz genau gemessen
werden muss.
Bei 10kS/s und ner FFT sehe ich nicht wie das klappen soll.
Eine FFT mit einem Binning <10mHz würde ich jetzt auch nicht als
"möglichst wenig rechenaufwand" einstufen.
Meine Schaltung tastet das Signal quasi als 1Bit ADC mit 16MS/s ab.
Demnächst kommt dann noch das 1pps Signal aus nem GPS Empfänger dazu.
Hi, Michael,
das war meine erste Anwendung eines Switched-Capacitor-Filters von
Reticon. Damals R5622, Nachfolger LMF100.
Beide Filter im IC gemeinsam als Bandpass geschaltet, RC-Tiefpässe davor
und danach.
Sehr wenig Hardware für die Qualität der Filterflanken.
Ciao
Wolfgang Horn
Die FFT bringt eher nicht die nötige Auflösung und ist auch nicht so
wenig Rechenaufwand. Die Rechenzeit ist dabei eher weniger das Problem,
sondern der Speicherbedarf kann auf einem µC zum Problem werden.
Die Phasor-methode sollte so oder so ähnlich wie im Artikel beschrieben
schon ganz gut funktionieren. Bei den Sinus / cosinus werten kann man
ggf. Tabellen nutzen, wenn die Rechenzeit knapp werden sollte. Der Witz
bei der Methode ist, das nach dem ersten schritt mit einer sehr viel
niedrigeren Zwischenfrequenz (nahe 0) gearbeitet wird. Entsprechend
reichen da wenige Samples aus, und nur der erste Schritt ist wirklich
zeitkritisch. Auch braucht man nur relativ wenig daten-speicher.
Die Filtermethode kann in Prinzip auch funktionieren, wenn der
numerische Filter wirklich gut ist, aber dann wird auch der Aufwand für
die Berechnung sehr hoch, höher als bei der Phasor methode.
Phasenlage zu bestimmen verstehe ich trotzdem nicht. Macht doch
keinerlei Sinn die Phasenlage zu einem beliebigen, von mir aus auch
hochgenauen, aber dennoch asynchronen Referenzsignal zu messen? Solange
die Signale nicht phasenstarr sind, gibts da nichts zu messen. Da kann
jeder beliebige Wert rauskommen, der dann auch noch ständig wandert,
wenn die Signale nicht frequenzgleich sein (und das können sie nicht
sein ohne Kopplung). Aber selbst bei Frequenzgleichheit sagt das doch
überhaupt nichts aus?
./. schrieb:>> Phasenlage>> ist ja wohl Kaese.> Woher soll die Bezugsphase kommen?
Dachte ich auch im ersten Augenblick.
Aber für die Energieversorgungsunternehmen kann es durchaus
vorteilhaft sein die Einspeisung in das Verbundnetz,
das dann als Referenz dient, frequenz- UND phasenrichtig durchzuführen.
Der Phasor, wie in dem obengenannten Paper beschrieben, ist dann
ein vernünftiger Messwert für die Regelung.
Das Paper weißt ja auch auf eine Anwendung bei einem japanischen EVU
hin.
Für den Endanwender im trauten Heim ist die Phase natürlich beliebig
sinnvoll ;-)
Reinhard M. schrieb:> Aber für die Energieversorgungsunternehmen kann es durchaus> vorteilhaft sein die Einspeisung in das Verbundnetz,> das dann als Referenz dient, frequenz- UND phasenrichtig durchzuführen.
Dann dient aber das 2. Netz als Bezugspunkt um die Phasengleichheit
herzustellen. In den Anfaengen der Wechselstromtechnik wurde sowas mit
Glimmlampen in Hell oder Dunkelschaltung syncronisiert.
Hallo Michael
über die F -Messung muss noch meditieren.
Es sieht so aus, als müsste der Beginn der Messung beim Nulldurchgang
starten.
Ein Rücksetzen der Zustandsvariablen bringt nichts.
deshalb
1
if(n<=4)
2
f=Fmeas(x,fsample);
Naja, für eine erste Demo reicht es.
Ich möchte mich weiter mit dem Thema beschäftigen, falls ich die
Zeit dazu finde.
Schönes WE.
Naja, wie Du schon geschrieben hast, die F-Messung will noch nicht; die
misst nur das 4. mal richtig, wenn man es weiterlaufen lässt, dann will
es nicht.
Ich werde mir mal das Paper nochmals genau durchlesen (müssen) und noch
ein paar Grundlagen verstehen, denn soweit wie Du bin ich noch nicht.
Update: Was mir bei der Frequenzmessung aufgefallen ist: Wir haben ja
einen Delay von 4, also brauchen wir 5 variablen.
Der hat da ja eine Mittelwertbildung reingebracht, leider ist die Formel
nicht so wirklich leicht verständlich.
Hat jemand das Lissajous Product verstanden, wie das funktioniert?
Was mir sonst noch bei der Frequenzmessung aufgefallen ist:
Wird das nicht bei jedem durchlauf zu Null gesetzt?
>static double s_1 = 0.0;>static double s_2 = 0.0;>static double s_3 = 0.0;>static double s_4 = 0.0;
Static: Ja, habs nochmal nachgelesen. Passt scho. Hatte ich falsch in
Erinnerung...
Variablenanzahl: Auch klar, wir haben die ganze Zeit schon 5.
Jedoch sagt, mir meine Nase, das in diesem L.-Produkt der Hund vergraben
liegt. Im Paper ist das nicht gut erklärt.
Michael H. schrieb:> 1. FFT> "Haste keine Ahnung mach 'ne FFT" und lies die entsprechenden Werte> raus. Die Phasenlage würde ich aber so nicht bekommen.
Warum das denn nicht? Natürlich liefert die FFT auch die Phasenlage.
Und wenn eine hohe Auflösung bei nur wenigen interessanten Bins zu
aufwändig ist, dann schaue man sich den Görtzel-Algo an.
Einen Kommentar noch zur Genauigkeit:
Je kleiner man den Änderungswinkel macht, desto mehr wirkt sich das
Rauschen aus. Daher ist es empfehlenswert die Samplingfrequenz zu
senken, und eventuell mit dem MCU Hardware-Averaging betreiben.
Wenn ich jetzt den Filter auf 50 Durchschnittswerte und die
Samplingfrequenz auf 1000Hz Einstelle komme ich auf 50.1234xx was für
OTTO-ADVANCED-Programmer reichen sollte.
Zum Schluss muss ich noch was loswerden: Der Typ ist ein Genie. Ich
staune immer wieder was man alles mit Sinus/Cos-Sätzen machen kann.
Ist jetzt nurnoch die Frage ob das Ergebnis stimmt.
Kannste ja hiermit abgleichn: http://www.netzfrequenzmessung.de/
Aber nicht daurnd laufen haben, nach ner Weile wird man für nen Tag
gesperrt wegen zu viel Traffic.
Server zu schwach...
Mw E. schrieb:> Ist jetzt nurnoch die Frage ob das Ergebnis stimmt.
Ich erzeuge im Code meine eigene Referenzfrequenz, Das Skript schiebt
nur Zahlen hin und her. Und daher weiß ich, dass es stimmt. Weil das
rauskommt was rauskommen soll.
Hallo Michael
entschuldige das ich mich erst jetzt wieder melde,
aber am Wochenende bin ich meistens nicht online;-)
Du hast vollkommen recht: Filtern ist Pflicht.
In dem Paper wurde dem Averaging auch ein Absatz gewidmet,
den hab ich bislang ignoriert, weil ich ihn nicht so wichtig hielt.
Dem ist aber anscheinend nicht so.
Deine Updates werde ich mir dann gleich mal anschauen.
Michael H. schrieb:> Je kleiner man den Änderungswinkel macht, desto mehr wirkt sich das> Rauschen aus. Daher ist es empfehlenswert die Samplingfrequenz zu> senken, und eventuell mit dem MCU Hardware-Averaging betreiben.>> Wenn ich jetzt den Filter auf 50 Durchschnittswerte und die> Samplingfrequenz auf 1000Hz Einstelle komme ich auf 50.1234xx was für> OTTO-ADVANCED-Programmer reichen sollte.
Das ist schon ein sehr interessantes Phänomen.