PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RN-Motor Steuerung/Beschleunigung



blackfeet
04.12.2006, 19:31
Hallo,

ich habe ein paar Fragen zur Steuerung von RN-Motor, konkret zum Befehl #rmz.
Wie man High und Low Byte berechnet ist mir relativ klar. Ich kann auch Befehle an RN-Motor schicken und er führt sie tadellos aus.
Allerdings verhält sich dieser Befehl etwas "eigenartig".
Wenn ich rmz ausführe, sagen wir für 200 Schritte, dann wird von RN-Motor das "OK", nachdem ich ausschau halte, schon zurückgegeben sobald er zu fahren beginnt, aber nicht erst wenn alle Schritte abgearbeitet sind.
Wie soll ich jetzt wissen, wann der Roboter fertig ist?

Natürlich habe ich dazu eine Idee:

Ich berechne mir wie lange er brauchen müsste, und warte diese Zeit:
Im Prinzip lässt sich diese Methode glaube ich realisieren, allerdings wird sie eher ungenau sein. Zumal ich schon nicht genau hinter die Formel für die Geschwindigkeitsberechnung komme.
Aus den Zahlen der Doku, habe ich mir eine Formel hergeleitet: Schritte/Sek.=1000/(Parameter+1)
Vergleich: Doku -> Meine Formel

0 = 1000 Schritte -> 1000/1 = 1000
1 = 500 Schritte -> 1000/2 = 500
2 = 333 Schritte -> 1000/3 = 333,3 (abrunden)
3 = 250 Schritte -> 1000/4 = 250
4 = 200 Schritte -> 1000/5 = 200
5 = 167 Schritte -> 1000/6 = 166,6 (aufrunden)
6 = 142 Schritte -> 1000/7 = 142,85 (doch, die Nachkommastellen wegschneiden?)

Ist das ein Fehler in der Doku, oder ist das durch die Abweichung gegeben?
Gibt es eine Formel dazu, oder stimmt meine doch?

Eigentlich geht es bei dem Problem eine Beschleunigung des Roboters zu erreichen. Er soll möglichst exakt fahren, deshalb würde ich mit obigen Ungenauigkeiten nur ungern leben.
Wie würdet ihr eine Beschleunigung realisieren? Vielleicht mittels Abfragen von #rmp?
Oder gibt es gar schon eine fertige Beschleunigung (Sprache egal)?

Weiters wollte ich noch wissen, welcher Zeichensatz von RN-Motor verwendet wird, also in welchem Zeichensatz die Daten die zurückkommen sind. Einfach nur ASCII Code?

Frank
11.12.2006, 18:19
Hallo,
ja deine Formal ist korrekt.
Die Geschwindigkeit errechnet sich:

G=1000 / (Geschwindigkeitsparameter+1)

G= Schritte pro Sekunde

Die Schrittanzahl in der Doku stimmt soweit, entschuldige wenn ich dort aber einmal falsch gerundet habe.

Es ist normal das RN-Motor sofort nach dem Befehl ein OK zurückmeldet auch wenn der Motor noch dreht. Der Sinn besteht ja darin das er das Controllerboard nicht aufhält.
Leider wird nicht zurückgemeldet wann die Schritte abgearbeitet wurden. Du gehts somit den richtigen Weg wenn du einfach diese Zeit berechnest und einen kleinen Sicherheitsaufschlag addierst. Das haben schon einige so gemacht, sollte also gut klappen.
Man könnte auch die aktuelle Schrittanzahl abrufen und es daraus ersehen, aber der erste Weg scheint mir der bessere.

Ja, RN-Motor gibt die Daten und Meldungen im reinen ASCII-Code zurück.