PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Positionsbestimmung eines Servos



Mad
29.01.2005, 10:19
Hallo zusammen

Wochenende->Fragen! :-s

Also hier wird ja oft erklärt und diskutiert, wie man einen Servo ansteuert. Was mich jetzt noch Wunder nimmt ist, wie man herausfindet, wann der Servo an der gewünschten Position "angekommen" ist. Der uC ist ja viel schneller als die Mechanik des Servos, weshalb dieser schon wieder eine neue Position übermittelt bekommt, bevor er überhaupt dort angekommen ist wo er sollte. Gibt es da eine einfache Lösung die Position des Servoarms zu bestimmen, die nicht andere Sensoren benötigt, oder ist es gar Softwaremässig lösbar (wohl kaum oder)?

PicNick
29.01.2005, 10:35
Natürlich kannst du aus der Differenz Wert-vorher Wert-neu und bekannter Geschwindigkeit die erforderliche Zeit rausrechnen und dich danach richten.
Du könntest das Servo-Pot anzapfen, theoretisch auch den Motor (ob er Strom zieht oder wieder steht)
Du kannst auch den Stromverbrauch des ganzen Servos (aller Servos) messen. Ziehen sie Strom, wird noch positioniert, Wenn minimal, sind alle dort, wo sie hinsollen.
ist alles ein gefummel, ich tät's eher saftware-mäßig
differenz Position * zeit pro einheit --> Zeitwert
und den mit einem Timer Interrupt runterzählen, bis er Null ist.
mfg robert

29.01.2005, 11:37
Hm ja danke, so sollte es eigentlich genügend genau sein für meine Verwendung.

bergowitch
29.01.2005, 23:44
Hallo,
kann man nicht auch die position eines servos bestimmen?
Ich würde nämlich gerne einen Entfernungssenor als radar verwenden und wenn ein gegenstad gefuden wurde den Roboter auf diesen ausrichten. Dabei würde Rechenleistung verloren gehen wenn ich immer ausrechnen müssste, wo sich der servo gerade befindet.
Gruß
Stefan

PicNick
30.01.2005, 09:25
Wo der Servo-Arm tatsächlich ist, weiß letztlich nur das Poti im Servo.
@bergowitch : Bei einem Servo geht man davon aus, daß es eine vorgegebene Position immer auch prompt einnimmt. Wenn das nicht reicht, isses besser, einfach einen Motor zu nehmen und die Armposition gleich selbst zu messen (poti, encoderscheibe) und auszuwerten.
Informative Frage für den Laien: wenn den "Radar" etwas findet, warum willst du dann darauf ausrichten ? Das wird doch dadurch nicht genauer ?
mfg robert

bergowitch
30.01.2005, 10:06
Hallo,
ich baue einen Sumo-Bot. Das "Radar" soll hin und herschwenken und nach dem Gegner suchen. Wenn es ihn gefunden hat, soll sich der roboter auf den Gegner ausrichten und ihn verfolgen. Dazu soll dann das "Radar" dem Gegner folgen und der Roboter soll sich dann weiter nach der gefundenen Position ausrichten. Was ich als Sensor nehme? Ultraschall oder einen Sharp IR sensor - ich werde beides ausprobieren und das bessere auswählen (hoffentlich).
Wenn ich dich also richtig verstanden habe, kann ich also das pwm signal auswerten oder aber eine Spannungsmessung am Poti vornehmen? Kann man an den Poti einfach die Spannung abgreifen und sie an einen ad-wandler auswerten?
Danke Gruß
Stefan

martin
30.01.2005, 10:34
Hallo,



Bei einem Servo geht man davon aus, daß es eine vorgegebene Position immer auch prompt einnimmt.


Würde ich auch so sehen. Du schickst eine bestimmte Pulsbreite an das Servo, und wenn dein US/IR-Sensor in dieser Richtung etwas erkennnt, kannst du aufgrund der gerade gesendeten Pulsbreite die Position/Winkel bestimmen. Dazu muß man natürlich davon ausgehen, daß das Servo nicht mechanisch blockiert werden kann.

Grüsse, Martin

PicNick
30.01.2005, 10:35
Spannung abgreifen: Im Prinzip ja, der Servo tut's ja auch. Man müßte wohl sehr hochohmig anschließen, um die Servo-Elektronic nicht zu verwirren, am besten mit einem OP. Wenn du aber schon einen AD-Wandler beschäftigen willst, würd ich gleich ein externes Poti dazutun und mitdrehen.
Meine Frage war dahingehend: Wenn Du auf ein Objekt ausrichtest, mußt du doch dann erst recht hin und herschwenken, ob es rechts oder links auswandert, oder ob du eh drauf bist.
These: wenn du beim schwenken zwischen (sagen wir) 134 und 168 einen Reflex kriegst, ist das Hindernis doch dann bei ca 151 (Mittelwert). Dein Heading 0 (vorne) ist (sagen wir) bei 127, also Fahrzeug links drehen, bis der Mittelwert auch ca 127 ist, dann volle Pulle, runterschubsen.
Echtes Radar bleibt ja auch nicht stehen. mfg

bergowitch
30.01.2005, 17:20
Ja, ein echtes radar soll ja auch nicht nur ein Objekt finden. Deshalb muss, wenn ich ein Objekt gefunden habe dieses nur verfolgen - also nur den kleinen Winkelbereich beachten den du vorschlägst. Ob ich es hinkriege wohin der gegner fährt zu bestimmen, werde ich erst testen, wenn das Grundprinzip funktioniert...
Gruß
Stefan