Hallo und guten Tag!
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