- Bipolarer Schrittmotor 1,8°
- Easydriver Schrittmotorkarte V4.4
- Arduino Duemilanove (UNO)
- Breadboard
- Breadboardhalter
- Drahtbügel
- USB Kabel
- Externe Stromversorgung für Schrittmotor (z.B. 12V, 1A)
- Anschlussklemmen
Die Schrittmotorkarte wird wie im Programmcode beschrieben mit dem Arduino verbunden.
Die Anschlüsse GND und M+ werden mit der externen Spannung (für den Motor) versorgt. Bei dieser Karte ist eine Spannung bis 30V möglich.Zusätzlich wird die Schrittmotorkarte mit GND vom Arduino verbunden.
Sobald die Schrittmotorkarte über M+ mit einer externen Spannung versorgt wird, wird die Elektronik der Karte über einen Spannungsregler mit 5V versorgt. Diese Spannung steht auch am +5V Pin auf der Karte zur Verfügung. Wird nach dem Programmieren die Spannungsversorgung des Arduinos über USB getrennt, so kann das Arduino über diesen 5V Pin versorgt werden.
Der Schrittmotor hat 2 Wicklungen; WicklungA: rot und grün, WicklungB gelb und blau. Diese werden mit der Schrittmotorkarte -A- und -B- verbunden.
Programmcode:
Dieser Programmcode bewegt den Schrittmotor nach folgendem Ablauf:
- 1 Umdrehung im Vollschritt
- Drehrichtungsänderung
- 1 Umdrehung im Halbschritt
- Drehrichtungsänderung
- 1 Umdrehung im Viertelschritt
- Drehrichtungsänderung
- 1 Umdrehung im Achtelschritt
- Drehrichtungsänderung
/* 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 signal = 2; // Verbindung von Arduino D2 zu STEP auf Easydriver
int richtung = 3; // Verbindung von Arduino D3 zu DIR auf Easydriver
int MS1 = 5; // Verbindung von Arduino D5 zu MS1 auf Easydrive
int MS2 = 6; // Verbindung von Arduino D6 zu MS2 auf Easydrive
int SLP = 7; // Verbindung von Arduino D7 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 (MS1, LOW); // für Vollschritt
digitalWrite (MS2, LOW); // für Vollschritt
digitalWrite (richtung, LOW); // stellt Drehrichtung ein
digitalWrite (SLP, HIGH);
for (int i=1; i <= 200; i++){ // 200 Schritte für eine Umdrehung
digitalWrite (signal, HIGH); //Signal für STEP
delayMicroseconds (200);
digitalWrite (signal, LOW);
delayMicroseconds (1000); // ü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
/////////////////////////////////////////////////////////
// 1 Umdrehung mit Halbschritt /////
// 200 Schritte für eine Umdrehung im Vollschritt/////
// ergibt 400 Schritte im Halbschritt /////
/////////////////////////////////////////////////////////
digitalWrite (MS1, HIGH); // für Halbschritt
digitalWrite (MS2, LOW); // für Halbschritt
digitalWrite (richtung, HIGH); // Motor dreht in andere Richtung
digitalWrite (SLP, HIGH);
for (int i=1; i <= 400; i++){ // 400 Schritte für eine Umdrehung
digitalWrite (signal, HIGH);
delayMicroseconds (200);
digitalWrite (signal, LOW);
delayMicroseconds (1000); // ü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
///////////////////////////////////////////////////////////
// 1 Umdrehung mit Viertelschritt /////
// 200 Schritte für eine Umdrehung im Vollschritt /////
// ergibt 800 Schritte im Halbschritt //////
///////////////////////////////////////////////////////////
digitalWrite (MS1, LOW); // für Viertelschritt
digitalWrite (MS2, HIGH); // für Viertelschritt
digitalWrite (richtung, LOW); // Motor dreht in andere Richtung
digitalWrite (SLP, HIGH);
for (int i=1; i <= 800; i++){ // 800 Schritte für eine Umdrehung
digitalWrite (signal, HIGH);
delayMicroseconds (200);
digitalWrite (signal, LOW);
delayMicroseconds (1000); // ü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
///////////////////////////////////////////////////////////
// 1 Umdrehung mit Achtelschritt /////
// 200 Schritte für eine Umdrehung im Vollschritt /////
// ergibt 1600 Schritte im Achtelschritt //////
///////////////////////////////////////////////////////////
digitalWrite (MS1, HIGH); // für Achtelschritt
digitalWrite (MS2, HIGH); // für Achtelschritt
digitalWrite (richtung, HIGH); // Motor dreht in andere Richtung
digitalWrite (SLP, HIGH);
for (int i=1; i <= 1600; i++){ // 1600 Schritte für eine Umdrehung
digitalWrite (signal, HIGH);
delayMicroseconds (200);
digitalWrite (signal, LOW);
delayMicroseconds (1000); // ü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
}
////////////////////////////////////////////////////
// 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 signal = 2; // Verbindung von Arduino D2 zu STEP auf Easydriver
int richtung = 3; // Verbindung von Arduino D3 zu DIR auf Easydriver
int MS1 = 5; // Verbindung von Arduino D5 zu MS1 auf Easydrive
int MS2 = 6; // Verbindung von Arduino D6 zu MS2 auf Easydrive
int SLP = 7; // Verbindung von Arduino D7 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 (MS1, LOW); // für Vollschritt
digitalWrite (MS2, LOW); // für Vollschritt
digitalWrite (richtung, LOW); // stellt Drehrichtung ein
digitalWrite (SLP, HIGH);
for (int i=1; i <= 200; i++){ // 200 Schritte für eine Umdrehung
digitalWrite (signal, HIGH); //Signal für STEP
delayMicroseconds (200);
digitalWrite (signal, LOW);
delayMicroseconds (1000); // ü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
/////////////////////////////////////////////////////////
// 1 Umdrehung mit Halbschritt /////
// 200 Schritte für eine Umdrehung im Vollschritt/////
// ergibt 400 Schritte im Halbschritt /////
/////////////////////////////////////////////////////////
digitalWrite (MS1, HIGH); // für Halbschritt
digitalWrite (MS2, LOW); // für Halbschritt
digitalWrite (richtung, HIGH); // Motor dreht in andere Richtung
digitalWrite (SLP, HIGH);
for (int i=1; i <= 400; i++){ // 400 Schritte für eine Umdrehung
digitalWrite (signal, HIGH);
delayMicroseconds (200);
digitalWrite (signal, LOW);
delayMicroseconds (1000); // ü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
///////////////////////////////////////////////////////////
// 1 Umdrehung mit Viertelschritt /////
// 200 Schritte für eine Umdrehung im Vollschritt /////
// ergibt 800 Schritte im Halbschritt //////
///////////////////////////////////////////////////////////
digitalWrite (MS1, LOW); // für Viertelschritt
digitalWrite (MS2, HIGH); // für Viertelschritt
digitalWrite (richtung, LOW); // Motor dreht in andere Richtung
digitalWrite (SLP, HIGH);
for (int i=1; i <= 800; i++){ // 800 Schritte für eine Umdrehung
digitalWrite (signal, HIGH);
delayMicroseconds (200);
digitalWrite (signal, LOW);
delayMicroseconds (1000); // ü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
///////////////////////////////////////////////////////////
// 1 Umdrehung mit Achtelschritt /////
// 200 Schritte für eine Umdrehung im Vollschritt /////
// ergibt 1600 Schritte im Achtelschritt //////
///////////////////////////////////////////////////////////
digitalWrite (MS1, HIGH); // für Achtelschritt
digitalWrite (MS2, HIGH); // für Achtelschritt
digitalWrite (richtung, HIGH); // Motor dreht in andere Richtung
digitalWrite (SLP, HIGH);
for (int i=1; i <= 1600; i++){ // 1600 Schritte für eine Umdrehung
digitalWrite (signal, HIGH);
delayMicroseconds (200);
digitalWrite (signal, LOW);
delayMicroseconds (1000); // ü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
}
erstellt 16.3.2011
Keine Kommentare:
Kommentar veröffentlichen
Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.