I am an interested ‘new person’ to the Pololu range and have a Maestro 6 servo controller.
Sadly I can not get my head around the speeds and angles I wish the servos to travel to.
How might I get, say, servo 0 to move by 90 degrees at a fast rate of knots? And at the same time get, say, servo 5 to move 5 degrees slowly
Why is speed 0 the same as speed 68? and for that matter 30? Is there any correlation or are these things purely set by trial and error?
I’m not intending to pour scorn on Pololu’s fine product but I just don’t get it.
I would appreciate any advice.
The Maestro’s speed command works by breaking the position command into multiple smaller divisions. A speed setting of 0 means the Maestro is not limiting the speed, and the speed is only limited by your servo. A speed setting of 1 is the slowest speed setting, and the speed will increase as the setting value increases. You can find more information about how the speed command works in the “Channel Settings” section of the Maestro user’s guide. In general, each servo will react differently to the signals it receives, so for the most part settings like speed and acceleration, or commanding a servo to a specific position (such as turning 90 degrees), will depend heavily on your servo and require some trial and error.
Could you try setting the speed to 1 and seeing if you notice a difference? You should be able to see the effects of the speed setting in the “Status” tab of the Maestro Control Center. The ball on each slider indicates the position that the Maestro last sent, so when you move a slider with a speed setting, you should see the ball lag behind the pointer, eventually catching up. Please note that the first target position that a channel sends (after startup or enabling the channel) will not have any speed or acceleration limits. Information about why this happens can be found in the last question listed under the “FAQs” tab of the Maestro product page.
Thank you Brandon,
I see what you’re saying and understand that servos are not like steppers and a bit of trial and error is usually required when setting the things up however, is there not some calculation I can do or can get the script to calculate to get any hint of accuracy about them?
All I need is for the servo to default to its exact mid-position at power-up and then on the flick of a switch or press of a button, move 90 degrees and then upon release of the button move 30 degrees back toward mid-position (doesn’t really matter in which direction at this juncture)
I am using “Tower Pro” Micro Servo 90 SG90 servos. (small blue things and quite noisy but size was the important aspect)
BTW if I (we) can get the servos and maestro to do this with a script to make it autonomous I may just fall in-love with Pololu.
Peace and Love
In general, a pulse width of 1500 microseconds tends to correspond with the position in the middle of a standard servo’s range; however, there tends to be some error or misalignment in most servos. The pulse width that causes your servo to turn 90 degrees will also depend on your servo. One way to determine this pulse width is to use the sliders in the “Status” tab of the Maestro Control Center to move the servos to the desired position. Typical servos do not make their position feedback available, so the only information the Maestro has in regards to the servo positions is the pulse widths it is sending. It has no way of knowing the true positions of the servos without some type of additional sensors or limit switches.
magnificent information, thank you.
I really quite like this little Pololu Maestro 6 servo controller.
Previously I’ve use Basic stamps and a board from Milinst as my first go-to in any project but with Pololus tiny foot-print (toe-print) it could take-over.
Ah I found Arduino nano can be programmed with angles for the servo rotation/position directly AND they have a reasonably small toe-print.
Oh Pololu if only …
It sounds like you are talking about the Arduino servo library. If that is the case, the rotation angle you specify (0 to 180 degrees) simply maps to the pulse widths you specify when you call the
attach() function. By default,
attach() maps 0 - 180 degrees to 544 - 2400us. However, whether your servo actually rotates to the specified angle is completely dependent on your servo. If it does, then it should react in the same way when the same pulse widths are sent with the Maestro. If it does not, then you would still need to determine the values that work for your servo and specify them when calling the
attach() function. More information can be found on Arduino’s reference page for