Bauteil · Treiber
A4988 Stepper Driver
Die billige Trägerplatine, die den Strom in eine Schrittmotorspule regelt. Grenze mit dem Messgerät einstellen, Sense-Widerstand-Falle und wann zum TMC greifen.
Was es ist
Ein A4988-Träger ist ein briefmarkengroßes Board zwischen Mikrocontroller und bipolarem Schrittmotor. Du gibst ihm zwei Signale – einen Puls und eine Richtung –, und es erledigt alles andere: die Spulen in der richtigen Sequenz bestromen und, entscheidend, regeln, wie viel Strom hineingeht.
Dieser zweite Job ist derjenige, der zählt und den Leute überspringen. Eine Schrittmotorwicklung ist eine niederohmige Induktivität, typisch 2 bis 4 Ohm. 24 V über 2,8 Ω angeschlossen, und das Ohmsche Gesetz gibt 8,6 A, was einen 1,7-A-Motor in Sekunden zerstört. Der A4988 vermeidet das, indem er die Versorgung zehntausendfach pro Sekunde zerhackt und den mittleren Strom auf dem eingestellten Wert hält.
Also hat das Board genau eine Einstellung: ein Trimmpoti, das die Stromgrenze setzt. Richtig eingestellt, und der Treiber ist unsichtbar. Falsch eingestellt, und du hast entweder einen schwachen Motor, der Schritte verliert, oder einen heißen, der gart.
Pinbelegung
| Pin | Richtung | Was er tut |
|---|---|---|
| VMOT | Strom hinein | 8–35 V Motorversorgung. Braucht 100 µF darüber, nah dran. |
| GND (Motorseite) | Strom | Hochstrom-Rückleitung |
| VDD | Strom hinein | 3–5,5 V Logikversorgung, wenige mA |
| GND (Logikseite) | Strom | Muss Masse mit der Motorversorgung teilen |
| 1A, 1B | Ausgang | Eine Motorspule |
| 2A, 2B | Ausgang | Die andere Motorspule |
| STEP | Eingang | Eine steigende Flanke = ein Mikroschritt |
| DIR | Eingang | High oder Low wählt die Richtung |
| ENABLE | Eingang | Low-aktiv. Auf Masse legen zum Bestromen. |
| RESET | Eingang | Muss high sein. Mit SLEEP brücken. |
| SLEEP | Eingang | Muss high sein, damit der Treiber läuft |
| MS1, MS2, MS3 | Eingang | Microstep-Auflösung; intern nach unten gezogen |
Zwei Pins erklären die meisten „tut nichts“-Meldungen: ENABLE offen oder high gelassen (er ist low-aktiv, muss also herunter gezogen werden), und RESET offen gelassen (muss high sein, weshalb jede Verdrahtungsanleitung sagt, RESET mit SLEEP zu brücken).
Verdrahtung an einen Arduino
Arduino 5V ──── VDD
Arduino GND ──── GND (logic) ──┬── GND (motor)
└── PSU −
PSU + (12–24 V) ──── VMOT ──┬── 100 µF electrolytic ──┘
Pin 3 ──── STEP RESET ──┬── SLEEP
Pin 4 ──── DIR
Pin 5 ──── ENABLE MS1, MS2, MS3 ──── 5 V (1/16 stepping)
Motor coil A ──── 1A, 1B
Motor coil B ──── 2A, 2B
Nicht verhandelbar:
- 100-µF-Elko über VMOT und GND, physisch nah am Board. Das ist der häufigste Grund für ein Board, das beim Einschalten stirbt.
- Gemeinsame Masse zwischen Arduino und Motorversorgung. Ohne sie hat das STEP-Signal keine Referenz und der Treiber sieht Rauschen.
- Niemals den Motor im bestromten Zustand abstecken. Eine unterbrochene bestromte Spule erzeugt eine Spitze ohne Wohin.
- Spulenpaarung zählt; Polarität innerhalb eines Paars nicht. Wenn der Motor brummt ohne zu drehen, sind die Paare falsch. Dreht er falschherum, zwei Drähte eines Paars tauschen.
Die Stromgrenze einstellen – die Zahlen
Vref = I_phase × R_sense × 8
Miss Vref zwischen Metallschraube des Trimmpotis und einem Massepin, bei versorgtem VMOT und abgestecktem Motor. Ziele auf 70–85 % des Motornennstroms: Das letzte Fünftel kauft sehr wenig Drehmoment und viel Hitze.
| Zielstrom | R_sense = 0,1 Ω (R100) |
R_sense = 0,05 Ω (R050) |
|---|---|---|
| 0,6 A | 0,48 V | 0,24 V |
| 1,0 A | 0,80 V | 0,40 V |
| 1,2 A | 0,96 V | 0,48 V |
| 1,5 A | 1,20 V | 0,60 V |
| 1,7 A | 1,36 V | 0,68 V |
Lies die Markierung auf den zwei schwarzen SMD-Widerständen nahe der Unterkante, bevor du rechnest. 1,2 V auf einem R050-Board einzustellen verlangt 3 A durch einen für 1,7 A ausgelegten Motor.
Nutze einen Keramikschraubendreher. Ein metallener, der das Poti mit etwas anderem auf einem live Board brückt, ist ein routinierter Weg, einen Treiber zu zerstören.
Was du physisch einstellst, ist das Spitzendrehmoment, das der Motor liefern kann – das T_peak im Sinusgesetz, das alles regiert, was ein Schrittmotor tut. Zu niedrig, und der Rotor hängt bei gleicher Last weiter hinterher und rutscht früher durch; zu hoch, und du bekommst Hitze, die du nicht brauchtest.
Microstepping
| MS1 | MS2 | MS3 | Auflösung | Schritte/Umdrehung |
|---|---|---|---|---|
| low | low | low | Vollschritt | 200 |
| high | low | low | Halb | 400 |
| low | high | low | Viertel | 800 |
| high | high | low | Achtel | 1600 |
| high | high | high | Sechzehntel | 3200 |
Alle drei high ist die normale Wahl. Es lohnt sich, klar zu sagen warum: Microstepping macht die Maschine unter Last nicht genauer – der Fehler, den Last verursacht, ist unverändert, egal wie fein du den Schritt teilst. Was es tut, ist das Klingeln des Rotors bei jedem Schritt zu stoppen, was der Unterschied zwischen einer Maschine ist, die schreit, und einer, die summt, und zwischen einer Oberfläche mit sichtbarer Schrittwelligkeit und einer ohne.
Der Preis ist Pulsrate. Bei 1/16 auf einer 80-Schritte/mm-Achse brauchen 100 mm/s 8.000 Pulse pro Sekunde. Ein Arduino Uno, der Schritte per Bit-Banging ausgibt, ist irgendwo bei 10.000–15.000 pro Sekunde am Ende, was eine echte Decke für eine Spindelachse mit 400 Schritten/mm ist.
Strom, Hitze und das Strombudget
Die eigene Verlustleistung des A4988 ist bescheiden – der Schmerz ist Wärmedichte, nicht Gesamtwatt. Grob 0,5 W pro Phase bei 1 A in einem Gehäuse mit fast keinem Kupfer zum Verteilen. Die Grenzen in der Praxis:
| Kühlung | Sicherer Dauerstrom |
|---|---|
| Nackter Chip, stehende Luft | ~1,0 A |
| Aufgeklebter Kühlkörper | ~1,2 A |
| Kühlkörper plus bewegte Luft | ~1,5 A |
| Alles darüber | DRV8825 oder TMC2209 nehmen |
Temperaturabschaltung kündigt sich nicht an. Der Treiber stoppt, der Motor bleibt mitten in der Bewegung stehen, der Treiber kühlt ab und startet neu, und was du beobachtest, ist eine Achse, die „zufällig“ ein Stück Position verliert. Eine Achse, die spät in einem langen Job oder in warmem Raum öfter versagt, ist thermisch, bis das Gegenteil bewiesen ist.
Versorgungsseitig denke daran, dass sich der Chopper wie ein Abwärtswandler verhält: Der aus einer 24-V-Versorgung gezogene Strom liegt deutlich unter dem Phasenstrom, also budgetiere auf Leistung statt Phasenströme zu addieren. Jeder Motor bei 1,2-A-Grenze an 2,8-Ω-Wicklungen verbrät etwa 8 W, und das tut er, wann immer er bestromt ist – auch im Stillstand. Siehe das Roboter-Strombudget.
Minimaler funktionierender Code
const int STEP_PIN = 3, DIR_PIN = 4, EN_PIN = 5;
void setup() {
pinMode(STEP_PIN, OUTPUT);
pinMode(DIR_PIN, OUTPUT);
pinMode(EN_PIN, OUTPUT);
digitalWrite(EN_PIN, LOW); // active low — energise the coils
digitalWrite(DIR_PIN, HIGH);
}
void loop() {
for (int i = 0; i < 3200; i++) { // one revolution at 1/16
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(2); // datasheet minimum is 1 us
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(300); // this delay is the speed
}
delay(1000);
}
Gut für einen Banktest, falsch für eine Maschine: Die Schrittrate springt direkt auf voll, was oberhalb der Anlaufrate des Motors ein Brummen und keine Bewegung gibt. Nutze AccelStepper oder dein eigenes Bewegungsprofil für alles, was irgendwo ankommen muss. Genau beobachten, was dieser rampenlose Befehl mit dem Rotor tut, kannst du im Schrittmotor-Simulator.
Welchen Strom wirklich einstellen
Der Nennstrom auf einem Motortypenschild setzt die Kühlbedingungen eines Prüfstands voraus – auf eine große Aluplatte geschraubt, in stehender Luft bei 25 °C. Deine Maschine ist ein gedruckter Halter in warmem Raum.
Eine Arbeitsregel, mit Begründung statt nur Zahl:
| Situation | Grenze einstellen auf | Warum |
|---|---|---|
| Reichlich Drehmomentreserve, leise gewünscht | 60–70 % des Nennwerts | Drehmoment fällt linear, Hitze fällt quadratisch |
| Normale Maschine | 70–85 % des Nennwerts | Die übliche Antwort |
| Wirklich drehmomentbegrenzt | 90–100 % des Nennwerts | Nur mit Kühlkörper und Luftstrom |
| Über Nennwert | Niemals | Du kaufst kein Drehmoment, nur Hitze |
Warum das untere Ende weniger kostet, als es aussieht, steht in der zweiten Spalte. Drehmoment ist proportional zum Strom, aber Hitze ist proportional zum Strom im Quadrat. Von 1,7 A auf 1,2 A herunterzugehen gibt 29 % des Drehmoments auf und entfernt die Hälfte der Hitze:
1.7 A: P = 2 × 1.7² × 2.8 = 16.2 W per motor
1.2 A: P = 2 × 1.2² × 2.8 = 8.1 W per motor
Wenn die Auslegungsrechnung sagt, du nutzt 12 % des verfügbaren Drehmoments, haben die aufgegebenen 29 % nie etwas getan.
Abschalten, und der Pin, den die meisten Bauten ignorieren
ENABLE existiert, weil ein Schrittmotor im perfekten Stillstand seinen vollen eingestellten Strom verbrennt. Das ist anders als jeder andere Motor, den ein Anfänger kennt, und es hat Folgen:
// Two energised NEMA 17s at 1.2 A dissipate ~16 W doing nothing at all.
digitalWrite(EN_PIN, HIGH); // active low, so HIGH = coils off
Wann nutzen:
- Zwischen Jobs auf X und Y. Eine Plotter- oder Laserbrücke hat keinen Grund, im Leerlauf Position zu halten, und 16 W Hitze in einen gedruckten Rahmen über eine Stunde zählen.
- Niemals an einer Z-Achse, die Gewicht hält, außer die Mechanik ist selbsthemmend. Eine T8-Spindel treibt nicht zurück, also ist Abschalten sicher. Ein riemengetriebenes Z fällt in dem Moment, in dem du den Strom kappst.
- Niemals mitten in der Bewegung. Der Rotor läuft weiter, das Feld nicht, und du hast die Position weggeworfen, ohne zu wissen, um wie viel. Anhalten, dann abschalten.
Der Haken, der Leute überrascht: Nach dem Abschalten rastet der Rotor auf den nächsten Detent ein – die magnetische Ruheposition ganz ohne Strom –, was bis zu einem vollen Schritt von dort entfernt sein kann, wo er gehalten wurde. Auf einer Riemenachse mit 80 Schritten/mm sind das 0,2 mm unangekündigte Bewegung, also entweder nach jedem Abschalten neu homen, oder akzeptieren, dass Leerlauf-Abschalten und Sub-Zehntel-Genauigkeit nicht zusammengehen.
SLEEP ist die tiefere Version: Es schaltet auch den internen Regler ab, zieht Mikro- statt Milliampere, braucht aber etwa 1 ms zum Aufwachen und setzt die interne Schrittposition des Treibers auf den Home-Mikroschritt zurück. Dieser letzte Teil ist die Falle – Aufwachen aus SLEEP kann den Motor um bis zu einen vollen Schritt versetzen. Für fast jede Hobbymaschine ist ENABLE der Pin, den du willst, und SLEEP der Pin, den du auf high brückst und vergisst.
Fehlerbehebung
| Symptom | Ursache | Lösung |
|---|---|---|
| Gar nichts passiert | ENABLE high oder RESET offen | ENABLE auf low legen; RESET mit SLEEP brücken |
| Motor vibriert, dreht nicht | Spulenpaare überkreuz verdrahtet | Mit Messgerät auf Ohm neu paaren |
| Board starb beim Einschalten | Kein Pufferkondensator an VMOT | 100-µF-Elko, nah an den Pins |
| Stoppt mitten in Bewegung, startet später neu | Temperaturabschaltung | Vref senken; Kühlkörper und Luftstrom ergänzen |
| Schwach, rutscht unter leichter Last durch | Vref zu niedrig | Neu messen; Sense-Widerstandsmarkierung prüfen |
| Motor schreiend heiß | Vref zu hoch | Neu rechnen – richtigen R_sense genutzt? |
| Schrittverluste nur bei hohem Tempo | Versorgungsspannung zu niedrig | VMOT erhöhen; Strom hilft nicht |
| Schrittverluste nur beim Beschleunigen | Rampe zu aggressiv | Beschleunigung senken oder Vref erhöhen |
| Laut bei jedem Schritt | Vollschritt – MS-Pins offen | MS1–MS3 auf high legen |
| Auf der Bank ok, im Rahmen defekt | Endschalter- oder STEP-Leitung fängt Störungen | Signalleitungen weg von Motorkabeln führen |
A4988 oder die Alternativen?
| Treiber | Strom | Mikroschritt | Geräusch | Wann ihn wählen |
|---|---|---|---|---|
| A4988 | 1 A / 1,5 A gekühlt | 1/16 | Hörbar | Billig, überall, gut dokumentiert |
| DRV8825 | 1,5 A / 2,2 A gekühlt | 1/32 | Hörbar | Du brauchst mehr Strom oder feinere Schritte |
| TMC2208 | ~1,2 A | 1/256 | Fast lautlos | Geräusch zählt |
| TMC2209 | ~1,7 A | 1/256 | Fast lautlos | Geräusch zählt, plus sensorloses Homen |
| L298N | 2 A | — | — | DC-Motoren. Keine Stromregelung. |
| TB6612FNG | 1,2 A | — | — | DC-Motoren, effizient |
Die L298N- und TB6612FNG-Zeilen stehen da, weil beide Datenblätter Schrittmotoren erwähnen und beide technisch einen drehen. Keiner regelt Strom, also gibt es einen Bruchteil des Drehmoments und viel Abwärme. Es sind DC-Motortreiber; nutze sie zum Räder antreiben.
Die TMC-Treiber sind das Mehrgeld wert, sobald die Maschine irgendwo lebt, wo man sie hört. Gleicher Job, glattere Stromwellenform, und ein damit bestückter Drucker macht Lüfter- statt Motorgeräusch.
Wo er verwendet wird
Dieser Treiber treibt beide Achsen des Stiftplotter-Baus, und ihn korrekt einzustellen ist ein Checkpoint auf dem Präzisionsbewegungs-Lernpfad. Die komplette Verdrahtungs- und Vref-Anleitung behandelt das Vorgehen Schritt für Schritt.
Den Graphen erkunden
Verwendet in diesen Bauprojekten
Projekte, Lernpfade und Simulatoren, die A4988 Stepper Driver verwenden.
Vergleich
Alternativen
Fragen
FAQ zu A4988 Stepper Driver
Wie berechne ich Vref für einen A4988?
Vref gleich gewünschter Phasenstrom mal Sense-Widerstandswert mal acht. Für 1,2 A Ziel auf einem Board mit 0,1-Ohm-Widerständen sind das 1,2 × 0,1 × 8 = 0,96 V, gemessen zwischen Schleifer des Trimmpotis und Masse bei an VMOT versorgtem Board und abgestecktem Motor. Das kritische Detail ist der Sense-Widerstand: Träger werden entweder mit 0,1 Ohm markiert R100 oder 0,05 Ohm markiert R050 geliefert, und mit dem falschen zu rechnen schickt exakt den doppelten Strom durch deinen Motor.
Warum wird mein A4988 so heiß, dass er abschaltet?
Fast immer ist die Stromgrenze zu hoch eingestellt. Ein nackter A4988 schafft etwa 1 A dauerhaft; mit Kühlkörper und bewegter Luft etwa 1,5 A. Darüber löst seine Temperaturabschaltung aus, der Motor bleibt mitten in der Bewegung stehen und startet nach dem Abkühlen neu – was wie zufälliger Schrittverlust aussieht. Miss Vref neu gegen den tatsächlich vorhandenen Sense-Widerstand, klebe den Kühlkörper auf und richte einen Lüfter darauf. Wenn du wirklich mehr als 1,5 A brauchst, ist der A4988 das falsche Bauteil.
Was ist der Unterschied zwischen A4988 und DRV8825?
Der DRV8825 schafft mehr Strom (etwa 1,5 A nackt, 2,2 A gekühlt), geht bis 1/32-Microstepping statt 1/16 und verträgt höhere Motorspannung mit 45 V. Er ist pinkompatibel, passt also in denselben Sockel – aber seine Vref-Formel ist anders, Vref gleich Strom mal 0,5, und sein Trimmpoti dreht andersherum. Einen einzustecken ohne die Formel neu zu lesen ist ein gängiger Weg, einen Motor zu garen.
Brauche ich wirklich den Kondensator über VMOT?
Ja. Ein 100-µF-Elko zwischen VMOT und Masse, physisch nah am Board, ist Pflicht statt Empfehlung. Der Chopper zieht Strom in scharfen Bursts, und ohne Pufferkapazität nearby verwandelt die Induktivität deiner Zuleitungen diese Bursts in Spannungsspitzen, die die 35-V-Grenze des Chips überschreiten. Boards, die im Moment des Einschaltens sterben, sind meist daran gestorben.
Was tun MS1, MS2 und MS3, wenn ich sie offen lasse?
Sie haben interne Pull-downs, also wählt offen lassen Vollschritt – 200 Schritte pro Umdrehung und ein Motor, der bei jedem Schritt hörbar klingelt. Lege alle drei auf high für 1/16-Schritt, was die meisten Bauten nutzen. Es macht die Maschine unter Last nicht genauer, aber es stoppt das Klingeln, was leiser macht und die Oberfläche verbessert. Der Preis ist sechzehnmal so viele Pulse pro Millimeter, die dein Mikrocontroller liefern muss.
Kann ein A4988 einen DC-Motor oder ein Servo treiben?
Nein. Es ist ein bipolarer Schrittmotortreiber: Er erwartet zwei Spulen und treibt sie mit einer bestimmten Stromsequenz. Ein DC-Motor braucht eine H-Brücke wie L298N oder TB6612FNG; ein Hobby-Servo braucht ein 50-Hz-PWM-Signal und gar keinen Treiber. Die STEP- und DIR-Schnittstelle des A4988 hat für beide keine Bedeutung.
Weiterführende Literatur