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
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
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
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.
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.
Tobias schrieb:> digitalWrite(stepPin, HIGH);> delayMicroseconds(500); // Pulslänge> digitalWrite(stepPin, LOW);> delayMicroseconds(500); // Wartezeit zwischen den Pulsen
Gehst du da mit 1kHz ohne Beschleunigungsrampe dran? Das ist zu viel.
Versuch mal eher 200Hz. Oder wie schon geraten wurde, die Mikroschritte
höher stellen.
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. :)