Schrittmotor verstehen – Präzise Positionieren mit Microstepping

Schrittmotor verstehen: Präzise Position, Drehmoment & Microstepping
Schrittmotoren bewegen sich in diskreten Winkelschritten (typ. 1,8° = 200 Schritte/U). Mit Microstepping lassen sich Zwischenstufen erzeugen, wodurch der Lauf ruhiger und die Auflösung höher wird. Gängig sind NEMA-17 (3D-Drucker) und NEMA-23 (CNC).
Kurzübersicht
- Bauarten: Bipolar (2 Spulen, 4 Drähte) – heute Standard. Unipolar (5/6 Drähte) – historisch.
- Schrittwinkel: 1,8° (200) oder 0,9° (400) Schritte/Umdrehung.
-
Treiber-Eingänge:
STEP
,DIR
, optionalEN
,MS1..3
(Microstep). - Drehmoment–Drehzahl: Nimmt mit der Drehzahl ab (Spuleninduktivität). Höhere Spannung am Treiber hilft.
Treiber im Überblick
Treiber | Microstep | Max. IPhase | Besonderheiten |
---|---|---|---|
A4988 | bis 1/16 | ~2 A (mit Kühlung) | Einsteiger-Standard, günstig |
DRV8825 | bis 1/32 | ~2,2 A | Mehr Microsteps, höhere Spannung |
TMC2208/2209 | bis 1/256 (interp.) | ~2 A | Leise (stealthChop), UART-Konfig. |
Strombegrenzung (Vref)
Der Phasenstrom wird am Treiber per Vref-Poti eingestellt. Formel (Beispiel A4988, je nach Board variabel):
Imax ≈ Vref / (8 · Rsense)
→ Datenblatt/Board-Angabe prüfen! Zu hoher Strom überhitzt Treiber/Motor.
Verdrahtung (Bipolar + A4988/DRV/TMC)
- Coils A/B korrekt paaren (Ohmmeter: je Spulenpaar hat Durchgang).
- VMOT (z. B. 12–24 V) + GND am Treiber; LOGIC 3,3/5 V getrennt.
- Großen Elko an VMOT (z. B. 100 µF nahe am Modul).
- MCU-Pins →
STEP
,DIR
,EN
(aktiv LOW),MS1..3
für Microstep.
Schrittarten
Modus | Beschreibung | Einsatz |
---|---|---|
Vollschritt | Max. Drehmoment, grob | Rau, Vibrationen |
Halbschritt | 2× Auflösung | Glatter als Vollschritt |
Microstepping (1/4…1/256) | Sinusförmige Ströme | Leiser, höhere Auflösung, aber nicht proportional mehr Drehmoment |
Arduino-Beispiel: Minimaler STEP/DIR-Antrieb
const int PIN_STEP=2, PIN_DIR=3, PIN_EN=8;
void setup() {
pinMode(PIN_STEP, OUTPUT);
pinMode(PIN_DIR, OUTPUT);
pinMode(PIN_EN, OUTPUT);
digitalWrite(PIN_EN, LOW); // Treiber aktiv (EN ist LOW-aktiv)
digitalWrite(PIN_DIR, HIGH);
}
void loop() {
// 200 Schritte vorwärts
for(int i=0; i<200; ++i) {
digitalWrite(PIN_STEP, HIGH);
delayMicroseconds(800); // Frequenz = 1/(2*delay)
digitalWrite(PIN_STEP, LOW);
delayMicroseconds(800);
}
delay(500);
digitalWrite(PIN_DIR, !digitalRead(PIN_DIR)); // Richtung wechseln
}
Arduino-Beispiel: Sanft beschleunigen mit AccelStepper
#include <AccelStepper.h>
AccelStepper stepper(AccelStepper::DRIVER, 2, 3); // STEP=2, DIR=3
void setup() {
stepper.setMaxSpeed(1200); // steps/s
stepper.setAcceleration(600); // steps/s^2
}
void loop() {
stepper.moveTo(2000);
while (stepper.distanceToGo() != 0) {
stepper.run();
}
delay(300);
stepper.moveTo(0);
}
Steps/mm berechnen
Riemenantrieb: steps_per_mm = (steps_per_rev · microstep) / (zahnriemenscheibe_zähne · zahnabstand)
Spindel: steps_per_mm = (steps_per_rev · microstep) / steigung_mm_pro_rev
def steps_per_mm_belt(steps_per_rev=200, microstep=16, pulley_teeth=20, pitch_mm=2.0):
return (steps_per_rev*microstep)/(pulley_teeth*pitch_mm)
def steps_per_mm_leadscrew(steps_per_rev=200, microstep=16, lead_mm=8.0):
return (steps_per_rev*microstep)/lead_mm
print("Belt:", steps_per_mm_belt())
print("Leadscrew:", steps_per_mm_leadscrew())
Sicherheit & Praxis-Tipps
- Niemals den Motor bei eingeschaltetem Treiber abstecken → Treiberdefekt.
- Strom (Vref) korrekt einstellen; Motor darf warm, aber nicht brennend heiß werden.
- Für hohe Drehzahlen: Treiberspannung erhöhen, Beschleunigung begrenzen, Microstep moderat wählen.
- Mit Endschaltern referenzieren (Homing); mechanisches Spiel einkalkulieren.
- TMC-Treiber: stealthChop (leise) vs. spreadCycle (Drehmoment) passend wählen.
Checkliste
- Spulenpaare korrekt identifiziert & angeschlossen
- Vref passend zum Motor-Nennstrom eingestellt
- Großer Elko an VMOT, saubere Masseführung
- Microstepping so wählen, dass noch genug Drehmoment bleibt
- Steps/mm berechnet & im Code konfiguriert
Fazit
Mit korrekt eingestelltem Treiber, passender Spannung und sinnvoller Microstepping-Wahl liefern Schrittmotoren präzise Bewegungen bei gutem Drehmoment – ideal für 3D-Druck, CNC und Automatisierung.
Tipp: Starte mit NEMA-17, A4988/DRV8825, 1/16 Microstep und 12–24 V. Wenn es leiser sein soll, wechsle auf TMC2209 mit UART-Konfiguration.
- Tags: 0.9° 1.8° 3D-Drucker A4988 AccelStepper CNC Drehmoment DRV8825 Endschalter Halbschritt Microstepping NEMA17 NEMA23 Riemenantrieb Schrittmotor Spindel Stepper Steps/mm TMC2209 Vollschritt Vref
0 Kommentare