Archiv verlassen und diese Seite im Standarddesign anzeigen : PID Regelung + 8bit PWM
Hallo zusammen.
Erstmal vorweg es geht um eine PID Regelung und die PWM dazu.
Nun brauch ich leider eine recht hohe PWM Frequenz und muss daher auf den fast PWM Modus zurück greifen also nur 8 bit.
Außerdem ist mein Programmierkönnen noch recht begrenzt. :-b
Die Funktionsweise der PID Regelung ist soweit auch bekannt.
Jetzt zum Problem, oder Brett vorm Kopf.
Da beim berechnen der Regelabweichnung schnell negative Werte auftreten bietet es sich an mit Integer zu rechnen.
Aber wie bekomme ich die Integer Zahl dann in die 8 bit pwm?
Rechnet man das zum Schluss irgendwie um oder rechnet man schon in der Regelung mit andren Variablen?
Leider konnte ich hier noch nichts passendes finden.
Hoffe ihr könnt mir da weiterhelfen.
Vielen dank schonmal
faba
Du rechnest erst mal deine Stellgröße als Integer (oder was auch immer für ein Datentyp, je nach Bedarf) aus. Und dann begrenzt du den Wert auf das, was dein Stellglied tatsächlich ausführen kann. Bei dir schneidest du also alle negativen Werte ab und begrenzt die positiven Werte auf 255.
http://www.rn-wissen.de/index.php/Regelungstechnik#Realisierung_mit_digitalem_Regler
Besserwessi
29.08.2009, 19:59
Nromalerweise sorgt die Regelschleife schon dafür, das man wieder passende Werte für die PWM Steuerung erhält. Nur wenn das Stellglied (hier PWM) in der Sättigung ist, bekommt man aus der funktion auch mal negative Werte, die man dann auf 0 begrenzen muß.
oberallgeier
29.08.2009, 20:01
... PID Regelung und die PWM ... Aber wie bekomme ich die Integer Zahl dann in die 8 bit pwm ...Guck doch mal hier herein. (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=458181&sid=5467598a1552ffa794a08129046e74e0#458181) Da steht ein bißchen was zu meinen aktuellen Regelungsaktivitäten - und es ist auch der vollständige Code meiner Interrupt-getriebenen Regelung drin - etwa vier, fünf Postings weiter "oben". Dort siehst Du, wie ich den gewonnenen Steuerwert in die PwM füttere.
Ok also ist es wirklich so einfach, das hatte ich am Anfang so probiert aber das hat irgendwie nicht hingehauen.
Aber jetzt funktioniert es. \:D/
Leider kann ich die Regelung noch nicht mit der richtigen Hardware testen sondern nur soll / ist per Poti vorgeben und die Ausgabe per LED verfolgen.
Aber es scheint Grundsätzlich zu funktionieren.
greetz faba
oberallgeier
30.08.2009, 18:16
... also ist es wirklich so einfach ...Genau. Im Prinzip ist es ganz einfach.
... Leider kann ich die Regelung noch nicht mit der richtigen Hardware testen ... per Poti vorgeben ... Ausgabe per LED ...Hmmmmmmmm. Sagt Dir der Begriff Sprungfunktion etwas? Die ist hardwareabhängig und zu einem Teil auch softwareabhängig. Die ist ja die Grundlage zur Bestimmung der Regelungsparameter - siehe hier und dazu etwa die ganze Folgeseite. (https://www.roboternetz.de/phpBB2/viewtopic.php?p=433979&sid=cbd732d7f027b71119258eb349440351#433979) Wenn diese Werte nicht passen - dann könnte es Probleme geben. Meist könnte es . . . . Die Sprungantwort einer LED dürfte im Nanosekundenbereich liegen . . . .
... Aber es scheint Grundsätzlich zu funktionieren ...Neben Murphys Law gibts noch meinen Grundsatz: "Im Prinzip sollte nichts schiefgehen . . . ." ist der Anfang vieler Unfall- und Problemberichte.
Dir jedenfalls wünsche ich viel Erfolg,
Ist schon klar das die Regelparameter auf die Regelstrecke anpassen muss.
Zum Glück ist für das Projekt keine sonderlich gute Regelung nötig und es dreht sich "nur" um einen ohmschen Verbraucher.
Wenn der Controller dann halbwegs das tut was er soll, werd ich auch ma meinen Anfängercode posten. #-o
greetz faba
oberallgeier
31.08.2009, 09:12
Hi faba,
leider habe ich nicht geschrieben, dass Du bei Deinem Versuchsaufbau - so wie ich Deine Beschreibung verstanden habe - keinen Regelkreis hast. Eine Regelstrecke ist zwar ein alternativer Ausdruck für Regelkreis - aber eine saubere Regelung muss ein geschlossener Kreis sein. Deine Aufbau hat aber eine manuelle Verstellung - oder ist Dein Poti elektronisch und wird vom LED-Signal verstellt? Wenn Du einen ohmschen Verbraucher hast, dann ist aber die Rückmeldung der Ist-Größe sicher 1) einfach und 2) s..schnell *gggg*.
WENN KEIN Regelkreis - dann ist auch ein Test wenig aussagefähig. Allerdings bin ich in Punkto Regelun gstechnik/-theorie recht unbewandert.
Natürlich ist der Test mit den Potis wenig aussagekräftig da hier einge Probleme eines geschlossenen Regelkreises kaum bzw. gar nicht zum Tragen kommen.
Insbesondere die Neigung zum Schwingen bei falschen Regelparametern.
Mir ging es nur darum das der Code grundsätzlich funktioniert.
Also z.B. bei großer Soll/Ist Differenz der Ausgang voll ausgeregelt wird und bei geringer Differenz der Ausgang langsam runtergefahren wird.
Die eigentliche Berechnung für nen PID sind ja immer mehr oder minder gleich, das Problem is nur die Anpassung auf die Regelstrecke.
Und die Regelstrecke ist kein alternativer Ausdruck für Regelkreis.
Die Regelstrecke ist nur der Aktor.
Der Regelkreis umfasst die Erfassung der Messwerte, Vergleich mit den Sollwerten und die entsprechende Ausgabe der Stellgröße.
Naja ganz so unbewandert sehen deine Experimente mit diversen Dosen aber nicht aus. ;-)
greetz faba
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.