Hi Franz Peter,
ich habe mir deine MobaTools für mein Projekt installiert und es funktioniert soweit sehr gut.
Ich setze einen Cl-Stepper IHSS57-36-10 1Nm Nema 23 von JMC mit 800 Stepps ein.
Leider komme ich nicht über 180Rpm, auch mit deinem Beispiel hier nicht darüber.
MicroBahner:
Wenn Du die delay loswerden willst, kannst Du den MoTo Timer einsetzen:#include <MobaTools.h>
const byte stepPin = 6;
const byte dirPin = 5;
const byte tasterPin = A0;
const int umdrMin = 600; // 60 Umdrehungen / Minute
const long laufZeit = 2000; // Laufzeit 2 Sekunden
MoToStepper myStepper ( 200, A4988 );
MoToTimer stopUhr;
void setup() {
// put your setup code here, to run once:
myStepper.attach( stepPin, dirPin );
myStepper.setRampLen( 10 );
pinMode( tasterPin, INPUT_PULLUP );
}
void loop() {
// put your main code here, to run repeatedly:
if ( digitalRead( tasterPin ) == LOW && !stopUhr.running() ) {
myStepper.setSpeed( umdrMin ); // Umdrehungszahl einsteeln ( in Umd/Min*10 )
myStepper.rotate( 1 ); // Vorwarts drehen
stopUhr.setTime( laufZeit ); // Zeit aufziehen
}
if ( stopUhr.expired() ) {
// Zeit ist abgelaufen
myStepper.rotate( 0 ); // wieder anhalten
}
}
Das in deinen Code einzubauen überlass ich jetzt mal dir 8)
Wenn ich in meinem Projekt mit Port High/Low und delayMicroseconds(25) arbeite rennt der Stepper wie gewünscht aber leider ohne Anfahr/Bremsrampe.
Da ich den Stepper an meinen Rundtisch(4.Achse Fräsmaschine) einsetzen möchte brauche ich aber die Rampe, das anfahren und bremsen mit Port High/Low und delayMicroseconds(25) ist einfach zu hart.
Besteht die Möglichkeit mit MobaTools eine höhere Drehzahl zu erreichen?
Hier mein Testcode
#include <MobaTools.h>
const byte stepPin = 2;
const byte dirPin = 3;
const byte tasterPin = A0;
const int umdrMin = 7200; // 60 Umdrehungen / Minute
const long laufZeit = 2000; // Laufzeit 2 Sekunden
MoToStepper myStepper ( 800, A4988 ); // 200 Steps/ Umdrehung ( gegebenenfalls anpassen )
void setup() {
// put your setup code here, to run once:
myStepper.attach( stepPin, dirPin );
myStepper.setSpeed( umdrMin ); //Geschwindigkeit einstellen
myStepper.setRampLen( 50 );
pinMode( tasterPin, INPUT_PULLUP );
}
void loop() {
// put your main code here, to run repeatedly:
myStepper.rotate( 1 ); // Vorwarts drehen
delay(2000);
myStepper.rotate( 0 ); // wieder anhalten
/* if ( digitalRead( tasterPin ) == LOW ) {
myStepper.setSpeed( umdrMin ); //Geschwindigkeit einstellen
myStepper.rotate( 1 ); // Vorwarts drehen
delay ( laufZeit );
myStepper.rotate( 0 ); // wieder anhalten
}*/
}
Gruß Burkhard