Nr.16 Schrittmotor

Anleitung zum Schrittmotor


Bei diesem Schrittmotor handelt es sich um einen Schrittmotor der sich speziell für kleine Anwendungen mit dem Arduino-Board eignet. Die Besonderheit liegt darin, dass er ohne eine externe Spannungsversorgung betrieben werden kann. Der Motor entwickelt dabei ein relativ hohes Drehmoment. Dies wird durch ein Getriebe realisiert, welches innerhalb des Metallgehäuses vor dem eigentlichen Schrittmotor verbaut wurde. Dadurch wird es in dieser kompakten Bauweise überhaupt erst möglich, dass sich eine ganze Umdrehung der Antriebswelle auf 2048 Einzelschritte aufteilen lässt. Ein kleiner daraus resultierender Nachteil ist die langsame maximale Drehgeschwindigkeit.

Der Schrittmotor wird an eine Motorsteuerungsplatine angeschlossen. Diese versorgt den Motor mit ausreichend elektrischer Energie, damit die Leistung nicht von den digitalen Pins des Arduino-Boards aufgebracht werden muss. Die Steuerungsplatine gibt es in zwei Versionen, bei denen die seitlich angebrachten Pins entweder nach oben oder nach unten aus der Platine herausragen. Die Anschlussbelegung ist jedoch gleich.

Material: Arduino Mikrocontrollerboard, Schrittmotor mit Steuerplatine, Breadboardkabel  (Materialbeschaffung: www.funduinoshop.com)

 

Verkabelung

IN1 der Motorsteuerplatine wird an Pin6 angeschlossen

IN2 der Motorsteuerplatine wird an Pin5 angeschlossen

IN3 der Motorsteuerplatine wird an Pin4 angeschlossen

IN4 der Motorsteuerplatine wird an Pin3 angeschlossen

GND der Motorsteuerplatine wird an einem GND Pin am Arduino-Board angeschlossen

VCC der Motorsteuerplatine wird an den 5V Pin am Arduino-Board angeschlossen

Bei Motorsteuerplatinen mit nach unten ausgerichteten Pins kann die Steuerplatine auch direkt auf das Mikrocontrollerboard aufgesteckt werden.

Dies ist ein Beispielcode, der den Motor abwechselnd um 2048 Schritte (entspricht einer ganzen Umdrehung) vor- und zurückdrehen lässt.

Sketch

#include <Stepper.h> // Hinzufügen der Programmbibliothek.
int SPU = 2048; // Schritte pro Umdrehung.
Stepper Motor(SPU, 3,5,4,6); // Der Schrittmotor erhält die Bezeichnung "Motor" und es wird angegeben an welchen Pins der Motor angeschlossen ist.

void setup() //Hier beginnt das Setup.
{
Motor.setSpeed(5); // Angabe der Geschwindigkeit in Umdrehungen pro Minute.
}

void loop() {
Motor.step(2048); // Der Motor macht 2048 Schritte, das entspricht einer Umdrehung.
delay(1000); // Durch diese Pause bleibt der Motor nach der Drehung für eine Sekunde stehen.
Motor.step(-2048); // Der Motor macht durch das Minuszeichen 2048 Schritte in die andere Richtung.
delay(1000); // Durch diese Pause bleibt der Motor nach der Drehung für eine Sekunde stehen.
}

 

Drehung ohne große Schrittmengen
Die Verwendung von Befehlen mit einer großen Schrittmenge „x“ (Motor.step(x);) ist in umfangreicheren Sketchen häufig störend, da während der Ausführung keine weiteren Signale vom Mikrocontroller empfangen oder gesendet werden können. Das ist ein ähnliches Problem wie bei langen Delays. Daher bietet es sich beim Schrittmotor gut an, die Drehbewegung in einer Schleife auszuführen.

Hier ein kleines Beispiel:

In diesem Fall soll sich der Motor drehen, bis ein Taster gedrückt wird. Es könnte die Anhaltefunktion in einer Maschine sein. Natürlich soll bei einer solchen Funktion der Motor sofort stoppen und nicht erst seine Drehbewegung beenden. Mit einer großen Schrittmenge könnte man die Drehbewegung nicht an einem beliebigen Punkt stoppen, sondern erst wenn der Motor seine Drehbewegung beendet hat und der Mikrocontroller bereit für die nächsten Befehle ist.

 

#include <Stepper.h>
int SPU = 2048;
Stepper Motor(SPU, 3,5,4,6);
int Taster=7; // Taster an Pin7
int Tasterstatus=0; // Variable für den Status des Tasters

void setup()
{
Motor.setSpeed(5);
pinMode(Taster, INPUT);
}

void loop() 
{
Tasterstatus=digitalRead(Taster); //Zunächst wird der Taster abgefragt.
while(Tasterstatus == HIGH) //Solange der Wert des Tasters HIGH, also gedrückt ist...
 {
  delay(1); //...springt der Sketch in diese Klammer und verbleibt hier.
 } //Wenn der Taster jedoch nicht mehr gedrückt ist, springt der Sketch in den regulären Loop zurück und führt dort weitere Befehle aus.
Motor.step(1); //...drehe den Motor um einen Schritt.
} //Jetzt beginnt der Sketch von vorn. Solange der Taster nicht gedrückt ist, wird die "While" Funktion nicht ausgeführt und der Motor dreht sich Schritt für Schritt weiter