Go Down

Topic: [solved] Servos mit analog Stick steuern (Read 855 times) previous topic - next topic

Olvo

Feb 16, 2015, 10:41 pm Last Edit: Feb 18, 2015, 11:24 pm by Olvo
Hallo,
ich (Neuling) möchte gerne 2 Servos mittels einem analog Stick und 2 Potis steuern.

Beim Bewegen des Stick´s soll der Servo in die entsprechende Richtung fahren, jedoch in einigermaßen linearer Geschwindigkeit zum "Ansteuerwinkel"
Ich spreche hier mal von XS und YS für den analog Stick mit seinen 2 Achsen,
und von XP und YP für die jeweils dazugehörigen Poti´s

Beispiele:
Stick 0%, Vollanschlag links = X_Servo fährt schnell nach links sagen wir 0,5sec/90°
Stick 40%, leicht nach links = X_Servo1 fährt in 5sec/90°
Stick 50%, Mittelstellung = X_Servo1 steht still.
Stick 0%; Vollanschlag oben = Y_Servo fährt in 0,5sec/90° nach oben
Stick 50%; Mittelstellung = Y_Servosteht still.
Stick 100%; Vollanschlag unten = Y_Servo fährt in 0,5sec/90° nach unten
Stick
Wobei die eine Fahrzeit 1, X-Achse wiederum mit dem Poti beeinflusst werden kann,
und Fahrzeit2, Y-Achse mit dem anderen Poti

Also so, daß der Poti als eine Art Faktor mit dem Stick verrechnet wird, was wiederum die Änderung des PWM Signals zur Folge hat..

Wie gehe ich das am besten an?


   

sschultewolter

Schaue dir die Beispiele an, wie man einen Potentiometer ausliest. Das ist identisch mit einem Joystick, nur das dort 2 Stk verbaut sind in Y und X Achse.
Orginal Atmel AVRISP mkII zu verkaufen. Anfrage per PN ;)

dash64

#2
Feb 17, 2015, 09:54 pm Last Edit: Feb 17, 2015, 09:56 pm by dash64
Hallo Olvo,

ich würde dir empfehlen, zuerst einmal die Stick-Werte auszulesen und auf dem seriellen Monitor auszugeben. Dann kannst du gucken, welchen Werten die jeweiligen Vollausschläge entsprechen.
Um die Stick-Werte jetzt in Servo-Signale umzuwandeln, empfehle ich dir, dir einmal den "map"-Befehl anzuschauen (http://arduino.cc/en/Reference/Map). Mit dem kannst du von die Stick-Werte, die du hast, z.B. in Werte von 0 bis 180 umwandeln, die du verwenden kannst um mit der Servo-Library deine Servos anzusteuern (http://arduino.cc/en/Reference/Servo).
Soweit ich weiß, kannst du aber die Ansteuergeschwindigkeit von Servos nicht ändern (leider) - die Servos haben üblicherweise einen PID-Regler in ihnen drinnen, der die Anstellgeschwindigkeit je nach der Entfernung zu dem Azustellenden Punkt regelt.
Alles, was mir einfällt, wäre mit den Potis den Maximalausschlag zu vergrößern, was in einer höheren Anstellgeschwindigkeit oder kaputten Servos enden könnte...
Ansonsten wäre mein letzter Gedanke, eventuell noch einen Transistor in die Spannungversorgung der Servos zu hängen, den du über einen anderen Pin ansteuerst. Das könnte die Geschwindigkeit regeln.

Ich hoffe ich konnte helfen und hab' nicht für all zu viel Verwirrung gesorgt ;)

Bei weiteren Fragen einfach fragen

Edit: Hatte vergessen, die links zu links zu machen ...

Olvo

Hab es zum laufen bekommen...
Vorgehensweise:
Den Stick mit map ausgelesen (-50 bis +50) , und den Poti in Prozent (0-100)
Beide Werte miteinander verrechnet...
und diese werden alle 10millis mit der aktuellen Position verrechnet...

So bekomme ich eine schönen sanften Lauf des Servos.
Die Geschwindigkeit und Richtung ist abhängig vom analog Stick und kann mit dem Drehpoti faktorisiert werden...


Dankeschön, für die Hilfe

Go Up