Watt bei Netzschwankungen konstant halten

Hallo,

Ich habe das problem das das in einem Betriebsgebiet Spannungsschwankungen von ±5V habe was sich auf meine Wattsteuerung auswirk. Diese steuer ich per PWM.
Diese doch das verhältnis zwischen Watt und PWM bleibt nicht konstant weswegen ich auch nicht die funktion “map” benutzen kann.
Also suche ich eine lösung um trotzdem die Wattzahl konstant zu halten, da habe ich mir folgendes überlegt:

Watt = 1300;
    if (W < Watt){
      fade++; 
      analogWrite(ledPin, fade);      
    }
    if(W > Watt){
      fade--;
      analogWrite(ledPin, fade);
    }

Nun bin ich mir nicht sicher ob er gleich den benötigten PWM(fade)-Wert nimmt oder ob er jetzt in einser schritten runter oder hoch geht? Ich will das erstere erreichen.
Würde das so klappen?

mfg

strohhirn

Watt is ne Wattsteuerung???

damit steuert man ein schiff..

Ein Wirklicher "Regler" ist das so nicht. Eine Regelung wäre so etwas wie: (Sollwert-Istwert)*Verstärkung=Ausgang (PWM)
Du gehst in deinem Fall sehr "grob" vor indem du nur vergleichst (digital) und durch das Erhöhen von Fade um nur einen Wert die Verstärkung (und damit die Ausgleichgeschwindigkeit) sehr gering ist.
Das Problem von Reglern ist aber allgemein, dass bei einer zu hohen Verstärkung (und die variable Totzeit des Arduinos) Regler instabiel werden können.
Zudem musst du um die Spannung überhaupt richtig abzutasten die PWM Frequenz aus dem Ausgangsignal vollständig herausfiltern, sonst kommt da nur Mist heraus.

Ich würde daher die PWM Frequenz eher nach Erfahrungswerten stellen ohne Regelung. Also für Jede Netzspannung eine feste PWM Rate nehmen.

Beschreib mal die Schaltung, da mir beim besten willen nicht einfällt wie man bei Wechselspannung mittels PWM die Leistung regeln kann.
Grüße Uwe

Eine Regelung wäre so etwas wie: (Sollwert-Istwert)*Verstärkung=Ausgang (PWM)
Du gehst in deinem Fall sehr “grob” vor indem du nur vergleichst (digital) und durch das Erhöhen von Fade um nur einen Wert die Verstärkung (und damit die Ausgleichgeschwindigkeit) sehr gering ist.
Das Problem von Reglern ist aber allgemein, dass bei einer zu hohen Verstärkung (und die variable Totzeit des Arduinos) Regler instabiel werden können.

Da ist viel richtiges drin, beschreibt aber auch nur einen allersimpelsten P-Regler.
Aber auch strohhirn hat einen ( 2-Punkt - ) Regler, vorausgesetzt, eine Änderung von fade beeinflusst irgendwie die Variable W.
Dessen größtes Manko ist – neben dem Ignorieren der Größe der Regelabweichung – , dass die Zeit zwischen zwei Regelschritten unklar ist, dadurch ist die Zeitkonstante seines I-Reglers ziemlich undefiniert.

@Eisebaer, Klaus_ww: Das Watt steht in Deutschland fast überall unter Naturschutz, gehört seit 2009 zum UNESCO-Weltnaturerbe und wird nur von den Gezeiten geregelt.

Watt is ne Wattsteuerung???

damit steuert man ein schiff..

Watt (Schiff) – Wikipedia

Verzeiht meine etwas grobe erklärung und falsche Begriffsverwendung, aber das meinte ich damit natürlich nicht!

Beschreib mal die Schaltung, da mir beim besten willen nicht einfällt wie man bei Wechselspannung mittels PWM die Leistung regeln kann.
Grüße Uwe

Also ich habe 2 Kemo module:

  1. Kemo M28 M028 Leistungsregler 110 - 240 V/AC, 2600 VA
    Mit diesem kann man ohmsche Lasten(3kW Heizelement in meinem fall) steuern.
  2. Kemo M150 M150 DC + Puls Converter
    Dieses modul schließe ich statt des potis an das M28 Modul und kann es somit mit PWM steuern

Ich messe mit dem ACS 712 Stromsensor den strom und rechne ihn nach der Formel: R^2 * I = P (R des Heizelements) in Watt um.
Das 3kW Heizelement kann ich mit einem relais voll einschalten oder mit den Kemo modulen die Leistung steuern.

Wenn ich jetzt beispielsweise das heizelement auf 1kW halten will kann ich nicht einen bestimmten PWM wert eingeben da ja im Netz Spannungsschwankungen von +-5V herschen. Ich kann das PWM signal aber auch nicht nach der Leistung skalieren, da die der PWM wert nicht konstant mit der Leistung steigt.

Nun suche ich nach einer Lösung um die Leistung trotzdem konstant zu halten. Dafür habe ich erstmal diesen 2-Punkt regler gemacht, ich hab ihn aber noch nicht ausprobiert und weiß nicht ob er sofort den PWM wert richtig reguliert oder langsam in einserschriten rauf oder runter geht. Ich will das erstere erreichen.

(übrigens möchte ich gewolt das heizelement auf einer bestimmten Leistungszahl halten und nicht mit irgend einem sollwert regler um eine temperatur zu halten!)

Nun habt ihr mir ja schon antworten gegeben die ich (wie immermal) schlecht verstehe.

(Sollwert-Istwert)*Verstärkung=Ausgang (PWM)

Könntest du mir bitte ein konkreteres Beispiel mit werten geben, um es besser zu verstehen?

Ich schätze ja eure erfahrung und inteligenz, aber es währe wirklich nett wenn ihr eure Antworten so verständlich und einfach wie möglich halten würdet.
Ich habe zum beispiel keine ahnung was du mir damit sagen willst:

Dessen größtes Manko ist -- neben dem Ignorieren der Größe der Regelabweichung -- , dass die Zeit zwischen zwei Regelschritten unklar ist, dadurch ist die Zeitkonstante seines I-Reglers ziemlich undefiniert.

Mfg

strohhirn

Hallo,

wenn du von einem konstanten Innenwiederstand deines Heizelements ausgehen kannst, ist der Strom bei gewünschter Leistung doch bekannt, ansonsten musst du die Spannung zusätzlich erfassen.

Was du brauchst ist ein P-, PI- oder PID-Regler, das kommt auf den genauen Anwendungsfalls an. Ich empfehle Google zum Thema "PID-Regler" dort bekommst du schnell die einzelen Elemente erklärt, auch Code muss nicht neu erfunden werden.

"Sollwert" = (deine gewünschte Leistung)
"Istwert" = (momentan abgegebene Leistung am Heizelement (gebildet aus deiner Stromerfassung etc.))
daraus kannst du dann deine Regleabweichung (Xd) bilden
die wiederum dein entsprechender Regler (PI, PID) in eine "Stellgröße Y" (PWM Signal) umwandelt.

Grüße fckw

Aus Neugierde: wieso muss die Leistung in dem niedrigen Differenzbereich so konstant sein?

dass die Zeit zwischen zwei Regelschritten unklar

aber wichtig ist, kann ich sicher ausführlicher erklären, sollte dir aber schon besser selber klar werden.

Wenn du mir beantworten kannst, wie schnell sich fade ändert, wenn W < 1300 ist, weisst du entweder mehr als du verraten hast, oder du hast das Problem mit der Regelung nicht wirklich verstanden.
Ausserdem solltest du berücksichtigen was passiert, wenn fade schon auf 255 ist, und W immer noch < 1300.

Wie schnell W sich ändert, wenn du fade in einem Schritt von 0 auf z.B. 100 verstellst, kann übrigens keiner wissen, der es nicht gemessen hat; ist aber für deine Regelung sehr interessant.

Aber eigentlich will man mit Heizelementen doch meist eine bestimmte Temperatur erreichen, und nicht unbedingt eine konstante Leistung bei wechselnden Spannungen verbraten, oder was ist der Sinn des Ganzen ?

Ich habe den P Regler erwähnt, weil er zunächst am einfachsten zu verstehen ist. Die verschiedenen Reglerstrukturen Mathematisch richtig zu verstehen ist aus meiner Sicht relativ schwer von jemanden, der nicht einige Semester an der Uni in einem technikorienierten Studium hinter sich hat.
Wikipedia ist daher auch nicht mal "eben" zu verstehen:

Die Programmierung würde ich zunächst GANZ getrennt von dem eigentlichen Problem betrachten, nur so kannst du überhaupt ein Gefühl bekommen, was du in den Programmiercode schreibst.

Ich probiere mal das Reglerproblem in einem praktischem Beispiel zusammenzufassen:

Du stehst zum ersten mal in deiner Dusche mit einer 2Hahn Mischbatterie und willst gerne in deiner gewünschten Temperatur duschen. Du stehst under der Dusche, das Wasser ist zu kalt und daraufhin drehst du den Warmwasserhan voll auf (Sollwert liegt über dem Istwert, daher musst du den Stellwert wärmer drehen). Nach einer kurzen Zeit (aber du hast deine Hand vom Hahn(Steller) schon wieder entfernt) wirst du fast verbrüht. Der Istwert ist weit über den Sollwert hinüber geschossen, weil du einfach "zu stark" reagiert hast. Demzufolge den Warmen han wieder zu und den Kalten Hahn auf. Was folgt ist eine zu kalte Dusche, du hast wieder den Kalten Hahn aufgerissen und frierst, das spiel beginnt von vorne.
Während man normalerweise Duscht, ist einem gar nicht bewusst, welche "Leistung" eigentlich dahinter steckt.

Was hier beschrieben ist, ist ein Instabieler Regler.

Er ist instabiel weil: Du überreagierst (Deine Reglerverstärkung ist zu hoch, d.h der Faktor mit dem du die Abweichung zwischen ist und soll an den Steller weitergibst). Du reagierst zu langsam, weil du und das Wasser eine Zeit braucht, bis der Stellwert überhaupt bei dir als "Sensor" angekommen ist.

Er lässt sich stabilisieren durch: Du reagierst nicht so stark (hektisch), Du stellst auch nicht so schnell und die letzte Möglichkeit du kennst die Dusche und ihr verhalten sehr gut, sodass du von vorne herein den richtigen Wert einstellst, und nur sehr geringe Korrekturen fahren musst.

Er ist stabiel und unbrauchbar: Du reagierst viel zu schwach und brauchst für eine Drehung des Hahnes 10minuten, möchtest aber dann eigentlich schon fertig mit duschen sein.

Übrigens ist der "istwert" in diesem Fall gar nicht so einfach zu bestimmen, man müsste dazu ja eigentlich erst die Wirkleistung (also Spannung in Phase zum Strom) des Heizmodules messen. Auf den Istwert könnte man natürlich durch die Netzspannung schließen, aber der Zusammenhang ist nicht unbedingt linear. > Eine noch so ausgeklügelte Regelung bringt nichts, wenn der Istwert nicht richtig ausgelesen wird.

Ich schlage daher vor:

Wenn du dich wirklich nicht mit der Regelung tiefergehend befassen möchtest, dann suche dir deine Werte aus der Praxis zusammen.

Du benötigst ein Wattmeter. Versuche, welche Leistung bei Maximaler PWM erreicht wird und schaue wie der Verbrauch sich abhängig von der PWM verhällt (P=U*I --> P=u^2 *R --> zu erwarten ist ein Quadratischer Zusammenhang in der Theorie).
Anschließend errechntest du dir, bei welcher Netzspannung du dann welche PWM ansetzten musst um auf die gleiche Leistung zu kommen.
Gehe von einer Standardpwm von vielleicht 90% bei 230V aus, damit du nach oben noch etwas Luft hast.

Im Programm definierst du dann die Intervalle, zwischen welchen Netzspannungen per IF Bedingung dann welche PWM Frequenz angelegt wird.

Wie möchtest du denn überhaupt die Netzspannung messen?

hi,

ich denke auch, daß der ansatz von revox hier der weit bessere ist.
wir wollen ein richtiges ergebnis, und denken natürlich zuerst daran, das ergebnis zu messen und dann die parameter anzupassen, aber in diesem fall, wo es nur um einen parameter geht, der noch dazu nicht sehr variabel ist, ist es viel einfacher und auch unmittelbarer, diesen parameter zu messen und mit dieser messung zu steuern.

gruß stefan

Ich würde es hier einfach mit der sukzessiven Approximation versuchen.
Die aktuelle Leistung misst und berechnet er ja jeweils.
Wie bei einem Regler üblich, wird in einer Schleife mit Geschwindigkeit x jedesmal der Sollwert mit dem Istwert verglichen.
Dabei wird dann entsprechend der Tendenz (zu klein, zu groß) der Stellewert für den Phasenanschnitt um einen kleinen Wert erhöht ider verringert.
Je nach dem, wie groß die Differenz ist, könnte man auch größe Schritte wählen - ansonsten halt kleine.

Man bedenke, dass das hier keineswegs ein lineares System ist.
Durch Erhöhung des Stroms für mehr Leistung bekomme ich ggf. ( ! ) auch mehr Verlust auf der zuführenden Leitung.
Der sich ändernde (kleine) thermische Widerstand ist auch zu berücksichtigen.
Die die thermische Trägheit des Heizelementes.

Das ganze funktioniert natürlich nur so lange, wie das Stellglied für die Heizplatte noch einen gewissen Regelbereich (zu "voll auf") hat.
D.h.: Wennn wirklich 1300W thermische Heizleistung konstant benötigt werden, sollte das Heizelement schon ca. 1500W können.
Insbesondere wenn die Netzspannung schwankt.

Ertmal vielen dank Revox das du dir so eine Mühe gamacht hast mir das zu erklären, ich verstehe das jetzt auch etwas besser.
Wikipedia hab ich mir auch angeschaut, aber da wirst du ja erschlagen von Formeln die ich nicht verstehen kann.
Zu deinem Vorschlag:

Du benötigst ein Wattmeter. Versuche, welche Leistung bei Maximaler PWM erreicht wird und schaue wie der Verbrauch sich abhängig von der PWM verhällt (P=U*I --> P=u^2 *R --> zu erwarten ist ein Quadratischer Zusammenhang in der Theorie).
Anschließend errechntest du dir, bei welcher Netzspannung du dann welche PWM ansetzten musst um auf die gleiche Leistung zu kommen.
Gehe von einer Standardpwm von vielleicht 90% bei 230V aus, damit du nach oben noch etwas Luft hast.

Im Programm definierst du dann die Intervalle, zwischen welchen Netzspannungen per IF Bedingung dann welche PWM Frequenz angelegt wird.

Was meinst du mit Verbrauch?
Heißt die Formel nicht: P = I^2*R oder U^2/R oder was meinst du mit der Formel? Und wozu brauche ich die Formel wenn ich doch eh mit einem Wattmeter messe?
Was ist ein Qudratischer Zasammenhang?

Wie möchtest du denn überhaupt die Netzspannung messen?

Ich habe keinen Arduinosensor der die Netzspannung messen kann.

Ich habe mir deinen Vorschlag mehrmals durchgelesen und Versucht in irgendwie mir bildlich oder praktisch vorzustellen,ich verstehe es aber trotdem nicht ganz.

Mfg

strohhirn

Vergiss bei Reglern die Formeln erst mal (die ganzen Integral-Funktionen braucht man hier sowieso nicht. Das geht auch mit normalen Divisionen), sondern schau dir die Diagramme an (vor allem die Sprungantwort). Da versteht man am ehesten wieso die Proportional-, Integral-, oder Differential-Regler heißen.

Ein P-Regler reagiert auf eine Änderung Eingangsgröße mit einer proportionalen Änderung der Stellgröße. Das hat aber den Nachteil, das immer eine bleibende Regelabweichung vorhanden ist, weil wenn die Regelabweichung 0 ist auch die Stellgröße 0 wird. Dadurch schwingt er immer in der Nähe des gewünschten Sollwerts herum.

Der I-Regler integriert die Regelabweichung. Das heißt er addiert über eine bestimmte Zeit die Regelabweichungen auf, und kann dadurch - anders als der P-Regler - die Regelabweichung nach einer gewissen Zeit auf 0 reduzieren. Außerdem reagiert gut auf kleine Regelabweichungen, wo ein P-Regler mit hoher Verstärkung schnell übersteuern würden. Nachteil: für sich alleine ist er ist durch das zeitliche integrieren langsam. Er neigt aber auch zum Schwingen, je nach Regelstrecke und Wahl der Parameter.

Der D-Regler ändert seine Ausgangsgröße abhängig von der Änderungsgeschwindigkeit der Eingangsgröße. Wie man im Sprungantwort-Diagram sieht ist er alleine nicht zu gebrauchen, aber zusammen mit einem P- oder PI-Regler macht er diese wesentlich schneller, da er sofort auf eine Regelabweichung reagiert.

Auf YouTube gibts da auch Videos wo das mit Beispielen erklärt wird. Google gibt da auch zig Antworten. Und nicht alle betrachten das auf einem abgehobenen Universitäts-Niveau.

Eine Frage war auch, wieso du die elektrische Leistung konstant halten willst und nicht die Temperatur des Heizelements? Die sind nicht unbedingt linear zueinander.

Hallo Strohhirn,

zunächst mal herzlichen Glückwunsch zum Forumsnamen :smiley: :wink:

Ich möchte Dir noch dringend 3 Dinge mitgeben:

  1. Wie bereits beschrieben musst Du ZWINGEND den Regleraufruf zyklisch in einer festgelegten Zeit aufrufen. Ansonsten regelt Deine Schaltung unkontrolliert immer anders je nach Zyklenzeit.

  2. Wenn Du den Arduino DAC nutzen möchtest musst Du ZWINGEND mit relativ großzügigen Totzeiten arbeiten da bei 256 Stufen Auflösung und einem Regler für 2,6kVA eine Stufung von theoretischen 10 Watt pro Step möglich ist und somit Dein Regler sonst immer +/- 10 bis 20 Watt springen würde. Wie machen? if-clause schreiben, dass bei Regelabweichung <= 10 Watt der Regler übersprungen wird.

  3. Dein Ansatz einer genaueren Regelung wirst Du nur mit einem besseren DAC hinbekommen. Ich habe z.B. sehr gute Erfahrungen mit diesem hier gemacht:
    http://www.adafruit.com/products/935

Viele Grüße

Jörg

Der Arduino ADC hat 10 bit Auflösung, nicht 8 bit (man kann optional nur 8 bit auslesen wenn man will). Das sind immerhin 1024 Stufen.

Hallo Serenifly,

das ist richtig. Nur redete ich nicht von ADC sondern vom DAC! Und der hat bekanntermaßen nur 8 Bit Auflösung... Das ist wiederum wichtig für den von mir beschriebenen Sachverhalt...

Duh. Korrekt. Sorry :slight_smile:

Allerdings sollte man PWM auch nicht als D/A-Wandler bezeichnen, auch wenn das fälschlicherweise "analogWrite()" heißt. Nur der Due hat einen echten DAC.

Kickboxer:
Hallo Serenifly,

das ist richtig. Nur redete ich nicht von ADC sondern vom DAC! Und der hat bekanntermaßen nur 8 Bit Auflösung... Das ist wiederum wichtig für den von mir beschriebenen Sachverhalt...

Arduno hat keinen DAC.
Arduno hat 6 PWM Ausgänge mit 8 Bit Auflösung (256 Schritte)
Grüße Uwe