Pololu Robotics & Electronics
Menu
My account Comments or questions? About Pololu Contact Ordering information Distributors

Pololu Forum

Controlling 120 Servos With Maestro

Hello,
For my project I’ll have a matrix of 15 columns and 8 rows of MG90D servos.
I’m thinking of using 8 of the16 channel Maestros, i.e. each Maestro controls 15 servos.
From what I’ve read, I can record “sequences” for each servo.
The guide says up to 3000. Am I correct ?
Will I be able to tell all 8 Maestros to do , let’s say, sequence “Sweep”, at the same time with an Arduino ? Will I have synch problems ?
I’ll need a big power supply to power all the servos and space limit may force me to divide the and use more than one power supply. Would that be a problem ?
Appreciate your guidance and help.

Hello.

Sequences are a bit more complicated than they appear. The Maestro Control Center software stores sequences created in the “Sequence” tab on your computer. If you want to play them back while the Maestro is not connected to a computer, you would need to convert them to a script (there are buttons in the “Sequence” tab to auto-generate the script from your sequences). Then, you could call “Restart Script at Subroutine” commands via USB or serial to run the particular sequence.

As far as starting sequences on multiple Maestros at the same time, if the subroutines all share the same number (i.e. position in the respective scripts on each Maestro), you could send the “Restart Script at Subroutine” command using the compact protocol, which all Maestros will respond to. Otherwise, you will need to send a separate command for each Maestro using the Pololu Protocol, which could still happen very quickly relative to the servo movements, so it might not even be noticeable.

By the way, from your description, it sounds like you might want to set up sequences for individual servos on each Maestro; this is generally fine, but please note that you will not be able to use the “Restart Script at Subroutine” method to have multiple subroutines running independently from each other at the same time on a single Maestro. Calling it again while a subroutine is still running will interrupt the current subroutine. If that is a problem for your application, you might be better off handling your “sequences” directly in your Arduino code.

For that many servos, I think splitting your power into multiple banks is a good idea. Doing so should be fine as long as they all still share a common ground.

Brandon

Thank you Brandon.
Let’s see if I understand you. Let’s say I have “sequence Sweep all 15 servos” on Maestro N.1 and " Sequence xyz 15 servos" on Maestro N.2 then the Arduino can send a command to Maestro 1 & 2 to do these sequences simultaneously ? Right ?
But it seems I can not sweep servo 2 on Maestro1, servo 5 on Maestro 2 , servo 7 on Maestro 8 and so on ? Right ?
For this, I need to write code for Arduino that addresses each different servo on different Maestro ? Right ?
I know how to do this using the PCA9865. Do I use the same approach with Maestro ? Is there any documentation I can consult on how to do this ?

It sounds like your understanding is basically correct. You can send serial commands back-to-back to start each Maestro at those subroutines.

If you wrote a subroutine for each of those actions on each Maestro, then it shouldn’t be a problem to do what you are describing. If you wrote your own subroutine carefully enough, you could even use the “Restart Script at Subroutine with Parameter” command and specify the servo channel you want the subroutine to use.

The scenario I was trying to describe is if you have a subroutine that moves servo 2 on Maestro 1 and another subroutine that moves servo 3 on the same Maestro, then if you tried to restart the script at the subroutine that moves servo 3 while servo 2 is still moving, it will be interrupted. If they are on separate Maestros that shouldn’t be a problem since each Maestro can run it’s own script independently.

I am not familiar with the PCA9865, but we have an Arduino library for our Maestro controllers that you might find helpful. You can find detailed documentation for the library in the maestro-arduino documentation, and you can reference the commands in the “Serial Servo Commands” and “Serial Script Commands” sections of the Maestro user’s guide.

Brandon

Thank you so much Brandon.
I’ll order a couple of Maestros to test and eventually get back to you.
PCA9685 is a 16 channel PWM servo driver, each board can drive 16 servos but without the possibility of scripting. I think Maestro will make my life much easier with so many servos to control.