Arduino Tutorial: Der Schrittmotor

 

 

Nachdem du gelernt hast, wie ein Servo funktioniert, zeige ich dir den nächsten rotierenden Motor. Dieses Kapitel handelt von dem unipolaren Schrittmotor. Der Schrittmotor kann, wie der Name schon sagt, in Schritten rotieren. Die Schrittweite liegt meistens zwischen 1,8° und 3,6°. In diesen Versuch nehmen wir den Schrittmotor von Typ 28BYJ-48. Man kann den Schrittmotor mit einer fertigen Platine erwerben. Auf der Platine befindet sich der Motortreiber ULN2003APG. Dadurch kann man den Schrittmotor mit einer externen Spannungsversorgung betreiben und mit deinen Arduino ansteuern.

 

 

Was benötigst du?

  • 1 x Arduino Uno

 

  • 1 x USB Kabel

 

  • 1 x Steckbrett

  

  • 1 x Schrittmotor mit zusätzlicher Platine (28BYJ-48 und ULN2003APG)

 

  •  Jump Wire (Männlich)

 

 

Wie sieht der Schaltplan aus?

Auf den Bild hier unten findet ihr die Schaltung ohne die Platine. Bei der Pinbelegung für den Schrittmotor könnt ihr euch nach den Farben orientieren.

 

 

Auf den Bild hier unten sieht ihr die Schaltung mit der fertigen Platine.

 

 

 

 

 

Der Code

byte stepperPins[] = {2,3,4,5};                                  // Variablen- Array

                                                                 // für die

                                                                 // benötigten Pins

                                                                 

                                                                 // Festlegen der

                                                                 // Spannungspegel

                                                                 

byte stepWerte[8][4] = {{HIGH,LOW,LOW,LOW},                      // Schritt 1

                        {HIGH,HIGH,LOW,LOW},                     // Schritt 2

                        {LOW,HIGH,LOW,LOW},                      // Schritt 3

                        {LOW,HIGH,HIGH,LOW},                     // Schritt 4

                        {LOW,LOW,HIGH,LOW},                      // Schritt 5

                        {LOW,LOW,HIGH,HIGH},                     // Schritt 6

                        {LOW,LOW,LOW,HIGH},                      // Schritt 7

                        {HIGH,LOW,LOW,HIGH}};                    // Schritt 8

                        

int stepZaehler = 0;                                             // Unser stepZaehler für 

                                                                 // Schritt 1 bis 8

 

void setup() {

  

  for(int i= 0; i<4; i++)                                        // 

  pinMode(stepperPins[i], OUTPUT);                               // die Pins 2 bis 5 vom 

                                                                 // Arduino als Ausgang 

}                                                                // definieren

 

void loop() {

 

 

  if(stepZaehler==7)                                             // Wenn stepZaehler

                                                                 // gleich 7 

  {                                                              //

     stepZaehler=0;                                              // stepZaehler wieder

                                                                 // auf 0 setzen

                                                                 // 

  }                                                              //

  

  for (int i=0; i<4; i++) {                                      // Hier wird...

                                                                 // nur ...

     digitalWrite(stepperPins[i], stepWerte[stepZaehler][i]);    // Schritt 1... 

                                                                 // ausgeführt...

  }                                                              //

  stepZaehler++;                                                 // stepZaehler um 1 erhöhen

                                                                 // damit beim nächsten mal

                                                                 // Schritt 2 ausgeführt wird

                                                                 

  delay(5);                                                      // 5 millisekunden

                                                                 // warten (Schrittrate)

}     

 

 

Den Sketch kannst du auch hier herunterladen.

 

 

Code- Review

Wie funktioniert jetzt eigentlich der Schrittmotor?

 

Den Schrittmotor kann man sich vereinfacht so vorstellen:

 

 

 

 

Der Rotor (Der Kreis mit dem M in der Mitte) besitzt Permamentmagnete, der auf magnetische Felder von außen reagieren kann. Die magnetischen Felder, mit denen der Rotor beeinflusst werden kann, werden von den Spulen erzeugt, welche du mit deinen Arduino ansteuerst. Diese Spulen magnetisieren das Eisen worum die Spulen gewickelt werden. Das besondere bei Unipolarschrittmotoren ist, dass man mit einer Spannung arbeiten kann, die man nicht verändern muss. Das schafft man indem man zwischen zwei Spulen einen Mittelabgriff hat. Der Mittelabgriff ist an diesen Schrittmotor am roten Kabel, hier Rot (5V) benannt. Nun müssen die Spulen so betrieben werden, sodass die erzeugten magnetischen Felder der Spulen den Rotor in einen bestimmten Winkel lenken. Die Stepanweisungen kann man dazu aus dem Datenblatt vom Schrittmotor entnehmen. Laut Datenblatt benötigen wir 8 Schritte für eine richtige Rotation. Die Schritte kann man im Code hier erkennen.

 

byte stepWerte[8][4] = {{HIGH,LOW,LOW,LOW},                      // Schritt 1

                        {HIGH,HIGH,LOW,LOW},                     // Schritt 2

                        {LOW,HIGH,LOW,LOW},                      // Schritt 3

                        {LOW,HIGH,HIGH,LOW},                     // Schritt 4

                        {LOW,LOW,HIGH,LOW},                      // Schritt 5

                        {LOW,LOW,HIGH,HIGH},                     // Schritt 6

                        {LOW,LOW,LOW,HIGH},                      // Schritt 7

                        {HIGH,LOW,LOW,HIGH}};                    // Schritt 8

 

Die Aufgabe besteht nun dass diese Schritte von deinem Arduino nach und nach ausgeführt werden. Wie das geht müsste für dich im Code nun verständlich sein.

Jetzt weißt du wie man einen Schrittmotor ansteuert.

 

 

 

 

 

Wenn du hier irgendetwas vermisst, bessere Ansätze hast oder dir etwas nicht klar ist, zögere nicht einen Kommentar zu hinterlassen.

Kommentar schreiben

Kommentare: 0