Schrittmotor-Steuerung für meine HO Anlage

Hallo

Bin dabei mich mit Schrittmotoren zu beschäftigen, das Neuland für mich ist.

Mein Ziel, Bewegungsabläufe auf der Modelleisenbahn Anlage zu gestalten.

Habe mich schon mit Servos beschäftigt und gute Erfahrungen gesammelt. Was
mich an den Servos stört ist der begrenzte Bereich bis max. 180 Grad.

Ich habe mir von Funduino einen Schrittmotor mit Treiber-Platine (ULN2003) gekauft.
Da der Schrittmotor ein Getriebe hat, ist die Auflösung mit 2048 Schritte pro Umdrehung für meine Projekte genau richtig.
Nachfolgend der einfache Sketch der den Schrittmotor eine ganzen Umdrehung vor- und zurückdrehen lässt.

#include <Stepper.h>

int SPMU = 32;

Stepper myStepper(SPMU, 2,3,4,5);

void setup()
{
myStepper.setSpeed(500);
}

void loop() {
myStepper.step(2048);
delay(500);

myStepper.step(-2048);
delay(500);
}

Da ich den Sketch übernommen habe, meine erste Frage an euch

Was bedeutet: SPMU = 32

Würde mich über eine Antwort freuen.

Danke im Voraus.

SPMU würde ich als Schritte Pro Umdrehung interpretieren. denn das ist das Feld wo man normalerweise die Schritte pro umdrehung angibt
MFG

Was bedeutet: SPMU = 32

guckst du in "Stepper.h" was der erste Parameter in  Stepper(32, 2,3,4,5);   bedeutet.

Als Bibliothek empfehle ich Dir auch AccelStepper, da damit, wie der Name sagt, Beschleunigungen und Verzögerungen realisiert werden können. Habe ich bei meinem Kohlekranfunktionsmodell verwendet.

AccelStepper stepper(AccelStepper::HALF4WIRE, 2,3,4,5);

Hallo,

dass SPMU Schritte Pro Umdrehung bedeutet

und der erste Parameter nach Stepper myStepper(SPMU, 2,3,4,5) die Anzahl der Schritte festlegt ist mir klar.

Was ich nicht verstehe ist das im Loop die Anzahl der Schritte mit 2048 angegeben wird.

Die Klassenbeschreibung nutzt einen Begriff (number_of_steps) für zwei unterschiedliche Bedeutungen:

Stepper(number_of_steps, ...) Schritte für eine Umdrehung, bei Dir 2048, bei mir 4096. Wird für setSpeed() in UPM benötigt.

step(number_of_steps) Schritte, die der Motor ab der aktuellen Position drehen soll.

Stepper myStepper(2048, 2,3,4,5); 
...
myStepper.step(2048); // mache eine Umdrehung

Hallo,

bin ein Schritt mit meiner Schrittmotor Steuerung weiter gekommen.
Ich habe das Datenblatt gefunden in dem nachfolgende Werte stehen:

Stride Angel 5.625°/64
Einzelschritte 2048 pro Umdrehung

Ich habe statt „ int SPMU = 32; “ jetzt „ int SPMU = 64; “ eingegeben.

Der Schrittmotor läuft jetzt ruhiger, braucht dafür aber länger das ich mit
„ myStepper.setSpeed(500); „ korrigieren kann.

Gruß BJS

Du musst unterscheiden zwischen Stepperschritte und Getriebeausgang.

Habs mal durchgerechnet nach den Zahlen, das Getriebe scheint 1:32 zu sein. Der Motor ein 64 Schritt/U Typ. Der Motor macht also 2048 Steps = 32 Umdrehungen bis das Getriebe eine Umdrehung macht.

Die Einstellung zwischen Steps/U und speed ergibt die Stepperfrequenz mit der gefahren wird. Man sollte aber möglichst nicht die Getriebefrequenz einstellen. Man kommt sonst durcheinander, weil eigentlich keinen Motor gibt der 2048 Steps/U hat. 400Steps/U, max 800Steps/U kenn ich. Alles weitere sind Microsteps, aber das ist eine andere Baustelle.

Rechne dann deine gewünschte Drehzahl mit dem Getriebe zusammen um zu einer Motordrehzahl und stell dir dann ein. So wirst du auch zukünftig saubere Ergebnisse bekommen und deine Erfahrung weiter verwenden können.