Designing a System that can Control 500 Step Motors

Hi everyone,

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.

Is this your first Arduino project ?

Have a look at this thread. It's controlling many steppers too, though not as many as yours. Should be some ideas for you there.

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.

How large and how heavy will your mirrors be?

...R

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.

Paul

hammy:
Some information about the project would be useful - this looks massively expensive

Ah, but it is as described, an Art installation. :grinning:

There are many well known examples like this,

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.

Looks like the slip rings were from a prototype, later in the video it appears the motors and drive circuitry are mounted in the central column and are stationary. Here is a webpage that goes into a bit more detail on the construction: Geared stepper motors drive movements of Breakfast Brixel moving architectural wall

If you are lucky, you may be able to find an off-the-shelf planetary gearbox that can be adapted.

hammy:
Some information about the project would be useful - this looks massively expensive ,

One article I found on a similar display estimated somewhere from $750k to $1.5 million.

david_2018:
One article I found on a similar display estimated somewhere from $750k to $1.5 million.

No problem then. A DIYer could easily do it for a tenth of the that cost.

...R

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.

Looks like a project similar to "wooden mirrors" and similar. Start small for proof of concept, and when that works, start scaling up.

No, I used Arduino before for creating a CNC machine with Arduino Mega and Grbl Shield.

UKHeliBob:
Is this your first Arduino project ?

Thank you for the contribution.

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.

Take a look at this topic How to get out of multi-level serial level data entry check? - Programming Questions - Arduino Forum
Don't be put off by the topic title

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..

Here's an off the wall suggestion.

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.

Or, skip the ESP altogether. You can use an NE555 to generate servo pulses. Here's a link to a Servo Motor Control Using 555 Timer IC.

One data pin, easy addressing, what else could you want?

Servos should be avoided for these kind of projects.
They don't seem to last. Ask Daniel Rozin.
Leo..