The inner workings of servo motors

Servos seem to be the go-to option when adding motors to hobby projects. They’re easy to hack for continuous rotation for use in a robot, but with the control board intact they are fairly accurate for position-based applications. But do you know how the hardware actually works? [Rue Mohr] recently published an article that looks at the inner world of the servo motor.

As you know, these motors use a voltage, ground, and signal connection for control. The position of the horn (the wheel seen on the servos above) is dependent on that control signal. The duty cycle of a 20 ms pulse decides this. Inside the housing is a control board capable of measuring this signal. It’s got a chip that monitors the incoming PWM pulses, but that’s only half of the equation. That controller also needs feedback from the horn to know if its position is correct or needs to be changed. Integrated with the gear box that connects the motor to the horn is a potentiometer. It’s resistance changes as the horn turns. Knowing this, it is possible to fine tune a servo by altering that resistance measurement.


  1. gmcurrie says:

    Anyone know what happened to the ‘SuperModified’ servo project – seemed to stall/go offline sometime in 2010 -are they available to buy anywhere?

  2. Mike says:

    I once took apart some servos and wired the motor and (via an H-bridge) and pot to a micro-controller to see if I could get a faster update rate i.e. not have to send goofy pulses in but just move whenever I wanted.

    Long and short of it was that while I made a PID loop which worked okay after tuning, it wasn’t nearly as good as the in built circuit could handle.

    I suspect the commercial controllers may also use current sensing and maybe PID + feed forward or some other refinement.

  3. Brett_cgb says:

    Servos are designed to respond to control pulses 1.0-2.0ms long by moving within a 90-180 degree range, depending on the manufacturer. Within this range, linearity is pretty good. When new, positioning is also pretty good, but degrades with use.

    Most servos will still respond to a 0.5-2.5ms pulse range by moving through as much as a 300 degree range of motion (but your milage may vary). Linearity is not real good, but for such an extreme motion range, you generally don’t care.

    The last tip. When servos do not receive pulses (usually after 100ms), they power down the motor. Power consumption falls to a couple mA, but the horn can be easily pushed to a new position. This can also extend the life of a servo if otherwise would be continuously driving against a stop.

    Robotic servos offer a few interesting features. For the same physical size, they often have more than twice the power (torque). Their position can be interrogated if triggered correctly (they output a pulse whose width indicates position). During the reply pulse, the servo motor is not driven. Alternatively, they can be controlled, interrogated, and configured using serial data and your controllers UART.

    Look for the open servo project. This embeds a microcontroller and motor driver onto a small PCB. The PCB and code are open source.

  4. Coligny says:

    >>>They’re easy to hack for continuous rotation for use in a robot,<<<

    Yeah, or if you're a bit smarter just buy sailing winch continuous rotation servo for the same price a regular ones (or cheaper on DX…)

    • hat says:

      Using a sail winch servo isn’t a bad idea for continuous rotation applications, but they cost about two or three times as much as a general purpose servo. Granted, they are often nicer servos, but a modified GP servo usually gets the job done for half the cost.

    • Sven says:

      The sail winch servos i have bought are not continuous, they just use a multiturn potentiometer. The ones i have bought can travel 4 or 6 rotations but then they reach the end position.

  5. ejonesss says:

    great for rc cars bad for real cars like toyota (remember the toyota scare?)

    i suspect that a servo was used either attached directly to the throttle or connected to the cable to pull it.

    the problem i suspect is the potentiometer in the servo or pedals would get noise ( remember old radios where the volume control would crackle) bad enough on a radio but a car it may cause the car to rev up and/or rev up and get stuck at the end of the travel range.

  6. bothersaidpooh says:

    I did wonder about substituting a linear HE sensor, PIC and a few components to make a CR AND precision servo.

    Turns out that the A-D on the 12F683 won’t work because it can’t detect such small changes in voltage which is the same reason why PIR sensors won’t work on this micro.
    However, if you were to make a simple differential amplifier using a dual opamp then this could be connected directly to the existing pot pins.
    To switch between CR mode and normal you just put a frequency sensor on the input, so if it switches to 25Hz PWM (out of spec) then the opamp disables the limit.

    Digiservo on the cheap anyone? (g)

  7. Hello, I know this is a very late reply, but the Supermodified controller is back on the grid.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

Join 96,660 other followers