Schrittmotor verstehen – Präzise Positionieren mit Microstepping

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, optional EN, 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.

0 Kommentare

Kommentieren

Bitte beachten Sie, dass Kommentare vor ihrer Veröffentlichung genehmigt werden müssen.