For an art project, i need to control around 500 stepper motors. The product will be similar to the this one:
Breakfast-Brixel Mirror
I need advice on these subjects below:
-How many step motors can i control with one arduino Mega board?
-Which stepper motor driver is best suited for this application? I will use Nema 17 step motor 17HS4401.
-How can i give command from one computer to multiple arduino Mega's?
-Is this project possible with arduino, is there any other way of doing this?
From my research, I concluded this:
I can use DRV8825 model step motor driver with my Nema17 motors. I can connect 20 of them to 1 Arduino Mega. This results in using 25 Arduino Mega. Then I need to find a way to send commands from one computer to these 25 Arduino Mega simultaneously.
It would be great if I can get any help.
Thanks in advance.
Some information about the project would be useful - this looks massively expensive , I’d guess each stepper has to link to some mechanical system and a large ( very) power supply will be needed.
500 motors at £25 ea is £12,500 for starters ...
1.68 A each , with diversity say 100A Dc at 12v ...
Did you watch this one, The Making of the Brixels medium and Brixel Mirror?
You need a lot more than just stepper motor controllers.
The motors do seem a lot less than £25 ea, for example this site shows 30 or more are just $7.80 USD each
They only have 28, so you may end up having to go to multiple sites, or perhaps order direct from an OEM.
Same with making a combined motor driver/communications/connector board, likely need to design and then order from a PCB house.
The mechanical aspect will be a big effort, with motor mounts, gearing, bearings, looked like slip rings carrying motor power/signals from mirror to mirror, etc.
karam1392:
This results in using 25 Arduino Mega. Then I need to find a way to send commands from one computer to these 25 Arduino Mega simultaneously.
Connecting them is not the same as being able to control them.
If all 25 motors are moving at the same time how many step pulses will be needed every second? Will a Mega be able to do that and also receive commands from its master.
I reckon you need to do some experiments to find out what is possible in practice.
Think about designing your system by using one signal line to send a single command to all the controllers and a separate "clock" signal to tell them to execute the last command. That way they can all do their command at the same time.
CrossRoads:
The mechanical aspect will be a big effort, with motor mounts, gearing, bearings, looked like slip rings carrying motor power/signals from mirror to mirror, etc.
karam1392:
I can use DRV8825 model step motor driver with my Nema17 motors. I can connect 20 of them to 1 Arduino Mega.
There are 70 I/O pins on an Arduino MEGA. You could use some serial to parallel shift registers to drive the Direction pins which don't change often. That should allow each MEGA to drive 64 Step pins. Then you only need 8 MEGAs to drive 512 steppers.
It will be an art project and funded. I know the cost can go up to 20k €.
I will start working with small than. After being able to control over 30 stepper with 1 Mega, I will scale the project.
Is DRV8825 model step motor driver suitable for the application? I will use 17HS4401 Nema17 Step Motors.
johnwasser:
There are 70 I/O pins on an Arduino MEGA. You could use some serial to parallel shift registers to drive the Direction pins which don't change often. That should allow each MEGA to drive 64 Step pins. Then you only need 8 MEGAs to drive 512 steppers.
karam1392:
After being able to control over 30 stepper with 1 Mega, I will scale the project.
Is DRV8825 model step motor driver suitable for the application? I will use 17HS4401 Nema17 Step Motors.
Would like to see that.
It seems that libraries like AccelStepper (never used it) can only do 4000 steps/sec, due to acceleration etc.
That could result in a low speed per stepper if you spread that across 30+ motors.
Might have to write your own stepper software, with some restrictions that fit your art project.
Leo..
Design your servo boards using the WS2811 chip that is used to control addressable LEDS. One data pin from the Arduino can daisy-chain address a thousand WS2811 chips. (Ot more if you have enough RAM).
The pwm output from a 2811 won't drive a servo. Servos need a pulse from 1ms to 2ms to represent the angle, and they need it from 20 to 60 pulses a second. Output from the 2811 is many times too fast for any servo.
So, take an output of the WS2811, low-pass filter it, and send the resulting output voltage to the analog pin of an ESP8266 chip. The ESP can then control the width of the servo control pulse. If the servo is small/low power, the ESP can drive it directly. Otherwise you will need a MOSFET to drive it.