4 Schrittmotoren unabhängig ansteuern

Ich baue mir gerade eine Mechanik mit 4 Motoren.(Nema17)
Ich habe gerade erste Test mit einem Arduino(KeeYees) und einem CNC-Shield gemacht.
( Ich hab die 4 Achse nicht zum laufen gekriegt )
Jetzt hab ich das CNC-Shield geschrottet weil ich mit Ein und Ausgängen experimentiert habe.

Welche neue Hardware würdet Ihr für 4 Motoren empfehlen

Ziel: 4 Motoren, 3 Endschalter, 3 Anwesenheitssensoren
soweit einfache Motoren-Bewegungen

Adruino UNO oder Mega
CNC-Shield oder so was wie TB6600

Ein paar mehr Infos bräuchte man schon. Vor allem ein Link zu den Motoren. Nema17 sagt nur was über die Mechanik, aber nichts über die elektrischen Eigenschaften. Und was war denn dein Problem mit dem CNC-Shield? Und welches überhaupt ( auch da wäre ein Link am Besten ).

4 Motoren in Echtzeit spielt's nicht mit dem Uno.

Das kann man so grundsätzlich aber nicht sagen. Das hängt doch sehr davon ab, was man machen will.

Arduino und CNC Shield

Motoren
https://www.amazon.de/gp/product/B07P6ZJB8D/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&psc=1

Ich hatte es geschafft dass die Motoren sich nacheinander in beide Richtungen gedreht hatten.
( Einfacher Code im Arduino )
Dann hab ich versucht Endschalter anzuschliessen.
Da ich keine Ahnung hab dachte ich ich kann es ausprobieren... ( blöde Idee )

Jetzt geht es mir in erster Line nur darum welche neue Hardware ich kaufen soll.
4 Motoren 2 davon müssen sich auch gleichzeitig bewegen.

die Mechanik ist gerade am Entstehen

Mechanik

Kannst du da vorgeben, in welcher Reihenfolge die Karten nacher rauskommen?

ohhhhh

Die Motoren drehen sich wieder

Aber ich hab schon bedenken dass ich mit dem CNC Shield glücklich werde

Es soll ja eine Kartenmischelmaschine werden.
Zuerst werden die Karten vereinzelt und in die Zwischenablage geschoben und gezählt.
Da werden Sie über einen Zufallsgenerator in das Entnahmefach ausgeworfen.

Wählen Sie eine Karte, eine ganz zufällige ... :slight_smile:

nochmal die Frage....
Ziel: 4 Motoren, 3 Endschalter, 3 Anwesenheitssensoren
soweit einfache Motoren-Bewegungen

Adruino UNO oder Mega
CNC-Shield oder so was wie TB6600

schpau:
Welche neue Hardware würdet Ihr für 4 Motoren empfehlen

Von Shields bin ich kein Freund.

DRV8825 geht mit 1,5 A bei genügender Kühlung so gerade noch. Stärkere Treiber für Stromsteuerung funktionieren natürlich auch.

Beim UNO/Nano/Pro Mini gehen schnell die Pins aus, im Zweifel also Mega.

Jeder billige 3D Drucker hat einen Arduino Mega mit einem CNC Shield für 4 Motoren. und kann wenigstens 3 gleichzeitig ansteuern (x, y, Materialvorschub) Z kann angesteuert werden wenn die anderen 3 still stehen.

Ich glaube nicht daß alle 4 Motore der Kartenmischnaschiene wirklich gleichzeitig drehen müssen sondern in einer gewissen Sequenz. Darum sehe ich das als machbar.

Ob Du oder ich das softwaremäßig zusammenbekommen ist eine andere Sache. Ich halte mich als keinen guten C Programmierer.

( Ich hab die 4 Achse nicht zum laufen gekriegt )

Was heißt das? beschreibe die Symtome genauer. Zeig uns den Sketch.

Grüße Uwe

#define enable 8
#define xDirM1 7
#define xDirM2 6
#define xDirM3 5
#define xDirM4 999999   // welche Zahl
#define xStepM1 4
#define xStepM2 3
#define xStepM3 2
#define xStepM4 999999    // welche Zahl
int stepsM1 = 100;
int stepsM2 = 200;
int stepsM3 = 300;
int stepsM4 = 300;
int stepDelay = 200;

void step(boolean dir, byte dirPin, byte stepperPin, int steps)
{ 
 digitalWrite(dirPin, dir);
 delay(200);
for (int i=0; i < steps; i++)
{ 
 digitalWrite(stepperPin, HIGH);
 delayMicroseconds(stepDelay);
 digitalWrite(stepperPin, LOW);
 delayMicroseconds(stepDelay);
 }
 }
 
void setup()
{ 
 Serial.begin(9600);           
 Serial.println("Stepper test!");
 pinMode(xDirM1, OUTPUT);
 pinMode(xStepM1, OUTPUT);
 pinMode(xDirM2, OUTPUT);
 pinMode(xStepM2, OUTPUT);
 pinMode(xDirM3, OUTPUT);
 pinMode(xStepM3, OUTPUT);
 pinMode(xDirM4, OUTPUT);
 pinMode(xStepM4, OUTPUT);
 
 pinMode(enable, OUTPUT);
 digitalWrite(enable, LOW);
 }

void loop() 
{
 step(false, xDirM1, xStepM1, stepsM1);
 step(true, xDirM1, xStepM1, stepsM1);
 step(false, xDirM2, xStepM2, stepsM2);
 step(true, xDirM2, xStepM2, stepsM2);
 step(false, xDirM3, xStepM3, stepsM3);
 step(true, xDirM3, xStepM3, stepsM3);
 step(false, xDirM4, xStepM4, stepsM4);
 step(true, xDirM4, xStepM4, stepsM4);
 

 delay(100);
 }
void step(boolean dir, byte dirPin, byte stepperPin, int steps)
{
 digitalWrite(dirPin, dir);
 delay(200);
for (int i=0; i < steps; i++)
{
 digitalWrite(stepperPin, HIGH);
 delayMicroseconds(stepDelay);
 digitalWrite(stepperPin, LOW);
 delayMicroseconds(stepDelay);
 }
 }

Wie willst Du eine Gleichzeitigkeit erreichen wenn Du als erstes 0,2 Sekunden wartest und dann stur in einer Schleife die Schrittanzahl abarbeitest?
Du hast noch nicht gesagt wie sich Dein Problem äußert.
Grüße Uwe

Ich denke dieser Code ist sehr Laienhaft... sorry
aber ich mach das zum ersten mal.
für Verbesserungen wäre ich ebenfalls dankbar.

zur Zeit möchte ich dass der Motor eine Grundstellung anfährt.
Ich weiss aber nicht wie und wo ich den 3poligen Endschalter auf das 2polige CNC-Shield (X+Endstop) anschliesse bzw wie ich es im Code anspreche.

2020-08-04_k.mpg (1.75 MB)

Ich bin noch weit weg davon 2 Motoren gleichzeitig anzusteuern.
Zur Zeit versuche ich zu lernen und zu verstehen wie so ein Code funktioniert.
Meine erste Frage war ob ich mit dieser Hardware überhaupt eine Chance habe mein Vorhaben umzusetzen.

schpau:
Ich weiss aber nicht wie und wo ich den 3poligen Endschalter auf das 2polige CNC-Shield (X+Endstop) anschliesse bzw wie ich es im Code anspreche.

Dann wird dein Endschalter ein 'Umschalter' sein. Du brauchst aber nur einen der Kontakte verwenden ( den Schließer oder den Öffner ). Am einfachsten verbindest Du den Schalter auf der einen Seite mit Gnd, und den anderen Kontakt verbindest Du mit dem entsprechenden Eingang. Diesen Pin initiierst Du dann mit pinMode( pinr, INPUT_PULLUP).
Zur Ansteuerung der Schrittmotore kannst Du die MobaTools verwenden. Die können 4 Schrittmotore gleichzeitig ansteuern.

Wenn ich den Eingang Endschalter +X verwende Stoppt alles...
Habe ich andere Eingänge