AccelStepper, Speed einstellungen

Hey,

ich heute mir das teil auch mal bestellt, schade nicht wenn man es da hat.
jedoch ist die Lieferzeit von 11 bis 24 Wochen natürlich nicht gerade etwas das man es gleich morgen hat, es dauert also noch bis ich es hier habe.

Heute habe ich dann auch noch ein Paar Tests gemacht, mit der Rampe und dem entsprechenden Umpolen am Treiber direkt.

Der Code denn ich verwendet habe:

#include <AccelStepper.h>              // Installiren der AccelStepper LIB 
 int  PUL_A             = 3;            // Tackt Signal  
 int  DIR_A             = 2;            // Drehrichtungs Signal
 AccelStepper Achse_A(1, PUL_A, DIR_A); // (1, PUL, DIR)  Motoren Installiren

void setup()
{
 // Achse_A.setPinsInverted (false, false, false);   
 Achse_A.setAcceleration(1000.0);        // Beschleunigung  (Schritten pro Sekunde)
 Achse_A.setMaxSpeed(4000.0);           // Geschwindigkeit (Schritten pro Sekunde)
 Achse_A.move(320000.0);                // Auszuführende Schritte 
} // void setup

void loop()
{
 Achse_A.run();                         // Schritte ausführen 
} // void loop

Mein Treiber kann nur 1/2 Schritte und somit brauche ich 400 Schritte für eine Umdrehung.

so meine Test Ergebnisse:

TEST 1
Brücke für: DIR +, PUL + und ENA +
Beschleunigung = 200.0
Speed = 2,000.0 endspricht 300 RPM
Schritte = 320,000 (endspricht 800 Umdrehungen)
Gemessene RPM = 286.8 bis 299.0

  • TEST 2*
    Brücke für: DIR +, PUL + und ENA +
    Beschleunigung = 200.0
    Speed = 4,000.0 endspricht RPM 600,00
    Schritte = 320,000 (endspricht 800 Umdrehungen)
    Gemessene RPM = 590.8 bis 592.4

  • TEST 3*
    Brücke für: DIR -, PUL - und ENA -
    Beschleunigung = 200.0
    Speed = 2,000.0 endspricht 300 RPM
    Schritte = 320,000 (endspricht 800 Umdrehungen)
    Gemessene RPM = 299.0 bis 299.4

  • TEST 4*
    Brücke für: DIR -, PUL - und ENA -
    Beschleunigung = 200.0
    Speed = 4,000.0 endspricht RPM 600,00
    Schritte = 320,000 (endspricht 800 Umdrehungen)
    Gemessene RPM = 592.0 bis 592.4

  • TEST 5*
    Brücke für: DIR -, PUL - und ENA -
    Beschleunigung = 800.0
    Speed = 4,000.0 endspricht RPM 600,00
    Schritte = 320,000 (endspricht 800 Umdrehungen)
    Gemessene RPM = 592.0 bis 592.4

  • TEST 6*
    Brücke für: DIR -, PUL - und ENA -
    Beschleunigung = 1000.0
    Speed = 4,000.0 endspricht RPM 600,00
    Schritte = 320,000 (endspricht 800 Umdrehungen)
    Gemessene RPM = 590.0 bis 592.3

Ob ich jetzt Code seitig die Ausgabe Logik die Signale wechsle macht überhaupt keinen unterschied.

Achse_A.setPinsInverted (false, false, false);

Was mich wirklich etwas ärgert ist das die errechneten Drehzahlen nahezu eingehalten wurden auch wenn ich die Beschleunigung geändert habe, jetzt muss ich schauen was für einen Stuss ich vorher gemacht habe und warum sich dabei die Drehzahlen so geändert haben.

Das Passt jetzt erst mal, hoffe ich.

Ich versuche jetzt meine Funktionen die ich alle haben möchte zu erstellen.

Erst mal ein Dies Dank an euch alle, das Ihr mir hier geholfen habt, bei meinen Verwirrungen.

Gruß Mücke

Bei der Drehzahl spielt vielleicht noch der Takt des Arduino eine Rolle, der ja für die Zeit pro Schritt benötigt wird. Dann könntest Du Speed mit einem Faktor korrigieren, der die Abweichung der Taktfrequenz ausgleicht.

DrDiettrich:
Bei der Drehzahl spielt vielleicht noch der Takt des Arduino eine Rolle, der ja für die Zeit pro Schritt benötigt wird. Dann könntest Du Speed mit einem Faktor korrigieren, der die Abweichung der Taktfrequenz ausgleicht.

Meinst du das der Arduino Mega und der Uno im Takt unterschiedlich laufen?

Für die Tests hatte ich ein Uno genommen, damit ich nicht alles aus stecken musste, denn am Mega sind aktuell 3 Motoren angeschlossen und 8 Endschalter.

Gruß Mücke

Wenn die Resonatoren von UNO und Mega um beispielsweise 10% abweichen, gilt das auch für alle zeitrelevanten Vorgänge.