Zum Inhalt springen
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