In Vorbereitung auf ein aufregendes Kundenprojekt, bei dem der leistungsstarke Mikrocontroller ESP32 zum Einsatz kommen soll, habe ich mich zunächst dafür entschieden, meine Erfahrungen mit dem Arduino zu vertiefen. Insbesondere interessierte mich die Ansteuerung des Nema 17 Schrittmotors, und hierbei erwies sich der DM420 Schrittmotortreiber als ideale Wahl. In diesem Beitrag teile ich meine Erkenntnisse und Praxiserfahrungen, wie man den Nema 17 Schrittmotor erfolgreich mit dem DM420 Treiber am Arduino einsetzt. Diese ersten Schritte ermöglichten es mir, eine solide Grundlage zu schaffen, bevor ich mich auf das eigentliche Kundenprojekt mit dem ESP32 vorbereite.
Bitte beachte, dass ich aufgrund von Vertraulichkeitsvereinbarungen zum aktuellen Kundenprojekt keine weiteren Informationen oder Einzelheiten preisgeben kann. Der Fokus dieses Beitrags liegt daher ausschließlich auf meinen persönlichen Erfahrungen und Erkenntnissen bei der Verwendung des Nema 17 Schrittmotors mit dem DM420 Schrittmotortreiber am Arduino. Ich bitte um Verständnis dafür, dass ich vorerst keine weiteren Informationen zum eigentlichen Projekt offenlegen kann.
Inhaltsverzeichnis
- Erforderliche Komponenten: Nema 17, DM420, Arduino
- Vorsicht beim Wiederverwenden eines Mikrocontrollers aus alten Projekten!
- Schritt für Schritt: Anschließen von Nema 17, DM420 und Arduino
- Programmieren in der Arduino IDE
- Quellenangabe
Erforderliche Komponenten: Nema 17, DM420, Arduino
Bevor wir die Schaltung am Arduino UNO R3 aufbauen können, stellen wir sicher, dass alle erforderlichen Komponenten bereitstehen:
- eine Arduino UNO R3*,
- ein USB-Datenkabel*,
- ein Schrittmotor Nema 17*,
- ein Schrittmotortreiber DM420*,
- ein Netzteil mit 12V* (mit min. 1,7 A Leistung),
- diverse Breadboardkabel*, männlich – männlich
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Vorsicht beim Wiederverwenden eines Mikrocontrollers aus alten Projekten!
Wenn du wie ich deine Mikrocontroller in mehreren Projekten verwendest, dann solltest du bevor du die Schaltung aufbaust, den Speicher des Mikrocontrollers leeren.
Das geht am einfachsten, indem du ein leerer Sketch / Programm auf diesen mit deiner Entwicklungsumgebung aufspielst.
void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: }
Schritt für Schritt: Anschließen von Nema 17, DM420 und Arduino
Nachdem wir alle erforderlichen Komponenten zusammengestellt haben, bauen wir die Schaltung auf.
Bauteil | Arduino UNO R3 |
---|---|
DM420 | |
PUL | digitaler Pin D5 |
DIR | digitaler Pin D4 |
+5V | 5V |
ENBL | digitaler Pin D3 |
Taster – rechts | |
Pin 1 | GND |
Pin 2 | digitaler Pin D6 |
Taster – links | |
Pin 1 | GND |
Pin 2 | digitaler Pin D7 |
Anschluss des Schrittmotors Nema 17 an DM420
Der Schrittmotor Nema 17 verfügt über vier Kabel, welche an den Motortreiber DM420 wie folgt angeschlossen werden:
Schrittmotor Nema 17 | Motortreiber DM420 |
---|---|
schwarz | A+ |
grün | A- |
rot | B+ |
blau | B- |
Spannungsversorgung für den Motor Nema 17
Der Nema 17 benötigt eine 12V DC (Gleichstrom) Spannung, welche an die Pins DC+ & DC- angeschlossen werden.
DIP Switch Einstellungen
Am Schrittmotortreiber findest du sieben DIP Switches welches je nach verwendeten Schrittmotor eingestellt werden muss. Bei den Konfigurationseinstellungen (SW5=OFF, SW6=ON, SW7=ON) des DM420 Schrittmotortreibers sind 400 Impulse (durch das PUL-Eingangssignal) erforderlich, um eine vollständige Umdrehung des Motors zu erreichen.
Programmieren in der Arduino IDE
Das nachfolgende Programm habe ich von einer Seite entnommen (sie Abschnitt Quellenangabe) und modifiziert.
#define PUL 5 // PUL > D5 #define DIR 4 // DIR > D4 (Drehrichtung) #define ENBL 3 // ENBL > D3 (Freigabe) #define tasterRechts 6 // D6 (Taster grün) #define tasterLinks 7 // D7 (Taster blau) #define drehpoti A0 //Drehpotentiometer am analogen Pin A0 const int PULSLAENGE = 500; //wird über den Drehpoti gesetzt int geschwindigkeit = 0; void setup() { pinMode(PUL, OUTPUT); pinMode(DIR, OUTPUT); pinMode(ENBL, OUTPUT); pinMode(tasterRechts, INPUT_PULLUP); pinMode(tasterLinks, INPUT_PULLUP); digitalWrite(ENBL, HIGH); } void schrittBewegen(int drehrichtung) { //Drehrichtung //HIGH == links //LOW == rechts digitalWrite(DIR, drehrichtung); digitalWrite(PUL, HIGH); delayMicroseconds(PULSLAENGE); digitalWrite(PUL, LOW); delayMicroseconds(geschwindigkeit); } void loop() { //lesen des Drehpotentiometers für die Geschwindigkeit int drehpotiValue = analogRead(drehpoti); geschwindigkeit = drehpotiValue * 15 + 500; // nach rechts drehen if (digitalRead(tasterRechts) == LOW) { schrittBewegen(HIGH); } // nach links drehen if (digitalRead(tasterLinks) == LOW) { schrittBewegen(LOW); } }
Der Code bewirkt das, wenn wir den grünen Taster betätigen, der Schrittmotor nach rechts dreht und beim blauen Taster der Schrittmotor nach links dreht. Über den Drehpotentiometer kann man die Geschwindigkeit des Motors einstellen (diese erkennt man, wenn man den Taster gedrückt hält).
Quellenangabe
Für diesen Beitrag habe ich den Beitrag der Seite ACT Schrittmotor mit DM420 Treiber verwendet. Dort wird zusätzlich noch das Programm mit einem automatischen Lauf gezeigt, welchen ich hier jedoch nicht benötige.