Digitaler Schrittmotortreiber DM452T // Arduino

#7711883
Lesenswert?

Hallo zusammen,

ich bin neu auf dem Gebiet der Schrittmotoren und langsam am Verzweifeln. Folgendes Problem: Ich möchte einen NEMA17-Motor (17HE19-2004S) in Verbindung mit einem DM542T-Treiber betreiben. Das Ganze wird über ein LRS-50-24 Netzteil versorgt. Als Controller verwende ich das UNO R3 von Elegoo.

Ich habe nun alles nach bestem Wissen und Gewissen miteinander verbunden, aber ich bekomme aus dem Motor nur ein leichtes Vibrieren heraus. Er will sich nicht drehen.

Folgende Einstellungen habe ich gewählt: Die DIP-Schalter am Treiber habe ich auf 200 Schritte/Umdrehung und 1,69 A Effektivstrom gemäß Anleitung eingestellt. PUL+ ist auf PIN2 und DIR+ auf PIN3 gelegt. PUL- sowie DIR- habe ich zusammen mit V- vom Netzteil und Treiber auf GND vom Board gelegt. Die ENA+-Pins habe ich nicht verwendet.

Hoffe mir kann jemand weiterhelfen.

Danke und Gruß Tobi

Hier noch das Sketch:

1
#define stepPin 2      // Der Pin, der das Step-Signal sendet
2
#define dirPin 3       // Der Pin, der das Richtungssignal sendet
3

4
void setup() {
5
  pinMode(stepPin, OUTPUT); // Setzt den Step-Pin als Ausgang
6
  pinMode(dirPin, OUTPUT);  // Setzt den Richtungs-Pin als Ausgang
7
  
8
  digitalWrite(dirPin, HIGH); // Setzt die Drehrichtung auf eine Richtung (z.B. Uhrzeigersinn)
9
}
10

11
void loop() {
12
  // Bewegung im Uhrzeigersinn
13
  for (int i = 0; i < 2000; i++) { // Anzahl der Schritte für eine Umdrehung (je nach Mikroschritt-Einstellung)
14
    digitalWrite(stepPin, HIGH);
15
    delayMicroseconds(500); // Pulslänge
16
    digitalWrite(stepPin, LOW);
17
    delayMicroseconds(500); // Wartezeit zwischen den Pulsen
18
  }
19
  
20
  delay(1000); // Eine Sekunde warten
21
  
22
  // Richtung ändern
23
  digitalWrite(dirPin, LOW); // Setzt die Drehrichtung auf die andere Richtung (z.B. gegen den Uhrzeigersinn)
24
  
25
  // Bewegung gegen den Uhrzeigersinn
26
  for (int i = 0; i < 2000; i++) { // Dieselbe Anzahl der Schritte in die entgegengesetzte Richtung
27
    digitalWrite(stepPin, HIGH);
28
    delayMicroseconds(500); // Pulslänge
29
    digitalWrite(stepPin, LOW);
30
    delayMicroseconds(500); // Wartezeit zwischen den Pulsen
31
  }
32

33
  delay(1000); // Eine Sekunde warten
34
}
Angehängte Dateien:
#7711890
Lesenswert?

Mir sieht es so aus, als ob die Motorphasen nicht richtig an den zugehörigen Treiberausgängen angeschlossen wären. Im mittleren Bild sieht das irgendwie nicht richtig aus. Die Brückenausgänge A ist einer Windung zugehörig und B die Andere. Siehe hier:

https://www.linengineering.com/resources/wiring-diagrams

Miß mal mit dem Ohmmeter die Motor Windungen. Dann überprüfe ob die A und B Paare Ausgänge jeweils an einer Windung hängen und nicht kreuzweise.

Rot - A+ Blau - A- Grün - B+ Schwarz - B-

Falls der Motor dann in die falsche Richtung läuft, wechsle die Polung einer Windung.

Das wäre vielleicht ein guter Fehlersuche Ansatz.

Ich habe eine sehr ähnliche Steuereinheit und die funktioniert gut.

https://3ddistributed.com/duet-wifi/stepper-motor-wire-color-and-coil-pairs/ https://halldweb.jlab.org/wiki/images/c/c1/Lin5718wiring.pdf

#7711896
Lesenswert?

Gerhard O. schrieb:

https://www.linengineering.com/resources/wiring-diagrams Rot - A+ Blau - A- Grün - B+ Schwarz - B-

Es sieht so aus, als ob stepperonline die Sache etwas anders macht. Im Datenblatt des Motors (https://www.omc-stepperonline.com/index.php?route=product/product/get_file&file=2731/17HE19-2004S(1).pdf) passen die Farben so, wie sie angeschlossen sind Rot - B- Blau - A- Grün - B+ Schwarz - A+

Dennoch ist es sicher eine gute Idee, das mal durchzumessen, um sicher zu gehen:

Gerhard O. schrieb:

Miß mal mit dem Ohmmeter die Motor Windungen. Dann überprüfe ob die A und B Paare Ausgänge jeweils an einer Windung hängen und nicht kreuzweise.

Was mir noch aufgefallen ist: Der Motor will 2A pro Phase sehen. Du hast es auf ~1,7Aeff/2,3Apeak eingestellt. IMHO sollte das durchaus reichen, der Motor sich bewegen. Aber erhöhe mal versuchsweise den eingestellten Strom am Schrittmotortreiber.

Und verringere im Arduino Sketch mal die Schrittfrequenz. 2x500µs entspricht 1000 Schritt pro Sekunde, also 5 Umdrehungen pro Sekunde aus dem Stand. Für den Anfang, um grundsätzliche Fehler auszuschließen, würde ich da weniger empfehlen. Erhöhe doch beispielsweise einfach versuchsweise die Zeiten mal um den Faktor 5

#7711909
Lesenswert?

Tobias schrieb:

Hoffe mir kann jemand weiterhelfen.

Du könntest eine höhere Untersetzung (Mikroschrittbetrieb) probieren, damit der Motor nicht so hart angesteuert wird.

Tobias S. schrieb:

Was mir noch aufgefallen ist: Der Motor will 2A pro Phase sehen. Du hast es auf ~1,7Aeff/2,3Apeak eingestellt.

Wenn der Motor ohne Last auf dem Tisch steht, kann der volle Strom eher kontraproduktiv sein, weil im Vollschrittbetrieb die Schläge dann noch härter sind und entsprechend viele Schwingungen angeregt werden.

Moderator (Firma: Titel) Persönliche Seite #7711926
Lesenswert?

Tobias schrieb:

aber ich bekomme aus dem Motor nur ein leichtes Vibrieren heraus. delayMicroseconds(500); // Pulslänge

Hast du da auch mal unterschiedliche und deutlich längere Zeiten probiert?

BTW: Du hast da noch einen SW-Fehler drin:

digitalWrite(dirPin, LOW);

Wenn es mal läuft wird dein Programm dafür sorgen, dass der Motor in die eine Richtung A fährt, dann wartet, und von da an dann mit Pausen immer in die andere Richtung B fährt (und eben nicht mehr nach A umdreht).

Tobias S. schrieb:

Gerhard O. schrieb:

https://www.linengineering.com/resources/wiring-diagrams Rot - A+ Blau - A- Grün - B+ Schwarz - B-

Es sieht so aus, als ob stepperonline die Sache etwas anders macht

Ich würde da nicht auf irgendwelche Daten von irgendwoher aus dem Internet vertrauen, sondern einfach mal mit einem Ohmmeter die beiden Spulen ausmessen und dann an die entsprechenden Klemmen anschließen. Die Trefferquote liegt ziemlich hoch: mit 1 einzigen Messung kann man feststellen, welches die beiden Spulen denn tatsächlich sind. Die nachfolgenden Messungen bestätigen dann nur noch, ob die beiden Wicklungen den selben Widerstand oder evtl. einen Kurzschluss haben.

Tobias S. schrieb:

Was mir noch aufgefallen ist: Der Motor will 2A pro Phase sehen.

Wenn er dann mal das volle Drehmoment braucht. Für den Leerlauf reichen auch 200mA.

#7712312
Lesenswert?

Heiner B. schrieb:

5V/24V Schalter auf 5V gestellt?

War der Meinung, dass sich der Wert auf die Ausgangsspannung bezieht... Einmal in der Anleitung nachgelesen... siehe da, der Wert bezieht sich auf die Steuersignalspannung, also in meinem Fall 5V.

Erstes Problem also gelöst.

Tobias S. schrieb:

Dennoch ist es sicher eine gute Idee, das mal durchzumessen, um sicher zu gehen:

Ich habe noch einmal nachgemessen und tatsächlich war es anders als auf dem Datenblatt von Stepperonline beschrieben.

Mit den beiden Anpassungen läuft der Motor nun perfekt.

Vielen Dank an alle. :)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren