Interaction Design WikiElectrical Engineering

Schrittmotorentreiber

Ein Steppermotor (Schrittmotor) ist ein Motor, welcher mehrere einzeln steuerbare Spulen angetrieben wird. Durch das Anlegen von Spannung an diesen Spulen, kann der Motor auf diese Weise jeweils um einen Schritt nach Links oder Rechts bewegt werden. Der Vorteil eines Schrittmotors gegenüber einem herkömmlichen Motor ist somit zum einen die präzise Ansteuerung der einzelnen Schritte, als auch die Kraft, welche der Motor aufbringen kann. Typischerweise finden wir Steppermotoren deshalb auch in Anwendungen, wo diese Grössen gefragt sind. Dazu zählen bspw. Drucker, CD-Rom Laufwerke, CNC Maschinen usw.

Die Genauigkeit des Motors wird in den Datenblättern mit Grad (°) pro Schritt angegeben und definiert damit, wie viele Schritte ein Motor für eine ganze Umdrehung oder andere Winkel (z.B. 45° oder 180°) benötigt.

Grundsätzlich wird zwischen uniploaren und bipolaren Steppermotoren unterschieden. Wir werden in diesem Workshop ausschliesslich bipolare Motoren vom Typ SM-42BYG011-25 einsetzen.

Bipolare Stepper

Ein bipolarer Stepper wird normalerweise über vier Kabel angeschlossen. Ebenso wie herkömmliche Motoren verlangen Stepper eine höhere Spannung als wir sie mit dem Arduino bereitstellen können. Die Information über die benötigte Spannung findet sich jeweils in dem Datenblatt. Die von uns verwendeten Motoren benötigen 12V. Um einen bipolaren Stepper zu kontrollieren, werden nun die einzelnen Spulen in einer bestimmten Sequenz geschaltet.

 

Pololu A4988

Der Pololu A4988 ist ein Breakout Board für den Stepper Treiber A4988 von Allegro (Datenblatt). Er macht das Steuern von Stepper Motoren besonders einfach, da er sich mit nur zwei Pins des Arduino ansteuern lässt. Diese zwei Pins sind STEP und DIR. Wie die Namen schon sagen, wird bei einem logischen HIGH am STEP Pin ein Step des Motors ausgeführt und beim logischen HIGH oder LOW wird die Richtung des Steppers geändert.

Beispiel

1x Arduino
1x Pololu A4988 (Website)
1x Stepper Motor (Datenblatt

Beispiel Stepper Expand source
#define STEP_PIN 8
#define DIR_PIN 9
void setup() 
{
  pinMode(STEP_PIN, OUTPUT);
  pinMode(DIR_PIN, OUTPUT);
}
void loop() 
{
  digitalWrite(DIR_PIN, HIGH);
  
  for(int i=0; i<200; i++)
  {
    digitalWrite(STEP_PIN, HIGH);
    delay(10);
    digitalWrite(STEP_PIN, LOW);
    delay(10);
  }
  
  digitalWrite(DIR_PIN, LOW);
  
  for(int i=0; i<200; i++)
  {
    digitalWrite(STEP_PIN, HIGH);
    delay(10);
    digitalWrite(STEP_PIN, LOW);
    delay(10);
  }
}

Aufgaben

1. Nutze einen Button um den Stepper entweder in die eine, oder andere Richtung zu drehen.
2. Nutze zwei weitere Buttons um die Geschwindigkeit zu regeln.
3. Nutze einen analogen Sensor um den Stepper direkt zu steuern.

Weitere Informationen

Stepper Motor – Einführung zum Stepper Motor.
Schrittmotor – Eintrag auf Wikipedia