www.mikrocontroller.net

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


Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gerhard Humer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Mathias ,

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

Gruss Gerhard

Autor: Hubert Papst (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: DerInder (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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=-

Autor: Mathias Mair (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hubert Papst (Gast)
Datum:

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

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ideal wäre Montag, aber nächste Woche ist auch super.

Vielen Dank, Mathias

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hubert Papst (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: guenter Lintzmeyer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hubert Papst (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Florian Scharf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/Haupts...

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

http://spi.tu-ilmenau.de/der-flo.de/studium/Haupts...

(ca. 1MB)


der Flo

Autor: Arno (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.