Shop OBEX P1 Docs P2 Docs Learn Events
Servo Rotation Speed — Parallax Forums

Servo Rotation Speed

shanebatyshanebaty Posts: 30
edited 2011-05-26 10:40 in General Discussion
Simple question here. What determines the speed in a which a servo rotates? other than the physical part, such as the gears? for example... maybe the refresh speed?
Thanks!

Comments

  • PJAllenPJAllen Banned Posts: 5,065
    edited 2011-05-25 16:43
    With a continuous servo, the pulse width determines the rotation direction and speed.
  • Mike GreenMike Green Posts: 23,101
    edited 2011-05-25 16:44
    No. The refresh speed does not determine the speed at which a servo rotates ... as long as the refresh rate is roughly 50 times a second. More frequent servo control pulses may actually make the servo mechanism stutter as will refresh rates significantly below 50 times a second. If the supply voltage is low (below 4.5V), the torque and speed of the motor will be affected. Raising the voltage above 6V may increase the speed slightly, but will reduce the life of the servo motor due to increased motor brush arcing.

    With a standard servo, the construction of the motor (size of the motor, size of the windings, resistance of the windings, magnet type and size), the servo electronics design (the gain of the servo), and the gearing (ratio and friction) are the primary determinants of the speed.
  • schillschill Posts: 741
    edited 2011-05-25 16:49
    Different servos are designed to rotate at different maximum speeds as well. You can look at the specs to compare them. Typically, there is a trade off between torque and speed - higher torque servos are slower than lower torque servos.

    The price typically goes up for faster, higher torque, or both.
  • shanebatyshanebaty Posts: 30
    edited 2011-05-25 17:00
    Thanks for the fast reponses! heres a better way to put my question. Using the psc software you are able to change the speed in which the servo rotates. how does the software/controller do it?
  • PJAllenPJAllen Banned Posts: 5,065
    edited 2011-05-25 17:15
    You send the PSC scripts, by serial comm, and its on-board Propeller reads that and knows what to do.
  • Mike GreenMike Green Posts: 23,101
    edited 2011-05-25 17:28
    First of all, be clear about what you mean by speed. Remember that there are two types of servos. Standard servos use the control line to specify the desired position of the servo, usually over a 180 or 270 degree range. The PSC can perform a ramping operation where it steps the servo motor through a range of positions and the time required for the servo to reach some desired position is set by the PSC commands. If you command the servo to "instantaneously" move from one position to another, the speed of that position change is set by the servo as I've described.

    Continuous motion servos are modified to use the control line to specify the desired direction and speed of motor movement. The PSC doesn't know the difference between the two types of servos. If you specify ramping in the PSC commands, this refers to a change of speed and/or direction over time
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2011-05-25 23:02
    Servos really were NOT intended to be full rotation devices, so speed wasn't a high priority in design. The original servos were positioning devices, but hobbyist hacked into them and enabled the ability to use them to fully rotate. So, speed has never been developed to a high degree of accuracy.
  • shanebatyshanebaty Posts: 30
    edited 2011-05-26 01:49
    I am talking about the standard servos, not full rotation. By speed i mean the time that it takes to rotate from one position to another and how to adjust that speed. I think i understand about the ramping though. So basically instead of just going straight from point A to point B it takes"baby steps" through it to make it slower?
  • W9GFOW9GFO Posts: 4,010
    edited 2011-05-26 03:44
    You need a FOR...NEXT loop.

    Each iteration increments the PULSOUT by a certain number, for example;
    i  VAR  WORD
    
    DO
    
    FOR i = 1 to 500
    PULSOUT 12, (500 + i)
    PAUSE 20
    NEXT
    
    FOR i = 500 to 1
    PULSOUT 12, (500 + i)
    PAUSE 20
    NEXT
    
    LOOP
    

    Change the step and it will move faster;

    FOR i = 1 to 500, STEP 10
    PULSOUT 12, (500 + i)
    PAUSE 20
    NEXT

    Note that the above examples were done from memory and the syntax may not be exactly correct.

    Rich H
  • schillschill Posts: 741
    edited 2011-05-26 05:00
    Servos really were NOT intended to be full rotation devices, so speed wasn't a high priority in design. The original servos were positioning devices, but hobbyist hacked into them and enabled the ability to use them to fully rotate. So, speed has never been developed to a high degree of accuracy.

    Don't tell that to some of the RC pilots and drivers out there. There are a lot of people who do care about how fast their servos respond to commands - how quickly they rotate to the desired position.
  • Spiral_72Spiral_72 Posts: 791
    edited 2011-05-26 08:51
    shanebaty wrote: »
    I am talking about the standard servos, not full rotation. By speed i mean the time that it takes to rotate from one position to another and how to adjust that speed. I think i understand about the ramping though. So basically instead of just going straight from point A to point B it takes"baby steps" through it to make it slower?

    I'll give it a shot:
    The positioning servos run up to full speed proportional to the distance it must travel to meet the endpoint. A small distance (fine control) moves slow. A large distance (gross move) moves very fast. The only command a servo gets is a position in the form of a pulse width. From there, the electronics inside the servo determine how fast.... related to the distance to travel..

    If the servo is at position 0 degrees, you tell it to go 180 degrees in one command, it zzzzzZIP into position and the total time for the move is something on the order of 0.2seconds depending on the servo (check the specs of your particular unit)

    If the servo is at position 0 degrees, you tell it to go 180 degrees in ten steps position steps, 18, 36, 54, 72.......180 degrees, it will run considerably slower to meet the intermittent steps.

    If you are at 0.... tell it to go to 180 in 180 steps: 1,2,3,4,5,6,........179, 180 you will likely fall asleep before it gets to the final position.
  • GordonMcCombGordonMcComb Posts: 3,366
    edited 2011-05-26 10:40
    To muddy up already murky waters, what's been written here only applies to analog servos. Many of the better digital servos are programmable, where you can set the rotation speed. Internally it is doing something very similar to Rich's code example.

    A problem with trying to control speed through incremental changes, apart from chewing up processor time, is that it uses up more battery power. If you want a slower response it's usually better to get a lug of a servo. These are slower by way of higher internal gear ratios. That also gives them more torque.

    You can also power them with a lower voltage to slow them down, but this decreases their torque. Most analog R/C servos are meant for 4.8v operation, but I've used some brands with less. You MUST be careful with the signal voltage level as some brands will blow when the signal is an appreciable amount over V+. Use appropriate caution when experimenting. I have a very large graveyard of servos that didn't come out of one experiment or other...

    -- Gordon
Sign In or Register to comment.