Working of servos

Hi guys

can any one help me with the detailed explainations of working of servos and servo feedback drives…

I looked up online. no article is detailed as i can not understand how the servos moves left to right depending on the signal.

any help will be greatly appreciated

The Lynxmotion retail site has a link that describes a servo as well as anything I have been able to find. In fact, I use their link as a reference on the electronics forums that I belong to, when asked a similar question to yours. You can find the information here “What is a servo?”.

I do know how it work. but didn’t know that lynxmotion have a good detailled explenation…!!! :slight_smile:

hi,
i working on servo know and i need too informations to how operate it and control the speed .i make pulse 1.5ms logic high(5v) and 20ms logic low(0v) and this pulse repeate 15 times (20ms*15=300ms) and logic low for 500ms and this signal continuous.but the motor move very fast how i can slow it? please any one answer me with tutorial how to control the speed and time.
thanks…

you will need to add a timed move to the command so the servo will take a set time to reach the given position.

[code]servo0pw var word
movetime var word

servo0pw = 1000
movetime = 2500

start:
servo0pw = 1000
serout p0,i38400,"#0P",DEC servo0pw,“T”,DEC movetime,13]
pause 2500
servo0pw = 2000
serout p0,i38400,"#0P",DEC servo0pw,“T”,DEC movetime,13]
pause 2500
goto start[/code]

Servo Move Example: "#5 P1600 S750 "

The example will move the servo on channel 5 to position 1600. It will move from its current position at a rate of 750uS per second until it reaches its commanded destination. For a better understanding of the speed argument, consider that 1000uS of travel will result in around 90º of rotation. A speed value of 100uS per second means the servo will take 10 seconds to move 90º. Alternately, a speed value of 2000uS per second equates to 500mS (half a second) to move 90º.

Servo Move Example: "#5 P1600 T1000 "

The example will move servo 5 to position 1600. It will take 1 second to complete the move regardless of how far the servo has to travel to reach the destination.

Servo Group Move Example: "#5 P1600 #10 P750 T2500 "

The example will move servo 5 to position 1600 and servo 10 to position 750. It will take 2.5 seconds to complete the move, even if one servo has farther to travel than another. The servos will both start and stop moving at the same time. This is a very powerful command. By commanding all the legs in a walking robot with the Group Move it is easy to synchronize complex gaits. The same synchronized motion can benefit the control of a robotic arm as well.

You can combine the speed and time commands if desired. The speed for each servo will be calculated according to the following rules:

All channels will start and end the move simultaneously.
If a speed is specified for a servo, it will not move any faster than the speed specified (but it might move slower if the time command requires).
If a time is specified for the move, then the move will take at least the amount of time specified (but might take longer if the speed command requires).

Servo Move Example: "#5 P1600 #17 P750 S500 #2 P2250 T2000 "

The example provides 1600uS on ch5, 750uS on ch17, and 2250uS on ch2. The entire move will take at least 2 seconds, but ch17 will not move faster than 500uS per second. The actual time for the move will depend on the initial pulse width for ch17. Suppose ch17 starts at position 2000. Then it has to move 1250uS. Since it is limited to 500uS per second, it will require at least 2.5 seconds, so the entire move will take 2.5 seconds. On the other hand, if ch17 starts at position 1000, it only needs to move 250uS, which it can do in 0.5 seconds, so the entire move will take 2 seconds.

hi innerbreed ,thanks for reply…
i work on serial port commands and it work very nice, but i want now to controlling servo motor directly using fpga kit ,so i talk about the pulses send to servo motor ,how i can control the speed of servo? i increased the 20ms but the motor stutter,then i increased the number of repeated pulses to 50 times but the movement not smooth,please i need the timing of pulses to control the speed

Do it like this…

generate 1000uS pulse, pause 20uS
generate 1010uS pulse, pause 20uS
generate 1020uS pulse, pause 20uS
generate 1030uS pulse, pause 20uS
generate 1040uS pulse, pause 20uS
generate 1050uS pulse, pause 20uS
etc…
generate 1950uS pulse, pause 20uS
generate 1960uS pulse, pause 20uS
generate 1970uS pulse, pause 20uS
generate 1980uS pulse, pause 20uS
generate 1990uS pulse, pause 20uS
generate 2000uS pulse, pause 20uS

Viola, smooth motion… :wink: