Stepper-Motor mit dem DRV8825 steuern

In diesem Beitrag zeige ich dir, wie du einen Stepper-Motor mit Arduino und dem DRV8825 Stepper-Driver steuern kannst. Darüber hinaus sehen wir uns an, die du den Strom zum Motor am DRV8825 begrenzen musst. Wie immer gibt es alle Erklärungen, einen Schaltplan und den Programmcode.

Bevor wir richtig einsteigen, musst du erstmal verstehen, wie ein Stepper-Motor (Schrittmotor) funktioniert. Das folgende Video erklärt das ziemlich gut:

Wir benötigen Ihre Zustimmung um den Inhalt von YouTube laden zu können.

Mit dem Klick auf das Video werden durch den mit uns gemeinsam Verantwortlichen Youtube [Google Ireland Limited, Irland] das Video abgespielt, auf Ihrem Endgerät Skripte geladen, Cookies gespeichert und personenbezogene Daten erfasst. Damit kann Google Aktivitäten im Internet verfolgen und Werbung zielgruppengerecht ausspielen. Es erfolgt eine Datenübermittlung in die USA, diese verfügt über keinen EU-konformen Datenschutz. Weitere Informationen finden Sie hier.

PGlmcmFtZSB0aXRsZT0iU2Nocml0dG1vdG9yIC0gQXVmYmF1IHVuZCBGdW5rdGlvbnN3ZWlzZSIgd2lkdGg9IjY0MCIgaGVpZ2h0PSIzNjAiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvVnRiZDgwRmtzdU0/ZmVhdHVyZT1vZW1iZWQiIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGNsaXBib2FyZC13cml0ZTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg==

Ich hoffe, das Video hat dir gefallen und du kennst nun die wichtigsten Grundlagen.

Motortreiber DRV8825

Der Motortreiber DRV8825 ist ein IC (Integrated Circuit) von Texas Instruments. Aus praktischen Gründen verwendet man ihn normaler Weise als Breakout-Board, einer Breadboard-freundlichen Platine, auf der der Chip verlötet ist. Durch wird die Verbindung vom Arduino zum Stepper-Motor zum Kinderspiel und man benötigt nur zwei digitale Pins des Arduino-Boards. Damit lässt sich dann jeder einzelne Motorschritt steuern.

Arduino DRV8825 Schrittmotor Stepper Treiber NEMA 17

Der Treiber hat eine maximale Ausgangskapazität von 45 V und 2 A, was für die Ansteuerung kleiner bis mittelgroßer Schrittmotoren, wie z. B. eines bipolaren NEMA 17-Schrittmotors ideal ist.

Größere Schrittmotoren sollte man allerdings mit Treibern wie dem TB6600 ansteuern. Übrigens verwendet der DRV8825 die gleichen Pins wie der A4988. (Achtung: Das Trimpotentiometer ist dort genau auf der anderen Seite. Man muss also penibel auf die Polung achten, falls man die Module austauschen möchte. -> Ja, eigene schmerzliche Erfahrung 😂 )

Sehen wir uns die technischen Daten des DRV8825 an. Hier ein Auszug aus dem Datenblatt:

Betriebsspannung8,2 V – 45 V
Dauerstrom pro Phase1,5 A
Maximaler Strom pro Phase2,5 A (bei 24 V)
Logikspannung2,5 V – 5,25 V
Mikroschrittauflösungvoll, 1/2, 1/4, 1/8, 1/16 und 1/32
VerpolungsschutzNein
Abmessungen 15,5 × 20,5 mm

Wie im Video erwähnt kann man Stepper-Motoren in Microstepping-Modus betreiben. Der DRV8825 lässt sich in unterschiedlichen Schrittmodi nutzen. Dafür muss man die Pins M0, M1, M2 mit 5V+ (HIGH) verbinden. Die folgende Tabelle gibt an, wie man diese Pins setzen muss:

M0M1M2Microstep Auflösung
LowLowLowFull step
HighLowLowHalf step
LowHighLow1/4 step
HighHighLow1/8 step
LowLowHigh1/16 step
HighLowHigh1/32 step
LowHighHigh1/32 step
HighHighHigh1/32 step

Übrigens muss man die Pins nicht manuell auf LOW setzen. Das macht der Chip durch integrierte Pull-Down-Widerstände von allein.

Der NEMA 17 Motor, den ich hier zum Testen verwende dreht übrigens erst ruhig, wenn ich mindestens das Half-Stepping aktiviere.

Schaltung Arduino DRV8825

Arduino NEMA 17 DRV8825 Schrittmotor-Treiber Stepper

In der Schaltung ist Half Stepping durch die Verbindung vom 5V+ zum Pin M0 des DRV8825 aktiviert. Zusätzlich sind die Pins Reset und Sleep ebenfalls mit 5V+ verbunden. Der GND vom Arduino ist unten rechts am GND-Pin des DRV8825 angeschlossen. Der DIR und STEP Pin sind mit den Arduino-Pins D2 und D3 verbunden. Hier kann man natürlich auch andere Pins verwenden. Die Versorgungsspannung für den Motor liegt an den Pins VMOT und dem oberen GND an. Diese Verbindung ist noch mit einem 100 µF-Elektrolytkondensator gestützt. Der Schrittmotor ist mit dem einen Spulen-Stromkreis an den Pins A1 und A2, mit seinem anderen Spulen-Stromkreis an den Pins B1 und B2 verbunden.

Bauteile

Wie finde ich heraus, welche Kabel am Schrittmotor jeweils einen Stromkreis bilden?

  1. Möglichkeit: Widerstands-Messgerät
    Miss jeweils den Widerstand zwischen den einzelnen Kabeln des Schrittmotors. Die beiden Kabel, an denen der Widerstand nicht unendlich groß ist, sind die Enden einer der Spulen-Stromkreise.
  2. Möglichkeit: Induktion
    Verbinde zwei der Kabel vom Motor und drehe die Achse. Wenn sie sich schwer drehen lässt, hast du einen der Stromkreise gefunden. Die Drehung induziert einen Strom, der beim Drehen ein Magnetfeld aufbaut und den Motor bremst. Wenn sich sich leicht drehen lässt, versuche ein anderes Kabel.

Strom begrenzen

Oft übersehen aber von größter Bedeutung ist das begrenzen des Stromes. Um hohe Schrittraten zu erreichen, ist die Motorversorgung normaler Weise viel höher, als es ohne aktive Strombegrenzung möglich wäre. Ein typischer Schrittmotor hat z. B. einen maximalen Nennstrom von 1 A bei einem Spulenwiderstand von 5Ω, was eine maximale Motorversorgung von 5 V bedeuten würde. Die Verwendung eines solchen Motors mit 12 V würde höhere Schrittraten ermöglichen. Um hierbei Schäden am Motor zu vermeiden, muss der Strom aktiv auf unter 1 A begrenzt werden.

Der DRV8825 unterstützt eine solche aktive Strombegrenzung. Eingestellt wird sie mit Hilfe eines Trimmpotentiometers auf der Platine. In der Regel sollte die Stromgrenze des Treibers so eingestellt werden, dass sie kleiner gleich dem Nennstrom des Schrittmotors entspricht.

Am einfachsten lässt sich die Stromgrenze einstellen, indem man die Referenz-Spannung am Trimmpotentiometer misst und die resultierende Stromgrenze berechnet. Die Stromgrenze berechnet sich mittels Referenzspannung wie folgt:

Stromgrenze = VREF × 2

Wenn man also z. B. einen Schrittmotor nutzt, der für 1 A ausgelegt ist, kann man die Stromgrenze auf 1 A einstellen, indem man die Referenzspannung auf 0,5 V einstellt.

Hinweis: Der Spulenstrom kann sich stark vom Strom der Spannungsversorgung unterscheiden. Daher sollte man nicht den an der Spannungsversorgung gemessenen Strom zur Einstellung der Stromgrenze verwenden.

Übrigens: Obwohl der Motortreiber einen eingebauten Überhitzungsschutz eingebaut hat, kann sehr heiß werden. Also, nicht die Finger verbrennen!

Software: AccelStepper

Ich verwende für die Ansteuerung sehr gern die AccelStepper-Bibliothek. Wenn man im Arduino-Menü Sketch>Bibliothek hinzufügen>Bibliotheken verwalten nach AccelStepper sucht, kann man die aktuelle Version installieren und verwenden.

Beispielcode

#include <AccelStepper.h>

#define dirPin 2
#define stepPin 3
#define motorInterfaceType 1

AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);

void setup() {  
   stepper.setMaxSpeed(1000);
   stepper.setSpeed(150);	
}

void loop() {  
   stepper.runSpeed();
}

In diesem Beispiel wird das Objekt stepper mit am Pin 2 und 3 angelegt. Der Motor dreht konstant in der angelegten Geschwindigkeit von 150 .

Beschleunigung

Im folgenden Beispiel wird der Motor beschleunigt und wieder abgebremst. Danach fährt er in die umgekehrte Richtung. Wie oben im Video angesprochen, kann es durchaus sinnvoll sein, den Motor nicht mit der Endgeschwindigkeit zu starten, sondern zu beschleunigen.

#include <AccelStepper.h>

#define dirPin 2
#define stepPin 3
#define motorInterfaceType 1

AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);

void setup() {  
  stepper.setMaxSpeed(2000);
  stepper.setAcceleration(200);
  stepper.moveTo(5000);
}

void loop() {
    if (stepper.distanceToGo() == 0)
      stepper.moveTo(-stepper.currentPosition());
    stepper.run();
}

Eine vollständige Dokumentation zu genutzten Bibliothek ist übrigens hier zu finden: AccelStepper-Library.

Und was stellen wir jetzt damit an? Wie wäre es damit:


Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book an!

Darin findest du die beliebtesten Arduino-Projekte von StartHardware. Jedes Projekt umfasst Schaltplan, Bauteile, Beschreibung und Code. Für Einsteiger gibt es ein Arduino-Schnellstart-Kapitel und einen kompakten Programmierkurs. Zusätzlich findest du Zwischenkapitel mit Expertenwissen zu den Komponenten, die verwendet werden. Alle Code-Beispiele gibt es natürlich als Download.

Weitere Informationen findest du auf der Produktseite. Klicke jetzt auf den Button, um Details anzusehen.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

 

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.