512 digital outs

Hi All

I’ve been working on a project that requires the control of 256 steppers motors(!) Looking at the stepper examples, it seems you can drive a unipolar stepper with 2 wires and a darlington array.

The problem is the arduino’s throughput. It can address 512 outputs at about 42Hz from the tests I’ve done, which is cool, but it would never be able to manage all the timing stuff.

What I was thinking was to use a computer as an arduino rather than doing on the chip, but what I’d need then is 512 digital outputs from my computer. Anyone have any idea how I could do this?

I know it’s not exactly an arduino question but I’d be really grateful if anyone had any ideas or suggestions



I think you would be best off distributing the timing responsibilities to a set of multiple arduinos. These arduinos will constantly update the steppers to be equal to their target position. A computer would notify the arduinos of the wanted position of the steppers.

Could proove costly, but I think it would be overly complex to multiplex 256 steppers on a single arduino.

As they say: Just my two bits ;)

256 is a lot of servos to control from one central controller. You would might need to do a little timing math to see if the application can update that many servos in the time required for your application.

Anyway one way would be to utilize dedicated servo controller chips that can 'off load' the updating of the servos while the main controller only needs to send changes to the servo controllers. Here is custom programmed chip the can output 16 servo signals and communicate with a main controller via serial or I2C link. It would take 16 of these chips. Also have you considered how large a DC power supply that would be required to drive 256 servos, esp is they all have to be able to move at the same time?



Thanks for your input. What I'm thinking of doing now is having 16 slave arduinos all listening to the same serial port, each addressing 4 8-bit shift registers (so they'd have 32 outs each)

One thing that's missing from your description is how those motors will be installed and used. Specifically, how far apart they'll be from one another, whether they can easily be split into "sub-assemblies", how much moving they'll be doing, etc.

Another is how much voltage and current they'll use: if the requirements are modest, there are "power shift registers" with built-in drivers that could simplify the design.

Finally, how many of these do you plan to make? If it's "many", or even "several", it makes sense to spend more time on engineering to save construction costs. If it's only one, you might be better off doing something like buying Arduino Mega boards to save the hassles of hand-wiring up a bunch of shift registers to add I/O pins.



Thanks for your input! It is split into rows of 16 steppers. I'll definitely look into the power shift registers.

I've made a prototype of a single motor with its mechanism, and I've already learnt a lot about the mechanical problems to solve from that. The next stage would be to make 16 in a row, get them running off a single arduino, and then straight to production - making 16 X 16(!)

I thought about the arduino mega... if the steppers won't run off the power shift registers you mentioned above, we're gonna need a board of 16 Darlington arrays anyway, so a few shift registers won't matter and will help to keep the costs down as we can go for usb-less boarduino too. We're probably gonna get some PCB's made up to save us time veroboarding it all.