So ich habe mal ein wenig getestet und gerechnet 
folgender Code: Motor soll Vorwärts laufen 4.36 U in 239.34 Sekunden. Danach schnell rückwärts. Zuerst mal den Code, danach die Probleme 
#include <MobaTools.h>
MoToStepper Step(4096); // HALFSTEP ist default
MoToTimer delayTime;
//Variablen definieren
int Steps = 4096; //Schritte pro Umdrehung
int Zeitsequenz = 86164/360; //Rotationszeit für ein Grad
int Gewindesteigung = 1; //Steigung in mm/U
int Hebel_Statisch = 250; // Länge Hebelarm in mm
int Hebel_Rotation = 250; // Länge Hebelarm in mm
void setup() {
Step.attach( 10, 11, 12, 13 ); // Anschluß an digitalen Ausgängen; Treiber IN1,IN2,IN3,IN4
Step.setZero(); // Referenzpunkt für Motor 1 setzen
}
//for a= 1 to 30 jedes Grad die Schritte berechnen
//if a==0 then
// Anzahl Schritte in Zeitsequenz = ((sqrt(Hebel_Statisch^2 + Hebel_Rotation^2 - 2*Hebel_Statisch*Hebel_Rotation*cos(a))) / Gewindesteigung) * Steps
//else
// Anzahl Schritte in Zeitsequenz = ((sqrt(Hebel_Statisch^2 + Hebel_Rotation^2 - 2*Hebel_Statisch*Hebel_Rotation*cos(a)) - sqrt(Hebel_Statisch^2 + Hebel_Rotation^2 - 2*Hebel_Statisch*Hebel_Rotation*cos(a-1))) / Gewindesteigung) * Steps
//end if
//next a++
//wenn a>30 Motor stoppen und schnell zurückfahren zu Grad 0
void loop() {
const uint16_t GESCHW_V = 747; // 4096 * 4.363 / 239.34 * 10 Schrittgeschwindigkeit in Steps/10sec
const uint16_t GESCHW_R = 4000; // Rotationsgeschwindigkeit 24 U/Min
const uint16_t RAMPE = 15000; // Rampenlänge in Steps.
const uint16_t FAKTOR = 10; // 1/10 Grad
const uint16_t WINKEL = 15708; // 4.363 * 360 in 1/10 Grad
Step.setSpeedSteps( GESCHW_V, 0 );
Step.write( WINKEL, FAKTOR );
delay(600);
//Step.write( 2 * WINKEL, FAKTOR );
//delay(65000);
//Step.write( 3 * WINKEL, FAKTOR );
//delay(65000);
Step.setSpeed( GESCHW_R );
Step.setRampLen(RAMPE);
Step.write(0); // zurück
delay(20000);
}
Also, ich habe zuerst mal den Motor nur vorwärts drehen lassen und getestet ob er die Soll Umdrehungen in der gewünschten Zeit zurück legt. Das funktionierte, zumindest ohne das er eine Drehmoment bewegen musste ;).
Nun wollte ich, dass der Motor kurz wartet und danach rückwärts fährt. Ich habe es ohne Rampe versucht sondern so:
Step.setSpeedSteps( GESCHW_R );
Step.write( WINKEL, FAKTOR );
delay(600);
Ging leider nicht.
Danach so wie es jetzt ist. Problem ist, dass der Motor zu schnell zurück dreht. Ich gehe davon aus, dass das Delay so gross sein muss, dass der Motor die Schritte zuvor ausführen kann. Das würde bedeuten, dass ich das Delay immer der Aktionsdauer der Aktion anpassen müsste ;/.
Ich müsste wahrscheinlich eine Schleife programmieren, da die Werte immer etwas ändern, in etwa so was
//for a= 1 to 30 jedes Grad die Schritte berechnen
//if a==0 then
// Anzahl Schritte in Zeitsequenz = ((sqrt(Hebel_Statisch^2 + Hebel_Rotation^2 - 2*Hebel_Statisch*Hebel_Rotation*cos(a))) / Gewindesteigung) * Steps
//else
// Anzahl Schritte in Zeitsequenz = ((sqrt(Hebel_Statisch^2 + Hebel_Rotation^2 - 2*Hebel_Statisch*Hebel_Rotation*cos(a)) - sqrt(Hebel_Statisch^2 + Hebel_Rotation^2 - 2*Hebel_Statisch*Hebel_Rotation*cos(a-1))) / Gewindesteigung) * Steps
//end if
//next a++
//wenn a>30 Motor stoppen und schnell zurückfahren zu Grad 0
Delay auf 239344 gesetzt, läuft nun besser