Schrittmotor mit A4988 Treiber & Arduino steuern – Vollständige Anleitung
Der A4988 ist ein Microstepping-Treiber für bipolare Schrittmotoren mit integriertem Translator. Steuerung über nur 2 Pins: STEP (Schritt-Impuls) & DIR (Richtung). Full-Step-Modus (MS-Pins offen). DIR → Pin 4, STEP → Pin 3. VMOT: 12 V + 100 µF Elko. Motor: A/C → 1A/1B, B/D → 2A/2B. Referenzspannung Beispiel: Gemessen Vref = 0,6 V → Limit = 1,2 A. Full-Step: 1,2 A × 0,7 = 0,84 A theoretisch. Praktisch gemessen: 0,5 A → Formel stimmt nicht für alle Boards. Immer real messen! NEMA 17 mit 1,8° Schrittwinkel = 200 Schritte/Umdrehung (Full-Step).Übersicht: A4988 Stepper Driver

Hauptmerkmale

Pinout & Anschluss

Pin Funktion Anschluss VDD / GND Logikversorgung Arduino 5 V / GND 1A, 1B Motor Spule 1 Motor A & C 2A, 2B Motor Spule 2 Motor B & D GND / VMOT Motorversorgung 8–35 V + 47 µF Elko (entkopplung) STEP Schritt-Impuls Arduino Digitalpin (z. B. 3) DIR Richtung Arduino Digitalpin (z. B. 4) SLEEP Low = Sleep-Mode Auf High ziehen (z. B. mit RESET verbinden) RESET Low = Translator zurücksetzen Mit SLEEP verbinden für Normalbetrieb MS1, MS2, MS3 Microstepping-Wahl Offen = Full Step (interner Pull-Down) ENABLE High = Ausgänge aus Auf Low/GND für Betrieb 
Benötigte Komponenten
Schaltplan

Strombegrenzung einstellen (Wichtig!)
Vref am Potentiometer messen. Formel: Stromlimit = Vref × 2 (bei manchen Boards abweichend!). Im Full-Step erreicht Wicklungsstrom nur 70 % des Limits.


Arduino Code – Grundbeispiel
/* Einfache Schrittmotor Steuerung A4988
* by Dejan Nedelkovski, www.HowToMechatronics.com
*/
const int stepPin = 3;
const int dirPin = 4;
void setup() {
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
}
void loop() {
digitalWrite(dirPin, HIGH); // Richtung 1
for (int x = 0; x < 200; x++) { // 1 Umdrehung
digitalWrite(stepPin, HIGH);
delayMicroseconds(500);
digitalWrite(stepPin, LOW);
delayMicroseconds(500);
}
delay(1000);
digitalWrite(dirPin, LOW); // Richtung 2
for (int x = 0; x < 400; x++) { // 2 Umdrehungen
digitalWrite(stepPin, HIGH);
delayMicroseconds(500);
digitalWrite(stepPin, LOW);
delayMicroseconds(500);
}
delay(1000);
}Erweiterung: Geschwindigkeitsregelung per Potentiometer
/* Schrittmotor Geschwindigkeit per Potentiometer */
const int stepPin = 3;
const int dirPin = 4;
int customDelay, customDelayMapped;
void setup() {
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
digitalWrite(dirPin, HIGH);
}
void loop() {
customDelayMapped = speedUp();
digitalWrite(stepPin, HIGH);
delayMicroseconds(customDelayMapped);
digitalWrite(stepPin, LOW);
delayMicroseconds(customDelayMapped);
}
int speedUp() {
int customDelay = analogRead(A0); // 0–1023
int newCustom = map(customDelay, 0, 1023, 300, 4000); // 300–4000 µs
return newCustom;
}
Herstellungsprozess
- Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
- LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
- Zwei Schrittmotoren mit Arduino Nano & Joystick steuern – Einfaches Tutorial
- Arduino & MPU6050: Präzise Servomotor-Steuerung mit SG90 & MG996R
- Temperatur & Luftfeuchte mit DHT11 auf Blynk auslesen – Arduino-Tutorial Schritt für Schritt
- Musikalische Töne mit Arduino erzeugen: Schritt-für-Schritt-Anleitung
- Arduino Uno & Bluetooth: Fernsteuerung eines Autos – Schritt-für-Schritt-Anleitung
- Modbus auf Arduino meistern: Schritt-für-Schritt-Anleitung
- Präzise Schrittmotor-Steuerung: 28BYJ-48 mit Arduino UNO & Joystick
- Eigenen KI-Assistenten-Roboter mit Arduino & Python bauen