10-bit rotary precision for servos

[Antonb] added 10-bit encoding to a standard servo. He’s removed the potentiometer, separated its shaft and used it to rotate a small magnet. By sandwiching an AS5040 rotatory encoder IC into the servo’s housing he can now measure the precise orientation of the servo horn. This is made easier by his tiny breakout board for the chip. If you want to layout your own PCB you can download the EagleCAD files for this device. Take a look at the final product in the clip after the break.



  1. Pete says:

    I wonder how many counts the gear backlash produces.

  2. tim says:

    or just buy a digital servo…

  3. tehgringe says:

    @tim: nice contribution. If it was not for your comment, I would not have known this was possible and instead would have been pulling all my servos apart trying this hack – phew!

  4. cath0de says:

    too bad the position data is sent back as pwm. might be too much overhead for a small controller.
    oh, a little more reading and it turns out that encoder can output step/direction. a simple interrupt seems way less work and uses one less timer. there must be a reason he chose to do it this way.

  5. barryfzr says:

    They are great little encoders


    almost finished one with a pic onboard ;o)

    other stuff at….;o)


  6. barryfzr says:

    Also on the servo video above my little pic18f4550 board with onboard regulator/power source, usb programming/power option, 40 pin breakout. ;o)

  7. Gizer20 says:

    @CathOde The chip has multiple modes. PWM, quadrature encoder, even you can implente an analog output. You can find a board with almost all the modes here: http://www.reprap.org/bin/view/Main/Magnetic_Rotary_Encoder_1_0

  8. googfan says:

    youtube fail

    here you are.

  9. cath0de says:

    yeah i realized the chip has a bunch of modes. i just don’t understand why one would use pwm for this. i play with the attiny series of chips as controllers so i tend to stay away from timers for inputs. it’s a great proof of concept though.

  10. Gizer20 says:

    Well PWM have multiple advantages you can control detect when the wheel make a complete turn and control the position only with 1 pin of the microcontroler. if you compare with the 3 pins needed the quadrature encoder mode…
    If you’re shorts in pins is better.

  11. Dork says:

    The PWM can be fed into an RC filter, which will produce an analog voltage output, directly replacing the pot.

  12. google says:

    bit new but how dus this thing work and what dose it do

  13. svofski says:

    Practically every microcontroller has PWM capture mode which is extremely precise and requires like zero overhead. Read your datasheets.

    Awesome hack, I had no idea about such sensors. Really cool.

  14. Antonb says:

    if you set up an interrupt on the capture module of your PIC or ATMEL it is very easy to get accurate position data with minimal computational overhead.
    there is no backlash since the magnet is mounted on the servo’s o/p shaft :)
    the digital servo reports position data but you cannot get continuous rotation

    There is something better out there than a digital servo. I am preparing a second generation board that will have the H-bridge and an ATMEGA168, all inside the servo. I will also release assembly instructions, code for PID control and schematics. The first generation boards have already been sold out.

    Check my google code page: http://code.google.com/p/zosupermodified/

    I will be constantly adding stuff so keep posted

  15. SparkyGSX says:

    Also, the PWM signal gives you the absolute position, as opposed to step/direction signals. Also, with step/direction signals, you have to be very careful with interrupt latency, as you could receive a fairly high frequency signal. Also, in the interrupt service routine, you would have to sample the direction signal, while this signal may have changed in the meantime.

  16. Pete says:

    @antonb OK, so no gear backlash but, the resolution is still ~0.35 or the better part of a half degree with this setup.

    How critical is the centering of the magnet over the center of the chip to getting a “linear” output from the AS5040?

  17. ginge says:

    you should check out the http://www.openservo.org openservo! It supports the AS5 chips for position encoding and precise i2c controlled movement.

  18. L Stark says:

    I made one of these in nineteen dickety three out of a pie plate and some dung. You whippers better start snappin!!!

  19. Antonb says:


    I would think the centering of the magnet is critical. Saying that, provided you centre the breakout board on the styrene plate resonably well, and that the styrene plate fits tightly inside the servo’s casing, you shouldn’t have any problems. If you need more info on this visit:


    download the datasheet and check on page 21.

    It specifies some placement tolerances as well as, the sensor’s alignment mode which one can use to ensure proper alignment of the IC with the magnet.

  20. barryfzr says:

    We’ve proved it can be done… now lets see the manufacturers making better servos and controllers!

  21. svofski says:

    @barryfzr: the manufacturers couldn’t care less. RC hobby business is a form of robbery.

  22. Yann Vernier says:

    I’ve been doing this with Melexis sensors. The Austria sensors are much nicer to interface, though.
    The magnet centering does not actually matter at all, if the chip itself is centered under the shaft. Otherwise, you need to calibrate; some of the sensor chips have a built in correction table so you can be far off-center. All it really needs is that the magnet is dominant, which is easy to accomplish as magnetic fields drop quite fast with distance.

Leave a Reply

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

WordPress.com Logo

You are commenting using your WordPress.com 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,357 other followers