Stepper Motor ungenaue Schritte

Hallo zusammen,

ich bin dabei erstmals Schrittmotoren anzusteuern. Ich habe einen Nema17 Schrittmotor (42Ncm 1.5A 1.8deg) welchen ich mit einem Treiber aus meinem alten 3D-Drucker ansteuere.
Ich habe schon einige kleine Projekte mit dem Motor umgesetzt und musste jedes mal feststellen, dass der Motor nicht die gewünschten Winkel einnimmt.

Um dies zu testen habe ich einen kleinen einfachen Testcode geschrieben:

#include <AccelStepper.h>


AccelStepper stepper1(1, 2, 5); // (Typeof driver: with 2 pins, STEP, DIR)


void setup() {

  stepper1.setMaxSpeed(1200); // Set maximum speed value for the stepper
 stepper1.setAcceleration(2000); // Set acceleration value for the stepper
  stepper1.setCurrentPosition(0); // Set the current position to 0 steps
}

void loop() {


stepper1.moveTo(100);
stepper1.runToPosition();
delay(100);
stepper1.moveTo(0);
stepper1.runToPosition();
delay(100);
}

Folgende Probleme:

Eine umdrehung entspricht doch 200 Schritten. Wenn ich den Motor 200 Schritte drehen lasse, bekomme ich immer nur eine ca. 9/10 Umdrehung. Bei 100 Schritten aus dem Code entsprechend der selbe Fehler.

Bei einer Laufzeit von 10-20 Sekunden beginnt der Motor nichtmehr im selben Abschnitt zu Schwenken, sondern verrutscht in seiner bewegung und schweift sozusagen aus.

Ich habe schon verschiedene Schrittgeschwindigkeiten und Beschleunigungen ausprobiert. Auch die Treiberspannung habe ich mehrmals verändert. Und ich habe mehrere Treiber ausgetestet (alle vom selben Modell).

Hat einer eine Idee wo der Fehler liegen könnte ? Liegt es an meinem Code oder an meiner Hardware. Macht es sinn einen neuen Treiber zu bestellen (A4988) ?

Und auf wieviel A hast du den Treiber eingestellt?

Verstehe ich nicht....

Versorgungsspannung?
Welche?

void loop() 
{
  //stepper1.moveTo(100);
  stepper1.runToPosition(100);
  delay(100);
  //stepper1.moveTo(0);
  stepper1.runToPosition(0);
  delay(100);
}

Damit meine ich die Stellschraube auf dem Teiber welche ich einstellen kann. Wenn ich dir Spannung zwischen der Schraube und dem letzten Pin messe, hatte ich einen Wert von 1,2V. Habe diese Stellschraube aber auch etwas höher und niedriger eingestellt mit dem gleichen Ergebnis. Meinst du das damit, bei der Frage auf wie viel A ich den Treiber eingestellt habe ?

Unter Kenntnis des auf dem Board montiertem Shunt, kannst du aus der eingestellten Referenzspannung den Strom berechnen.
Ich empfehle für erste Tests ca 0.75A

Ich wiederhole:
Welche Versorgungsspannung?
Ich empfehle (provisorisch) ein 12V oder 24V, welches 2A liefen kann

Ich werde das morgen direkt austesten.

Ich habe gerade ein Netzteil mit 12V 1,5A Output. Reicht dieses nicht aus ? bzw. Kann das Netzteil die Ursache für mein Problem sein ?

Kann ich nicht beurteilen.

Mein Codeänderung alleine hilft nicht?

Schrittverlust kann auch auftreten wenn das lastmoment zu hoch bzw Beschleunigung zu hoch ist. Was treibt dein Motor denn an? Oder ist dein test bereits ohne last?

Wieso hast Du 3 Parameter angegeben?

Jain. Mechanisch vom Motor in Fullstep schon. Der Treiber kann aber Halbschritt oder Microschritte machen. Da vervielfachen sich die Schritte ( ganzzahlige Vielfache von 2). Auf ca 180Schritte kommst Du so nicht.

Ich glaube Du hast die Werte für maxspeed und acceleration zu hoch gewählt.
Wie verhält sich Dein Motor wenn Du langsamere werte probierst.
Auch würde ich die Pause zwischen den Bewegungen vergrößeren, nicht daß Du die Richtung änderst bevor der Motor genügend Zeit hatte die vorherige Bewegung zu vollenden.

Grüße Uwe

A sind zu viele Fragen offen...:

Woher sollen wir jetzt wissen welcher Treiber das ist? :wink:

Ja, ein 1,5A Netzteil für einen 1,5A Motor ist wenig, weil Du davon ausgehen musst, dass es nicht wirklich 1,5A bringt.
Ich verstehe das so, dass Du dieses Netzteil nur für die Versorgung des Motors nimmst? Die Nema 17 von Stepper Online mit den 0,42Ncm / 1,5 A sind z.b. oft (meistens) mit 12V Nennspannung angegeben. Solch einen Motor mit 12V und auch noch weniger als 1,5A und steilen Anfahrrampen betreiben, da würde mich eher wundern wenn er keine Schritte verliert.
Ich betreibe meine 3V Nennspannung Stepper mit 36V, - da gehen dann auch steile Rampen... :slight_smile:

Jep, denke ich, in Verbindung mit dieser Stromverorgung, auch...

Das glaube ich nicht!
Das ist eher ein 2,5V Motor-

Nein, die Änderung gibt bei mir einen Compilation error.

Das ist nur ein Test ohne Last..

Den Codeabschnitt mit 3 Parametern habe ich aus einem Guide kopiert.

Ich betreibe den Motor im Fullstep Modus. Auch im Halfstep oder 1/4 Step Modus habe ich das selbe Problem. Es sind keine Volle Umdrehungen, bzw. einige Steps werden wohl nicht ausgeführt. Eine geringeren maxspeed und acceleration habe ich auch schon ausprobiert.

Ich habe nun neue Treiber bestellt und werde es heute Abend mal mit denen Ausprobieren.
Was für ein Netzteil bräuchte ich denn? Auch wenn ich in Zukunft gerne 3-4 gleiche Motoren gleichzeitig ansteuern möchte ?

Motor nur lose auf dem Tisch liegend ? Da hatte ich auch schon mal Schrittverluste, so bald er festgeschraubt war waren des Schrittverlusste weg. Trat aber auch nur bei steilen Rampen auf.

Kommt drauf an wie viel Geld Du für das NT ausgeben möchtest, - billige sind sicher nicht "vollgasfest". Ich habe an der kleinen Fräse aber auch ein billiges, - für fünf 2A Stepper (fahre aber nur 1,8A) 36V 15A.

Ja der Motor lag lose auf dem Tisch. Habe es aber auch mit kleinem Beschleuningungsfaktor versucht.

Kann ich ein 36V 15A NT auch an nur einen Treiber anschließen falls ich nur einen Motor alleine ansteuern möchte ?

Ja. Wenns dann nicht klappt könntest ja mal schreiben was für Treiber du verwendest und nen "Schaltplan" schicken

Da muß ich berichtigen.

  1. ein 1,5A Netzteil sollte schon 1,5A bringen.
  2. ein Stromtreiber wie der A4988 funktioniert etwas wie ein StepDown Wandler. Der notwendige Strom vom Netzteiler wird kleiner je größer die Motorstromversorgungsspannung ist.
    Der Treiber gibt dem Motor (beide Wicklungen zusammen) max 1,41 des eingestellten Stromes. Vom Netzteil kommen dann aber nur ca 1/3 dieses Stromes ( bei 4V Motor und 12V Netzteil) .

Je höher die Motorspannung desto weniger Einfluß hat die Induktivität des Motors in Bezug auf Verlangsamung des Anstieg des Wicklungsstromes. Darum hat 36V bei einem 3V Motor sinn.

Ja kannst Du, aber es reicht sicher ein 36V 0,5A.

Grüße Uwe

Ein 0,5A Netzteil reicht für 1-4 Motoren, auch wenn auf der Beschreibung der Motoren 1,5A steht?

Ich kenne mich in dem Themenfeld leider nicht so gut aus und wollte deshalb sicher gehen, bevor ich das passende NT bestelle.

sollte... ich weiss nicht wie viele NT ich hier rumliegen habe die nicht das bringen was drauf steht, - sind meistens solche die irgendwo dabei waren. :slight_smile:

Nach meiner Erfahrung nein...
Beim A4988 weiß ich auch nicht (verwende keine) ob 36V noch gehen. Das DaBla sagt max 35V, einige NT kann man zwar etwas runter drehen, - ich habe aber gerne etwas Abstand zum Limit.

Nein.
Du hast wegen einem gefragt.

Grüeß Uwe

Vermutlich, weil das so total korrekt ist.

Du hast wahr!
Dieses war gemeint:

void loop()
{
  stepper1. runToNewPosition(100);
  delay(100);
  stepper1. runToNewPosition(0);
  delay(100);
}

Resonanzen können zu solchen Probleme führen
z.B. Last schafft dann Abhilfe.

Kann, muss aber nicht. (wird es auch wohl nicht)
Im Vollschritt wird immer nur 1 Spule bestromt
Bei Mikroschritten sieht das anders aus,

Dein A4988 kocht bei 1,5A sowieso auf.
Der muss deutlich niedriger eingestellt werden. ca. auf die Hälfte, aber das sagte ich doch schon.
Darum kannst du auch NIEMALS mit dem Treiber das volle Motor Dreh-Haltemoment erreichen.