1000 servo installation

Hi there -

Apologies in advance if this has already been asked before!

I am looking at doing an installation potentially involving around 1000 servos - I would ideally like to be able to address each one individually to update its position from a Processing sketch through Serial.

I have been thinking of using something like this http://bildr.org/2012/03/servos-tlc5940-arduino/.

Seems like these boards could be chained together but not sure that this is the best approach.

any ideas, thoughts starters or projects / agencies you have seen do something similar would be really welcome at this point!

I thank you all for any help or wisdom you can give me.

Thierry

I'd start by paying serious attention to your 1kA power supply issues.

That is going to be tricky. With the servo control below you could potentially control 512 servos off of a mega. You might need more then one Arduino.

Thanks a lot guys!

based upon previous work.

a) Make the system up in modules, say groups of 8, 16, 32, 64 or 128 servo's
each group autonomous with its own processor, psu , wiring etc.

that way, you design and test once, and repeat only the testing as many times as needed,
you could also depending upon mechanics, have a spare system ready for when one breaks.

b) have a control system that talks to each group, it spreads the software effort and the interdependencies out.

c) suggest RS485 or ethernet between the boards,

d) make the wiring modular, plugs / sockets or hard soldered both ends.

have fun,

Scaling up is never easy in no matter what field. Look how long it took to scale up the second world war liquid fuel rockets to the Saturn V.

It takes a lot more skill than you think to scale things up.
What you will find is that you get so far and then the odd things will stop working or start behaving strange like moving when it has not been commanded to. The more you add the more this strange behavior you will see. This is due to power supply noise, power distribution, radiated interference and signal integrate. You can get away with a lot of bad practice if you only drive a few servos, you can't when you drive a lot.

Have you thought of the cost of this? Multiplying even the cheapest components by 1000 gets very expensive very quickly.

Thanks you so much for your quick answers!

@drjiohnsmith - definitely agree with you on this one - bit concerned about timing and communication between the different groups of servos.
Would you recommend: Having all boards hooked up to a main computer via USB or Having all boards connected to each other with a master Arduino (connected to the PC and controlling the network)?

@Grumpy_Mike - Yes will definitely need to keep an eye on costs but feasibility is actually more what is worrying me at the moment :slight_smile: want to make sure I plan this out right.

Thanks again!
Thierry

How you connect them will depend on what sort of update rates you want to see/can tolerate, but as I said earlier, don't underestimate the amount of copper you're going to need.

In the late 80s, I worked on a custom processor that ran up to 400 amps at 5V.
The dual 200amp supplies were connected to the bus bars with the same cable you'd use in a car to connect to the starter motor, doubled-up.

Hi

I'd suggest each 'group' with its own power supply.
so minimum wires between groups.

those power supplies could be DCDC or ACDC types, your choice.

DC can get quite high as pointed out by AWOL if you go for the DCDC option,
so if you do, something like 48v DCDC modules would be a standard choice.

As AWOl implies, big DC PSU's can be interesting, if you drop a spanner on a Kw DC supply, the supply just goes, "so what" , and vaporises the spanner. Been there, got the T shirt. and the burn.

could you use the pc as the main controler ?
and then connect to all the sub units ? Ethernet network is very reliable / resilient.

A big hint,

what we did in our similar was have multiple groups , each controlled by a micro.
the micros were networked, each had a clock on board, all of which were synchronised.

the main top controler then sent out command to each group controler , each command with a time tag.
and it was up to the group controler to control the individual group,

that way we could Q up commands in advance.

Also consider having a 'keep alive' command regularly broadcast from the central controler,
if the group controller does not receive this within a set time, then it puts its group in reset fail safe.

You might use a bunch of servo controllers like below with the control strings for them multiplexed from an arduino. How much power the servos would require would depend on their load and how they are controlled. Lightly loaded like the bottom wooden mirror, the power requirements might be fairly low.

http://www.lynxmotion.com/p-395-ssc-32-servo-controller.aspx

thats a great display,
wish it was mine

You should have a look at using DMX512 as a comms backbone, which uses RS485 as the wire
protocol. If each servo only needs 8 bits of data to control it this would be a good match, and its
standardized technology (normally used for theatre/venue lighting control). Its also pretty simple
(if you ignore the fancy bits) and there are Arduino libraries and so forth. RS485 chips normally support
upto 32 devices on a single bus and the datarate is 44us per byte, upto 512 byte-wide channels per
universe (25ms or so to update all channels).

Definitely you want to split into identical modules, independently powered, as mentioned previously,
if at all possible. The TLC5940 unit is actually using an LED driver in a non-standard manner which is
neat. An Arduino listening on on DMX, driving a bunch of these units is a plausible approach. Definitely
keep servo power separate from Arduino power (but common ground). You might want to use SLA accumulators
to cover current demand spikes from your 6V servo PSU (the average current demand might be a lot less
than the peak, for instance).

Thank you so much guys - really helpful!

@MarkT will definitely look into this!