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


von Peter (Gast)


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

von Chris (Gast)


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.

von Chris (Gast)


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.

von Karl (Gast)


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 ;)

von mki (Gast)


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.

von Karl (Gast)


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.

von Peter (Gast)


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

von Frizank (Gast)


Lesenswert?

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

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.