ESP32 - DRV8825-Schrittmotortreiber

In diesem Leitfaden werden wir den DRV8825-Schrittmotortreiber erkunden und herausfinden, wie man ihn mit einem ESP32 betreibt, um den Schrittmotor zu steuern. Wir behandeln die folgenden Details:

ESP32 DRV8825-Modul

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Stepper Motor Nema 17
1×DRV8825 Stepper Motor Driver
1×Expansion Board for DRV8825 Motor Driver
1×12V Netzteil
1×DC-Stromanschluss
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
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 DRV8825-Schrittmotor-Treiber

Der DRV8825 ist ein beliebter Treiber für Schrittmotoren, der zur Steuerung bipolare Schrittmotoren in Geräten wie CNC-Maschinen, 3D-Druckern und Robotern verwendet wird. Er bietet Funktionen wie eine einstellbare Strombegrenzung, Schutz vor Überhitzung und verschiedene Mikroschritt-Optionen wie Vollschritt, 1/2, 1/4, 1/8, 1/16 und 1/32. Dieses Modul kann bei ausreichender Kühlung pro Spule bis zu 2,2 A bewältigen und arbeitet über einen breiten Spannungsbereich von 8,2 V bis 45 V, was es vielseitig für verschiedene Schrittmotoren macht.

Um Konzepte rund um Schrittmotoren wie Vollschritte, Mikroschritte, unipolare Schrittmotoren und bipolare Schrittmotoren zu verstehen, schauen Sie sich den ESP32 - Stepper Motor Leitfaden an.

Es ist beeindruckend, dass die Steuerung der Geschwindigkeit und Richtung eines bipolaren Schrittmotors, wie dem NEMA-17, nur zwei ESP32-Pins benötigt.

DRV8825 Schrittmotor-Treiber Pinbelegung

Pinbelegung des DRV8825-Moduls

Der DRV8825-Schrittmotor-Treiber verfügt über 16 Pins. Hier ist ein gängiges Layout für das DRV8825-Schrittmotor-Treiber-Modul. Beachten Sie jedoch, dass einige Versionen des Moduls die Pins möglicherweise unterschiedlich benennen, aber ihre Funktionen sind dieselben.

Pin Name Description
VMOT Motor power supply (8.2 V to 45 V). This powers the stepper motor.
GND (for Motor) Ground reference for the motor power supply. Connect this pin to the GND of the motor power supply
2B, 2A Outputs to Coil B of the stepper motor.
1A, 1B Outputs to Coil A of the stepper motor.
FAULT Fault Detection Pin. This is an output pin that drives LOW whenever the H-bridge FETs are disabled as the result of over-current protection or thermal shutdown.
GND (for Logic) Ground reference for the logic signals. Connect this pin to the GND of ESP32
ENABLE Active-Low pin to enable/disable the motor outputs. LOW = Enabled, HIGH = Disabled.
M1, M2, M3 Microstepping resolution selector pins (see table below).
RESET Active-Low reset pin - pulling this pin LOW resets the driver.
SLEEP Active-Low sleep pin - pulling this pin LOW puts the driver into low-power sleep mode.
STEP Step input - a rising edge on this pin advances the motor by one step (or one microstep, depending on microstepping setting).
DIR Direction input - sets the rotation direction of the stepper motor.

Außerdem gibt es einen winzigen eingebauten Drehknopf, mit dem man die Strombegrenzung einstellen kann, was dazu beiträgt, dass der Schrittmotor und der Treiber nicht zu heiß werden.

Kurz gesagt werden diese 16 Pins basierend auf ihrer Verwendung in diese Typen gruppiert:

  • Pins, die mit dem Schrittmotor verbunden sind: 1A, 1B, 2A, 2B.
  • Pins, die mit dem ESP32 zur Treiberverwaltung verbunden sind: ENABLE, M1, M2, M3, RESET, SLEEP.
  • Pins, die mit dem ESP32 zur Steuerung der Drehrichtung und Drehzahl des Motors verbunden sind: DIR, STEP.
  • Pin zur Rückmeldung an den ESP32: FAULT.
  • Pins, die mit der Stromversorgung des Motors verbunden sind: VMOT, GND (Motor-Strommasse).
  • Pin, der mit der Masse des ESP32 verbunden ist: GND (Logikmasse).

Das DRV8825-Modul benötigt keine Logikstromversorgung vom ESP32-Board, da es über den integrierten 3,3-V-Spannungsregler aus der Motorversorgung gespeist wird. Nichtsdestotrotz ist es wichtig, die Masse des ESP32 mit dem GND (Logik)-Pin des DRV8825-Moduls zu verbinden, um sicherzustellen, dass es korrekt funktioniert und eine gemeinsame Masse als Bezug hat.

Mikroschritt-Konfiguration

Der DRV8825-Treiber ermöglicht Mikroschritte, indem jeder Schritt in kleinere Teile unterteilt wird. Dies geschieht, indem unterschiedliche Stromstärken an die Spulen des Motors gesendet werden.

Zum Beispiel ein NEMA-17-Motor mit einem Schrittwinkel von 1,8 Grad (200 Schritte pro Umdrehung):

  • Vollschrittmodus: 200 Schritte pro Umdrehung
  • Halbschrittmodus: 400 Schritte pro Umdrehung
  • Viertelschrittmodus: 800 Schritte pro Umdrehung
  • Achtelschrittmodus: 1600 Schritte pro Umdrehung
  • Sechzehnschrittmodus: 3200 Schritte pro Umdrehung
  • 32-Schritt-Modus: 6400 Schritte pro Umdrehung

Je höher Sie den Mikro-Schritt-Modus einstellen, desto glatter und genauer läuft der Motor, aber er benötigt mehr Schritte für eine volle Umdrehung. Wenn Sie dieselbe Schrittimpulsrate beibehalten (Impuls pro Sekunde), benötigt jede volle Umdrehung mehr Zeit, wodurch der Motor langsamer wird.

Aber wenn Ihr Mikrocontroller Impulse schnell genug senden kann, um die höhere Schrittzahl zu erreichen, können Sie die Geschwindigkeit beibehalten oder sogar erhöhen. Die reale Grenze hängt davon ab, wie schnell sowohl der Treiber als auch Ihr Mikrocontroller diese Impulse verarbeiten können, ohne Schritte zu verpassen.

DRV8825 Mikroschritt-Auswahlpins

Der DRV8825 verfügt über drei Eingänge zur Auswahl der Mikroschrittauflösung: M0, M1 und M2-Pins. Durch das Einstellen dieser Pins auf bestimmte logische Pegel können Sie aus sechs Mikroschrittauflösungen wählen:

M0 Pin M1 Pi M2 Pi Microstep Resolution
Low Low Low Full step
High Low Low Half step
Low High Low 1/4 step
High High Low 1/8 step
Low Low High 1/16 step
High Low High 1/32 step
Low High High 1/32 step
High High High 1/32 step

Diese Mikro-Schritt-Auswahlpins verfügen über integrierte Pull-Down-Widerstände, die sie standardmäßig im Niedrigzustand halten. Falls sie nicht verbunden sind, läuft der Motor im Vollschrittmodus.

Wie es funktioniert

Um einen Schrittmotor mit dem DRV8825-Modul zu betreiben, benötigen Sie zwei ESP32-Pins: einen für den DIR-Pin und einen für den STEP-Pin. Der DRV8825 verarbeitet diese Signale vom ESP32, um den Schrittmotor präzise zu bewegen.

  • STEP-Pin: Jedes Signal am STEP-Pin bewegt den Motor je nach Ihrer Einstellung einen Mikroschritt oder einen Vollschritt nach vorn.
  • DIR-Pin: Bestimmt, in welche Richtung der Motor dreht.

Der Treiber verwendet diese Signale und seine eigenen Einstellungen, um Steuerbefehle an den Motor über die Pins 1A, 1B, 2A und 2B zu senden.

Sie können auch zusätzliche Pins am DRV8825-Modul (ENABLE, M1, M2, M3, RESET, SLEEP) auf drei Arten einrichten:

  • Halte sie getrennt, damit der Treiber die Standardeinstellungen verwenden kann.
  • Verbinde sie direkt mit GND oder VCC, um einen Dauerbetriebsmodus zu ermöglichen.
  • Verknüpfe sie mit ESP32-Pins, um diese Funktionen durch deine Programmierung zu steuern.

Verdrahtungsdiagramm zwischen ESP32, DRV8825-Modul und Schrittmotor

Das unten gezeigte Diagramm zeigt die grundlegenden Verbindungen, die zwischen dem ESP32, dem DRV8825-Modul und dem Schrittmotor erforderlich sind. In dieser Anordnung arbeitet der DRV8825-Treiber im Standardmodus (Vollschritt).

ESP32 DRV8825-Schrittmotortreiber-Verdrahtungsdiagramm

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

Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

Im Detail:

  • VMOT: Mit der Stromquelle des Motors verbinden (z. B. 12V).
  • GND (für den Motor): Mit dem Masseanschluss der Stromversorgung des Motors verbinden.
  • 1A, 1B, 2A, 2B: Diese an die Spulen des Schrittmotors anschließen.
  • STEP: An den digitalen Pin D4 am ESP32 anschließen.
  • DIR: An den digitalen Pin D3 am ESP32 anschließen.
  • GND (für Logik): An den GND-Pin des ESP32 anschließen.
  • Andere Pins: Nicht anschließen.

ESP32-Quellcode

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 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/esp32/esp32-drv8825-stepper-motor-driver */ #include <AccelStepper.h> #define STEP_PIN 12 // The ESP32 pin GPIO12 connected to STEP pin of DRV8825 module #define DIR_PIN 14 // The ESP32 pin GPIO14 connected to DIR pin of DRV8825 module // Creates an instance AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN); void setup() { // set the maximum speed, acceleration factor stepper.setMaxSpeed(1000); stepper.setAcceleration(200); // set speed and the target position stepper.setSpeed(200); stepper.moveTo(200); } void loop() { // Change direction once the motor reaches target position if (stepper.distanceToGo() == 0) stepper.moveTo(-stepper.currentPosition()); stepper.run(); // Move the motor one step }

Schnelle Schritte

  • Falls dies das erste Mal ist, dass Sie ESP32 verwenden, sehen Sie sich wie man die Umgebung für ESP32 in der Arduino IDE einrichtet an.
  • Verbinden Sie die Verkabelung gemäß dem obigen Bild.
  • Verbinden Sie das ESP32-Board über ein USB-Kabel mit Ihrem PC.
  • Öffnen Sie die Arduino IDE auf Ihrem PC.
  • Wählen Sie das richtige ESP32-Board (z. B. ESP32 Dev Module) und den COM-Port.
  • Kopieren Sie den obigen Code und öffnen Sie ihn in der Arduino IDE.
  • Gehen Sie zum Bibliotheken-Bereich auf der linken Seite der Arduino IDE.
  • Suchen Sie nach "AccelStepper", und finden Sie dann die AccelStepper-Bibliothek von Mike McCauley.
  • Drücken Sie die Installieren-Schaltfläche, um die AccelStepper-Bibliothek hinzuzufügen.
ESP32 AccelStepper-Bibliothek
  • Kopieren Sie den Code und öffnen Sie ihn in der Arduino IDE
  • Klicken Sie in der Arduino IDE auf die Hochladen-Schaltfläche, um den Code an Ihren ESP32 zu senden
  • Sie werden sehen, wie sich der Motor hin- und herbewegt

Tipp: Wenn der Motor im Vollschritt-Modus läuft, ist seine Bewegung möglicherweise nicht ganz glatt, aber das ist normal. Für eine glattere Bewegung schalten Sie Mikro-Schritt-Betrieb ein, indem Sie die Pins M1, M2 und M3 setzen.

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ 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!