PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gleichmäßige Aufteilung von Servobewegungen



tichy
19.01.2006, 13:26
Folgendes Problem:
Der Fahrweg eines Servos soll gleichmäßig über eine bestimmte Zeitspanne erfolgen. Z.B. sollen in 500 Zeitschritten 230 Wegschritte erfolgen. Ich suche nach einem Algorithmus der mir eine möglichst gleichmäßige Aufteilung der Schritte liefert, also Zeitpunkt 0 erster Schritt,
.... Zeitpunkt 500 230. Schritt. Da die Division nicht aufgeht müssen unterschiedliche Schrittweiten gewählt werden. Wie berechnet man diese?

CodeWarrior
19.01.2006, 17:20
Hi Tichy,

Wie groß ist denn eine Zeiteinheit bei dir ? 0.5 sec, 1 sec, 2 sec, oder 10 sec ?

Die Schritte würden sich anhand deiner Zeitspanne berechnen.
Ohne diesen Divisionsrest wirst du nicht zum Gewünschten Ziel kommen. Vieleicht noch durch Berechnung des Stellwinkels...... Weis aber nicht genau wie das geht.......

Hmmmm...... wie du das dann realisieren willst weis ich nicht aber es gibt bestimmt jemanden der dir helfen kann :)

Gruß,

CodeWarrior

PicNick
19.01.2006, 18:42
Das geht auch in der Schleife
500 / 230 --> 2 ein schritt jedes 2
500 / 40 --> 12 + ein schritt alle 12
500 / 20 ---> 25 + ein schritt alle 25
.0

waste
20.01.2006, 10:41
Hallo tichy!

Der Sollschritt wäre 230/500 = 0.46, den kann man nicht jedesmal ausführen. Aber man kann ihn mit jedem Zeitintervall aufaddieren und bei Überschreiten von 1 einen Schritt machen und davon wieder 1 abziehen.

So sieht's dann aus:

0.46
0.92
1.38 - 1 = 0.38 -> Schritt
0.84
1.3 - 1 = 0.3 -> Schritt
0.76
usw.

Falls gerundet werden soll, dann starte einfach mit 0.5
Wenn du mit Integer rechnen willst, dann multiplizier alles mit 100.

Gruß Waste