Schrittmotor mit Arduino läuft nur bei bestimmter Drehzahl

Hallo,

mein Schrittmotor läuft nur bei einer ganz bestimmten Drehzahl ruckelfrei, ansonsten bleibt er immer stehen oder unterbricht ganz oft.

Bei folgendem Code funktioniert es, sobald ich aber die Sekundenanzahl ein bisschen verändere oder MS1 auf HIGH stelle, funktioniert es nicht mehr.

Mein verwendeter Motor ist der ACT 17HS4417L2X2 Hybridschrittmotor NEMA 17.

#define STP 5
#define DIR 6

#define MS1 8
#define MS2 9
#define MS3 10

void setup() {

pinMode (STP, OUTPUT) ;
pinMode (DIR, OUTPUT) ;

pinMode (MS1, OUTPUT) ;
pinMode (MS2, OUTPUT) ;
pinMode (MS3, OUTPUT) ;

digitalWrite(MS1,LOW);
digitalWrite(MS2,LOW);
digitalWrite(MS3,LOW);

}

void loop() {

digitalWrite(DIR,HIGH);
digitalWrite (STP, HIGH);
delayMicroseconds(600);

digitalWrite(STP,LOW);
delayMicroseconds(600);

}

Ich weiß, eine fern Diagnose ist kaum möglich, besonders ohne die fehlenden Angaben. Ich wäre nur Dankbar, wenn ich ein paar Vorschläge oder Ideen bekomme, woran es liegen könnte.

Vielen Dank schon mal!

Mit freundlichen Grüßen
Joroja

Wahrscheinlich ist Folgendes viel zu schnell:

void loop() {


 digitalWrite(DIR,HIGH);
 digitalWrite (STP, HIGH);
 delayMicroseconds(600);

digitalWrite(STP,LOW);
delayMicroseconds(600);

}

Es gibt einen deutschen Forumbereich.
Versuch mal

void loop() {

 digitalWrite(DIR,HIGH); 

 digitalWrite (STP, HIGH);
 delayMicroseconds(10); //nur ein kurzer Puls am Stufeneingang
 digitalWrite(STP,LOW);

delay(100);  //100 Millisekunden

}

Hallo Jremington,

vielen Dank für deine Hilfe!
Leider hat es nicht funktioniert. Der Motor bewegt sich nicht und mach nur "klick" Geräusche und mein Netzteil zeigt mir ziemlich hohe, schwankende Ströme an. Also bis ca. 2A , davor lag ich immer bei so 0.6A.

Also den Code den ich reingestellt habe, der funktioniert, aber leider nur der und sobald ich was verändere geht es auch nicht mehr. Komischerweise funktioniert er auch nicht, wenn ich statt 600 Microseconds nur delay 0.6 nehme. Was ja eigentlich das gleiche sein sollte.

delay 0.6

Das geht natuerlich nicht. Die Zahlen mit delay() muessen Ganzahlen sein.