Arduino + Easydriver + Schrittmotor = Probleme

Hallo und guten Tag! :slight_smile:

Ich beschäftige mich derzeit mit einem kleinen Schrittmotorprojekt. Für diesen Zweck legte ich mir einen Arduino Uno, eine Easydriver Schrittmotorkarte, und einen kleinen 2Phasen Schrittmotor zu.

Das Ganze habe ich nach diesem Tutorial verdrahtet und in Betrieb genommen: http://physicalcomputingaustria.blogspot.com/2011/03/easydriver-schrittmotorkarte.html

Hat anfangs auch fantastisch funktioniert, ich experimentierte dann mit den Schritten und den Delays. Heute baute ich die ganze Steuerung nochmals auf und lud das Programm auf den Arduino. Der Motortreiber bekam auch sofort signal und der Motor brummelte. Er dreht nicht, sondern brummte nur vor sich hin, das Ganze aber schön im Interval wie es meine delay vorsah. Ich probierte verschiedene Sachen im Script aus, kopierte auch das Quellscript und speicherte es auf den Arduino - bisher gab es keine Besserung.

Mein Script sieht folgendermaßen aus:

/* Startübung mit einem Arduino, der Easydriver V4.3 Schrittmotorkarte
 und einem Bipolaren Schrittmotor 1,8 ° mit vier Anschlüssen
www.physicalcomputing.at*/

////////////////////////////////////////////////////
//   Beschaltung von MS1 und MS2                  //
//   MS1 = LOW  und MS2 = LOW  -> Vollschritt     //
//   MS1 = HIGH und MS2 = LOW  -> Halbschritt     //
//   MS1 = LOW  und MS2 = HIGH -> Viertelschritt  //
//   MS1 = HIGH und MS2 = HIGH -> Achtelschritt   //
////////////////////////////////////////////////////


int richtung = 1;   // Verbindung von Arduino D1 zu DIR auf Easydriver
int signal = 2;     // Verbindung von Arduino D2 zu STEP auf Easydriver
int MS2 = 3;        // Verbindung von Arduino D3 zu MS2 auf Easydrive
int MS1 = 4;        // Verbindung von Arduino D4 zu MS1 auf Easydrive
int SLP = 5;        // Verbindung von Arduino D5 zu SLP auf Easydrive


void setup (){              // die Pins werden als Ausgang definiert
  pinMode (signal, OUTPUT);
  pinMode (richtung, OUTPUT);
  pinMode (MS1, OUTPUT);
  pinMode (MS2, OUTPUT);
  pinMode (SLP, OUTPUT);
}


void loop (){

  ////////////////////////////////////////////////////
  //      1 Umdrehung mit Vollschritt            /////
  //    der verwendete Stepper hat 1,8°          /////
  //    360° / 1,8° ergibt 200 Schritte/Umdrehung/////
  ////////////////////////////////////////////////////
 
  digitalWrite (richtung, HIGH); // stellt Drehrichtung ein
  digitalWrite (MS1, LOW);  // für Vollschritt
  digitalWrite (MS2, LOW);  // für Vollschritt
  digitalWrite (SLP, HIGH);
    
  
  for (int i=1; i <=200; i++){   // 200 Schritte für eine Umdrehung 
    digitalWrite (signal, HIGH);  //Signal für STEP
    delayMicroseconds (500);
    digitalWrite (signal, LOW);
    delayMicroseconds (10000);   // über die Zeit kann die Geschwindigkeit eingestellt werden   

  }
  digitalWrite (SLP, LOW);  // minimiert die Stromversorgung,
  //wenn die Schrittmotorkarte nicht verwendet wird
  delay(2000);
  digitalWrite (SLP, HIGH); // aktiviert die Schrittmotorkarte wieder
  
}

Easydriverpins sind korrekt mit dem Arduino verbunden. Die vier Leitungen des Motor sind wie folgt auf dem Easydriver gelötet:

*man schaut von vorn, Easydriver-Platinenschrift lesbar:

   A         B
rt - gn  ge - bl
[__   MOTOR   __]

Hat einer von euch Rat?
Achja, die GND vom Easydriver geht auch auf den Arduino!

Viele Grüße,
basteljoe

Bitte sag uns auch wie du den Schrittmotor versorgst und auf was Du MS1 und MS2 geschaltet dast.
Grüße Uwe

Hallo Uwe!

Der Motor wird mit einem 8fach Mignonblog versorgt (8x1,5V). Das Mulitmeter zeigt mir 12,5V Spannung an.

MS1 und MS2 sind - wie im Quellcode zu sehen - mit LOW beschaltet. Wenn ich MS2 auf HIGH setze (Halbschritt), dann dreht sich der Motor kontinuierlich und ignoriert die Variable i vollkommen.

Wenn ich MS2 auf HIGH setze (Halbschritt), dann dreht sich der Motor kontinuierlich und ignoriert die Variable i vollkommen.

Kontrollier nochmal die Beschaltung und die Verbindumgen. Die Funktion des Easydriver ändert sich nicht wenn Du Vollschritte oder Microschritte einstellst. Für Microschritte brauchst Du eine viel höhere Versorgungsspannung da im gegensatz zu Vollschritten bei Microschritten der Motor in Stromsteuerung betrieben wird und die induktivität der Motorwindungen den Motorstron nicht begrenzen darf.
Grüße Uwe