Probleme mit einem Schrittmotor

Hallo zusammen,

ich bin ein absoluter Arduino Neuling und hoffe ihr könnt mir vll helfen.
Ich versuche über die Motorsteuerung dvr8825 einen Schrittmotor anzusteuern. (Anschluss wie es hier vorgegeben ist Pololu - DRV8825 Stepper Motor Driver Carrier, High Current (md20a)) Dazu verwende ich den folgenden Code. Der Motor soll sich zuerst vorwärts und anschließend rückwärts drehen. In eine Richtung funktioniert das ganze sehr gut. Andersherum wechselt der motor planlos die Richtung. Kann mir vielleicht jemand sagen woran das liegt?

Vielen Dank
Grüße Karo

void setup ()
{
  Serial.begin(9600); 
  pinMode(2, OUTPUT); //Direction Pin
  pinMode(3, OUTPUT); //SetpPin
  pinMode(13,OUTPUT);//LED

}

void loop ()

{

digitalWrite(2,LOW);

     for(int i=0; i<500; i++)
  {  
 digitalWrite(3, HIGH); 
 digitalWrite(3,LOW);
 delayMicroseconds(900); 
  }
digitalWrite(13,HIGH); 
  delay(2000); 
digitalWrite(13,LOW); 

  digitalWrite(2,HIGH);
 
     for(int i=0; i<500; i++)
  {  
 digitalWrite(3, HIGH); 
 digitalWrite(3,LOW);
 delayMicroseconds(900); 
  }

  delay(2000);

Karo1989:
Kann mir vielleicht jemand sagen woran das liegt?

Ich schätze mal, Deine HIGH Impulse sind viel zu kurz.

Meiner Meinung nach brauchst Du ein kleines delay auch beim HIGH-Impuls also:

 digitalWrite(3, HIGH); 
 delayMicroseconds(900); // <== das fehlt
 digitalWrite(3,LOW);
 delayMicroseconds(900);

Der DVR8824 braucht HIGH Impulse die mindestens 1,9µS lang sind. http://www.pololu.com/file/download/drv8825.pdf?file_id=0J590 Seite 7. Also kannst Du die Pause zwischen HIGH und LOW auch 2 µS lang machen und die Schrittgeschwindigkeit mit dem anderen delay() bestimmen.
Grüße Uwe

digitalWrite(3, HIGH); 
 delayMicroseconds(2); 
 digitalWrite(3,LOW);
 delayMicroseconds(900);

danke :slight_smile: