PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vierbeiner programmieren



sulu
13.04.2008, 09:06
Hi
ich habe mal wieder eine dumme Frage. Es geht diesmal um Servos. Das Thema wurde zwar eigentlich schonmal behandelt aber ich komm damit irgendwie nicht klar, bzw. nicht gut genug. Also ich möchte nun endlich meinen Vierbeiner programmieren. Es ist ein 8-Servo-läufer, also nur zwei Servos pro Bein.
Wie macht man sowas normalerweise in Bascom?

Vielen Dank für eure Hilfe
und viele Grüße
sulu

Feratu
14.04.2008, 09:41
Erster ;P
https://www.roboternetz.de/phpBB2/viewtopic.php?t=39495

Also im Grunde ist das echt einfach, aber bis ich da drauf gekommen bin das hat gedauert.

Also als Tipp sag ich mal: Schau wie du selber läufst,... jedes Bein macht die gleiche bewegung aber nur versetzt. Genauso machst du das mit 4 Beinen des Robbis. Der läuft dann so wie ein Pferd wenn es sprintet (immer 2 Beinpaare machen das gleiche).

Vorteil: es geht einfach zu programmieren
Nachtil: er kann nicht viel gewicht tragen und auf die balance musst du auch achten.

Wenn du aber möchtest das er nur ein Bein hebt orientier dich mal an den Sauropoden. Diese Dinos sind tonnen schwer und können nur ein Bein heben also genau die fortbewegungsart die am stabilsten ist.

Um Servos anzusteuern gibt es hier schon genug threads und im Wiki Teil steht auch genug drin sollte dir ja dann reichen ;P
Ich mach das mit der Sortiermethode, also eine Tabelle die je nach Servowert immer umgestellt wird. Funzt super ^^
mfg

sulu
14.04.2008, 13:53
Hi

also mit dem Gewiciht krieg ich keine Probleme. Da isser mehr als außreichend bestückt, bzw. leicht genug. Daher mach ich glaube die erste Methode. Also 2 auf einmal.

Aber erklär doch bitte nochmal deine Sortiermethode. Die hab ich noch nicht so ganz verstanden.

Viele Grüße
sulu

Feratu
14.04.2008, 23:32
Also du hast mit dem z.b. Timer 1 eine 50Hz Schleife.
Im ISR von diesem Timer wird ein komplettes Byte (idealerweise 8 Servos) auf 255 gesetzt = alle ausgänge an.
Nun wird nach einer in der Hauptschleife bestimmten Reihenfolge ein Servo nach dem anderem abgeschaltet.
z.b.

Portb = 255 'Alle ausgänge auf 1
waitus 500 'warte 0.5ms wäre ganz links bzw sogar noch ewas weiter ;P
Portb = 254 '255 - 1 = 244 =>> Portb.0 ist aus also auf 0.5ms eingestellt
waitus var1 'warte einen errechneten Wert bis zum nächsten abzug
portb = 250 '255 - 1 - 4 = 250 =>> Portb.0 und Portb.2
...
...
Gut mit der wait funktion geht das nicht da die keine Variablen annimmt aber man erkennt leichter was gemeint ist ^^
Die methode hat den Vorteil das du bei guter Programmierung soviele Servos dran hängen kannst wie du willst da man die Servos Byte weise abschalten kann. DIe eigentliche Begrenzung sind die vorhandenen Pins.
(32 Servos an einem 40pin Chip haben schon ihren Dienst getan ^^)

mfg