Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Running hobby servos at speeds greater than 50Hz.

174 views
Skip to first unread message

Mike

unread,
Feb 22, 2007, 1:59:29 AM2/22/07
to
I've been reworking some of my motor controller code today - and just
for shits and giggles I decided to try changing the frequency of the
PWM pulses going to my servos, which are Hitec HS-81MGs. I've been
running them at 50Hz, and their performance has been OK, but not
great.

I tried 100Hz and they just completely freaked out - massive
oscillations, unable to reach a steady state - completely unstable.

I tried 90Hz, and they were a bit more stable, the amplitude of the
oscillations was less, but they never seemed to reach a steady state
output.

Then I tried 80Hz. This seems to be the sweet spot for these guys. The
torque has increased a very large amount at this speed. Disturbance
rejection is much better as well. Oscillations are gone, as long as
you slowly change the PWM pulse. A sudden change in the PWM pulsewidth
will cause it to oscillate some for a second or two - but it does
stabilize. This isn't a problem. After initial power up it oscillates
for a couple seconds - but again nothing too bad, and much better than
at 100Hz. When gradually turning the servo (linearly increasing the
pulse width), the turn seems to be substantially smoother and more
accurate than at 50Hz.

So this seems pretty good - but I have a couple worries. First of all
- I haven't measured it yet - but current consumption seems to be
substantially higher. I say this because the motors are getting
noticeably warm to the touch. Definitely warmer than at 50Hz. When is
warm too warm? Also - could this wear the servo out?

Anything else I should know or be worried about? Is all of this normal
behavior, and what I should expect from other hobby servos?

Thanks!

-Mike

dan michaels

unread,
Feb 22, 2007, 10:21:45 AM2/22/07
to


Your experience sounds about right, and which is no doubt why the
update rate for standard analog servos is usually 20-msec. You get
loop instabilities for much faster updates.

A couple of years ago, I took apart a GWS servo and did some
measurements. I didn't try this with Hitec, and imagine they work
similarly, but this is a guess.

The GWS servo works by sending a short pulse of current to the motor,
typically of 2-msec length under no load, right after it receives the
external signal on the control line. Then, if external torque is
applied to the servo horn, the length of this current pulse
"increases", which is how the servo compensates. More current to the
motor means more holding torque. The current pulse would increase up
to a max of about 8-9 msec in length, which means under heavy loads
the motor is being powered almost 50% of the time with 20-msec
updates.

Then, I tried lowering the time between update signals, and when they
got down to 10-msec or so, the servo would go nuts under heavy torque
conditions. IOW, when the length of the motor-current pulse got too
long and was close to the time between update pulses, the internal
control loop fouled up. The current to the motor in the 2 situations
look like the following:

--_______--______--_____ normal, low torque

----_____----_____----____ normal, higher torque

-----_-----_-----_-----_---- heavy torque+fast updates


- dan michaels
www.oricomtech.com
=====================

Gordon McComb

unread,
Feb 22, 2007, 11:29:22 AM2/22/07
to
Mike wrote:
> Anything else I should know or be worried about? Is all of this normal
> behavior, and what I should expect from other hobby servos?

Servo makes and even models vary, so your findings here are not
necessarily reflective of all analog servos. However it serves as a
starting point. There may be differences even among the same model if
they are made some time apart. More servos are being redesigned to use
microcontrollers rather than the older all-analog or analog IC
controller, so it's important to test a relatively new servo.

In any case, it's always useful to try increasing the frame rate of
servos to improve their torque, and it's a shame more servo controller
boards don't have this feature. I've been whining about it for several
years. You should also experiment with dynamically changing the refresh
rate to see if that helps performance. Most applications do not require
high holding torques, you can fall back to lower frame rates. Use the
faster rate when the motor is moving a load.

You do have to be careful about the increased current load, and the
possible affects the added heat has on the motor itself. Assuming a
servo with a standard PM motor, these motor don't use "brushes" per se,
but just a copper wire that will probably not last as long at the higher
currents. The trade off is higher performance but a shorter motor life.
For some applications and budgets this is acceptable.

-- Gordon

0 new messages