Also hier mal ein kleiner Sketch, der anhand der Einstellungen on Steps die der Motor hat (200/U) und den eingestellten Microsteps (bei Dir 16) berechnet , wieviele impulse (Steps) in der Minute gesendet werden müssen und wie lange das Intervall zwischen 2 schriten sein muss, um auf die erforderliche Anzahl Schritte / Minute zu kommen, damit der Motor 1 Umdrehung in der Minute macht.
```cpp
uint8_t microStep = 16; // eingestellte Microstep vom TMC2208
uint8_t mot_Step_pro_U = 200; // Step's / Umdrehung des Motors entspricht Schrittwinkel 1.8°
uint16_t step_pro_Umdrehung = microStep * mot_Step_pro_U; // erforderliche Schritte für eine Umdrehung
uint32_t Intervall = 60000/step_pro_Umdrehung; // zeitabstand zwischen 2 Steps in Millisekunden
uint32_t intervallStart = 0;
uint8_t dirPin = 4; // Pin für Motor Drehrichtung
uint8_t stepPin = 7; // Pin für die Schritt Impulse
void setup() {
// put your setup code here, to run once:
pinMode(dirPin, OUTPUT); //Define pins and set direction
pinMode(stepPin, OUTPUT);
digitalWrite(stepPin, LOW);
intervallStart = millis(); // start für die Zeitmessung um die richtige Anzahl Steps/Minute zu senden
}
void loop() {
// put your main code here, to run repeatedly:
if(millis() - intervallStart >= Intervall) { //wenn das intervall zwisschen 2 Steps abgelaufen
intervallStart = millis(); // neue intervall Messung initiieren
sende_1_Step(); // 1 Step an den Motortreiber senden
}
}
void sende_1_Step() {
digitalWrite(stepPin, HIGH);
delayMicroseconds(2); // 100ns, also 0.1 Mikrosekn würden dem TMC2208 reichen einen Impuls zu erfassen
digitalWrite(stepPin, LOW);
}