10 Schrittmotoren mit Arduino betreiben

Hallo zusammen,

ich möchte gern 10 Schrittmotoren mit einem Arduino betreiben. Bisher habe ich einen Prototyp mit einem Arduino Uno und 2 Schrittmotoren. Soweit so gut...

Leider reichen die Digitalen Ein- und Ausgänge zum Betrieb mit 10 Schrittmotoren nicht aus (10 x 4 Pins).

Es reicht aus, immer nur einen Schrittmotor gleichzeitig laufen zu lassen.

Als Schrittmotor/Treiberplatine sollen 10x 5V 28BYJ-48 ULN2003 (Amazon.de : Elegoo 5er Stepper Motor Schrittmotor 5V 28BYJ-48 ULN2003 und 5 Stück Treiberplatine ULN2003 für Arduino) genutzt werden.

Nun meine Frage: Nach meinem Wissensstand sollten die 54 Ein- und Ausgänge am Arduino Mega ausreichen. Oder gibt es evtl. eine Buslösung??? (so wie von mir geplant wäre es ein ordentlicher Kabelsalat...)

Hat jemand da Erfahrung?

Danke.

Du kannst Shift Register zB 74HC595 oder SPI bzw I2C Port Expander nehmen. Da bekommst Du pro IC 8 bzw 16 Ausgänge. Ich glaube nicht daß eine Schrittmotorbibliothek damit funktioniert und darum wirst Du die ansteuerung der Schrittmotore selbst programmieren müssen.
Grüße Uwe

Andere Variante: Du benutzt mehrere Arduino nano und lässt diese über I2C miteinander reden.

Gruß Tommy

Hi

Habe nur ich in Mathe nicht aufgepasst, oder werden dort 5 der Stepper für fast 17€ angeboten, wo EINER 1,16€ kostet?

MfG

postmaster-ino:
Hi

Habe nur ich in Mathe nicht aufgepasst, oder werden dort 5 der Stepper für fast 17€ angeboten, wo EINER 1,16€ kostet?

MfG

Freie Preisgestaltung :wink:

Gruß Tommy

tilo123:
Es reicht aus, immer nur einen Schrittmotor gleichzeitig laufen zu lassen.
...
Oder gibt es evtl. eine Buslösung???

Der Schrittmotor 28BYJ-48 ist unipolar, hat also einen Mittelanschluß für 5V. Diesen mußt Du für jeden Motor schaltbar machen. Ein Reedrelais mit Diode wäre eine Möglichkeit. Wenn die Pins nicht reichen, erweitert ein MCP23017 per I2C diese. Bei Adafruit gibt es eine passende Bibliothek.

Dann schaltest Du alle IN1, IN2, IN3 und IN4 parallel und an den UNO. Das ist kein Bus, aber fast. Die 20mA sind grenzwertig, eventuell benötigst Du noch einen Treiber. Oder Du machst zwei Motorgruppen.

Hi

Warum nicht komplett auf MCP23017 gehen?
Die 20mA kann Der pro Beinchen sinken - und hochohmig fließt kein Strom.
Man muß halt drauf achten, daß man die Motoren in 0/0 abstellt, damit beide Spulen stromlos sind.

Man braucht so zwar für jedes Umschalten eines einzelnen Pin einen separaten I²C-Aufruf, sollte bei den zu erwartenden Geschwindigkeiten der 28BYJ-48 Stepper aber kaum ins Gewicht fallen.

Auch kann man Das erst mit Einem probieren, wenn Das klappt, erweitert man um einen Weiteren.
Damit einem die IDs nicht ausgehen, einen I²C-Multiplexer und der nächste Zweig kann begonnen werden.

MfG

postmaster-ino:
Warum nicht komplett auf MCP23017 gehen?

Übliche Bibliotheken arbeiten nicht damit zusammen, Ausnahmen sind mir nicht bekannt.

postmaster-ino:
Damit einem die IDs nicht ausgehen, einen I²C-Multiplexer und der nächste Zweig kann begonnen werden.

Acht MCP23017 dürften reichen.

Die MobaTools bieten noch eine Alternative mittels SPI und HC4094.

Der MCP hat 16 EIN/AUSgangspins. Da kann man 4 ULN2003 Treiber mit 4 Motoren anschließen. Für 10 Motore braucht man darum 2,5 , na sagen wir 3 Stück kann man direkt an den I2C Bus anschließen falls die Teile nicht zuweit voneinander entfernt sind.

Grüße Uwe

Hi

Ok, bei 10 Steppern sollte kein Multiplexer benötigt werden - hatte irgendwie 100 im Hinterkopf :o

MfG

postmaster-ino:
Hi

Ok, bei 10 Steppern sollte kein Multiplexer benötigt werden - hatte irgendwie 100 im Hinterkopf :o

MfG

Bei 100 Motoren würde ich mehrere Controller nehmen und diese über einem MasterArduino steuern.

Grüße Uwe