300+ Servos control

Hi there,
I’m looking for servo controller that able to control around 300 servos for my architectural thesis. I come across Polopu micro serial servo controller and think that it in kind of suite my project. However, in the document and it mention that the limitation is up to 128 servo control. Is there any solution to extend it to 300 or more? Is there any addition information or links where I can research further about this online?

Wow, exciting! What are you planning on doing with 300+ servos at once? Are they going to be moving one at a time, or are you trying for simultaneous, fluid motion? I’m just trying to imagine what that would sound like, hmmmmm…

Anyway, the stock Pololu servo addressing protocol is what limits you to 128 servos on a single serial line, but you could always use more than one separate serial line. For example, if you’re planning on commanding the servo controllers from a computer, you could get three USB to Serial Adapters, and have a chain of up to 16 micro serial servo controllers attached to each one. The micro serial servo controllers can also connect directly to an RS-232 serial port (on different pins), but what computer these days has three of those? You’re lucky to get one!

If you were thinking more of using a microcontroller, you could switch the serial output between different chains of servo controllers with a separate OR chip. You would just need one OR gate and one digital output pin for each chain of controllers you wanted to be able to talk to. You could also pick up a microcontroller with multiple hardware USARTs. I’m playing around with ATMega128’s now, which have two, and I know some of the AVR microcontrollers have four, but I’m not sure if you can get them on breakout boards.

Another thing to ask is do all 300 servos need to be doing different things, or will some be doing the same thing at the same time? You can have more than 16 Pololu servo controllers on the same serial line if some of them have the same set of servo addresses. You can also split servo signal pins to multiple servos to make them turn in the same way. If you want two servos to mirror each other (move together, but rotating in opposite directions) there’s a neat hack you can do to run them both off the same signal (open up one of the servos and reverse the outside potentiometer wires and the motor wires).

Come to think of it, if you have the budget for it you might want to consider Hitec digital servos. They’re a little pricier (~$35 for a basic one) but you can get a special programmer for them that you plug the individual servos into to adjust things like speed, rotation direction, home position and endpoints, etc. It seems to me that with so many servos, being able to walk up to one and adjust it’s internal settings right there would be a whole lot easier than trying to calibrate them all in your control program!

Anyway, I hope that was some help, and I would love to know more about your thesis!

-Adam (who has only heard 32 servos moving at once)

Thank you so much for your reply nexisnet.

To briefly share my idea here.
I would like to work with simultaneous, fluid motion control for each fin shading (timber) of the south-east side facade/corridor of the building. Not only adjust an fin shading to respond to the sun angle, but also create a kind of fluid lighting/shadow that cast to the corridor. Kind of Daniel Rozin’s work (which use 800+ servos) in architectural scale.

I really agree with you advise about using hitec digital servo, about an option that we’re able to calibrate individual servo one by one. Specially when the setting expand to architectural scale, where the whole thing is not in front of us, it’s not fun at all to calibrate them all together at once.

However, to use digital servo there’re two main problems to concern.
one is an addition cost, maybe 3-5 times more for the cost of servo itself.
another one is power supply. I heard that digital servo consume a lot of current, specially high torque type. If i need to use a bit of high torque one like HS-5955, which the stall current is 3400mA. Does it means that I need to provide 27 Amp power supply for each controller?

if I only want to adjust home position and end point of each servo individually, is it a good trade off compare to addition cost for both Servo and power supply?

also if you can think of problems that might happen, things to be aware for simultaneously control army of servo like this case, please let me know. it would be really helpful.

Your idea sounds really neat (the concept I mean, and the sound of 300 servos moving at once too). I’m looking forward to seeing pictures or video of it.

Thinking about your application though, you may not need the programmer for fine adjustments after all. The programmer is really good for when you need to make very fine adjustments without taking the arm off of the output spline, or for matching multiple servos moving the same linkage. You can get a fair amount of precision just by what notch you align the servo arm to when you put it together out of the box (and here’s a trick, most servos have an odd number of notches on their output splines, so if you really want to position the output arm between two notches, flip it around 180 degrees).

Even if you decide you don’t need programmable precision though, picking the right servo isn’t really just an analog/digital question.

In general, the amount of current drawn by a motor will be proportional to how much torque the motor is delivering, regardless of weather the control electronics are analog or digital. A lot of the Hitec digital servos have the exact same hardware as one of their analog servos, but with digital control electronics (in these cases they add a 5 to the product number). Both versions of the servo usually have the same power requirement, and the similar speed/torque characteristics (digital versions sometimes produce a little more torque).

Comparable analog and digital servos will need about the same amount of power to lift the same load, so the weight of those fins, and how fast you want to rotate them, is going to be much more of a consideration in what servo you pick. The highest torque servos of a given size class are going to be digital, so if you need the torque of course that’s how you’ll have to go.

Pricing also isn’t quite so straightforward. Lets look at prices on ServoCity.com, they’re pretty standard, and they have a good selection. That low-end digital HS-5475HB is about twice the price of the HS-475HB, the analog version with all the same hardware (and torque, speed, etc…).

But what if those timber fins are heavy (I’m not really sure, I’m picturing something like roof shingles) and you realize you need a servo with a stall torque of about 165 inchounces (keep in mind you want the actual operating torques to be lower than the stall torque!). Well, with standard size servos the analog choice would be the HS-985MG, which delivers 172 inchonces for $73. The digital choice would be the HS-5645MG, which squeezes out a little more torque than it’s analog version (the HS-645MG) and delivers 168 inchounces for $55 dollars (and it turns just a little more slowly). If tight space isn’t a consideration though, you could also think about quarter-scale (larger case) servos, and get an analog HS-755HB which delivers 183 inchounces for just $30! It turns even more slowly than the digital choice though, but on an architectural scale I bet you would still be happy with the speed.

I guess the real answer is that you should get a ballpark idea of what you want in terms of torque and speed, buy a bunch of different servos to test out and play around with, figure out what you’re willing to pay, and then pick one and place your big order.

The only problem that immediately comes to mind with the scale of your project is communication difficulties due to wire length. Position commands from the controller to the servos are simple variable-width pulses, so those wires can be quite long (how long? try and see, but also check this out, servo-extension wire from room to room!). I would recommend firing up the controller before powering the servos too, without a powered controller on the other end, servos can pick up interference on long wires and tend to flip out.

The serial commands are a little more prone to problems since they’re only sent periodically, and they’re more complex and high-frequency. RS-232 protocol serial can go for 50 feet over shielded cable, and TTL level serial way less than that. I would definitely recommend shielded cable, or twisting your signal and ground wires.

With long-ish serial wires, you may find that your setup will work for a little while, then your controller will get confused by a spurious byte and go into flashing-red-light-error mode. Actually they would all probably do this at once. You’ll definitely want to wire up a way to reset these guys when that happens, but I’m drawing a blank on how to detect error states with multiple controllers on the same serial line. Perhaps someone from Pololu can offer an idea on that.

How to power them all is also going to be a big headache, but you’re already thinking about that. Keep your power wires bigger and shorter where possible to minimize those losses!

-Adam

Hello,

For the scope of the project you’re discussing, it might be practical to get the servo controllers customized a bit. If you don’t need high-frequency updates of the servos, we could add some more addressing to the protocol to allow more servo controllers on one serial line. We could also fix the baud rate and change some of the error handling. Please let us know if you’re interested.

- Jan

thank you again for your reply nexisnet and jan

I just sketch an installation diagram for further development, specially to discuss with specialist who able to help me with the signal communication that will happen. Once I’m in the team of a similar kind of installation, but it only 52’ (13m) and the only problem we fight against is the serial communication and baudrate issues, which look really headache with scary engineering oscilloscope kind of things.

http://farm3.static.flickr.com/2187/2364107854_dcaaed0840_o.jpg

to quick sum up from the diagram

  • each servo will be locate every 20" (50cm) from each other, total distance 200’(6000cm), 3 level
  • the width of each group is around 140" (350cm), the controller will be located in the middle of the group, so the longest distance from servo to controller will be around 80"(200cm). I don’t really sure if this distance will work without boosted extension or not. need to test
  • the distance between each controller is 13’4" (400cm) so I was thinking about using TTL/RS422 converter to solve this problem. I still don’t sure if this the right thing to do or not, if not is there any way to sort this thing out.

So please let me know what do you think about this diagram.

Jan,
I do interested in customized controller of course. Please let me know more about it in details.