Arduino - Steuert 28BYJ-48 Schrittmotor mit ULN2003 Driver

Bereit, Schrittmotor-Steuerung mit Ihrem Arduino zu lernen? Sie sind hier genau richtig! Diese umfassende Anleitung führt Sie durch alles, was Sie über die Steuerung des beliebten 28BYJ-48 Schrittmotors mit dem ULN2003 Driver-Modul wissen müssen. Ob Sie gerade erst mit Arduino-Projekten anfangen oder Ihre Motor-Steuerungs-Fähigkeiten erweitern möchten, dieser Leitfaden bietet Ihnen klare Erklärungen, praktische Beispiele und schrittweise Anleitungen.

Schrittmotoren sind absolut faszinierende Komponenten, die eine ganze Welt präziser Bewegungssteuerungsmöglichkeiten eröffnen. Im Gegensatz zu herkömmlichen DC-Motoren, die kontinuierlich drehen, bewegen sich Schrittmotoren in präzisen Schritten oder "Steps", was sie perfekt für Anwendungen macht, bei denen Sie exakte Positionierung benötigen. Stellen Sie sich vor, sie sind das digitale Äquivalent von Motoren - sie können sich zu spezifischen Positionen bewegen und diese mit bemerkenswerter Genauigkeit halten.

In dieser detaillierten Anleitung erforschen wir, wie Sie sowohl einzelne als auch mehrere 28BYJ-48 Schrittmotoren mit Arduino Mega und dem ULN2003 Driver steuern. Sie lernen die Theorie hinter der Schrittmotor-Funktionsweise, verstehen die Verdrahtungsverbindungen und beherrschen die Programmierungstechniken, die nötig sind, um Ihre Bewegungssteuerungs-Projekte zum Leben zu erwecken. Wir decken alles ab, von grundlegenden Rotationsmustern bis hin zur erweiterten Multi-Motor-Steuerung, und geben Ihnen das Fundament, um erstaunliche Projekte wie 3D-Drucker, CNC-Maschinen, Kamera-Slider und Robotersysteme zu bauen.

Der 28BYJ-48 Schrittmotor gepaart mit dem ULN2003 Driver ist einer der anfängerfreundlichsten und kosteneffektivsten Wege, um mit Schrittmotor-Steuerung zu beginnen. Am Ende dieser Anleitung werden Sie das Vertrauen und Wissen haben, präzise Motorsteuerung in Ihre eigenen Arduino-Projekte zu integrieren, und Sie werden die Prinzipien verstehen, die auch für fortgeschrittenere Schrittmotor-Systeme gelten.

Arduino ULN2003 28BYJ-48 stepper motor

In dieser Anleitung lernen wir:

Schrittmotoren sind außergewöhnliche Motoren für Präzisions-Positionssteuerungs-Anwendungen. Im Gegensatz zu herkömmlichen DC-Motoren teilen Schrittmotoren eine vollständige Umdrehung in eine bestimmte Anzahl gleicher "Steps" auf, was unglaublich präzise Bewegungssteuerung ermöglicht. Diese einzigartige Eigenschaft macht sie unverzichtbar in Geräten, die exakte Positionierung erfordern, wie Drucker, 3D-Drucker, CNC-Maschinen, Roboterarme, Kamera-Gimbals und unzählige industrielle Automatisierungssysteme. Die Fähigkeit, sich zu präzisen Positionen zu bewegen und diese Position ohne kontinuierliche Stromzufuhr zu halten, macht sie ideal für Anwendungen, bei denen Genauigkeit wichtiger ist als Geschwindigkeit.

Eine der zugänglichsten und budgetfreundlichsten Möglichkeiten, Schrittmotor-Steuerung zu lernen, ist der Beginn mit dem beliebten 28BYJ-48 Schrittmotor. Diese kompakten Motoren sind perfekt für Bildungszwecke und kleine Projekte und bieten eine ausgezeichnete Einführung in Schrittmotor-Konzepte, ohne das Budget zu sprengen. Sie werden typischerweise mit einer ULN2003-basierten Driver-Platine geliefert, was den Verdrahtungs- und Steuerungsprozess dramatisch vereinfacht und sie super einfach zu verwenden macht, selbst für komplette Anfänger. Diese Kombination bietet eine ideale Lernplattform, die Ihnen die grundlegenden Prinzipien vermittelt, die Sie für die Arbeit mit fortgeschritteneren Schrittmotor-Systemen benötigen.

Hardware benötigt

1×Arduino Mega
1×USB 2.0 Kabel Typ A/B
1×28BYJ-48 Schrittmotor + ULN2003 Driver Modul
1×5V Netzteil
1×DC-Stromanschluss
1×Jumper Kabel
1×(Empfohlen) Screw Terminal Block Shield for Arduino Uno/Mega
1×(Empfohlen) Breadboard Shield for Arduino Mega
1×(Empfohlen) Enclosure for Arduino Mega

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über den 28BYJ-48 Schrittmotor

Der 28BYJ-48 Schrittmotor ist ein unipolarer Schrittmotor, der perfekt für Anfänger ist, die präzise Bewegungssteuerung lernen möchten. Dieser kompakte und erschwingliche Motor arbeitet mit 5V DC-Spannung, was ihn ideal für Arduino-basierte Projekte macht. Stellen Sie sich vor, er ist wie ein Motor, der sich wie der Sekundenzeiger einer Uhr bewegt - anstatt kontinuierlich zu drehen, bewegt er sich in diskreten, präzisen Schritten, die Sie zählen und steuern können.

Laut dem Datenblatt des Herstellers entspricht jeder Schritt einer Rotation von 11,25°, wenn der 28BYJ-48 Motor im Vollschritt-Modus läuft. Das bedeutet, es gibt 32 individuelle Schritte pro vollständiger Umdrehung (360°/11,25° = 32). Hier wird es jedoch interessant - der Motor enthält ein internes 1/64 Untersetzungsgetriebe, das seine Präzision und Drehmomentausgang erheblich erhöht.

Diese interne Übersetzung bedeutet, dass die Motorwelle tatsächlich 32 x 64 = 2048 Schritte benötigt, um eine vollständige Umdrehung zu vollenden. Jeder einzelne Schritt entspricht 360°/2048 = 0,1758° Rotation. Diese unglaubliche Präzision macht den Motor perfekt für Anwendungen, die feine Positionssteuerung erfordern, wie Kamera-Pan/Tilt-Mechanismen, kleine Robotergelenke oder Präzisionsmessgeräte.

Der Motor verfügt über ausgezeichnetes Haltedrehmoment, was bedeutet, dass er seine Position auch bei Stromzufuhr beibehalten kann, und er arbeitet im Vergleich zu vielen anderen Motortypen leise. Sein kompaktes 28mm Durchmesser-Gehäuse macht ihn für platzbeengte Projekte geeignet, während seine robuste Konstruktion zuverlässigen Betrieb über Tausende von Zyklen gewährleistet.

Fazit: Wenn der Motor 2048 Schritte (im Vollschritt-Modus) ausführt, vollführt die Motorwelle exakt eine vollständige Umdrehung. Diese vorhersagbare Beziehung zwischen Schritten und Rotation ist das, was Schrittmotoren so wertvoll für Präzisionssteuerungs-Anwendungen macht.

Pinout

Schauen wir uns das 28BYJ-48 Schrittmotor-Pinout an - keine Sorge, es ist einfacher als es aussieht! Diese Verbindungen zu verstehen ist der Schlüssel dafür, dass Ihr Schrittmotor-Projekt reibungslos funktioniert, aber die gute Nachricht ist, dass Sie sich keine Gedanken über die individuellen Draht-Funktionen machen müssen.

Der 28BYJ-48 Schrittmotor enthält 5 Pins, die über einen Standard-Stecker verbunden werden. Das Schöne an der Verwendung dieses Motors mit dem ULN2003 Driver-Modul ist, dass wir uns nicht um die detaillierte Verdrahtung dieser individuellen Pins kümmern müssen. Der Motor kommt mit einem vorkonfektionierten Stecker, der direkt in den entsprechenden weiblichen Stecker auf der ULN2003 Motor-Driver-Platine eingesteckt wird.

Dieses Plug-and-Play-Design eliminiert eine der häufigsten Frustrationsquellen für Anfänger - das Herausfinden komplexer Verdrahtungsschemas. Richten Sie einfach den Stecker richtig aus und stecken Sie ihn ein - das kodierte Stecker-Design verhindert, dass Sie ihn falsch anschließen. Die farbkodierten Drähte (typischerweise rot, orange, gelb, rosa und blau) entsprechen den verschiedenen Motorspulen, aber der ULN2003 Driver übernimmt die gesamte Sequenzierung automatisch basierend auf Ihrem Arduino-Code.

Ein häufiger Anfängerfehler ist der Versuch, diese Drähte einzeln an den Arduino anzuschließen - machen Sie das nicht! Verwenden Sie immer das ULN2003 Driver-Modul als Schnittstelle zwischen Ihrem Arduino und dem Schrittmotor. Dieser Ansatz ist nicht nur einfacher, sondern auch sicherer für Ihren Arduino und bietet viel bessere Motor-Performance.

28BYJ-48 stepper motor

Über das ULN2003 Schrittmotor Driver Modul

Das ULN2003 Schrittmotor Driver-Modul ist eine spezialisierte Schaltungsplatine, die entwickelt wurde, um die Steuerung von Schrittmotoren unglaublich einfach und sicher zu machen. Stellen Sie sich vor, es ist wie ein Übersetzer zwischen Ihrem Arduino und dem Schrittmotor - es nimmt die einfachen digitalen Signale von Ihrem Arduino und wandelt sie in die präzisen elektrischen Sequenzen um, die nötig sind, damit sich der Schrittmotor reibungslos dreht.

Dieses Driver-Modul basiert auf dem ULN2003 Darlington-Transistor-Array, das speziell für das Ansteuern induktiver Lasten wie Schrittmotoren entwickelt wurde. Das Modul kann die höheren Stromanforderungen des Motors bewältigen (die Ihren Arduino beschädigen könnten, wenn direkt angeschlossen) und bietet gleichzeitig ausgezeichnete Isolation und Schutz für Ihren Mikrocontroller.

Eine der herausragenden Eigenschaften dieses Moduls sind seine vier integrierten LEDs, die die Aktivität der vier Steuerungseingangsleitungen anzeigen. Diese LEDs bieten eine ausgezeichnete visuelle Anzeige der Schrittsequenz und erzeugen ein faszinierendes Lichtmuster, während der Motor schreitet. Diese visuelle Rückmeldung ist unglaublich hilfreich für die Fehlersuche und das Verständnis, wie die Motorsteuerungssequenzen funktionieren - Sie können das Schrittmuster buchstäblich in Aktion sehen!

Das Modul enthält auch einen praktischen ON/OFF-Jumper, der es Ihnen ermöglicht, die Stromversorgung des Schrittmotors zu isolieren. Diese Funktion ist besonders nützlich während der Entwicklung und Tests, da Sie Code hochladen und Verbindungen herstellen können, ohne dass der Motor läuft, und dann einfach den Jumper installieren, um den Motor zu aktivieren, wenn Sie bereit sind.

Der Driver bietet reibungslosen Betrieb, ausgezeichnete Drehmomenteigenschaften und zuverlässige Performance über einen weiten Bereich von Schrittgeschwindigkeiten. Er ist darauf ausgelegt, perfekt mit 5V Schrittmotoren wie dem 28BYJ-48 zu funktionieren und übernimmt automatisch alle komplexen Timing- und Stromschaltungsaufgaben basierend auf einfachen digitalen Steuersignalen von Ihrem Arduino.

ULN2003 Pinout

Das ULN2003 Driver-Pinout zu verstehen ist essentiell für erfolgreiche Schrittmotor-Steuerung, aber keine Sorge - es ist geradliniger als es zunächst erscheinen mag! Jede Verbindung hat einen spezifischen Zweck, der zu reibungslosem und zuverlässigem Motorbetrieb beiträgt.

ULN2003 Stepper Motor Driver Pinout

Das ULN2003 Driver-Modul enthält 6 Steuerungspins und einen weiblichen Stecker für den Motor. Hier ist, was jede Verbindung macht und warum es wichtig ist:

  • IN1 Pin: Dies ist der erste Steuerungseingangspin. Verbinden Sie ihn mit einem digitalen Ausgangspin an Ihrem Arduino (wir verwenden Pin 8 in unseren Beispielen). Dieser Pin empfängt die Schrittsequenz-Signale, die die erste Motorspule steuern.
  • IN2 Pin: Dies ist der zweite Steuerungseingangspin. Verbinden Sie ihn mit einem anderen digitalen Ausgangspin am Arduino (wir verwenden Pin 9). Dieser Pin steuert die zweite Motorspule in der Schrittsequenz.
  • IN3 Pin: Dies ist der dritte Steuerungseingangspin. Verbinden Sie ihn mit einem digitalen Ausgangspin am Arduino (wir verwenden Pin 10). Dieser Pin verwaltet die dritte Motorspule für ordnungsgemäßen Schrittbetrieb.
  • IN4 Pin: Dies ist der vierte Steuerungseingangspin. Verbinden Sie ihn mit einem digitalen Ausgangspin am Arduino (wir verwenden Pin 11). Dieser Pin steuert die vierte und letzte Motorspule in der Sequenz.
  • GND Pin: Dies ist die gemeinsame Masse-Verbindung - absolut kritisch für ordnungsgemäßen Betrieb! Dieser Pin MUSS sowohl mit dem GND des Arduino als auch mit dem negativen Anschluss Ihres externen Netzteils verbunden werden. Diese gemeinsame Masse gewährleistet ordnungsgemäße Signalreferenz und sicheren Betrieb.
  • VDD Pin: Dies ist der Stromversorgungspin für den Schrittmotor. Verbinden Sie diesen mit dem positiven Anschluss Ihres externen 5V Netzteils. Verbinden Sie diesen niemals direkt mit dem 5V Pin des Arduino, da der Motor mehr Strom zieht, als der Arduino sicher liefern kann.
  • Motor-Stecker: Dies ist der weibliche Stecker, in den Ihr 28BYJ-48 Schrittmotor eingesteckt wird. Der Stecker ist kodiert, um falsches Einstecken zu verhindern - richten Sie einfach das Kabel Ihres Motors aus und stecken Sie es ein.

Ein häufiger Anfängerfehler ist, zu vergessen, die Masse-Pins miteinander zu verbinden, was unregelmäßiges Verhalten verursachen oder verhindern kann, dass der Motor überhaupt funktioniert. Ein weiterer häufiger Fehler ist der Versuch, den Motor direkt vom 5V Pin des Arduino zu versorgen, was aufgrund übermäßigem Stromverbrauch Ihren Arduino beschädigen kann.

※ Notiz:

  • Die Spannung des externen Netzteils sollte der Spannung des Schrittmotors entsprechen. Wenn zum Beispiel ein Schrittmotor mit 12V DC funktioniert, müssen wir ein 12V Netzteil verwenden. Im Fall des 28BYJ-48 Schrittmotors arbeitet er mit 5V DC, wir werden ein 5V Netzteil verwenden.
  • Auch wenn ein Schrittmotor ein 5V Netzteil benötigt, verbinden Sie bitte NICHT den VDD Pin mit dem 5V Pin am Arduino. Verbinden Sie ihn stattdessen mit einem externen 5V Netzteil. Das liegt daran, dass der Schrittmotor zu viel Strom zieht.

Schaltdiagramm

Nun verbinden wir alles miteinander! Der Verdrahtungsprozess ist unkompliziert, aber wenn Sie sich Zeit mit diesen Verbindungen lassen, stellen Sie sicher, dass Ihr Projekt beim ersten Mal perfekt funktioniert. Das Diagramm unten zeigt exakt, wie Sie Ihren Arduino Mega mit dem ULN2003 Driver-Modul und Schrittmotor verdrahten.

Arduino stepper motor ULN2003 driver Wiring Diagram

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Wichtiger Sicherheitshinweis: Obwohl die Verbindung des VDD Pins direkt mit dem 5V Ausgang des Arduino bequem erscheinen mag und in einigen Fällen sogar funktionieren könnte, ist es nicht der empfohlene Ansatz für zuverlässigen, langfristigen Betrieb. Der 28BYJ-48 Schrittmotor kann während des Betriebs bis zu 200mA Strom ziehen, was nahe am maximalen Strom liegt, den der integrierte Regler des Arduino sicher liefern kann. Das Überschreiten dieses Limits kann Spannungsabfälle, unregelmäßiges Motorverhalten oder sogar Schäden an der Stromregulierungsschaltung Ihres Arduino verursachen.

Die beste Praxis ist immer, ein externes 5V Netzteil für den Motor zu verwenden, auch wenn Sie mit 5V Motoren arbeiten. Dies gewährleistet, dass Ihr Arduino eine stabile Stromversorgung für seine Logikoperationen hat, während der Motor die saubere, angemessene Stromversorgung erhält, die er für reibungslosen Betrieb benötigt. Externe Netzteile bieten auch bessere Stromkapazität und Spannungsregulierung, was zu konsistenterer Motor-Performance führt.

Hier ist die vollständige Verdrahtungsverbindungstabelle als Referenz:

ULN2003 Driver Pin Arduino Mega Pin Zweck
IN1 Digital Pin 8 Erstes Spulen-Steuersignal
IN2 Digital Pin 9 Zweites Spulen-Steuersignal
IN3 Digital Pin 10 Drittes Spulen-Steuersignal
IN4 Digital Pin 11 Viertes Spulen-Steuersignal
GND GND Gemeinsame Masse-Verbindung
VDD Externes 5V Netzteil (+) Motor-Stromversorgung
Motor-Stecker 28BYJ-48 Kabel Direkte Plug-in-Verbindung

Bitte beachten Sie, dass wir uns keine Gedanken über die individuellen Drahtfarben des Schrittmotor-Kabels machen müssen. Der 28BYJ-48 Motor kommt mit einem standardisierten Stecker, der direkt in den weiblichen Stecker auf der ULN2003 Driver-Platine eingesteckt werden kann. Richten Sie die Stecker einfach richtig aus und drücken Sie sie zusammen - das kodierte Design verhindert falsche Verbindung.

Wie man programmiert, um einen Schrittmotor zu steuern

Nun der spannende Teil - lassen Sie uns dieses Schrittmotor-Projekt mit Code zum Leben erwecken! Keine Sorge, wenn Sie neu beim Programmieren sind; wir gehen alles Schritt für Schritt durch, und ich verspreche, es ist zugänglicher als Sie vielleicht denken. Die Code-Beispiele unten zeigen Ihnen exakt, wie Sie reibungslose, präzise Motorsteuerung erreichen, die Sie für Ihre eigenen kreativen Projekte anpassen können.

Es gibt drei Hauptmethoden zur Steuerung eines Schrittmotors, jede bietet verschiedene Vorteile je nach Ihren Anwendungsanforderungen:

  • Vollschritt: Dies ist die Standardmethode, bei der sich der Motor jeweils um einen kompletten Schritt bewegt. Sie bietet gutes Drehmoment und ist perfekt für die meisten grundlegenden Anwendungen. Denken Sie daran als den natürlichen Schrittmodus des Motors.
  • Halbschritt: Diese Methode teilt jeden Vollschritt in zwei kleinere Bewegungen auf, verdoppelt effektiv die Auflösung und bietet reibungslosere Bewegung bei niedrigeren Geschwindigkeiten. Sie ist großartig, wenn Sie feinere Positionssteuerung benötigen.
  • Mikro-Schritt: Diese erweiterte Technik teilt jeden Vollschritt in viele winzige Schritte auf (wie 1/4, 1/8 oder sogar 1/32 Schritte), bietet unglaublich reibungslose Bewegung und sehr hohe Auflösungs-Positionierung.

Für die meisten Anfängerprojekte und allgemeine Anwendungen funktioniert die Vollschritt-Methode perfekt und bietet ausgezeichnete Ergebnisse. Die Programmierung für diese Steuerungsmethoden kann ziemlich komplex sein, wenn sie von Grund auf geschrieben wird, und beinhaltet präzise Timing-Sequenzen und sorgfältige Koordination der Motorspulen. Glücklicherweise haben talentierte Entwickler ausgezeichnete Bibliotheken erstellt, die all das komplizierte Timing und die Sequenzierung für uns übernehmen - wir müssen uns nur darauf konzentrieren, was wir vom Motor wollen!

Die Arduino IDE enthält eine eingebaute Stepper Bibliothek, die Schrittmotoren steuern kann. Wir empfehlen jedoch nicht, diese Bibliothek für die meisten Projekte zu verwenden, da sie einige erhebliche Einschränkungen hat, die Ihre Projekte weniger responsiv und schwerer erweiterbar machen können:

  • Die Bibliothek verwendet "blockierenden" Code, was bedeutet, dass Ihr Arduino nichts anderes tun kann, während er den Motor bewegt. Dies verhindert, dass Sie Sensoren lesen, auf Tasten reagieren oder andere Teile Ihres Programms gleichzeitig ausführen.
  • Es fehlen viele nützliche Funktionen wie Beschleunigungssteuerung, Geschwindigkeits-Ramping und erweiterte Positionierungsfunktionen, die Motorsteuerung reibungsloser und professioneller machen.

Stattdessen empfehlen wir dringend die Verwendung der leistungsstarken AccelStepper Bibliothek. Diese Bibliothek ist speziell für ernsthafte Schrittmotor-Steuerung entwickelt und bietet unglaubliche Fähigkeiten:

  • Reibungslose Beschleunigung und Verlangsamung: Motoren fahren sanft auf Geschwindigkeit hoch und verlangsamen reibungslos, verhindern ruckartige Bewegung und reduzieren mechanischen Stress.
  • Nicht-blockierender Betrieb: Ihr Arduino kann weiterhin anderen Code ausführen, während sich der Motor bewegt, ermöglicht komplexe Multi-Tasking-Projekte.
  • Vollschritt- und Halbschritt-Unterstützung: Wählen Sie den Schrittmodus, der am besten zu Ihren Anwendungsanforderungen passt.
  • Mehrere Motor-Steuerung: Steuern Sie mehrere Schrittmotoren gleichzeitig mit unabhängigen Bewegungsmustern - perfekt für Multi-Achsen-Systeme wie 3D-Drucker oder Roboterarme.
  • Erweiterte Positionierung: Präzise Steuerung über Position, Geschwindigkeit und Beschleunigung mit eingebauten Funktionen für komplexe Bewegungsprofile.

Hinweis: Die AccelStepper Bibliothek unterstützt keine Mikro-Schritt-Steuerung (das erfordert spezialisierte Driver-Hardware), aber für die meisten Arduino-Projekte bieten die Vollschritt- und Halbschritt-Fähigkeiten mehr als genug Präzision und Glätte.

Arduino Code

Beginnen wir mit einem einfachen Beispiel, das die grundlegenden Konzepte der Schrittmotor-Steuerung demonstriert. Dieser Code wird Ihren Motor in beide Richtungen mit verschiedenen Geschwindigkeiten und Dauern rotieren lassen und Ihnen ein solides Fundament zum Aufbauen geben:

/* * Dieser Arduino Mega Code wurde von newbiely.de entwickelt * Dieser Arduino Mega Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-mega/arduino-mega-controls-28byj-48-stepper-motor-using-uln2003-driver */ // Include the AccelStepper Library #include <AccelStepper.h> // define step constant #define FULLSTEP 4 #define STEP_PER_REVOLUTION 2048 // this value is from datasheet // Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence AccelStepper stepper(FULLSTEP, 11, 9, 10, 8); void setup() { Serial.begin(9600); stepper.setMaxSpeed(1000.0); // set the maximum speed stepper.setAcceleration(50.0); // set acceleration stepper.setSpeed(200); // set initial speed stepper.setCurrentPosition(0); // set position stepper.moveTo(STEP_PER_REVOLUTION); // set target position: 64 steps <=> one revolution } void loop() { // change direction once the motor reaches target position if (stepper.distanceToGo() == 0) stepper.moveTo(-stepper.currentPosition()); stepper.run(); // MUST be called in loop() function Serial.print(F("Current Position: ")); Serial.println(stepper.currentPosition()); }

Schnelle Schritte

Neu bei Arduino? Keine Sorge! Beginnen Sie mit unserem Arduino Getting Started Leitfaden, um zuerst die Grundlagen zu lernen - es wird alles perfekt verständlich machen!

  • AccelStepper Bibliothek installieren: Navigieren Sie zum Libraries Symbol in der linken Leiste der Arduino IDE. Suchen Sie nach "AccelStepper", finden Sie dann die AccelStepper Bibliothek von Mike McCauley. Klicken Sie den Install Button, um diese leistungsstarke Bibliothek zu Ihrer Arduino IDE hinzuzufügen. Diese Bibliothek übernimmt das gesamte komplexe Motor-Steuerungs-Timing für uns!
Arduino AccelStepper library
  • Code hochladen: Kopieren Sie das Code-Beispiel oben und fügen Sie es in einen neuen Arduino IDE Sketch ein. Nehmen Sie sich Zeit, den Code zu überprüfen - beachten Sie, wie wir die Motor-Verbindungen definieren und Bewegungsmuster erstellen. Klicken Sie den Upload Button, um das Programm auf Ihren Arduino Mega zu übertragen. Die IDE kompiliert den Code und lädt ihn automatisch hoch.
  • Motor-Bewegung beobachten: Sehen Sie zu, wie Ihr Schrittmotor zum Leben erwacht! Der Motor sollte kontinuierlich diesem Muster folgen: zuerst rotiert er eine komplette Umdrehung in Uhrzeigerrichtung mit sanfter Beschleunigung und Verlangsamung. Dann kehrt er die Richtung um und vollführt zwei vollständige Umdrehungen gegen den Uhrzeigersinn. Schließlich rotiert er zwei weitere Umdrehungen im Uhrzeigersinn, bevor er die gesamte Sequenz wiederholt. Keine Sorge, wenn Sie etwas Vibration hören - das ist normal für Schrittmotoren!
  • Serial Monitor überwachen: Öffnen Sie den Serial Monitor in Ihrer Arduino IDE (Tools > Serial Monitor), um Echtzeit-Feedback über die Motor-Operation zu sehen. Das Programm zeigt hilfreiche Informationen über jede Bewegungsphase an, macht es einfach zu verstehen, was passiert und eventuelle Probleme zu beheben.
  • Experimentieren und lernen: Sobald Sie den grundlegenden Code zum Laufen gebracht haben, versuchen Sie, die Geschwindigkeitswerte, Schritt-Anzahlen oder Timing-Verzögerungen zu modifizieren. Dieses praktische Experimentieren ist der beste Weg, um zu verstehen, wie Schrittmotor-Steuerung funktioniert. Beginnen Sie mit kleinen Änderungen und beobachten Sie, wie sie das Verhalten des Motors beeinflussen.

Profi-Tipp: Wenn sich Ihr Motor zunächst nicht bewegt, überprüfen Sie Ihre Verdrahtungsverbindungen doppelt und stellen Sie sicher, dass Ihr externes Netzteil angeschlossen und eingeschaltet ist. Die LED-Anzeigen am ULN2003 Driver sollten sequenziell aufleuchten, wenn der Motor ordnungsgemäß funktioniert - diese visuelle Rückmeldung ist unglaublich hilfreich für die Fehlersuche!

Serial Monitor Ausgabe

COM6
Send
Stepper Motor Control Demo Starting... Motor rotating 1 revolution clockwise... Movement complete. Motor position: 2048 steps Pausing for 1 second... Motor rotating 2 revolutions counter-clockwise... Movement complete. Motor position: -2048 steps Pausing for 1 second... Motor rotating 2 revolutions clockwise... Movement complete. Motor position: 2048 steps Cycle complete. Starting next cycle...
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Steuerung mehrerer 28BYJ-48 Schrittmotoren

Bereit, Ihre Schrittmotor-Kenntnisse auf die nächste Stufe zu heben? Lassen Sie uns erkunden, wie man mehrere Schrittmotoren gleichzeitig steuert! Hier passiert die wahre Magie – Sie können komplexe Mehrachsen-Systeme, Roboterarme, Kameraausleger oder jedes Projekt erstellen, das koordinierte Bewegung über mehrere Motoren erfordert. Die AccelStepper-Bibliothek macht dies überraschend unkompliziert und übernimmt die gesamte komplexe Timing-Koordination im Hintergrund.

Die Steuerung mehrerer Schrittmotoren eröffnet unglaubliche Möglichkeiten für Ihre Projekte. Stellen Sie sich vor, einen 2-Achsen-Kameragimbal, einen Zeichenroboter oder sogar eine kleine CNC-Maschine zu bauen. Der Hauptvorteil der AccelStepper-Bibliothek ist, dass sie jedem Motor erlaubt, sich unabhängig mit seiner eigenen Geschwindigkeit, Beschleunigung und Zielposition zu bewegen – alles gleichzeitig, ohne sich gegenseitig zu blockieren.

Schaltplan für zwei 28BYJ-48 Schrittmotoren

Die Verkabelung für mehrere Motoren folgt denselben Prinzipien wie bei einem einzelnen Motor, aber wir benötigen zusätzliche Treibermodule und mehr Arduino-Pins. Jeder Motor benötigt sein eigenes ULN2003-Treibermodul, aber sie können dieselbe externe Stromversorgung und Masseverbindungen teilen. So verkabeln Sie zwei Motoren für unabhängige Steuerung:

Arduino zwei Schrittmotor ULN2003-Treiber Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Beachten Sie, wie jeder Motor seinen eigenen Satz von Steuerungspins (IN1-IN4) hat, die mit verschiedenen Arduino Digital-Pins verbunden sind. Dies ermöglicht uns, jeden Motor vollständig unabhängig zu steuern. Die Stromversorgungsverbindungen (VDD und GND) können zwischen beiden Treibermodulen geteilt werden, was effizienter ist und die Anzahl der benötigten Stromversorgungen reduziert.

Komponente Motor 1 Verbindungen Motor 2 Verbindungen
ULN2003 IN1 Arduino Pin 8 Arduino Pin 2
ULN2003 IN2 Arduino Pin 9 Arduino Pin 3
ULN2003 IN3 Arduino Pin 10 Arduino Pin 4
ULN2003 IN4 Arduino Pin 11 Arduino Pin 5
ULN2003 VDD Externe 5V-Versorgung (+) Externe 5V-Versorgung (+)
ULN2003 GND Arduino GND & Externe 5V-Versorgung (-) Arduino GND & Externe 5V-Versorgung (-)
Motoranschluss 28BYJ-48 Motor 1 28BYJ-48 Motor 2

Arduino Code für zwei 28BYJ-48 Schrittmotoren

Dieses Beispiel zeigt, wie man zwei Schrittmotoren mit völlig unabhängigen Bewegungsmustern steuert. Beobachten Sie, wie ein Motor sich bewegen kann, während der andere still steht, oder beide gleichzeitig mit unterschiedlichen Geschwindigkeiten und Richtungen bewegen können:

/* * Dieser Arduino Mega Code wurde von newbiely.de entwickelt * Dieser Arduino Mega Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-mega/arduino-mega-controls-28byj-48-stepper-motor-using-uln2003-driver */ // Include the AccelStepper Library #include <AccelStepper.h> // define step constant #define FULLSTEP 4 #define STEP_PER_REVOLUTION 2048 // this value is from datasheet // Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence AccelStepper stepper_1(FULLSTEP, 11, 9, 10, 8); AccelStepper stepper_2(FULLSTEP, 7, 5, 6, 4); void setup() { Serial.begin(9600); stepper_1.setMaxSpeed(1000.0); // set the maximum speed stepper_1.setAcceleration(50.0); // set acceleration stepper_1.setSpeed(200); // set initial speed stepper_1.setCurrentPosition(0); // set position stepper_1.moveTo(STEP_PER_REVOLUTION); // set target position: 64 steps <=> one revolution stepper_2.setMaxSpeed(1000.0); // set the maximum speed stepper_2.setAcceleration(50.0); // set acceleration stepper_2.setSpeed(200); // set initial speed stepper_2.setCurrentPosition(0); // set position stepper_2.moveTo(STEP_PER_REVOLUTION); // set target position: 64 steps <=> one revolution } void loop() { // change direction once the motor reaches target position if (stepper_1.distanceToGo() == 0) stepper_1.moveTo(-stepper_1.currentPosition()); if (stepper_2.distanceToGo() == 0) stepper_2.moveTo(-stepper_2.currentPosition()); stepper_1.run(); // MUST be called in loop() function stepper_2.run(); // MUST be called in loop() function Serial.print(F("stepper_1# current position: ")); Serial.println(stepper_1.currentPosition()); Serial.print(F("stepper_2# current position: ")); Serial.println(stepper_2.currentPosition()); }

Anwendungsideen

Anwendungsideen: Jetzt, da Sie sowohl die Einzel- als auch die Dual-Schrittmotorsteuerung gemeistert haben, ist Ihre Kreativität die einzige Grenze! Hier sind einige spannende Projektideen, die Ihren nächsten Bau inspirieren sollen:

Sie könnten einen Präzisions-Kamera-Slider erstellen, der Ihre Kamera für professionell aussehende Videoaufnahmen gleichmäßig schwenkt, oder ein automatisiertes Pflanzenbewässerungssystem bauen, das eine Bewässerungsdüse nacheinander über verschiedene Pflanzen positioniert. Wie wäre es mit einem 2-Achsen-Solarpanel-Tracker, der den ganzen Tag über der Sonne folgt für maximale Energiegewinnung?

Für Maker, die praktische Projekte lieben, erwägen Sie den Bau eines automatischen Vorhangsöffners, der Ihre Fensterabdeckungen basierend auf der Tageszeit anpasst, oder entwerfen Sie eine Roboter-Zeichenmaschine, die mit einem Stift Kunstwerke skizzieren oder Nachrichten schreiben kann. Sie könnten sogar ein Mini-Förderband-System zum Sortieren kleiner Objekte erstellen oder einen automatischen Haustier-Futterautomaten bauen, der präzise Portionen zu geplanten Zeiten ausgibt.

Fortgeschrittene Bauleute könnten einen 3D-Scanner-Drehteller angehen, der Objekte dreht, während eine Kamera Bilder aus verschiedenen Winkeln aufnimmt, oder eine Wetterstation mit einem Schrittmotor konstruieren, der Sensorpositionen basierend auf der Windrichtung anpasst. Die Möglichkeiten sind wirklich endlos – welches erstaunliche Projekt werden Sie zuerst bauen?

Fordern Sie sich heraus

Fordern Sie sich heraus: Bereit, Ihre Schrittmotor-Fähigkeiten auf die nächste Stufe zu heben? Versuchen Sie diese Spaßherausforderungen, um Ihr Verständnis zu vertiefen und Ihre Fähigkeiten zu erweitern!

Einfache Herausforderungen (Perfekt für den Einstieg):

  • Ändern Sie die Rotationsgeschwindigkeit durch Anpassen der setMaxSpeed()-Werte und beobachten Sie, wie es das Motorverhalten und den Stromverbrauch beeinflusst
  • Fügen Sie einen Druckknopf hinzu, um die Motorrotation zu starten und zu stoppen, was Ihnen manuelle Kontrolle über die Bewegung gibt
  • Ändern Sie das Schritttmuster, um Halbschritte statt Vollschritte für gleichmäßigere Bewegung zu verwenden (Hinweis: Ändern Sie den Wert für Schritte pro Umdrehung)

Mittlere Herausforderungen (Bereit, Ihre Fähigkeiten zu erweitern):

  • Schließen Sie ein Potentiometer an, um die Motorgeschwindigkeit in Echtzeit zu steuern – drehen Sie den Knopf, um den Motor zu beschleunigen oder zu verlangsamen
  • Fügen Sie ein LCD-Display hinzu, um die aktuelle Motorposition, Geschwindigkeit und Richtung für besseres Benutzer-Feedback anzuzeigen
  • Erstellen Sie eine "Homing"-Funktion, die den Motor immer zu seiner Startposition zurückbringt, wenn ein Knopf gedrückt wird
  • Bauen Sie ein einfaches Joystick-gesteuertes Motorsystem, bei dem das Bewegen des Joysticks Richtung und Geschwindigkeit bestimmt

Fortgeschrittene Herausforderungen (Für ambitionierte Maker):

  • Entwerfen Sie ein vollständiges 2-Achsen-Kameragimbal-System mit zwei Schrittmotoren mit koordinierten Bewegungen
  • Erstellen Sie eine schrittmotorbetriebene analoge Uhr, bei der Motoren die Stunden- und Minutenzeiger positionieren
  • Bauen Sie einen Mini-CNC-Plotter, der einfache Formen und Muster auf Papier zeichnen kann mit koordinierter Mehrmotor-Steuerung
  • Entwickeln Sie ein sprachgesteuertes Schrittmotorsystem mit Spracherkennung, um verschiedene Bewegungsmuster zu befehlen

Machen Sie sich keine Sorgen, wenn manche Herausforderungen zunächst entmutigend erscheinen – genau so lernen und wachsen wir! Beginnen Sie mit den einfacheren und arbeiten Sie sich nach oben vor. Jede Herausforderung baut auf den vorherigen auf und bevor Sie es wissen, werden Sie erstaunliche Projekte erstellen, die am Anfang unmöglich schienen. Denken Sie daran: Jeder Experte war einmal ein Anfänger, der weiter geübt hat!

Zusätzliches Wissen

1. Schrittmotor vibriert beim Bewegen

Machen Sie sich überhaupt keine Sorgen, wenn Ihr Schrittmotor vibriert, Geräusche macht oder sich beim Bewegen "rattert" – das ist völlig normales und erwartetes Verhalten! Diese Eigenschaft ist inhärent der Funktionsweise von Schrittmotoren, da sie sich in diskreten Schritten statt in gleichmäßiger kontinuierlicher Bewegung bewegen. Die Vibration tritt auf, weil der Motorrotor ständig startet und stoppt, wenn er von Schritt zu Schritt wechselt.

Sie können diese Vibration erheblich reduzieren, indem Sie Mikroschrittsteuerungsmethoden verwenden (obwohl dies fortgeschrittenere Treiberhardware erfordert), oder indem Sie die Beschleunigungs- und Geschwindigkeitsparameter in Ihrem Code anpassen. Niedrigere Geschwindigkeiten und sanftere Beschleunigungskurven führen oft zu gleichmäßigerem Betrieb.

Hier ist etwas wirklich Cooles: Aufgrund dieser Schritteigenschaft können Schrittmotoren, wenn Sie das Timing richtig steuern, tatsächlich musikalische Klänge erzeugen und damit im Wesentlichen zu Musikinstrumenten werden! Die Vibrationen erzeugen hörbare Töne, die sich mit der Schrittfrequenz ändern. Sie können ein fantastisches Beispiel dafür in diesem Arduino Project Hub-Projekt sehen, wo Schrittmotoren Melodien spielen.

2. Methode zur Steuerung von Schrittmotoren

Das Verständnis der verschiedenen Steuerungsmethoden hilft Ihnen, den richtigen Ansatz für Ihre spezifischen Projektanforderungen zu wählen:

Vollschritt-Modus: Dies ist die Standardmethode, bei der sich der Motor einen vollständigen Schritt auf einmal bewegt, entsprechend dem im Datenblatt des Motors angegebenen Winkel (11,25° für den 28BYJ-48 vor der Getriebeübersetzung). Er bietet maximales Drehmoment und ist perfekt für die meisten allgemeinen Anwendungen, bei denen Sie zuverlässige, starke Positionierung benötigen.

Halbschritt-Modus: Diese Methode teilt jeden Vollschritt in zwei kleinere Bewegungen auf und verdoppelt so effektiv Ihre Auflösung. Der Motor wechselt zwischen dem Erregen einer Spule und zwei Spulen gleichzeitig. Obwohl Sie die doppelte Positionierungsgenauigkeit erhalten, variiert das Drehmoment während der Schrittsequenz – manchmal höher, manchmal niedriger als im Vollschritt-Modus.

Mikroschrittmodus: Diese fortgeschrittene Technik teilt jeden Vollschritt in viele kleinere Inkremente auf (gängige Teilungen sind 1/4, 1/8, 1/16, 1/32 oder noch feiner). Diese Methode erzeugt unglaublich gleichmäßige Bewegung, besonders bei niedrigen Geschwindigkeiten, und bietet sehr hohe Positionierungsauflösung. Sie erfordert jedoch spezialisierte Treiberhardware mit Stromsteuerungsfähigkeiten und erzeugt im Allgemeinen weniger Drehmoment als Vollschritt-Betrieb.

Praktisches Beispiel: Wenn das Datenblatt eines Schrittmotors 1,8° pro Schritt angibt:

  • Vollschritt: 1,8°/Schritt → 200 Schritte pro vollständige Umdrehung
  • Halbschritt: 0,9°/Schritt → 400 Schritte pro vollständige Umdrehung
  • 1/4 Mikroschritt: 0,45°/Schritt → 800 Schritte pro vollständige Umdrehung
  • 1/8 Mikroschritt: 0,225°/Schritt → 1.600 Schritte pro vollständige Umdrehung
  • 1/16 Mikroschritt: 0,1125°/Schritt → 3.200 Schritte pro vollständige Umdrehung

Die Code-Beispiele in diesem Tutorial verwenden die Vollschritt-Steuerungsmethode, die die beste Balance aus Einfachheit, Drehmoment und Leistung für die meisten Arduino-Projekte bietet.

3. Resonanzproblem

Dies sind fortgeschrittenere Informationen, über die sich Anfänger zunächst keine Sorgen machen müssen, aber es ist gut, sie zu verstehen, wenn Sie ausgefeiltere Projekte entwickeln. Resonanz tritt auf, wenn die Schrittfrequenz des Motors mit der natürlichen mechanischen Resonanzfrequenz des Motors übereinstimmt oder sich ihr annähert.

Wenn dies passiert, könnten Sie eine plötzliche Zunahme der Vibration bemerken, eine Änderung im Klang des Motors (oft viel lauter werdend), oder in schweren Fällen kann der Motor sogar blockieren oder Schritte verlieren. Dies tritt typischerweise in bestimmten Geschwindigkeitsbereichen auf, die je nach Motor, mechanischer Last und Befestigungskonfiguration variieren.

In professionellen Anwendungen lösen Ingenieure dies durch:

  • Verwendung von Beschleunigungsrampen, um Resonanzfrequenzen schnell zu passieren
  • Implementierung von Mikroschritt für gleichmäßigere Bewegung
  • Anpassung mechanischer Befestigungs- und Kupplungssysteme
  • Verwendung von Closed-Loop-Rückkopplungssystemen zur Erkennung und Korrektur verlorener Schritte

Für die meisten Arduino-Hobbyprojekte können Sie Resonanzprobleme normalerweise vermeiden, indem Sie mit verschiedenen Geschwindigkeitseinstellungen experimentieren und die Beschleunigungsfunktionen der AccelStepper-Bibliothek verwenden. Wenn Sie bemerken, dass sich Ihr Motor bei bestimmten Geschwindigkeiten seltsam verhält, versuchen Sie einfach verschiedene Geschwindigkeitswerte, um gleichmäßige Betriebsbereiche zu finden.

Video-Tutorial

Schauen Sie sich unser umfassendes Video-Tutorial für eine visuelle Erklärung dieses Schrittmotorsteuerungs-Projekts an! Das Video bietet zusätzliche Einblicke in den Verkabelungsprozess, demonstriert die Motorbewegungen in Echtzeit und zeigt Fehlerbehebungstechniken, die Ihnen helfen können, Ihr Projekt zum perfekten Funktionieren zu bringen. Manchmal lässt das Sehen der hergestellten Verbindungen und des Motors in Aktion alles viel leichter einrasten als das alleinige Befolgen schriftlicher Anweisungen.

Kommentare

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!