TECHNISCHE LÖSUNGEN
DRV8825 Motorsteuerung – Beschreibung und Funktionsweise
Der DRV8825 ist ein Schrittmotortreiber von Texas Instruments, der für bipolare Schrittmotoren entwickelt wurde. Er wird häufig in CNC-Maschinen, 3D-Druckern und Robotik-Projekten eingesetzt, da er eine präzise Steuerung mit Mikroschritt-Fähigkeit bietet. 1. Technische Spezifikationen des DRV8825 Eigenschaft Wert Betriebsspannung (Motor) 8,2V – 45V Betriebsspannung (Logik) 2,5V – 5,25V Maximaler Motorstrom 2,5A pro Spule (mit Kühlung) Mikroschritte Vollschritt, 1/2, 1/4, 1/8, 1/16, 1/32 Eingangssignal STEP/DIR Schutzfunktionen Überstrom-, Übertemperatur- und Unterspannungsschutz 2. Anschlüsse des DRV8825 Pin Funktion VMOT Versorgungsspannung für den Motor (8,2V – 45V) GND Masseanschluss VDD Logikspannung (2,5V – 5,25V) STEP Schaltet den Motor um einen Schritt weiter DIR Steuert die Drehrichtung des Motors ENABLE Aktiviert oder deaktiviert den Treiber M0, M1, M2 Setzen die Mikroschritt-Auflösung FAULT Signalisiert Fehlerzustände 1A, 1B, 2A, 2B Anschlüsse für die Spulen des Motors 3. Anschluss an einen Mikrocontroller (z. B. Raspberry Pi oder Arduino) Ein einfacher Aufbau mit einem Arduino zur Steuerung eines NEMA 17 Schrittmotors könnte folgendermaßen aussehen: Verkabelung mit Arduino UNO: DRV8825 Pin Arduino Pin VMOT 12V – 24V Stromversorgung GND (Motor) GND (Stromversorgung) 1A, 1B, 2A, 2B Zu den Schrittmotor-Spulen VDD 5V (Arduino) GND (Logik) GND (Arduino) STEP Digitaler Pin (z. B. D9) DIR Digitaler Pin (z. B. D8) ENABLE GND (immer aktiv) M0, M1, M2 Je nach Mikroschritt-Einstellung auf GND oder VCC setzen 👉 Hinweis: Ein Kühlkörper wird empfohlen, wenn hohe Ströme (über 1,5A) genutzt werden. 4. Mikroschritt-Einstellungen Die M0, M1, M2 Pins bestimmen die Mikroschritt-Auflösung: M0 M1 M2 Mikroschritte LOW LOW LOW Vollschritt (1/1) HIGH LOW LOW Halbschritt (1/2) LOW HIGH LOW Viertelschritt (1/4) HIGH HIGH LOW Achtelschritt (1/8) LOW LOW HIGH Sechzehntelschritt (1/16) HIGH LOW HIGH Zweiunddreißigstelschritt (1/32)
 5. Steuerung per Code (Arduino Beispiel) Ein einfacher Arduino-Sketch zur Steuerung des Motors mit DRV8825: ﷯ Der Motor dreht sich kontinuierlich in eine Richtung. Durch Ändern von digitalWrite(DIR_PIN, LOW); ändert sich die Drehrichtung. 6. Strombegrenzung einstellen Der DRV8825 hat ein Potentiometer, um den maximalen Motorstrom einzustellen. Dazu misst man die Referenzspannung (VREF) an der "VREF"-Teststelle des Moduls. Die Berechnung für den Stromlimit ist: Beispiel: VREF = 0.6V → I_motor = 1.2A Zum Schutz des Motors sollte der Strom nicht höher als der Nennstrom des Motors eingestellt werden! 7. Wichtige Hinweise KEINE Schrittmotoren anschließen oder trennen, wenn das Board eingeschaltet ist → kann den Treiber beschädigen. Kühlkörper oder aktive Kühlung verwenden, wenn hohe Ströme genutzt werden. GND des Mikrocontrollers und GND des DRV8825 verbinden, um Signalstörungen zu vermeiden. Falls mehrere DRV8825-Module genutzt werden, können diese synchronisiert werden, um Schrittverluste zu verhindern. Fazit Der DRV8825 ist eine leistungsstarke und vielseitige Motorsteuerung für bipolare Schrittmotoren. Er ist besonders für 3D-Drucker, CNC-Maschinen, Roboterarme und automatische Steuerungssysteme geeignet. Hier ist ein Beispielcode für den Raspberry Pi 5, um einen Schrittmotor mit dem DRV8825 zu steuern. Der Code nutzt GPIO-Pins über die RPI.GPIO-Bibliothek. 1. Verkabelung des DRV8825 mit dem Raspberry Pi 5 DRV8825 Pin Raspberry Pi 5 Pin VMOT 12V – 24V externe Stromquelle GND (Motor) Masse der Stromquelle 1A, 1B, 2A, 2B Zu den Motoranschlüssen VDD 3.3V (vom Pi) GND (Logik) GND (vom Pi) STEP GPIO17 (Pin 11) DIR GPIO27 (Pin 13) ENABLE GND (immer aktiv) M0, M1, M2 Auf GND oder VCC für Mikroschritt-Einstellung Falls M0, M1, M2 nicht angeschlossen sind, bleibt der DRV8825 im Vollschrittmodus. ﷯ 3. Erklärung des Codes Der Code initialisiert die GPIO-Pins für STEP und DIR. step_motor(steps, direction, delay): Diese Funktion dreht den Motor um eine bestimmte Anzahl von Schritten in eine Richtung. 200 Schritte entsprechen einer vollen Umdrehung für einen Standard-NEMA 17-Schrittmotor (bei 1/1 Schrittgröße). delay=0.001 bestimmt die Geschwindigkeit. Im Endlosschleife (while True) dreht sich der Motor: Vorwärts (GPIO.HIGH) Pause (1 Sekunde) Rückwärts (GPIO.LOW) Pause (1 Sekunde) Mit CTRL + C kann das Skript beendet werden, und GPIO.cleanup() setzt die Pins zurück. 4. Geschwindigkeit anpassen Die Geschwindigkeit durch Ändern des Delays anpassen: step_motor(200, GPIO.HIGH, delay=0.0005) # Schnellere Bewegung step_motor(200, GPIO.HIGH, delay=0.002) # Langsamere Bewegung Je kleiner der Delay, desto schneller dreht sich der Motor. 5. Mikroschritt-Modus einstellen Falls du Mikroschritte verwenden möchtest, setze M0, M1, M2 wie folgt: M0 M1 M2 Mikroschrittmodus Schritte pro Umdrehung (bei 200 Standard) LOW LOW LOW Vollschritt (1/1) 200 HIGH LOW LOW Halbschritt (1/2) 400 LOW HIGH LOW Viertelschritt (1/4) 800 HIGH HIGH LOW Achtelschritt (1/8) 1600 LOW LOW HIGH Sechzehntelschritt (1/16) 3200 HIGH LOW HIGH Zweiunddreißigstelschritt (1/32) 6400 Falls du Mikroschritte nutzt, musst du die Schrittzahl im Code anpassen: step_motor(1600, GPIO.HIGH, delay=0.0005) # 1/8-Schrittmodus Hier würde der Motor 1600 Schritte benötigen, um sich einmal vollständig zu drehen. 6. Verwendung mit anderen Steuerungsmethoden Falls du den Motor über MQTT oder eine Web-Schnittstelle (Node-RED) steuern möchtest, kannst du: Ein MQTT-Client in Python verwenden, um Befehle zu empfangen. GPIO-Buttons oder ein Joystick anschließen, um den Motor manuell zu steuern.