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
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.
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.
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
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.
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.
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.
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.
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.
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
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.