mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP PI(D) Regelung für hakelnden Motor


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen, frohes Neues!

Ich stehe vor einem Problem, und zwar habe ich einen Kettenantrieb mit 
PI(D) geregelt. Dies funktioniert soweit, allerdings verhält sich der 
Antrieb wie folgt:

Steht der Motor, braucht es eine recht hohe Kraft um erstmal die erste 
Reibung des Getriebes zu überwinden, sprich mein I-Anteil läuft immer 
weiter hoch, bis sich das Getriebe "löst" und dann schwingt der Regler 
erstmal kräftig über.
Das Verhalten führt auch dazu, dass ich den I-Anteil irgendwie nicht mit 
sinnvollen Werten begrenzen kann, da dieser m.E. allein dafür sorgt, 
dass der Kettenantrieb aus dem Stand überhaupt erstmal loslegt (der 
P-Anteil reicht nicht aus).

Hättet ihr Vorschläge zur Lösung des Problems, ggf. anderer Regler oder 
"wenn v=0 dann P doppelt so hoch" oder ähnlich? Was macht hier Sinn?


Eine zweite Frage ;) : Sollwert/Messwert ist eine Geschwindigkeit in 
mm/s, Stellwert ist PWM "0-255". Nun passt der Sollwert ja nicht zum 
Stellwert, wo mache ich hier eine Skalierung? Läuft dies allein über die 
P/I-Faktoren oder macht es mehr Sinn, bspw. den Reglerausgang mit einem 
Faktor 4 bspw. zu multiplizieren? Dabei fängt mein Regler aber immer 
gewaltig an zu schwingen. Ansonsten ist er sehr langsam ;)

Danke für euere Mühe,
Gruss Peter

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hätte eher an eine PD Regelung gedacht, als eine PI Regelung.
Nimm den D Anteil dazu und das Problem löst sich.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zur zweiten Frage, mm/Sec bei langsame laufender Kette, da brauchst du 
relativ lange, um einen neuen Ist-Wert zu erfassen, das gibt probleme.
Einfacher wäre es, wenn du z.B. die Motorumläufe (ohne Untersetzung) 
oder
die Zeit bis zur erkennung einer Lichtschranke verwendest, als Beispiel,
und dann die Benutzereingabe auf deine interne Einheit umrechnest.

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einige Ansätze:
-Regler kaskadieren: Du willst die Geschwindigkeit einregeln? Lass die 
Beschleunigung von einem PI(D) Regler machen und gib über einen P(D) die 
Sollbeschleunigung vor.

-Heuristik: v==0 -> v=!0 --> x ms volles Rohr, dann Regelung aktivieren

-PD statt PID, dabei kann die Verstärkung wesentlich höher werden

-Neuronales Netz, Fuzzy, Schlagmichtot und Hastenichtgesehen-Regler 
verwenden ;)

Autor: mki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Addiere zu deinem PID Wert noch einen Feed Forward Wert. Diesen wählst 
du so dass sich deine Kette gerade so noch nicht bewegt. Der PID Wert 
liefert dann sozusagen noch den letzten Rest der benötigt wird um alles 
in Schwung zu setzen.

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, Vorsteuerung kann man auch probieren, allerdings hört sich das so an 
als ob die Haftreibung deutlich über der Gleitreibung liegt, sonst gäbe 
es keine riesen Überschwinger. Schau mal nach Stick-Slip Effekt und 
Stribeck-Reibung. Ein Versuch ist es aber wert, da recht einfach zu 
implementieren und abzustimmen.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

PD löst schon einige der Probleme, die Schnelligkeit in der Regelung 
scheint hier für höheren Gleichlauf zu sorgen, aber nun drehen sich 
linke und rechte Kette naturgemäss nicht gleichmässig bzw. fangen 
unterschiedlich an zu laufen... Versuche den Fehler zw. Links/Rechts nun 
noch mit in die Regelung/Vorsteuerung zu nehmen..

Danke und gruss

Autor: Frizank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du schom mal daran gedacht, dass Dein Problem möglicherweise durch 
die Rastmomente des Motors entsteht ?

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.