Servo Speed

I’ve done some searching but failed to find my answer so i’ve put together what i believe to be correct and would like a confirmation from someone in the know.

Hitec servo’s change position based upon the pulse width (1mS to 2mS)

Hitec servo’s need a pulse atleast every 20mS (non digital)

How is the speed changed?

Am i correct in assuming that a higher frequency of pulses equals a faster servo movement? eg,
1 pulse per 3mS = fastest movement, 1 pulse per 20mS = slowest?

The speed of a servo is really determined by the servo design. It is specified in the servo datasheet and a fixed maximum value for a given voltage.

If you want to move at a slower speed than this you need to break the move into small segments and put delays between. Some servo controllers can do this for you.

Ah such as the SSC-32!

This makes sense and i thank you for the fast response.

I don’t suppose you have a reference to where you found this out? I’ve searched the Hitec website and failed to find the information myself. (I’ll be writing about this and referencing a forum post is not an ideal solution!)

in a complex servomechanism such as used in an industrial application you could possible specify parameters such as acceleration, travel velocity, and deceleration when commanding a movement.

in a typical hobby servo you have very little control over those parameters. you can impact them somewhat by changing the supply voltage but only because this limits the torque and speed of the motor in the servo. the hobby servo itelf is optimized to move its output position to the position commanded by the PWM pulse as quickly as it is able without significant overshoot. the traditional r/c application of hobby servos uses the human operator as the “controller” and their proportional control of a joystick/wheel is what allows a controlled movement from one position to another.

there may be (I believe there are) digital servos that allow you to use a programming device to control the parameters of acceleration, maximum velocity, deceleration, and allowed deadband for the individual servos. However these are settings and not something updated on the fly on a command by command basis.

the kind of information about how a hobby servo is intended to function that you are looking to reference is really old… got to be 30 years or more since the basics of this were more or less established by the industry. even then not all manufacturers do it the same way and there can be issues between their products… for example futaba servos used to operate with a different signal polarity then (I think it was) Airtronics so you could not mix and match their servos and receivers.

I don’t know what to use as your reference. Perhaps you can find applications information on one of the many servo manufacturers websites. I think one of the biggest problems may be the degree of comercialization that has occured in the industry tends to obscure the details because they don’t want to scare non-technical people away from their products… the flash and dazzle of bright colors sells a lot more product than trying to promote stuff in any sort of understanding required mode ever has. :unamused: Anyway, be prepared to google a lot and dig a bit. The information may well be there but I think it may be unlikely it will be loudly announced from a top level product page. at least now though you may have a better idea of what you are looking for. :wink:

The Hitec servos have a specification for 0.xx ms /60 degrees or similar. The SSC-32 is a good example and you will see that you can set the speed in us/s.

For reference maybe use the SSC-32 manual and the Hitec or similar specification table.

I read an article in Nov 2005 Elektor magazine with a description of a simple speed control algorithm and a design. The SSC source code also describes how it works.

Ther is quite a lot of information on the web, but it gets more complex as the other parameters such as acceleration and torque are included. Also you need to distinguish between hobby servos and other servos.

Some of the new robot servos with serial interfaces can have their speed set, and some also acceleration, torque and even PID parameters.

Cheers guys, My servos finally arrived today so it’s time to do some modifications :slight_smile: I’ll get back to theory work/writing later!

I’m pulling them apart, removing some stops and taking out the pot then attaching some external gears and re-attaching the pot to the output shaft :slight_smile:

I have five servos to do this to and haven’t done it before! I’m actually excited.

It occurs to me you did not get an answer on this question. Your assumption is incorrect, although after reading the previos posts you probably already know that. Most analog servos will respond to this type of pulse, where you keep the pulse width constant and vary the pulse rate, by changing position. Most digital servos will not respond and will just give you the position responding to the pulse width. I say most in both cases because every manufacturer can be a little different. Some of the more expensive analog servos actually held their position with an out of bounds PWM signal, others go screaming for the end stops and try to destroy themselves. I suppose if there is one big advantage to a digital servo over an analog, beyond the obvious performance gain, one is that most of them will not allow themselves to be destroyed in that latter manner. In the old r/c airplane days you always turned on the transmitter before the receiver+servos just for this reason… so the servos didn’t go screaming to an endstop and crash headlong into it. Newer receivers and servos are smarter so this is perhaps less of a concern. :wink:

Have fun with your new toys. 8)

Smacks self in forehead

I was writing this up and before i knew it i had written “This is essentially placing the servo under PWM control during rotation allowing maximum torque output at various speeds”

It IS pwm control of the servo speed but the pwm signal is going through the +/- rails!

Unless i’ve overlooked something here that means the SSC-32 is capable of atleast 64 simultaneous individual PWM signals. That is impressive to me! (and makes me very glad i’ve bought a controller rather than constructing a basic version :stuck_out_tongue:)

um, ssc-32 only has 32 channels… that can be controlled on both an individual and a group basis.

No. PWM is what is done with a DC motor to control its speed and direction. 0% PWM is no rotation. 50% PWM is roughly half the power to the motor, 100% is full voltage applied to the motor.

The SSC-32 is generating hobby servo pulses 500uS to 2500uS positive going pulses that repeat every 20mS.

You are thinking the SSC-32 generates PWM on two lines per servo. Not the case.

Thanks for clearing that up again, it is my first time using servo motors so the newby mistakes are shining through.

The firmware behind the speed control is more complex than i expected then assuming the net movement of the servo is still smooth at slower speeds, I will see for myself when my power is sorted and write back then.

Below is a link concerning servo peed that might be of interest to you.

seattlerobotics.org/encoder/ … 3003C.html

Hello,

Actually you cann’t make the servo faster by giving 3ms pwm and it will not work.
The 3ms and 20 ms is the PWM frequency and it enhance the response of the servo, if we talk in frequency 50HZ is the normal, 100 is the best and 30 HZ (33 ms) you will get the worse response for the servo.

The servo speed (response time )is an ID for the servo, so when you say it response in 160ms that’s mean if you want it to move in 60 degree it needs 160ms and if you want it to move 180 degree it will also need 160ms but needs more current.

Finally the 20ms has nothing to do with the speed of the servo.

Hi All,

Did anybody ever build a BAP program controlling both position and speed without using the Hservo command?

Thanks!

Xan

oy vay you have necro’d a thread that should have just died and disappeared because it’s full of wrong guesses about how r/c servos and the ssc-32 operate from someone just starting to learn. :cry:

in answer to your question though Xan I am not aware of anyone having yet coded direct servo control outputs for the BAP with the timed movement commands implemented in the ssc-32.

The autonomous BRAT code uses an SSC-32 emulation that was written by Nathan. It does the T command, but I don’t think it does the S command though.

Any link? :wink:

The link you gave me before was using the HSERVO command…

Thanks,

Xan

Hi Xan,

I believe the code that Jim is refering to is the Movement function within the Brat code. It generates the speed of each of the servos depending on the desired speed and how far each of the servos needs to move and then calls off to HSERVO to do the rest of the work.

I think all of the code for this is in one of the sticky threads or I know you can download it from an earlier project I did:
lynxmotion.com/images/html/proj101.htm

Kurt

Sorry Xan, I was really answering Eddieb, There is no code written for any of the atoms that does SSC-32 emulation without utilizing hservo. :frowning:

Sorry, my misunderstanding! :blush: