Servo control: pulse width working range ?

57 views
Skip to first unread message

Pavel Yermolenko

unread,
Sep 16, 2020, 10:36:14 AM9/16/20
to BeagleBoard
Hello,

I noticed that many servo motor manufacturers don't provide datasheets for their products (for example for my servo it's the case)
Generic values that can be found on the web don't work for every servo.
For example what should be pulse width for 0/90/180/360 degrees.
I suppose the value of pulse widths depends on a particular model.

For example I noticed that if pulse width in quite low, the servo heats up as an iron.

Any comments ?

Thanks.

robert.sty...@gmail.com

unread,
Sep 16, 2020, 11:43:33 AM9/16/20
to BeagleBoard
My memory is a little rusty, but IIRC

With remote control (RC) servos, there is a pulse width between 1ms and 2ms to give minimum to maximum angle. 
There is pulse repetition rate of 20ms.


Pulse width cycle time 20ms, repetition 50Hz
Pulse width duty 5% to 10%

Dennis Lee Bieber

unread,
Sep 16, 2020, 11:55:01 AM9/16/20
to Beagleboard
On Wed, 16 Sep 2020 07:36:14 -0700 (PDT), in
gmane.comp.hardware.beagleboard.user Pavel Yermolenko
<py.ohayo-FOWRGO...@public.gmane.org> wrote:

>I noticed that many servo motor manufacturers don't provide datasheets for
>their products (for example for my servo it's the case)
>Generic values that can be found on the web don't work for every servo.
>For example what should be pulse width for 0/90/180/360 degrees.
>I suppose the value of pulse widths depends on a particular model.
>

Very few servos have a 360 rotation range... +/- 90 degree is more
common (the exception being servos that have had the position feed back
logic removed and act as variable speed continuous motors).

https://www.jameco.com/jameco/workshop/howitworks/how-servo-motors-work.html

1.5mS pulse should be the "neutral" position (middle of the range).

https://learn.adafruit.com/adafruit-motor-selection-guide/rc-servos
https://learn.adafruit.com/adafruit-motor-selection-guide/continuous-rotation-servos

>For example I noticed that if pulse width in quite low, the servo heats up
>as an iron.

Likely you are over (under) driving the position, and the servo can not
physically move to the position you are requesting -- this leaves the coils
energized with the servo pushing against the internal end-stop.

My suggestion would be that you write a short calibration program with
which you adjust the pulse width from neutral, one step at a time, until
the servo reaches an end point (ie; the control "horn" stopped moving while
you changed the pulse width), then back up until you just detect the horn
has moved off the end-stop. Record that value and repeat for the other
direction. Maybe put a sticker on the servo with the values of the
end-point pulse widths -- neutral position should be the average of those
two values.

Do that for all your servos, and either use the minimum span for all,
or program the limits per servo (if using Python, install Adafruit Blinka
and libraries for CircuitPython -- the servo class allows override of
min/max pulse width; they default to 0.5 - 2.5ms, but do state that
"standard" servos are supposed to work with 1.0 - 2.0ms width).

https://learn.adafruit.com/circuitpython-essentials/circuitpython-servo
https://learn.adafruit.com/circuitpython-on-raspberrypi-linux (ignore the
R-Pi, it works for BBB also)
https://learn.adafruit.com/using-servos-with-circuitpython/high-level-servo-control




--
Dennis L Bieber

jonnymo

unread,
Sep 16, 2020, 1:27:59 PM9/16/20
to Beagle Board
Actually 360 degree Continuous Rotation Servers are quite common. There are basically two types of servos: 360 degree Continuous Rotation and 90 degree Standard Rotation.  Each has a different purpose.

As far as manufacturers not providing datasheets for their products, I would suspect this depends on where you are purchasing the servers from.  If you stick with manufacturers such as Hitec, Tower, Futaba, or Parallax you should be fine.  If you are purchasing cheap off brand servers, then you may run into an issue with each being different as far as how they react to a PWM signal. Also, depending on the application, there could be a difference between plastic and metal gears.  I tend to like metal gear servos though. 

Cheers,

Jon
 

--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups "BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/nkb4mfd0pbjeigumqjvhb0k8gur9qql2ed%404ax.com.

Dennis Lee Bieber

unread,
Sep 16, 2020, 6:53:28 PM9/16/20
to Beagleboard
On Wed, 16 Sep 2020 10:27:17 -0700, in gmane.comp.hardware.beagleboard.user
jonnymo <jonnymovo-Re5JQE...@public.gmane.org> wrote:

>Actually 360 degree Continuous Rotation Servers are quite common. There are
>basically two types of servos: 360 degree Continuous Rotation and 90 degree
>Standard Rotation. Each has a different purpose.

>On Wed, Sep 16, 2020 at 8:54 AM Dennis Lee Bieber <dennis.l.bieber-Re5...@public.gmane.org>
>wrote:
>
>> Very few servos have a 360 rotation range... +/- 90 degree is more
>> common (the exception being servos that have had the position feed back
>> logic removed and act as variable speed continuous motors).


I'd have though I'd covered those with the "act as variable speed
continuous motors".

However, the OP asked about setting specific angles of 0, 90, 180, 270
(I'm assuming the 270, they went 0, 90, 180, 360). Continous rotation types
do not have feed-back for positions, so could not be commanded to rotate to
any particular angle.

That leaves us back with common positioning servos which normally run
-90 to +90 (or 0 to 180, if one prefers... +/- 90 makes for sense if being
used for a steering servo on a robot, where 0 is "straight ahead". It may
also make sense for throttle control, where 0 is stopped, -90 is full
reverse, +90 is full forward).



--
Dennis L Bieber

Pavel Yermolenko

unread,
Sep 17, 2020, 4:53:32 AM9/17/20
to BeagleBoard
 Very few servos have a 360 rotation range... +/- 90 degree is more
common (the exception being servos that have had the position feed back
logic removed and act as variable speed continuous motors).
The mine has the range (at a glance) about 200 degrees.

Likely you are over (under) driving the position, and the servo can not
physically move to the position you are requesting -- this leaves the coils
energized with the servo pushing against the internal end-stop.
Sure, I was out of range and torque was quite high.
But why the range isn't specified in datasheets ... applying over/under driven position one can damage servo definitely.
Safe operating conditions - the first thing that should be in the datasheet, isn't it ?

My suggestion would be that you write a short calibration program with
which you adjust the pulse width from neutral, one step at a time, until
the servo reaches an end point (ie; the control "horn" stopped moving while
you changed the pulse width), then back up until you just detect the horn
has moved off the end-stop. Record that value and repeat for the other
direction. Maybe put a sticker on the servo with the values of the
end-point pulse widths -- neutral position should be the average of those
two values.
It is difficult to estimate with the naked eye when the servo reaches the end / start points.
Another detail: I observed a kind of hysteresis when the servo approaches the end or start points.
I mean that by approaching one of these points I can move forward in relatively small steps. Once the limit point is reached, to go in the opposite direction, I have to take a relatively large step.
Probably one of the methods for determining the limit points is current control, i.e. when the torque continues but the servo can no longer rotate, will the current rise?

Do that for all your servos, and either use the minimum span for all,
or program the limits per servo (if using Python, install Adafruit Blinka
and libraries for CircuitPython -- the servo class allows override of
min/max pulse width; they default to 0.5 - 2.5ms, but do state that
"standard" servos are supposed to work with 1.0 - 2.0ms width)
Ok, thanks.

Sincerely,

Pavel.

Pavel Yermolenko

unread,
Sep 17, 2020, 5:03:31 AM9/17/20
to BeagleBoard
If you stick with manufacturers such as Hitec, Tower, Futaba, or Parallax you should be fine.
I have Tower servo.
I asked Tower support for the information and tech support replied that the 500-2400us pulse width provided a range of 0 to 160 degrees, while according to my observations the "width limits "are approximately 400 and 2500us, which provides an angle range of 0 ... 200 degrees.

Sincerely,

Pavel.

On Wednesday, September 16, 2020 at 7:27:59 PM UTC+2, jonnymo wrote:
Actually 360 degree Continuous Rotation Servers are quite common. There are basically two types of servos: 360 degree Continuous Rotation and 90 degree Standard Rotation.  Each has a different purpose.

As far as manufacturers not providing datasheets for their products, I would suspect this depends on where you are purchasing the servers from.  If you stick with manufacturers such as Hitec, Tower, Futaba, or Parallax you should be fine.  If you are purchasing cheap off brand servers, then you may run into an issue with each being different as far as how they react to a PWM signal. Also, depending on the application, there could be a difference between plastic and metal gears.  I tend to like metal gear servos though. 

Cheers,

Jon
 

On Wed, Sep 16, 2020 at 8:54 AM Dennis Lee Bieber <dennis...@gmail.com> wrote:
On Wed, 16 Sep 2020 07:36:14 -0700 (PDT), in
gmane.comp.hardware.beagleboard.user Pavel Yermolenko
To unsubscribe from this group and stop receiving emails from it, send an email to beagl...@googlegroups.com.

Dennis Lee Bieber

unread,
Sep 17, 2020, 11:18:24 AM9/17/20
to Beagleboard
On Thu, 17 Sep 2020 02:03:31 -0700 (PDT), in
gmane.comp.hardware.beagleboard.user Pavel Yermolenko
<py.ohayo-FOWRGO...@public.gmane.org> wrote:


>I asked Tower support for the information and tech support replied that the
>500-2400us pulse width provided a range of 0 to 160 degrees, while
>according to my observations the "width limits "are approximately 400 and
>2500us, which provides an angle range of 0 ... 200 degrees.
>

Take into account that if those are pushing against the internal stops,
you are leaving the coils energized trying to move the shaft -- which could
lead to that overheating that had been mentioned before.

The range provided by Tower support is probably the intended/safe
design range -- which all are supposed to support. Going beyond those
limits may be manufacturing variance that can not be relied upon.


--
Dennis L Bieber

Reply all
Reply to author
Forward
0 new messages