Arduino und A4988 Motortreiber

Arduino, A4988 Motortreiber und der Stepper-Motor NEMA17

A4988 Überblick

Der A4988 ist ein Motortreiber, der Steppermotoren z.B. in 3D-Druckern oder CNC-Fräsen steuert. Sein extrem niedriger Preis uns die eingebauten Features wie z.B. eine Abschaltung bei zu hohen Temperaturen macht ihn extrem interessant. Darüber hinaus ist dieser Baustein sehr einfach anzusteuern.

A4988 Pinout

A4988 Pinout Arduino

Technische Daten

Betriebsspannung8 V – 35 V
Dauerstrom pro Phase1A
Maximumstrom pro Phase2A
Logikspannung3 V – 5.5 V
Microstep-Auflösungfull, 1/2, 1/4, 1/8, und 1/16

Beispielschaltung

Arduino A4988 Nema17 Stepper Motor

Das Arduino wird mit 5V+ und GND des A4988 verbunden. Die digitalen Pins 4, 5 und 6 steuern den Treiberbaustein. Enable wird auf HIGH gesetzt, dann wird ein Step ausgeführt, sobald ein Puls am Step-Pin ankommt. Der Dir-Pin legt die Drehrichtung fest (LOW = Richtung1, HIGH = Richtung2).

Es ist übrigens egal, ob die ihr die Spule des Steppers verwechselt. Es ist nur wichtig, das eine Spule an Pin 1A und 1B, die andere an Pin 2A und 2B anliegt.


Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


Wenn du nicht weißt, welche Kabel vom Stepper-Motor zusammen gehören, muss einfach mit einem Widerstandsmessgerät an zwei der vier Kabel. Ist der Widerstand unendlich, gehören die Kabel nicht zu einer Spule. Ist ein Widerstand (sehr klein) zu messen, hast du ein Paar gefunden.

Code

int stepCounter;
int steps = 2000;

void setup() {
  pinMode(6, OUTPUT); // Enable
  pinMode(5, OUTPUT); // Step
  pinMode(4, OUTPUT); // Richtung

  digitalWrite(6, LOW);
}

void loop() {
  digitalWrite(4,HIGH); // im Uhrzeigersinn

  for(stepCounter = 0; stepCounter < steps; stepCounter++) {
    digitalWrite(5,HIGH);
    delayMicroseconds(500);
    digitalWrite(5,LOW);
    delayMicroseconds(500);
  }
  
  delay(1000);

  digitalWrite(4,LOW); // gegen den Uhrzeigersinn

  for(stepCounter = 0; stepCounter < steps; stepCounter++) {
    digitalWrite(5,HIGH);
    delayMicroseconds(500);
    digitalWrite(5,LOW);
    delayMicroseconds(500);
  }

  delay(1000);
}

Im Grunde schalten wir ein HIGH oder LOW auf den Richtungspin, dann stimulieren wir den Step-Pin mit einer An-Aus-Logik.

Microstepping

Ist die Auflösung der einzelnen Steps zu gering, lässt sich am A4988 Microstepping bis zu Sechzehntel-Schritten aktivieren. Hierbei musst du aber beachten, das Microstepping Einfluss auf das Drehmoment des Motors hat.

Zum Einschalten des Microstepping Modus kann man einfach ein logisches HIGH Signal an die jeweiligen Pins anlegen.

MS1MS2MS3Microstep AuflösungArbeitsmodus
LLLFull Step2 Phase
HLLHalf Step1-2 Phase
LHLQuarter StepW1-2 Phase
HHLEighth Step2W1-2 Phase
HHHSixteenth Step4W1-2 Phase

Mehr Infos

Hier habe ich schon mal was zum Thema Stepper-Motoren erklärt: Motorsteuerung eines Schrittmotors

Datenblatt des Allegro A4988 Chips: https://www.pololu.com/file/0J450/a4988_DMOS_microstepping_driver_with_translator.pdf


Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

  • Die beliebtesten Arduino-Projekte von StartHardware
  • Inklusive Schaltplan, Beschreibung und Code
  • Arduino-Schnellstart-Kapitel
  • Kompakter Programmierkurs