Ball bearing servo issues....
Archiver
Posts: 46,084
Hi All,
I've got a pair of high end JR 4131 R/C helicopter servos that I've
been wanting to use in my robot. They're extremely well made, ball
bearings everywhere, high torque and fairly high speed, super smooth
and quiet.
But they are so efficient that controlling robot movement is
difficult, mainly because after you stop pulsing them, they continue
to rotate for some time so the robot shoots way past the point that
you'd like it to stop. This has not been a problem using standard
Futaba S148 as they have a significant amount of friction in them (I
think of it as built in braking).
I am having a difficult time programming in a smooth braking routine.
About the only thing I can think of and tried is a decrementing FOR-
NEXT loop which brings the servos to a gradual stop.
But this either:
a) takes too long or
b) is jerky (not smooth if you decrement to fast)
Is anyone else using ball bearing servos for drive wheels and has
solved this problem? Thanks.
-Dave
I've got a pair of high end JR 4131 R/C helicopter servos that I've
been wanting to use in my robot. They're extremely well made, ball
bearings everywhere, high torque and fairly high speed, super smooth
and quiet.
But they are so efficient that controlling robot movement is
difficult, mainly because after you stop pulsing them, they continue
to rotate for some time so the robot shoots way past the point that
you'd like it to stop. This has not been a problem using standard
Futaba S148 as they have a significant amount of friction in them (I
think of it as built in braking).
I am having a difficult time programming in a smooth braking routine.
About the only thing I can think of and tried is a decrementing FOR-
NEXT loop which brings the servos to a gradual stop.
But this either:
a) takes too long or
b) is jerky (not smooth if you decrement to fast)
Is anyone else using ball bearing servos for drive wheels and has
solved this problem? Thanks.
-Dave
Comments
A fairly common "brake" for electric motors is to simultaneously apply power
or ground to the plus and minus terminal of the motor.
Ken
Hi All,
I've got a pair of high end JR 4131 R/C helicopter servos that I've
been wanting to use in my robot. They're extremely well made, ball
bearings everywhere, high torque and fairly high speed, super smooth
and quiet.
But they are so efficient that controlling robot movement is
difficult, mainly because after you stop pulsing them, they continue
to rotate for some time so the robot shoots way past the point that
you'd like it to stop. This has not been a problem using standard
Futaba S148 as they have a significant amount of friction in them (I
think of it as built in braking).
I am having a difficult time programming in a smooth braking routine.
About the only thing I can think of and tried is a decrementing FOR-
NEXT loop which brings the servos to a gradual stop.
But this either:
a) takes too long or
b) is jerky (not smooth if you decrement to fast)
Is anyone else using ball bearing servos for drive wheels and has
solved this problem? Thanks.
-Dave
[noparse][[/noparse]Non-text portions of this message have been removed]
> power or ground to the plus and minus terminal of the motor.
Dave is referring to a hobby servo, not a plain electric motor.
As for the slowing problem, the stamp may not be efficient enough to provide a
smooth braking effect. When I want a continuous-rotation servo to stop under
momentum I just apply a few pulses in the opposite direction. The stopping
speed will depend on the pulse width (which will determine how much power
goes to the motor). If you do it gently enough it won't hurt the servo too
badly... [noparse]:)[/noparse]
--
Greg Courville (KG6SGY)
www.gee-enginuity.com
"Make it idiot-proof and somebody'll make a better idiot"
<nuclearspin2000@y...> wrote:
> Hi All,
>
> I've got a pair of high end JR 4131 R/C helicopter servos that I've
> been wanting to use in my robot. They're extremely well made, ball
> bearings everywhere, high torque and fairly high speed, super
smooth
> and quiet.
>
> But they are so efficient that controlling robot movement is
> difficult, mainly because after you stop pulsing them, they
continue
> to rotate for some time so the robot shoots way past the point that
> you'd like it to stop. This has not been a problem using standard
> Futaba S148 as they have a significant amount of friction in them
(I
> think of it as built in braking).
>
> I am having a difficult time programming in a smooth braking
routine.
> About the only thing I can think of and tried is a decrementing FOR-
> NEXT loop which brings the servos to a gradual stop.
>
> But this either:
>
> a) takes too long or
> b) is jerky (not smooth if you decrement to fast)
>
> Is anyone else using ball bearing servos for drive wheels and has
> solved this problem? Thanks.
>
> -Dave
Hi Dave,
what it the control method you are using ?
it seems like you might be sending a signal until you reach the point
you want to be, then stop the signal. the inerta (for lack of a
better word) will keep the motion going until friction stops it.
A possible option might be to see how far you overshoot, say, 5%,
then set your control so it only trys to control to 95%, then let it
readjust to the last few percent.
How are you determining your meed tp change ? feedback sensors ?
If you are doing a PID control. increase your P value so the control
stops sooner as you approache where you want to be. and let the I
get you there.
another option is that old laser faxes and printers often have
electromechanical clutches so you can get a device that you can lock
in place with a pulse.
Dave
>--- In basicstamps@yahoogroups.com, "nuclearspin2000"
><nuclearspin2000@y...> wrote:
>
>
>>Hi All,
>>
>>I've got a pair of high end JR 4131 R/C helicopter servos that I've
>>been wanting to use in my robot. They're extremely well made, ball
>>bearings everywhere, high torque and fairly high speed, super
>>
>>
>smooth
>
>
>>and quiet.
>>
>>But they are so efficient that controlling robot movement is
>>difficult, mainly because after you stop pulsing them, they
>>
>>
>continue
>
>
>>to rotate for some time so the robot shoots way past the point that
>>you'd like it to stop. This has not been a problem using standard
>>Futaba S148 as they have a significant amount of friction in them
>>
>>
>(I
>
>
>>think of it as built in braking).
>>
>>I am having a difficult time programming in a smooth braking
>>
>>
>routine.
>
>
>>About the only thing I can think of and tried is a decrementing FOR-
>>NEXT loop which brings the servos to a gradual stop.
>>
>>But this either:
>>
>>a) takes too long or
>>b) is jerky (not smooth if you decrement to fast)
>>
>>Is anyone else using ball bearing servos for drive wheels and has
>>solved this problem? Thanks.
>>
>>-Dave
>>
>>
>
>
>Hi Dave,
>
>what it the control method you are using ?
>
>it seems like you might be sending a signal until you reach the point
>you want to be, then stop the signal. the inerta (for lack of a
>better word) will keep the motion going until friction stops it.
>
>A possible option might be to see how far you overshoot, say, 5%,
>then set your control so it only trys to control to 95%, then let it
>readjust to the last few percent.
>
>How are you determining your meed tp change ? feedback sensors ?
>If you are doing a PID control. increase your P value so the control
>stops sooner as you approache where you want to be. and let the I
>get you there.
>
>another option is that old laser faxes and printers often have
>electromechanical clutches so you can get a device that you can lock
>in place with a pulse.
>
>Dave
>
>
>To UNSUBSCRIBE, just send mail to:
> basicstamps-unsubscribe@yahoogroups.com
>from the same email address that you subscribed. Text in the Subject and Body
of the message will be ignored.
>
>
>Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>
>
Stopping by removing the pulse is like like stopping your car by just
taking you r foot off the gas pedal. That wouldn't be sufficient to
stop at a light. You have to brake. Find the dead band on the servos,
the pulse length that causes the wheels to stop, and use that to brake
your bot. The Parallax BOEBOT documentation explains how to do this.
chris in napa
> momentum I just apply a few pulses in the opposite direction. The
stopping
> speed will depend on the pulse width (which will determine how much
power
> goes to the motor). If you do it gently enough it won't hurt the
>servo too badly
Hi Greg,
I tried that but even a single pulse at too low a speed in the same
direction cause the servo to jerk back in the opposite direction. I'm
still trying but I'm beginning to see that for my next bot project,
it might be better to go with H-bridge motor control with braking.
Thanks.
-Dave
wrote:
I thought about doing what you suggest, adjusting the proportional
constant on the feedback to the desired output a little higher so it
stops sooner but I really didn't want to control motion based on an
assumption of how far the robot coasts due to inertia. See my other
post to Greg, I'm considering just moving to brake capable H-bridge
motor control. Servos are great but are limited in many senses.
Thanks.
-Dave
> Hi Dave,
>
> what it the control method you are using ?
>
> it seems like you might be sending a signal until you reach the
point
> you want to be, then stop the signal. the inerta (for lack of a
> better word) will keep the motion going until friction stops it.
>
> A possible option might be to see how far you overshoot, say, 5%,
> then set your control so it only trys to control to 95%, then let
it
> readjust to the last few percent.
>
> How are you determining your meed tp change ? feedback sensors ?
> If you are doing a PID control. increase your P value so the
control
> stops sooner as you approache where you want to be. and let the I
> get you there.
>
> another option is that old laser faxes and printers often have
> electromechanical clutches so you can get a device that you can
lock
> in place with a pulse.
>
> Dave
Unfortunately sending a stop pulse to stop the servos doesn't work
well for these servos. A singular stop pulse (or even one that not
stop but slower) causes the servo to actually jerk back in
the reverse direction and coast (believe or not). I can stop the
robot on a dime by issuing a continuous stop pulse command while
moving but this is extremely abrupt. The robot stops almost
instantly. This is hard on the servos and batteries as it causes
large sags in the power system as the inertia of the robot is
essentially trying to continue moving while the servo is holding it
back.
-Dave
--- In basicstamps@yahoogroups.com, Chris Burns <mwalimu@s...> wrote:
> Dave Mucha wrote:
>
> >--- In basicstamps@yahoogroups.com, "nuclearspin2000"
> ><nuclearspin2000@y...> wrote:
> >
> >
> >>Hi All,
> >>
> >>I've got a pair of high end JR 4131 R/C helicopter servos that
I've
> >>been wanting to use in my robot. They're extremely well made,
ball
> >>bearings everywhere, high torque and fairly high speed, super
> >>
> >>
> >smooth
> >
> >
> >>and quiet.
> >>
> >>But they are so efficient that controlling robot movement is
> >>difficult, mainly because after you stop pulsing them, they
> >>
> >>
> >continue
> >
> >
> >>to rotate for some time so the robot shoots way past the point
that
> >>you'd like it to stop. This has not been a problem using standard
> >>Futaba S148 as they have a significant amount of friction in them
> >>
> >>
> >(I
> >
> >
> >>think of it as built in braking).
> >>
> >>I am having a difficult time programming in a smooth braking
> >>
> >>
> >routine.
> >
> >
> >>About the only thing I can think of and tried is a decrementing
FOR-
> >>NEXT loop which brings the servos to a gradual stop.
> >>
> >>But this either:
> >>
> >>a) takes too long or
> >>b) is jerky (not smooth if you decrement to fast)
> >>
> >>Is anyone else using ball bearing servos for drive wheels and has
> >>solved this problem? Thanks.
> >>
> >>-Dave
> >>
> >>
> >
> >
> >Hi Dave,
> >
> >what it the control method you are using ?
> >
> >it seems like you might be sending a signal until you reach the
point
> >you want to be, then stop the signal. the inerta (for lack of a
> >better word) will keep the motion going until friction stops it.
> >
> >A possible option might be to see how far you overshoot, say, 5%,
> >then set your control so it only trys to control to 95%, then let
it
> >readjust to the last few percent.
> >
> >How are you determining your meed tp change ? feedback sensors ?
> >If you are doing a PID control. increase your P value so the
control
> >stops sooner as you approache where you want to be. and let the I
> >get you there.
> >
> >another option is that old laser faxes and printers often have
> >electromechanical clutches so you can get a device that you can
lock
> >in place with a pulse.
> >
> >Dave
> >
> >
> >To UNSUBSCRIBE, just send mail to:
> > basicstamps-unsubscribe@yahoogroups.com
> >from the same email address that you subscribed. Text in the
Subject and Body of the message will be ignored.
> >
> >
> >Your use of Yahoo! Groups is subject to
http://docs.yahoo.com/info/terms/
> >
> >
>
> Stopping by removing the pulse is like like stopping your car by
just
> taking you r foot off the gas pedal. That wouldn't be sufficient
to
> stop at a light. You have to brake. Find the dead band on the
servos,
> the pulse length that causes the wheels to stop, and use that to
brake
> your bot. The Parallax BOEBOT documentation explains how to do
this.
>
> chris in napa
<nuclearspin2000@y...> wrote:
> --- In basicstamps@yahoogroups.com, "Dave Mucha" <davemucha@j...>
> wrote:
>
> I thought about doing what you suggest, adjusting the proportional
> constant on the feedback to the desired output a little higher so
it
> stops sooner but I really didn't want to control motion based on an
> assumption of how far the robot coasts due to inertia. See my other
> post to Greg, I'm considering just moving to brake capable H-bridge
> motor control. Servos are great but are limited in many senses.
> Thanks.
>
> -Dave
Another option might be to ramp to a stop. as you get within some
percent of range, you start to slow the pulses down, or space them
out so as to control to a stop.
Dave
>Hi Chris,
>
>Unfortunately sending a stop pulse to stop the servos doesn't work
>well for these servos. A singular stop pulse (or even one that not
>stop but slower) causes the servo to actually jerk back in
>the reverse direction and coast (believe or not). I can stop the
>robot on a dime by issuing a continuous stop pulse command while
>moving but this is extremely abrupt. The robot stops almost
>instantly. This is hard on the servos and batteries as it causes
>large sags in the power system as the inertia of the robot is
>essentially trying to continue moving while the servo is holding it
>back.
>
>-Dave
>
>--- In basicstamps@yahoogroups.com, Chris Burns <mwalimu@s...> wrote:
>
>
>>Dave Mucha wrote:
>>
>>
>>
>>>--- In basicstamps@yahoogroups.com, "nuclearspin2000"
>>><nuclearspin2000@y...> wrote:
>>>
>>>
>>>
>>>
>>>>Hi All,
>>>>
>>>>I've got a pair of high end JR 4131 R/C helicopter servos that
>>>>
>>>>
>I've
>
>
>>>>been wanting to use in my robot. They're extremely well made,
>>>>
>>>>
>ball
>
>
>>>>bearings everywhere, high torque and fairly high speed, super
>>>>
>>>>
>>>>
>>>>
>>>smooth
>>>
>>>
>>>
>>>
>>>>and quiet.
>>>>
>>>>But they are so efficient that controlling robot movement is
>>>>difficult, mainly because after you stop pulsing them, they
>>>>
>>>>
>>>>
>>>>
>>>continue
>>>
>>>
>>>
>>>
>>>>to rotate for some time so the robot shoots way past the point
>>>>
>>>>
>that
>
>
>>>>you'd like it to stop. This has not been a problem using standard
>>>>Futaba S148 as they have a significant amount of friction in them
>>>>
>>>>
>>>>
>>>>
>>>(I
>>>
>>>
>>>
>>>
>>>>think of it as built in braking).
>>>>
>>>>I am having a difficult time programming in a smooth braking
>>>>
>>>>
>>>>
>>>>
>>>routine.
>>>
>>>
>>>
>>>
>>>>About the only thing I can think of and tried is a decrementing
>>>>
>>>>
>FOR-
>
>
>>>>NEXT loop which brings the servos to a gradual stop.
>>>>
>>>>But this either:
>>>>
>>>>a) takes too long or
>>>>b) is jerky (not smooth if you decrement to fast)
>>>>
>>>>Is anyone else using ball bearing servos for drive wheels and has
>>>>solved this problem? Thanks.
>>>>
>>>>-Dave
>>>>
>>>>
>>>>
>>>>
>>>Hi Dave,
>>>
>>>what it the control method you are using ?
>>>
>>>it seems like you might be sending a signal until you reach the
>>>
>>>
>point
>
>
>>>you want to be, then stop the signal. the inerta (for lack of a
>>>better word) will keep the motion going until friction stops it.
>>>
>>>A possible option might be to see how far you overshoot, say, 5%,
>>>then set your control so it only trys to control to 95%, then let
>>>
>>>
>it
>
>
>>>readjust to the last few percent.
>>>
>>>How are you determining your meed tp change ? feedback sensors ?
>>>If you are doing a PID control. increase your P value so the
>>>
>>>
>control
>
>
>>>stops sooner as you approache where you want to be. and let the I
>>>get you there.
>>>
>>>another option is that old laser faxes and printers often have
>>>electromechanical clutches so you can get a device that you can
>>>
>>>
>lock
>
>
>>>in place with a pulse.
>>>
>>>Dave
>>>
>>>
>>>To UNSUBSCRIBE, just send mail to:
>>> basicstamps-unsubscribe@yahoogroups.com
>>>
>>>
>>>from the same email address that you subscribed. Text in the
>>
>>
>Subject and Body of the message will be ignored.
>
>
>>>Your use of Yahoo! Groups is subject to
>>>
>>>
>http://docs.yahoo.com/info/terms/
>
>
>>>
>>>
>>>
>>>
>>Stopping by removing the pulse is like like stopping your car by
>>
>>
>just
>
>
>>taking you r foot off the gas pedal. That wouldn't be sufficient
>>
>>
>to
>
>
>>stop at a light. You have to brake. Find the dead band on the
>>
>>
>servos,
>
>
>>the pulse length that causes the wheels to stop, and use that to
>>
>>
>brake
>
>
>>your bot. The Parallax BOEBOT documentation explains how to do
>>
>>
>this.
>
>
>>chris in napa
>>
>>
>
>
>To UNSUBSCRIBE, just send mail to:
> basicstamps-unsubscribe@yahoogroups.com
>from the same email address that you subscribed. Text in the Subject and Body
of the message will be ignored.
>
>
>Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>
>
>
>
Then ramp to stop. It's gradual and saves your servo.
chris in napa
transistors at the same time. This puts a short circuit across the motor
and the motor will act as a brake.
jim
http://www.geocities.com/jimforkin2003/
Original Message
From: nuclearspin2000 [noparse]/noparse]mailto:[url=http://forums.parallaxinc.com/group/basicstamps/post?postID=TGtSjnYF8Af6a2sP2ccNkLn-JEmgo5AywIQm5EfPDQ00SuRqCAvv6ECK6qK-gal44AecIiewCYCkjbCmzw8uyM02Yw]nuclearspin2000@y...[/url
Sent: Sunday, November 16, 2003 8:01 PM
To: basicstamps@yahoogroups.com
Subject: [noparse][[/noparse]basicstamps] Re: Ball bearing servo issues....
--- In basicstamps@yahoogroups.com, "Dave Mucha" <davemucha@j...>
wrote:
I thought about doing what you suggest, adjusting the proportional
constant on the feedback to the desired output a little higher so it
stops sooner but I really didn't want to control motion based on an
assumption of how far the robot coasts due to inertia. See my other
post to Greg, I'm considering just moving to brake capable H-bridge
motor control. Servos are great but are limited in many senses.
Thanks.
-Dave
> Hi Dave,
>
> what it the control method you are using ?
>
> it seems like you might be sending a signal until you reach the
point
> you want to be, then stop the signal. the inerta (for lack of a
> better word) will keep the motion going until friction stops it.
>
> A possible option might be to see how far you overshoot, say, 5%,
> then set your control so it only trys to control to 95%, then let
it
> readjust to the last few percent.
>
> How are you determining your meed tp change ? feedback sensors ?
> If you are doing a PID control. increase your P value so the
control
> stops sooner as you approache where you want to be. and let the I
> get you there.
>
> another option is that old laser faxes and printers often have
> electromechanical clutches so you can get a device that you can
lock
> in place with a pulse.
>
> Dave
To UNSUBSCRIBE, just send mail to:
basicstamps-unsubscribe@yahoogroups.com
from the same email address that you subscribed. Text in the Subject and
Body of the message will be ignored.
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
Two things will help you control your servos.
1. Don't ever quit sending the control pulses. If you want the servo
stopped, send stop pulses (about 1.5ms). If you want it to run send
it run pulses. It is best to send the pulses every 20 ms. You can
sometimes get away with less often but the servo spec is usually 20
ms.
2. Ramp the speed up and down. That is, don't just go from full stop
to full speed or full speed to stopped. Of course that means you need
to know when you plan to stop in advance of being there. - Or
tolerate going past where you say stop. With most sensor systems for
a robot that isn't a problem.
The easiest way to do this is with a Co-Processor like one I sell at
www.bluebelldesign.com. It has a built-in ramping type servo
controller. You could also use a ramping type servo controller from
someone else. Make sure it will do ramping or you will still have to
do lots of calculations on the Stamp and that will negate most of the
controller's value.
It can be done totally with a Stamp but it tends to take all the
processing power of the Stamp - that leaves you little for whatever
else you want to robot to be doing.
Harry
Stamp Robotics to the next level
www.bluebelldesign.com
--- In basicstamps@yahoogroups.com, "nuclearspin2000"
<nuclearspin2000@y...> wrote:
> Hi Chris,
>
> Unfortunately sending a stop pulse to stop the servos doesn't work
> well for these servos. A singular stop pulse (or even one that not
> stop but slower) causes the servo to actually jerk back in
> the reverse direction and coast (believe or not). I can stop the
> robot on a dime by issuing a continuous stop pulse command while
> moving but this is extremely abrupt. The robot stops almost
> instantly. This is hard on the servos and batteries as it causes
> large sags in the power system as the inertia of the robot is
> essentially trying to continue moving while the servo is holding it
> back.
>
> -Dave
>
Two things will help you control your servos.
1. Don't ever quit sending the control pulses. If you want the servo
stopped, send stop pulses (about 1.5ms). If you want it to run send
it run pulses. It is best to send the pulses every 20 ms. You can
sometimes get away with less often but the servo spec is usually 20
ms.
2. Ramp the speed up and down. That is, don't just go from full stop
to full speed or full speed to stopped. Of course that means you need
to know when you plan to stop in advance of being there. - Or
tolerate going past where you say stop. With most sensor systems for
a robot that isn't a problem.
The easiest way to do this is with a Co-Processor like one I sell at
www.bluebelldesign.com. It has a built-in ramping type servo
controller. You could also use a ramping type servo controller from
someone else. Make sure it will do ramping or you will still have to
do lots of calculations on the Stamp and that will negate most of the
controller's value.
It can be done totally with a Stamp but it tends to take all the
processing power of the Stamp - that leaves you little for whatever
else you want to robot to be doing.
Harry
Stamp Robotics to the next level
www.bluebelldesign.com
--- In basicstamps@yahoogroups.com, "nuclearspin2000"
<nuclearspin2000@y...> wrote:
> Hi Chris,
>
> Unfortunately sending a stop pulse to stop the servos doesn't work
> well for these servos. A singular stop pulse (or even one that not
> stop but slower) causes the servo to actually jerk back in
> the reverse direction and coast (believe or not). I can stop the
> robot on a dime by issuing a continuous stop pulse command while
> moving but this is extremely abrupt. The robot stops almost
> instantly. This is hard on the servos and batteries as it causes
> large sags in the power system as the inertia of the robot is
> essentially trying to continue moving while the servo is holding it
> back.
>
> -Dave
>