Nema 17 Schrittmotor zittert nur, A4988, langsamer FullStep Mode

Ich blicks grad echt nicht mehr was schief läuft.
Sobald ich meinen Stepper (Nema 17, 3,4V, 1,7A), angetrieben von einem A4988, im FullStepp-Mode sehr langsam laufen lasse (1 U/Sek. oder noch langsamer mit 1/10 U/Sek.) also einer Frequenz von 20-200 Hz so zittert er nur. Habs dann mal mit 1000Hz getestet und da dreht er sich wieder. Wenn ich an dem Poti auf dem A4988 "rumdrehe" dann kann man Ihn bei den 20-200 Hz zum Laufen bekommen, dafür geht er dann aber bei 1000 HZ nicht mehr... naja und jedes mal am Poti rumdrehen um bestimmte Geschwindigkeiten zu erreichen ist sehr unkomfortabel.
Im 1/2, 1/4, 1/16 etc. Stepmode funktioniert er um einiges besser. Da musste ich bisher nichts am Poti verstellen.

Hat jemand eine Idee warum im FullStep Mode bis auf ein zittern nichts mehr geht?

Hört sich für mich wie ein Decay Problem an. Wenn du das Polulu Board hast, dann ist ROSC auf Ground, dass heißt laut Datenblatt:

[...] the decay mode is automatic Mixed decay for all step modes except full step whic is set to slow decay.

Bevor wir uns den Kopf darüber zerbrechen, was das ist und was man jetzt machen: Warum full stepping bei geringer Geschwindigkeit? Dafür gibt es ja quasi microstepping

Mit welcher Spannung betreibst Du den Treiber?
Hat das Netzteil genug Strom für den Motor (2,5A)?
Grüße Uwe

Wenn ich an dem Poti auf dem A4988 "rumdrehe" dann kann man Ihn bei den 20-200 Hz zum Laufen bekommen

Das ist normalerweise keine gute Idee, weil du damit den durch den Motor fließenden Strom (der dann auch immer fließt, auch wenn der Motor steht) bestimmst.

Um einen Stepper stabil und solide zu betreiben, sollte man vorher ein paar Betriebsdaten festlegen
Dazu gehören:

  • Max. Strom, der durch den Motor fließen darf (1,7A für deinen Motor)
  • Drehzahl (min .. max)
  • Microsteps (bei full step ist die maximal erreichbare Drehzahl am höchsten, allerdings ist der Motor dann auch am lautesten)
  • Netzteil: Je höher die Spannung, desto höhere Drehzahlen kann man im lfd. Betrieb erreichen (der Strom wird durch den einmal eingestellten Referenzwert im Treiber festgelegt); außerdem sollte das Netzteil noch Stromreserven haben; Uwe's Wert von 2,5A ist schon knapp, da der 1,7A Wert sich auf eine Spule im Motor bezieht und du hast davon 2 in einem Stepper.
  • Treiber: A4988 ist ok, aber in deinem Fall nur mit aktiver Kühlung; die Dinger werden ab 0,6A bereits richtig heiß, wenn keine Kühlung stattfindet

Wenn du einen extremen Drehzahlbereich abdecken willst, dann kannst du auch mit den Microsteps per Software "spielen":

  • maximaler speed ist wie gesagt nur bei full step erreichbar
  • minimaler speed bei möglichst "hohem" microstepping

Wenn du das Datenblatt des A4988 gelesen hast, musst du unbedingt bei der Begrenzung des Stroms beachten, dass

If you instead want the current through each coil to be 1 A in full-step mode, you would need to set the current limit to be 40% higher, or 1.4 A, since the coils are limited to approximately 70% of the set current limit in full-step mode

Heißt, dass du im Full step mode den Strom um ca. 40% erhöhen musst (ggü. microstepping).
Bedeutet aber, wenn du diesen Wert auf maximal einstellst, dass du beim Umschalten (würde ja auch per Software gehen) auf microstepping der maximal zulässige Strom durch den Motor um genau diese 40% überschritten wird und du damit den Stepper auf kurze oder mittlere Sicht frittierst.

Wenn deine Anwendung diesen weiten Drehzahlbereich überdecken soll, dann stelle am besten das Microstepping auf 1/2 für die hohen Drehzahlen und auf 1/16, wenn du die niedrigen Drehzahlen fahren willst (kann man per Software machen).

Hinweis:
Bei der Einstellung des max. Stroms per Vref-Methode beachten, welche Formel du nimmst, um den gewünschten Strom per Spannungsmessung festzulegen. Da gibt es inzwischen (auch bei Original Pololus) unterschiedliche Formeln wegen unterschiedlich verbauter Widerstände. Siehe dazu Pololu's Webseite oder lies dir meinen Beitrag im engl.sprachigen Forum durch:
http://forum.arduino.cc/index.php?topic=415724.0

Danke für die schnellen Antworten.
Momentan hängt ein 11.1V Lipo Akku dran der bis ca. 20 Amper liefern kann.
Allerdings hängt dieser an jeweils (Plus und Minus) 2 billigen China-Kabel die iwas mit 5-7 Litzen. Habs mir nicht ausgerechnet ob er da knappe 2 Amper schaffen kann da sich bei hohen Frequenzen der Motor ja ordentlich drehte und ich je nach Masse, die ich in Bewegung versetzte, bis 2200U/min erreichen konnte. Torque ist bei der Geschwindigkeit natürlich sogut wie Null. Erst seitdem ich in den Fullstep-Mode gewechselt habe, habe ich diese Proleme bekommen.

Mit den Geschwindigkeiten habe ich ebenfalls noch zu kämpfen da ich keine ordentliche lineare ("smoothe") Beschleunigung hinbekommt die von der Zeit abhängig ist. Ich möchte also mit z.B. 1000Steps/s² auf eine Geschwindigkeit von 3000 Steps/s beschleunigen. Heißt, dass der Motor in 3 Sek. von 0 auf 3000 Steps/s beschleunigt haben muss... bisher hatte ich letztendlich immer eine Art exponentielle Beschleunigung die ca. 80% der Zeit sehr langsam beschleunigt und in den letzten 20% der Zeit dann voll aufdreht. Werde dieses Problem aber in einem anderen Thread behandeln.

@rpt007: Werde mir deinen englischen Beitrag zur Konfiguration des A4988 mal noch anschauen.

Für Beschleunigung/Entschleunigung gibt es eine Bibliothek: AccelStepper.
Die kann aber max. 4000 pulse/min pulse/sec bei einem 16MHz Arduino verkraften.

Ich habe die bei mir in mehreren Projekten im Einsatz, wo Sanftanlauf gefordert ist; Speed ist auch ok für meine Anwendung, obwohl ich im 1/8 microstepping arbeite.

Ergibt dann bei 4000 steps und 200 steps/Umdrehung (volle Schritte):
RPM = 4000/200/8 * 60 = 150 und das reicht in meinem Projekt voll aus.

4000 pulse/min oder pro sekunde?
Grüße Uwe

Ups, natürlich 4000 pulse/sec. Habe es durchgestrichen und korrigiert, so dass man weiß, auf was sich deine Korrektur bezieht.

Danke Uwe.