Ein Schrittmotor lässt sich mit einem Arduino sehr präzise positionieren, etwa für eine kleine Klappe, einen Drehregler oder eine Anzeige im Fahrzeugmodell. Entscheidend sind die richtige Kombination aus Motor und Treiber, eine saubere Stromversorgung und ein Programm, das nicht nur dreht, sondern auch Beschleunigung, Endanschläge und mögliche Schrittverluste berücksichtigt.
Die wichtigsten Punkte für einen funktionierenden Aufbau
- Treiber erforderlich: Ein Arduino darf die Motorwicklungen nicht direkt versorgen.
- 28BYJ-48 oder NEMA 17: Der kleine Getriebemotor eignet sich für Tests, NEMA-17-Motoren für kräftigere Mechaniken.
- Separate Versorgung: Motor und Arduino brauchen eine passende Stromquelle mit gemeinsamer Masse.
- STEP und DIR: Moderne Treiber wie A4988 oder DRV8825 werden meist über Schritt- und Richtungssignale gesteuert.
- Automotive-Grenzen: Für ein echtes Fahrzeug sind Schutzschaltungen, EMV-Prüfung und eine zuverlässige Positionsrückmeldung nötig.

Was ein Arduino mit einem Schrittmotor tatsächlich steuert
Ein Schrittmotor dreht sich nicht einfach kontinuierlich wie ein gewöhnlicher Gleichstrommotor. Er bewegt seine Welle in festgelegten Winkelschritten. Bei einem häufig verwendeten Motor mit 1,8 Grad pro Vollschritt ergeben sich 200 Schritte für eine Umdrehung.
Der Arduino erzeugt dabei elektrische Impulse. Jeder Impuls fordert vom Treiber einen weiteren Schritt an. Ein zweites Signal legt die Drehrichtung fest. Ich finde diese klare Trennung besonders praktisch, weil sich Geschwindigkeit und Position im Programm leicht nachvollziehen lassen.
Der entscheidende Punkt wird von Einsteigern häufig übersehen. Der Mikrocontroller liefert nur Steuersignale und wenige Milliampere, während die Motorwicklungen deutlich mehr Strom benötigen. Zwischen Arduino und Motor gehört deshalb immer ein geeigneter Motortreiber.
Typische Anwendungen im Fahrzeugumfeld
In der Automobiltechnik werden kleine Schrittmotoren unter anderem für Instrumentenzeiger, HVAC-Klappen und präzise Stellmechanismen eingesetzt. Eine Temperatur- oder Luftverteilungsklappe muss beispielsweise nicht schnell rotieren, sondern zuverlässig eine bestimmte Position erreichen.
Für ein Hobbyprojekt rund um Car HiFi oder Fahrzeugelektronik kann der Aufbau einen motorisierten Drehregler, eine kleine Anzeige oder eine bewegliche Blende steuern. Für einen Prototypen auf dem Tisch ist Arduino ideal. Eine sicherheitsrelevante Funktion im fahrenden Fahrzeug würde ich damit jedoch nicht direkt ersetzen.
Die passende Kombination aus Motor und Treiber auswählen
Die beste Lösung hängt weniger vom Namen des Motors ab als von Drehmoment, Versorgungsspannung, Baugröße und gewünschter Geschwindigkeit. Ein kleiner Motor kann sehr genau sein, verliert aber bei einer schwergängigen Mechanik schnell Schritte.
| Aufbau | Geeignet für | Stärken | Grenzen | Typische Kosten |
|---|---|---|---|---|
| 28BYJ-48 mit ULN2003 | Erste Tests, kleine Klappen, leichte Zeiger | Günstig, 5-Volt-Versorgung, einfacher Einstieg | Wenig Drehmoment, langsam, Getriebespiel | Etwa 5 bis 12 Euro |
| NEMA 17 mit A4988 | Lineare Achsen, Drehregler, kräftigere Mechaniken | Gutes Drehmoment, STEP/DIR-Steuerung, weit verbreitet | Externe Versorgung und Strombegrenzung nötig | Etwa 20 bis 40 Euro für Motor und Treiber |
| NEMA 17 mit DRV8825 | Mehr Spannung und feinere Schrittauflösung | Mehr Mikroschritte und höherer Spannungsbereich | Kann bei schlechter Einstellung warm oder laut werden | Etwa 25 bis 45 Euro |
| NEMA 17 mit TMC2209 | Leise Mechaniken und hochwertige Prototypen | Sehr leiser Lauf, moderne Stromregelung | Höherer Preis und mehr Konfigurationsaufwand | Etwa 30 bis 60 Euro |
Der 28BYJ-48 ist für den Einstieg angenehm, weil Motor und ULN2003-Platine oft als Set erhältlich sind. Seine Schwäche zeigt sich bei Last. Das Getriebe hat Spiel, und die tatsächliche Position stimmt bei einer blockierten Welle nicht mehr automatisch.
Für eine solide Mechanik greife ich meist zu einem NEMA-17-Motor mit A4988 oder einem ähnlichen STEP/DIR-Treiber. Der Treiber muss dabei auf den Nennstrom der Motorwicklungen eingestellt werden. Ein zu hoher Strom erzeugt unnötige Wärme, ein zu niedriger Strom führt zu fehlendem Drehmoment.
Vollschritt oder Mikroschritt
Mit Mikroschritten kann ein Treiber einen Vollschritt in kleinere elektrische Teilbewegungen aufteilen. Das reduziert Geräusche und Vibrationen, erhöht aber nicht automatisch die absolute Positioniergenauigkeit. Unter Last kann der Motor weiterhin Schritte verlieren.
Für eine einfache Drehbewegung reichen Vollschritte oder ein moderater Mikroschritt oft aus. Ich würde nicht mit maximaler Auflösung beginnen, sondern zuerst prüfen, ob die Mechanik leicht läuft und der Motor bei der gewünschten Geschwindigkeit zuverlässig bleibt.
Der erste Aufbau gelingt mit wenigen Bauteilen
Für einen unkomplizierten Test eignen sich ein Arduino Uno oder ein kompatibles Board, ein NEMA-17-Motor, ein A4988-Treiber und ein passendes Netzteil. Zusätzlich braucht man Kabel, einen kleinen Kondensator und eine Mechanik, die den Motor nicht sofort überlastet.
Beim A4988 werden STEP und DIR mit zwei Digitalpins des Arduino verbunden. Die Motorversorgung kommt an VMOT und GND des Treibers. Der Arduino liefert die Logikspannung, während Motor- und Logikmasse miteinander verbunden werden müssen.
- Arduino D3 mit STEP verbinden.
- Arduino D4 mit DIR verbinden.
- Logic VDD des Treibers mit 5 Volt verbinden.
- Motorversorgung an VMOT und GND anschließen.
- RESET und SLEEP gemäß Treibermodul auf Logikpegel legen.
- Die beiden Motorwicklungen an die Ausgänge 1A, 1B, 2A und 2B anschließen.
- Einen Elektrolytkondensator von etwa 100 µF nahe am VMOT-Anschluss vorsehen.
Die genaue Versorgungsspannung richtet sich nach dem Treiber und Motor. Bei typischen A4988-Modulen liegt die Motorspannung häufig zwischen 8 und 35 Volt. Die zulässigen Werte des verwendeten Moduls haben aber immer Vorrang.
const int stepPin = 3;
const int dirPin = 4;
void setup() {
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
digitalWrite(dirPin, HIGH);
}
void loop() {
for (int i = 0; i < 200; i++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(1500);
digitalWrite(stepPin, LOW);
delayMicroseconds(1500);
}
delay(500);
digitalWrite(dirPin, !digitalRead(dirPin));
}
Bei einem Motor mit 200 Vollschritten entspricht die Schleife ungefähr einer Umdrehung. Die Pausen bestimmen die Geschwindigkeit. Der gezeigte Code ist bewusst einfach gehalten. Die Arduino-Stepper-Bibliothek kann ebenfalls verwendet werden, ihre Funktion step() arbeitet bei klassischen Beispielen allerdings blockierend.
Sobald gleichzeitig Sensoren, Taster, Display oder eine Audio-Steuerung reagieren sollen, ist eine nicht blockierende Bewegungssteuerung sinnvoller. Dann werden einzelne Schritte regelmäßig im Hauptprogramm ausgelöst, statt den Arduino während einer langen Motorbewegung warten zu lassen.
Warum der Motor ruckelt oder Schritte verliert
Wenn der Motor nur summt, zittern oder in die falsche Richtung läuft, liegt das selten am Arduino selbst. Meist sind Spulenpaare vertauscht, der Strom falsch eingestellt oder die Beschleunigung zu hoch.
Die häufigsten Fehler beim Verdrahten
Ein bipolarer Motor hat zwei Wicklungspaare. Die beiden Drähte einer Wicklung müssen an ein zusammengehöriges Ausgangspaar des Treibers. Werden einzelne Drähte falsch kombiniert, arbeitet der Motor unruhig oder bleibt stehen.
Ein Multimeter hilft dabei, Wicklungen zu finden. Zwischen den beiden Drähten einer Wicklung ist ein messbarer Widerstand vorhanden. Zwischen Drähten verschiedener Wicklungen besteht dagegen normalerweise keine leitende Verbindung.
Den Motor sollte ich niemals bei eingeschalteter Versorgung ab- oder anstecken. Die dabei entstehenden Spannungsspitzen können den Treiber beschädigen. Auch eine fehlende gemeinsame Masse zwischen Arduino und Treiber sorgt für scheinbar unerklärliche Aussetzer.
Mechanik und Geschwindigkeit prüfen
Ein Schrittmotor liefert sein höchstes Haltemoment nicht automatisch bei hoher Drehzahl. Wird die Rampe zu schnell gestartet, kann die Welle Schritte überspringen. Deshalb beginne ich mit niedriger Geschwindigkeit, prüfe die Bewegung ohne Last und erhöhe die Frequenz erst danach.
Die Mechanik darf nicht klemmen. Ein schlecht ausgerichteter Gewindetrieb, eine zu straffe Klappe oder ein zu schwerer Zeiger kann mehr Kraft verlangen, als der Motor dauerhaft liefert. Leichtgängigkeit bringt oft mehr als ein größerer Motor.
Endanschläge und Positionsverlust
Ein Schrittmotor kennt seine absolute Position nur, solange kein Schritt verloren geht. Nach dem Einschalten weiß der Arduino deshalb nicht automatisch, wo sich die Mechanik befindet. Ein Endschalter kann beim Start eine definierte Referenz liefern.
Für eine Klappe oder einen Drehregler reichen oft ein Referenzschalter und eine begrenzte Schrittzahl. Bei höherer Zuverlässigkeit ergänze ich einen Encoder oder einen Positionssensor. Das ist besonders wichtig, wenn ein Blockieren nicht unbemerkt bleiben darf.
So wird aus dem Bastelaufbau ein brauchbares Auto-Projekt
Im Fahrzeug ist die elektrische Umgebung deutlich härter als auf dem Labortisch. Die Bordspannung ist nicht konstant, und beim Starten, Schalten oder Abschalten induktiver Verbraucher können Störungen auftreten. Ein Arduino-Set darf deshalb nicht direkt an eine ungeschützte 12-Volt-Leitung angeschlossen werden.
Für einen Prototypen gehören mindestens eine geeignete Sicherung, ein belastbarer DC-DC-Wandler und eine saubere Masseführung dazu. Je nach Einbauort können zusätzlich Filter, Überspannungsschutz und eine Abschirmung notwendig sein. Für ein dauerhaftes Produkt müssen außerdem Temperatur, Vibration und elektromagnetische Verträglichkeit geprüft werden.
Geeignete und ungeeignete Anwendungen
Gut geeignet sind Demonstratoren, Prüfaufbauten und nicht sicherheitsrelevante Komfortfunktionen. Dazu zählen beispielsweise ein motorisierter Regler im Showcar, eine bewegliche Anzeige oder ein Prüfstand für eine kleine Luftklappe.
Von einer direkten Steuerung von Lenksystemen, Bremsen, Airbags oder anderen sicherheitskritischen Komponenten rate ich klar ab. Solche Systeme benötigen qualifizierte Steuergeräte, definierte Diagnosefunktionen und eine Auslegung nach den Anforderungen der Automobilbranche.
Auch die Kommunikation mit dem Fahrzeugnetzwerk darf nicht unterschätzt werden. Ein Arduino verarbeitet zwar Sensorwerte und kann Motorimpulse erzeugen, ersetzt aber nicht automatisch eine robuste CAN- oder LIN-Anbindung mit Fehlererkennung und sicheren Zuständen.
Lesen Sie auch: Audi RS 3 Motor: Leistungsstarkes Design und beeindruckende Technik
Budget realistisch planen
Ein kleiner 28BYJ-48-Aufbau lässt sich meist mit 20 bis 40 Euro inklusive Board, Kabeln und Netzteil realisieren. Für einen NEMA-17-Aufbau mit stabilem Treiber, Netzteil, Endschalter und mechanischen Teilen sind eher 50 bis 100 Euro realistisch.
Teurer wird nicht der Arduino, sondern die Mechanik. Ein präziser Halter, spielfreie Lagerung und eine sichere Befestigung entscheiden oft stärker über das Ergebnis als ein Wechsel vom günstigen zum angeblich stärkeren Treiber.
Mein Praxisfazit für den nächsten Aufbau
Für den ersten Versuch würde ich einen 28BYJ-48 mit ULN2003 wählen, wenn nur eine leichte Bewegung demonstriert werden soll. Sobald Drehmoment, Geschwindigkeit oder eine belastbare Mechanik gefragt sind, ist ein NEMA 17 mit STEP/DIR-Treiber die deutlich bessere Grundlage.
Die wichtigsten Arbeitsschritte bleiben immer gleich: Motor und Treiber elektrisch passend auswählen, die Strombegrenzung korrekt einstellen, langsam starten und eine Referenzposition vorsehen. Wer diese Punkte beachtet, bekommt mit Arduino eine erstaunlich präzise Steuerung für Prototypen und Fahrzeugtechnik-Experimente.