Forum: Mikrocontroller und Digitale Elektronik PDI - Regler mit differenzierendem und integrierendem Anteil


von Mathias (Gast)


Lesenswert?

Hey Leutz,

hätte da eine Frage:
Hat schon einmal jemand von euch einen PID-Regler programmiert und 
könnte mir mit ein paar Tipps oder noch besser einem Quellcode 
weiterhelfen.

Mit diesem Regler sollte z.B.: ein Motor mit PWM angesteuert werden.
Zur Zeit hätte ich mir einen 8515 vorgestellt(da PWM).


Thx,Mathais

von Gerhard Humer (Gast)


Lesenswert?

Hi Mathias ,

so einen Regler hab ich in Bascom programmiert.
Was willst du damit machen ?

Gruss Gerhard

von Hubert Papst (Gast)


Lesenswert?

Hallo
bin gerade dabei sowas fertig zu stellen. Programmierung in Assembler 
für eine Mega8.
Als Ausgabe wird ein PWM Signal geliefert. Anzeige über LCD-Display 2*20 
Zeichen. Eingang Soll-. und Istwert über ADC Kanal 0 und 1.
Die Werte für k,i,d werden entweder auch über Analogwerte eingestellt, 
oder als Konstanten.
Eingabe wird mal mit einer PC-Tastatur erfolgen, ist aber noch nicht 
eingebaut.
Wenn Interesse da ist, dann nimm ich es mal mit in die Arbeit und stelle 
es hier rein.

mfg
Hubert Papst

von DerInder (Gast)


Lesenswert?

Hallo Hubert,
mich würd dein Programm sehr interessieren, da ich schon seit einiger 
Zeit mit nem PID in Assembler kämpfe. Entweder mache ich dabei einen 
Denkfehler, oder es ist doch noch ein Programmierfehler drin ;) 
Vieleicht kannst du mir das Prog auch mailen?

Gruß
-=jens=-

von Mathias Mair (Gast)


Lesenswert?

Hallo Hubert,
ich muss genau das selbe programmieren, weis aber noch nicht genau wie 
ich anfangen muss.
Stellt es ein Problem dar, dein Programm für den 8515 
umzuschreiben(außer dass ich zwei DAW´s benötige?).
Wäre schön, wenn du mir dein Programm einmal mailen könntest.

Danke im Voraus, Mathias Mair

von Hubert Papst (Gast)


Lesenswert?

Hallo,
ist kein Problem - wird aber erst voraussichtlich Anfang nä. Woche sein. 
Bin diese Woche nicht mehr da.
mfg
Hubert

von Oliver (Gast)


Lesenswert?

Hallo Mathias,

bei der Entwicklung von digitalen Reglern kann ich vielleicht ein paar 
Tips hinzusteuern.

Der differentielle Anteil des Reglers ist ein kritischer Faktor, da 
hierdurch das Messrauschen und der Quantisierungsfehler bei A/D-Wandlung 
verstärkt wird. Für die meisten Anwendungen (besonders wenn die 
Parameter durch Probieren ermittelt werden) reicht ein einfacher 
PI-Regler.

Ebenso ist es wichtig, die Mess/Ist-werte über einen Tiefpass zu Filtern 
(hier reicht nicht der digitale Filter), da sonst unter Umständen der 
Regler zum Schwingen angeregt wird.

Beim Regelcode ist es wichtig, den Integralteil zu begrenzen, da er 
sonst bei langer Regelabweichung ins Nirvana läuft.
Eine sinnvolle Begrenzung wäre z.B. Die Abschaltung der Integration, 
wenn die max. Stellgröße  erreicht ist.
Ebenso ist die Abtastzeit eine wichtige Größe für den Regler.

Wenn man die Abtastzeit variiert, werden dadurch auch I & D-Anteil 
beeinflusst.

Ich hoffe, es waren ein paar verwertbare Infos dabei

Gruß Oliver

von Mathias (Gast)


Lesenswert?

Ideal wäre Montag, aber nächste Woche ist auch super.

Vielen Dank, Mathias

von Wolfram (Gast)


Lesenswert?

Hi

Der Hinweis von Oliver mit dem Tiefpaß ist sehr wichtig,die 
Grenzfrequenz sollte mindestens unterhalb der Abtastfrequenz liegen 
besser 2 bis 5fach da sonst dein Regler im falschen Frequenzbereich auf 
störungen reagiert und diese nicht ausregeln kann.
Wichtig ist eine feste Abtastzeit das heisst dein Regler muss in jedem 
Fall innerhalb einer Abtastperiode am Ausgang den entsprechenden Wert 
anlegen koennen dafür ist also Assembler ideal solltest du auf jeden 
Fall einen 16 Bit wert ansetzen wenn du ansonsten mit 8bit rechnest und 
natuerlich begrenzen.
Dein Motor hat eine gewisse Traegheit ich glaube nicht das es etwas 
bringt eine Zeitperiode weit unter 100ms anzusetzen.
Die Einstellwerte k,i,d sind auf die Abtastzeit zu normieren,da im 
Analogen ja auf eine Sekunde statt der Zeitperiode normiert ist.
Die Differentation erster Ordnung entspricht
(aktueller Wert - vorheriger Wert)/Zeitperiode

das Integral einer Summe der vorherigen Werte(das sollten schon einige 
sein da der I anteil erst nach einer gewissen Zeit wirkt)

falls du mit einer gewissen abweichung leben kannst reicht auch
ein P Regler ueber den Verstärkungsfaktor kannst du die abweichung 
verringern wenn er zu gross wird faengt das System an zu schwingen.mit 
einem I Anteil koennte dann die restliche Abweichung behoben werden.

ich hoffe die ausführungen haben ein bisschen geholfen

CU Wolfram

von Hubert Papst (Gast)


Angehängte Dateien:

Lesenswert?

Hallo
hier ist der Code für den PID-Regler. Eine kurze Beschreibung ist auch 
dabei.
Bei Fragen (die werden sicher kommen) einfach mailen oder hier posten.
Bin gerade dabei, das Progamm so zu überarbeiten, das mittels einer 
herkömmlichen PC-Tastatur die Reglereinstellungen vorgenommen werden 
können. Als Anzeige dient eine 2*20 Zeichen LCD-Anzeige (jetzt auch 
schon).
Bin für Anregungen dankbar. Steinigt mich nicht, es ist mein erstes 
Programm für einen AVR.

mfg
Hubert

von guenter Lintzmeyer (Gast)


Lesenswert?

Frage: PDI-Regler ???
*********************

Wer könnte mir eine kurze, aussagefähige Erläuterung (jedoch kein
"Fachchinesisch") zu diesem Thema geben (Funktion, Einsatzmöglichkeit, 
etc.)?

Auch entsprechende www-sites wären hilfreich.

Habe bei goggle nicht's gefunden


Vielen Dank im Voraus

Günter

von Mathias (Gast)


Lesenswert?

Danke Hubert, habe deinen Code bekommen und bin gerade dabei den Code zu 
verstehen.
Nun habe ich ein paar Fragen dazu:

1.) Hast du vielleicht Struktogramme oder eine ausführlichere 
Beschreibung für dein Programm?

2.) Was machst du wenn Kommazahlen auftreten(wenn sie überhaupt 
auftreten)?

Thx, Mathias

von Hubert Papst (Gast)


Lesenswert?

Hallo,
Struktogramme hab ich leider nicht.
Für eine genauere Beschreibung fehlt mir jetzt die Zeit. Wird vielleicht 
mal nachgereicht.
Die Regelung funktiniert nur mit Integerzahlen. Sollte eigentlich für 
die meisten Anwendungen reichen. Ich kann dir anbieten, hier deine 
Fragen zu beantworten, wenn ich mal Zeit finde, werde ich das Programm 
besser Dokumentiern.
mfg
Hubert

von Tobias (Gast)


Lesenswert?

Hallo Gerhard,

Du hattest geschrieben das Du schonmal einen PDI Regler in Bascom
geschrieben hattest ...
kannst Du mir den Quellcode zukommen lassen ?

Gruß Tobias

von Florian Scharf (Gast)


Lesenswert?

Nahmd .. ich hatte mal eine Vorlesung in digitaler Regelungstechnik.
Hier gibts die Mitschrift, vielleicht kann ja jemand was damit anfangen
;)

Ist aber zugegebenermassen hartes Brot, also eher für Leute, die sich
schonmal mit diskreter Regelungstechnik beschäftigt haben.

http://spi.tu-ilmenau.de/der-flo.de/studium/Hauptstudium/7.Semester/Digitale_Regelungen_[V].pdf

(ca. 3.5MB, Hier interessant: Kapitel 5 ff.)

http://spi.tu-ilmenau.de/der-flo.de/studium/Hauptstudium/7.Semester/Digitale_Regelungen_[S].pdf

(ca. 1MB)


der Flo

von Arno (Gast)


Lesenswert?

Hallo,
unter http://www.embeddedforth.de  Embedded2 findet man ein Tutorial
über PID regler für Micro`s.Sehr empfehlenswert.
Grüsse Arno

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.