Hobby Servo Tutorial

Contributors: MikeGrusin, Byron J.
Favorited Favorite 24


Regardless of how you're driving it, servos sometimes require a little extra attention to get working. Here are a few troubleshooting tips.

  • Even unloaded servos can draw quite a bit of power. For full strength, you should be sure that your power supply can provide at least one Ampere per servo.
    • When the power supply isn't up to the task, servos behave poorly. They'll move more slowly than a properly powered servo.
    • Underpowered servos are prone to hunting, where they don't move cleanly to the desired position, but instead move back and forth near that position. They might also audibly hum, or repeatedly reset.
    • In some circumstances, when the servos and processor are running off the same power supply, the servos can draw so much current (or put so much noise on the line) that it may cause your processor to reset or misbehave. The simplest solution to this issue is to run your processor and servos off separate power supplies (but be sure to have a common ground between them). More complex solutions involve power supply noise filtering techniques; Google for advice.
    • Powering your project via USB is only suitable for the smallest of servo motors. A medium servo easily exceeds the 100 mA available from a USB port.
    • If your power LEDs flicker when you try to actuate the servo, you're in risky territory!
  • Servos have a maximum speed. If your servo is acting erratically, you may be trying to get it to switch from one position to another too quickly. Pausing between your commands gives the servo time to react.
  • As mentioned in the Range Constraints section, some servos have different ranges of movement.
    • When servos are driven past their end stops, they might hum, or grind their gears. Be careful if your servo starts clicking, a sign that the gears are binding.
    • If this will affect your project, look for a servo that is specified to provide 180° of rotation. Also, note that the Servo library's attach() command allows you to fine-tune each servo's min and max position, to help avoid driving it beyond the limits.

Happy Servoing!