Forum: Mikrocontroller und Digitale Elektronik Wirk- und Scheinleistung berechnen wie effektiv lösen?


von Dennis (Gast)


Lesenswert?

Hallo,
ich möchte mit einen AtMega32 die Wirk- und Scheinleistung berechnen.

Dazu wird in einer vorgegebenen Frequenz (z.b. 10KHz) Spannung und Strom 
mit den ADC gemessen.

Nun möchte ich für eine Statistik Minütlich aufgeschlüsselt die Wirk- 
und Scheinleistung ausgeben.



Berechnung der Wirkleistung:
Bei jeder Messung i*u und die Ergebnisse aufsummieren
nach n Messungen die summe durch n teilen.

Wären bei einer Sekunde 10000 aufsummierte Multiplikationen und in der 
Minute 600000 --> was soll ich denn da für eine Variable nehmen wo die 
summen von 600000 Multiplikationen rein passen?
--> das muss doch auch effektiver gehen?




Berechnung der Scheinleistung:
Bei jeder Messung u² und i², dann das ganze aufsummieren .
nach 1min durch 600000 teilen und die Wurzel ziehen.
ich habe hier das gleiche Problem wie oben genannt.

wie bekomme ich das möglichst effektiv hin?


Gruß
Dennis

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Wenn du Oberwellen mitmessen willst, geht es nicht einfacher. Du kannst 
es mathematisch in Vektoren fassen, was es dann kürzer aussehen läßt 
aber nicht die Rechenleistung mindert.
Der Momentanwert läßt sich aufsummieren und periodisch teilen. Dann ist 
die Impulsantwort nicht ganz so schön aber es reicht für Menschen dicke 
aus. z.B. ein Meßwert pro Sekunde ausgeben. Wäre etwas 
speicherschonender.

Im Prinzip läuft es immer auf eine FIR-Filterstruktur raus.


Oder eben rein analog realisieren. Da gibts dann ne Menge Möglichkeiten.


Ein Mittelweg ist eine gemischt analog-digitale Verarbeitung z.B. durch 
Modulatoren.

von amateur (Gast)


Lesenswert?

Mit ein paar Einschränkungen gilt: Je schneller Du misst, desto genauer 
wird das Ergebnis.
Das Problem dabei ist: Was machst du dann mit 10000 Werten pro Sekunde?
Willst Du die alle persönlich kennenlernen, so wird Dich in kürzester 
Zeit ein riesiger Datenwust überrollen, der abtransportiert werden muss.
Wahrscheinlich wirst Du die in Sekunden- oder Minutenpakete verpacken 
und dann...
Messen ist eine feine Sache aber es könnte nicht schaden sich auch 
Gedanken über die Verarbeitung zu machen.
Oder anders ausgedrückt: Wenn das Messen nicht zum Selbstzweck werden 
soll, so ist die Verarbeitung ein integraler Bestandteil der Messung 
selbst.

von Bernie (Gast)


Lesenswert?

AtMega32 – 2Kbytes Internal SRAM

Da du noch etwas Platz für's Drumherum brauchst,
kannst du vieleicht 500...700 Messergebnisse
im Speicher halten, wenn du sie in 2 Byte packen kannst.

Das ist keine Aufgabe für einen µC, wenn du dir nicht eine
Erfassungs- und Auswertungs-Strategie ausdenkst, die damit
auskommt.

Worum gehts denn? Verbrauch an Netzspannung?

Grundeinheit wäre 20 ms. Das sind bei 10000 samples/s
schon mal 200 Werte.

Jetzt überleg dir was du davon brauchst: Min-Max-Mittelwert?

Schon sind es nur noch 3 * 2 = 6 Byte in 20 ms.

Das werden 50 * 6 = 300 Byte in einer Sekunde.

Was brauchst du davon?

Daraus ergeben sich ... Byte pro Minute.






M

von Peter II (Gast)


Lesenswert?

Bernie schrieb:
> Jetzt überleg dir was du davon brauchst: Min-Max-Mittelwert?

wie willst du damit die Scheinleistung von einem Netzgerät messen?

Es ist schon richtig wie er es macht, es muss so oft messen wie möglich 
nur damit kann er genauer werte ermitteln. Alles andere wird nur eine 
schätzung.
@Dennis

simuliere doch einfach mal wie lange eine Berechnung braucht, damit 
kannst du abschätzen wie viele Berechnung du pro s schaffst.

mit 32bit wird es wirklich sehr eng mit den werten, kannst es ja mal mit 
64bit versuchen, aber da soll nicht so optimal auf dem µC laufen.

von Fritz (Gast)


Lesenswert?

Dennis schrieb:
> Wären bei einer Sekunde 10000 aufsummierte Multiplikationen und in der
> Minute 600000 --> was soll ich denn da für eine Variable nehmen wo die
> summen von 600000 Multiplikationen rein passen?
> --> das muss doch auch effektiver gehen?

Ich sehe dein Problem nicht:
Wenn ich großzügig einen 16-bit ADC nehme habe ich:
16bit * 16bit = 32Bit
In einer 64bit-variablen kannst du dann 2**32 Produkte aufsummieren.
Gilt für u*I bzw u*u, i*i.

Im Grunde, wenn du die einzelnen Messwerte nicht brauchst, ist der 
RAM-Bedarf minimal.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Naja, das Oversampling sollte mind. 100:1 sein, besser 1000:1 und das 
bei 50Hz! Reduktion im Speicherbedarf allenfalls durch gleitende 
Mittelwertbildung möglich, was eben die Impulsantwort verschlechtert. 
War schon alles im Forum.

von amateur (Gast)


Lesenswert?

Wenn er alles bis auf eine Summe eindampfen kann, wird er in den 
nächsten paar hundert Jahren keine Speicherprobleme haben.
Aber über den Grund der Messung und eine eventuelle Weiterverarbeitung, 
hat der TO sich ja bis jetzt ausgeschwiegen.
Vielleicht hat aber jemand eine funktionsfähige Glaskugel zu Hand.

von Fritz (Gast)


Lesenswert?

Abdul K. schrieb:
> Naja, das Oversampling sollte mind. 100:1 sein, besser 1000:1 und das
> bei 50Hz!

Bei halbwegs normalen Verbrauchern ist der Oberschwingungsanteil höherer 
Ordnung (so ab ca. 15 Oberschwingung) sehr gering und geht kaum in die 
Wirkleistung mit ein.
Nicht umsonsonst sind in der Norm EN50160 nur Messung bis zur 50. 
Harmonischen vorgeschrieben.
Also 128-Oversampling ist OK.

von Martin (Gast)


Lesenswert?

Hallo!
Vorschlag: wenn nur die Grundschwingungsleistung interessiert vielleicht 
jeweils von U und I mit einer dq-PLL Phase und Amplitude bestimmen und 
dann die interessierenden Größen berechnen.
Gruß Martin

von Fritz (Gast)


Lesenswert?

Martin schrieb:
> dq-PLL

Was ist das?

von Martin (Gast)


Lesenswert?

Hallo Fritz!

Eine dq-PLL hat mehrere Namen. Google hilft...

"Synchronous Reference Frame - PLL" - SRF-PLL

http://pe.org.pl/articles/2011/4/48.pdf

Für den drei-phasigen Fall, einphasig ist etwas umständlicher, je nach 
gewünschter Genauigkeit...

Viel Efolg!
Bei Fragen einfach weiter posten...

von ah. (Gast)


Lesenswert?

Man muss eigentlich nur den Mittelwert ueber etwas mehr als eine Periode 
bilden. Wie macht man das ? Mit einem Tiefpass. Natuerlich digital. 
Siehe auch :
http://www.ibrtses.com/embedded/exponential.html

Und dann die Zeitkonstante auf etwa 10000 Messwerte setzen. Das naechste 
waeren dann 16384, also : shift right 14. Und daher mit 32bit variablen 
rechnen.

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.