Nema 17 Stepper Motor vibriert nur?


26.03.2024, 18:44

Ich hatte es auch mit diesem GRBL programm ausprobiert und wenn ich da die axen bewegt habe hat sich der motor auch nur viebriert

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Wenn die Schritte zu schnell kommen, dann vibrieren die Motoren nur noch.

Tatsächlich entspricht die Ansteuerung eines Schrittmotors eines hin und herschalten der Spulen. Damit bekommt der Motor abwechselnd "vorwärts" und "rückwärts" Strom.

Man kann sich das so vorstellen, dass umschalten von "A" nach "B" in den geraden Stellungen nach Rechts drehen lässt und in ungeraden Stellungen nach Links.

Kommen die Schritt zu schnell, bekommt der Motor Strom für die Gegenrichtung bevor der seine "magnetische Raste" verlassen hat und das führt dann dazu, dass der dann Rückwärts drehen will. Und bevor der das kann, kommt wieder Vorwärts.

Entweder lässt man den Motor nur sehr langsam drehen oder sendet die Schritte in einer "Rampe", also beschleunigt die Schritte mit der Zeit wo der Motor und die Mechanik da dran fahrt und Schwung aufbaut.

Du musst also erst mal Delays einbauen in der Schleife die die Schritte taktet.

Danach kannst Du dann mehrere Variablen verwenden die das beschleunigen und bremsen des Motors überwachen und das Delay dann variabel handhaben. Das ist leider ziemlich "tricky" zu verstehen und umzusetzen.

Also versuch es vorher mal mit großen Delays von einigen millsekunden und verringere die Schrittweise um heraus zu finden wie viel "speed" der Motor aus dem Stand heraus verträgt.

Woher ich das weiß:Berufserfahrung
Felix12433443 
Fragesteller
 26.03.2024, 18:33

also danke für die Antwort.

ich habe es mit diesem code hier probiert und der stepper hat mal kurz vibriert und sonnst garnichts gemacht.

keine Ahnung ob das wichtig ist aber der Driver wird nicht heiß. man muss wiklich länger drauf bleiben um zu merken das der driver etwas warm ist.

#define stepPin 2

#define dirPin 5

void setup() {

  pinMode(stepPin, OUTPUT);

  pinMode(dirPin, OUTPUT);

}

void loop() {

  digitalWrite(dirPin, HIGH); // Dreht den Motor in eine Richtung

  for (int x = 0; x < 200; x++) {

    digitalWrite(stepPin, HIGH);

    delay(1000); // Wartet 1000 Millisekunden (1 Sekunde)

    digitalWrite(stepPin, LOW);

    delay(1000);

  }

  delay(1000); // Wartet 1 Sekunde

  digitalWrite(dirPin, LOW); // Dreht den Motor in die andere Richtung

  for (int x = 0; x < 200; x++) {

    digitalWrite(stepPin, HIGH);

    delay(1000);

    digitalWrite(stepPin, LOW);

    delay(1000);

  }

  delay(1000);

}

0
Commodore64  26.03.2024, 19:02
@Felix12433443

Sieht eigentlich gut aus.

Benutze aber bitte das nächste mal die "Code" Formatierung, dann lässt sich das viel leichter lesen und alles bleibt ordentlich eingerückt. Das ist oben bei den Formatierungen das </> Symbol.

Eigentlich sollte der sich sehr langsam erst in die eine Richtung, dann in die andere Richtung drehen. 1000ms sind allerdings etwas sehr lang. 100, also 10 steps pro Sekunde ist bei den meisten Schrittmotoren immer noch mehr als langsam genug.

Jetzt solltest Du prüfen in welcher Reihenfolge die Leitungen für den Motor geschaltet werden. Das kannst Du bei deinen 1s delays auch bequem mit LEDs machen. Dazu lötest Du immer zwei "Antiparallel" zusammen, am besten rot und grün. Antiparallel bedeutet, dass eine anders herum ist. Also Anode auf Kathode der anderen und umgekehrt. Dann ein gemeinsamer Widerstand. Damit kannst Du leicht sehen welche Spule wann Plus und wann Minus bekommt.

Ich vermute, das die Leitungen am Motor falsch angeschlossen sind. Es gibt zwei Arten wie die Spulen betrieben werden.

Unidirektional bedeutet, dass jeder Ausgang nur eingeschaltet werden kann. Dann braucht man einen Unidirektionalen Motor. Der hat "Doppelspulen". Eine für "N" und eine für "S". Die hängen an einer Seite zusammen, meistens an Plus" und über zwei Leitungen aktiviert man dann "N" oder "S" in dem die auf Masse geschaltet werden. Das ganze ist da zwei mal drin. Vertauscht man die Anschlüsse, wird entweder nicht geschaltet oder die falschen Spulen aktiviert.

Du kannst die Spulen mit einem Multimeter ausmessen. Vom Mittelpunkt der Spule hast du zwei gleiche Ohmwerte zu den Enden der Spulen. Von Ende zu Ende gemessen hast Du den doppelten Wert. Bei Unidirektionalem Motor hast Du 2×3 Anschlüsse.

Bidirektional hat nur eine Spule für N und S, hier muss der Strom über eine Brückenschaltung umgepolt werden um zwischen N und S um zu schalten. Diese Motoren haben dann 2×2 Anschlüsse. Die können nicht mit einen Unidirektionaler Ansteuerung verwendet werden.

Umgekehrt kann man einen Unidirektionalen Motor an einer Bidirektionalen Steuerung anschließen. Hier lässt man einfach den Spulenmittelpunkt offen oder benutzt nur eine der beiden Spulen

Also misst Du den Motor erst mal durch um heraus zu finden welche Drähte zusammen zu einer Spule führen.

Hast Du die Spulen richtig angeschlossen, dann Pol mal eine Seite um. Sind beide Spulen des Motors verpolt läuft der nur rückwärts, ist eine Spule verpolt kommt es zum Vorwärts/Rückwärts laufen und damit taktet der nur vor und zurück was dann wie ein Vibrieren ist.

1
Felix12433443 
Fragesteller
 26.03.2024, 22:51
@Commodore64

Also ich habe es hin bekommen wenn ich die zwei Spulen richtig anschließe. an dem Kabel Ausgang vom Stepper Motor ist das so BABA

und an dem Driver BBAA.

Weil ich das richtig anschließe und wie auf dem einen Bild ist alles direkt an den Driver anschließe läuft es wie es soll. Jedoch piepst es also es hat so ein piepst Ton dauerhaft.

und das zweite Problem ist, wenn ich das jetzt mit dem CNC Schild versuche funktioniert es nicht wie vorher obwohl ich die verschiedenen Spulen eigentlich soweit ich weiß richtig angeschlossen habe.

aber weißt du, ob die Pins, wo man das Kabel vom Motor an dem CNC Schild anschließt, ist quasi für den Motor passend macht. So dass ich das direkt anschließen kann.?

0
Commodore64  28.03.2024, 13:23
@Felix12433443
Jedoch piepst es also es hat so ein piepst Ton dauerhaft.

Der Strom wird durch PWM geregelt. Linear würden da heftige Verlustleistungen auftreten, also wird der Strom gepulst und im Mittelwert hat der dann die gewünschte stärke. Je nach PWM Frequenz und deren Verhältnis hat man dann leider ein Piepsen.

Am besten ist natürlich immer voll durch zu steuern und den Strom über die Versorgungsspannung an den Motor an zu passen.

aber weißt du, ob die Pins, wo man das Kabel vom Motor an dem CNC Schild anschließt, ist quasi für den Motor passend macht. So dass ich das direkt anschließen kann.?

Das ist immer das Problem, es gibt keine Norm in welcher Reihenfolge die Anschlüsse auf einen Stecker sein müssen und welcher Stecker dafür verwendet wird. Das macht jeder Hersteller anders. Du brauchst dann Motoren von einem Hersteller für den der Shield designend wurde.

Wenn ich so was für mich selber baue, dann nehme ich einfach einen Klemmenblock für lose Drähte oder Deutsch Stecker wie sie u.a. für Baumaschinen verwendet werden.

0

Ich habe selbst schon Schrittmotoren laufen lassen, allerdings mit den normalen Schrittmotor-Platinen. Die 8825er hatte ich mal im 3D-Drucker, die machen Probleme, weil sie eine sogenannte "Lachs-Haut" beim 3D-Druck machen. Aber alufen sollten die trotzdem.

Schau doch mal,w as Du an Bibliotheken in der Arduino-IDE findest. Ich hatte eine solche Biibliothek, die gar das Anfahren und Abremsen der Motoren steuern ließ.

Die Motoren haben vier Anschlüsse. Es gibt mindestens zwei Arten von Motoren mit dieser Anschluss-Art, und die Kabel sind bei beiden Versionen verdreht zueinander.