ich möchte die Geschwindigkeit von 2 NEMA17 Motoren mit 0.4 Ampere pro Phase mit DRV8825 Treibern steuern. Ich verwende eine 12V 5A Spannungsquelle, genug Power sollte also vorhanden sein. Für die Programmierung nutze ich die AccelStepper Bibliothek.
Das Ansteuern funktioniert auch mit einem Motor soweit, ich kann die Geschwindigkeit (Mit 1/32 Microstepping) von kleinen (1000 Steps/Sekunde) bis großen (20000 Steps/Sekunde) Werten steuern und der Motor dreht auch immer schneller so wie gewollt.
Wenn ich aber beide Motoren mit einer hohen Geschwindigkeit ansteuere, drehen beide mit einer niedrigeren Geschwindigkeit als sie sollten. Als Beispiel:
Wenn ich beide mit 1000 Steps/Sekunde ansteuere, drehen beide mit einer niedrigen Geschwindigkeit.
Wenn ich einen mit 1000 Steps/Sekunde und einen mit 20000 Steps/Sekunde ansteuere dreht der eine langsam und der andere schnell, also auch so wie sie sollten
Wenn ich aber beide mit 20000 Steps/Sekunde ansteuere, drehen beide mit einer verringerten Geschwindigkeit als 20000 Steps/Sekunde, also beide werden langsamer im Vergleich wenn ich nur einen Motor mit 20000 Steps/Sekunde ansteuere
Ich teste das Ganze aktuell mit einem Breadboard, kann es sein dass die Stromstärke dadurch begrenzt wird?
Ich möchte beide Motoren gleichzeitig mit höheren Geschwindigkeiten steuern aber wie beschrieben, verringert sich diese bei beiden.
The fastest motor speed that can be reliably supported is about 4000 steps per second at a clock frequency of 16 MHz on Arduino such as Uno etc. Faster processors can support faster stepping speeds. However, any speed less than that down to very slow speeds (much less than one per second) are also supported, provided the run() function is called frequently enough to step the motor whenever required for the speed set. Calling setAcceleration() is expensive, since it requires a square root to be calculated.
NEMA17 sagt absolut nichts über die elektrischen Eigenschaften eines Steppers. Das ist nur ein Maß des Befestigungsflansches. 0,4A pro Phase deutet aber darauf hin, dass der für dein Netzteil eher nicht geeignet ist. Weniger wegen des Stroms, sondern wegen der 12V. Der DRV8825 braucht eine deutlich höhere Versorgungsspannung als die Nennspannung des Motors um ordentlich zu funktionieren.
Du solltest mal einen Link zu den Motordaten posten.
Und wie schon angemerkt, wäre wichtig zu wissen, welchen Arduino Du einsetzt. Grundsätzlich ist es bei der Accelstepper so, dass die maximale Geschwindigkeit mit jedem zusätzlichen Stepper sinkt. Auch deinen Sketch zu kennen wäre hilfreich.
Ich verwende aktuell zum Testen einen UNO, in der Applikation wollte ich 4 Motoren mit einem Mega ansteuern.
Hier ist der Link zu den Motoren:
Ich habe noch kein richtiges Programm geschrieben sondern nur die AccelStepper initialisiert, die Methode setSpeed() im Setup und die Methode run() im Loop aufgerufen.
Wenn es an den 16MHz liegt, werde ich mich wohl nach etwas schnellerem wie einem Teensy umsehen müssen.
Gibt es eine Möglichkeit beim Mega, um das Ganze noch etwas zu "beschleunigen"?
Mit einem UNO und AccelStepper kannst Du niemals 20000 Steps/sec erreichen. So ca 5000 (für einen Motor !) ist das Maximum, wenn der UNO sonst nichts macht.
Zeig mal deinen Mini-Sketch, denn bereits das passt nicht zsammen.
Der Mega hat zwar mehr Speicher, mehr Peripherie und mehr Pins. Der Prozessorkern ist aber der gleiche, also auch nicht schneller.
Der kann da sicherlich wesentlich mehr. Ein Alternative wäre evtl. auch ein günstigerer ESP32. Meine MobaTools erreichen da bis zu 30000 Steps/sec für 6 Stepper.
Blockzitat
Mit einem UNO und AccelStepper kannst Du niemals 20000 Steps/sec erreichen. So ca 5000 (für einen Motor !) ist das Maximum, wenn der UNO sonst nichts macht.
Ich habe gerade eben mal nachgemessen (Ich verwende 1/32 Microstepping):
Bei setSpeed(5000) dreht sich der Motor ca. 8 Umdrehungen in 10 Sekunden
Bei setSpeed(10000) dreht sich der Motor ca. 16 Umdrehungen in 10 Sekunden
Bei setSpeed(20000) dreht sich der Motor ca. 25 Umdrehungen in 10 Sekunden
--> d.h. iwo zwischen 10000 und 20000 ist die maximale Geschwindigkeit
Blockzitat
Zeig mal deinen Mini-Sketch, denn bereits das passt nicht zusammen.
Da ich mein Projekt mobil betreiben will und keine 300€+ für einen Akku ausgeben will, kann ich maximal mit 19V und 3.5 Ampere arbeiten, mehr liefert der Akku den ich habe nicht.
Mit den 2,5 Umdrehungen pro Sekunde wäre ich auch mehr als zufrieden wenn das alle 4 Motoren schaffen.
Blockzitat
Der kann da sicherlich wesentlich mehr. Ein Alternative wäre evtl. auch ein günstigerer ESP32. Meine MobaTools erreichen da bis zu 30000 Steps/sec für 6 Stepper.
Das hört sich so an als wären mit dem ESP32 2 Umdrehungen pro Sekunde für die 4 Motoren möglich. Das wäre das Ziel welches ich mir vorstelle.
Du verwendest nicht run, sondern runSpeed. Das ist etwas anderes, Da kann die Accelstepper höhere Geschwindigkeiten, macht aber keine Beschleunigungs- und Bremsrampen. Also nichts mit 'Accel'Stepper. Im Prinzip könntest Du da die ganze Steperzeugung auch selbst machen - dann geht's noch etwas schneller. Frage ist allerdings, was der Arduino im fertigen Projekt sonst noch alles machen soll.
Dann solltest Du einen anderen Stepper verwenden. 19V bei deinem 12V Stepper ist mit dem DRV8825 ziemlich suboptimal.