mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Motorregelung mit PID-Controller


Autor: Ka Suh (kasuh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte eine PID-Reglung realisieren und weiß nicht mit welcher 
Abtastrate ich das machen soll. Der Drehzahlsensor liefert pro 
Spindeldrehung genau einen Impuls, d.h. die Taktrate in denen ich 
Istwerte erhalte hängt von der Drehzahl ab. Der Drehzahlbereich liegt 
zwischen ca. 15 U/min und 1000 U/min. Der Taktrate für den Istwert liegt 
somit zwischen 4 Sekunden und 60ms. Der Sollwert ändert sich 
kontinuierlich und wird mit einer festen Rate alle 20-60ms 
(einstellbar)erfasst.

Ich befürchte, dass ein PID-Regler mit einer konstanten Taktrate nur für 
einen kleinen bestimmten Drehzahlbereich optimiert werden kann. Als 
laienhafte Ideen hätte ich folgendes anzubieten
a) Taktrate = Umdrehungszeit, also variabel oder
b) Konstante ausreichend hohe Taktrate und Extrapolation (Schätzung)
der aktuellen Drehzahl (akt. Drehzahl = zuletzt gemessene Drehzahl +
seitdem vergangene Zeit  Stellgröße  Beschleunigungsfaktor

Ich denke die Experten haben da eine ganz andere Lösung!?

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
60ms... Das is doch noch Gleichstrom für einen Mikrocontroller...
(Spaß beiseite...)

Für eine Drehzahlregelung reicht in aller Regel ein PI-Regler vollkommen 
aus.

Du musst auch nichts extrapolieren, sondern rechnest den Regler einfach 
z.B. alle 20ms. Der Istwert der Drehzahl bleibt immer solange konstant, 
bis wieder  die Positionsmarke vom Motor erkannt wird, dann aus der 
vergangenen Zeit eine neue Drehzahl errechnet, die die alte ersetzt.

Das ist auch kein Problem, nur ein D-Anteil hätte mit den Sprüngen ein 
Problem. Das funktioniert bestimmt schon gut genug so, da muss man nicht 
mit schwereren Methoden dran gehen. Das Verfahren ist schön einfach, da 
die Integrierer nur Addierer sind, die nicht mit der Samplingrate 
gewichtet werden müssen.

Was man vielleicht braucht, ist eine dynamische Verstellung der 
Regelparameter, da das System, wenn es langsam ist, nur selten Istwerte 
liefert und damit zum Überschwingen neigt. Also, wenn es langsam ist, 
den P-Anteil erheblich reduzieren. Der Einfachheit halber kann (und 
sollte) man den P-Anteil über den Istwert gewichten.

Grüße,

Peter

Autor: Ka Suh (kasuh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Peter für die schnelle Antwort.

Das mit der Gewichtung des P-Anteils mit dem Istwert hört sich gut an. 
Genau die Befürchtung hatte ich, wenn man in meinem Fall einen 
klassischen PI-Regler mit konstanten Parametern und konstanter Taktrate 
verwendet. Optimiert man für die hohen Drehzahlen, kommt es zu 
Überschwingungen in den niedrigen Drehzahlen. Umgekehrt wird der Regler 
in den hohen Drehzahlen zu träge.

Ich werde Deinen Vorschlag ausprobieren und hier über das Ergebnis 
berichten. Besten Dank!

Autor: Ka Suh (kasuh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe lange mit der Gewichtung des P-Anteils experimentiert und 
festgestellt, dass dies mit einer einfachen linearen Gewichtung über den 
breiten Drehzahlbereich nicht hinhaut, zu dem das Verhalten des 
Motor/Getriebe-Systems durch das nachgeschaltete Getriebe verändert 
wird. Da das Finden
einer geschlossenen Formel für mich zu schwierig war, blieb für mich 
eine tabellarische Lösung, bei der Gewichtungswert aus der Tabelle als 
Funktion der Drehzahl und der Getriebestufe ausgelesen wird.

Allerdings ist es sehr mühevoll die optimalen Werte für diese Tabelle zu
finden. Mittelweile habe ich eine gänzlich andere Lösung gefunden, so 
dass
ich den PID-Regler nicht mehr brauche.

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.