Forum: Mikrocontroller und Digitale Elektronik DC Motor mit Potentiometer regeln


von Mathias A. (hirsi)


Lesenswert?

Hallo

ich bin gerade dabei einen 24V-DC Motor mit Arduino zu regeln.
Ich benutze eine H-Brücke mit PWM um die Drehzahl zu steuern. Im Motor 
befindet sich ein Drehpotentiometer welches auf 10 Umdrehungen genau 
regeln kann. Mein Ziel ist es über ein Zahnstangen/Ritzel System. In 
einem Bereich von 0 bis 0,5 m zu regeln (Wert ist variabel).
Die Genauigkeit ist im mm Bereich also nicht allzu genau.
Ich habe es geschafft das Analoge Signal am Arduino auszulesen.

Das Problem das ich habe ist, dass wenn ich auf die Position hin will 
also den Motoren fahren lasse und dann bei der Position stoppen lasse. 
Läuft der Motor immer nach und will Natürlich wieder zurück auf die 
eingestellte Position in dem er die Drehrichtung ändert. Danach dreht er 
wieder beim Ausschalten nach und das ganze ist ein Vorgang der sehr 
lange dauert also das Wiederholt sich sehr oft bis er sich einpendelt 
bis der Motor im gewünschten Bereich ist. Das dauert mir aber zu lange 
und ich brauche Hilfe. Denn in Regelungstechnik bin ich ein Anfänger.

Habt ihr Lösungsvorschläge.

LG
Mathias

von H.Joachim S. (crazyhorse)


Lesenswert?

Wenn du es schnell und genau willst brauchst du einen PID-Regler.
Für den Anfang einfacher und wahrscheinlich ausreichend ist der 
PI-Regler. Genau ja, aber langsamer.
Für dein System unbrauchbar der noch einfachere P-Regler.

Dein konkretes Problem kann niemand aus der Ferne lösen, du musst dich 
mit Regelungstechnik befassen.

von Kevin M. (arduinolover)


Lesenswert?

Typischer Weise verwendet man hier kaskadierte Regler, P für Position -> 
PI für Drehzahl -> PI für Strom -> Stellgröße.

PID ist hier eigentlich nicht hilfreich, da das System nicht wirklich 
zum Schwingen neigt. Der D- Anteil macht das Einstellen des Reglers 
unverhältnismäßig schwerer. Zumal ist ein gut implementierte D-Anteil 
auch nicht so einfach, da die reine Ableitung im diskreten eigentlich 
nicht wirklich funktioniert. Ein sauber eingestellter PI ist schnell 
genug und kaum bis gar nicht langsamer als der PID.

von Andreas B. (bitverdreher)


Lesenswert?


von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Kurz gesagt:

du darfst natürlich nicht mit "Volldampf" den Punkt anfahren, sonnst 
schiest der Motor immer etwas über das Ziel hinaus.
Regle deine PWM runter sobald der Motor in die Nähe deines 
"Wunschpunktes" kommt.

Das Verfahren ist bei CNC und 3D Drucker gang und gebe.
Mann nennt dies Anfahr- und Abbrems- Rampen.
Oder auch einfach Rampen.
Dies bezeichnet eine Regelung der Drehgeschwindigkeit in Bezug der 
Distanz zum Ziel un/oder vom Start.

Bringt den Vorteil dass wen die distanz von Punkt "A" zu Punkt "B" nur 
klein ist der Motor gar nicht zu schnell werden kann, und dann übers 
Ziel hinaus schießt.

DC Motoren brauchen nicht zwingend eine Anfahr-Rampe, Steppermotoren 
schon!
Aber das war ja nicht deine Frage. ;-)

Als Beispiel:
PWM_Effektiv=((Endpunkt - Aktuelle_Position) x PWM_Value)
Ist jetzt aber nur Minimalistisch dargestellt.
Da braucht es natürlich noch so Parameter wie:
 IF (Endpunkt - Aktuelle_Position)< XX% Fahrweg usw um das Optimal zu 
machen.

: Bearbeitet durch User
von Mathias A. (hirsi)


Lesenswert?

Danke
werde das Ausprobieren und hoffe es funktioniert dann wie ich es will

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.