PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Motor Positionsregelung



Che Guevara
10.10.2011, 20:15
Hallo,

ich habe ein altes DVD-Laufwerk zerlegt und bin gerade dabei, die Laser-Motoreinheit anzusteuern. Der Laser ist unbenutzt, da mir das zu gefährlich ist und ich auch keinen Verwendungszweck dafür habe. Allerdings finde ich die Motor-Einheit sehr interresant. Diese besteht aus einem DC-Motor, welcher über eine "Zahnradstange" den Laserschlitten bewegt. Zur Positionserfassung befinden sich zwei Hallsensoren auf einer Platine, welche ich mittels LM339 digitalisiere. Momentan nutze ich allerdings nur eine davon, da ich ja weiß, in welche Richtung sich der Schlitten bewegt. Mit diesem Schlitten möchte ich ein paar Punkte möglichst genau anfahren.
Aber: Wie realisiere ich eine Regelung dafür? Die Sensorsignale gebe ich auf den Int0, das funktioniert. Der Motor wird über einen L293D (aufm RN-Control) gesteuert, d.h. ich gebe mittels 2 Pins die Richtung und mittels PWM (Timer1) die Geschwindigkeit vor. Einen PID-Regler habe ich schonmal für meinen Quadrocopter programmiert, das stellt kein Problem dar. Aber wie werden die PI-Werte verrechnet? Wenn der Fehler größer 0 ist, muss in die eine Richtung gesteuert werden, ansonsten in die andere Richtung. Bei Ist = Soll wird der Motor zum Bremsen kurzgeschlossen und die PWM voll aufgedreht. Soll ich die PWM in Abhängigkeit vom P / I Wert einstellen? Oder wie werte ich die Werte sonst aus? Irgendwie habe ich das Gefühl, ich stehe da etwas auf dem Schlauch. Wäre nett, wenn mir jemand helfen könnte :D

Vielen Dank & Gruß
Chris

Klebwax
10.10.2011, 22:24
Zur Positionserfassung befinden sich zwei Hallsensoren auf einer Platine, welche ich mittels LM339 digitalisiere. Momentan nutze ich allerdings nur eine davon, da ich ja weiß, in welche Richtung sich der Schlitten bewegt. Mit diesem Schlitten möchte ich ein paar Punkte möglichst genau anfahren.

Ich denke mal nicht, daß die Hallsensoren zu Positionserfassung gut sind. Sie werden nur als Endlagenschalter eingesetzt werden. Und selbst wenn, nach dem LM339 ist keine analoge Positionserkennung mehr möglich. Als Fehler bekommst du nur 0 oder 1, und auch nur in Bezug zur Position des verwendeten Sensors und nicht zu deiner Sollposition. Ein CD/DVD Laufwerk erkennt seine Position, an den Daten auf der Scheibe, die hast du ja nicht.

Du bräuchtest einen Positionssensor mit analogem Ausgang (wie das Poti beim Servo). Ob das die Hallsensoren leisten können, weiß ich nicht.

MfG Klebwax

Che Guevara
10.10.2011, 22:36
Hallo,

ich denke, ich habe mich nicht klar genug ausgedrückt. Ich bekomme x Impulse pro Umdrehung des Motors, d.h. wenn sich der Schlitten von dem einen Ende zum anderen Ende bewegt, bekomme ich ca. y Impulse. Wie viele jetzt x (ca. 6) und y (ca. 120) genau sind, kann ich dir momentan nicht sagen, spielt bis jetzt auch nicht eine so große Rolle.

Gruß
Chris

Klebwax
10.10.2011, 23:09
Du hast Recht, das hab ich so nicht verstanden.

Du brauchst für deinen Regler die wirkliche Position des Schlittens. Dazu brauchst du einen Zähler. Diesen mußt du auf geeignete Weise auf Null setzen. Das macht man mit einem Endlagenschalter, oder wie bei den alten Apple II Floppies indem man den Schlitten "sanft" gegen einen Anschlag fährt. Ab da wird jeder Puls von deinem Sensor gezählt. Ob der Puls addiert oder subtrahiert wird, weißt du aus der Ansteuerung des Motors. Um Fehler durch das Weiterdrehen des Motors zu minimieren, solltes du den Motor beim Abschalten hart bremsen, also kurzschließen.

Dieser Zähler ist deine "Istposition". Jetzt müßtest du deine Regelalgarithmen anwenden können. Viel Erfolg

MfG Klebwax

Che Guevara
11.10.2011, 13:13
Genauso weit bin ich schon ;) Aber ich weiß eben nicht, wie ich meine PI-Werte dann zur Ansteuerung verwenden soll?! Berechne ich die Geschwindigkeit aus den PI-Werten oder doch etwas anderes?

Gruß
Chris