Basic idea

The basic idea is to build a smart servo like Dynamixel, which is expensive and has more features than regular RC servos of course.
First of all let’s compare the regular RC servos and smart servos like Dynamixel.

  • Smart servo:
    • Internal structure: MCU, DC motor driver, angle sensor (either potentiometer or magnet encoder)
    • Serial bus control: All the servo can be chained together and only need two pins: TX and RX to control it, (SCL, SDA if using I2c)
    • Position feedback
    • Speed control
    • PID parameter setting
    • Torque sensing
  • Regular servo:
    • PWM position control, which means that you usually need N pins on your controller to control N servo motors without extra equipments (You can use multiplexer or something like an Adafruit 16-Channel 12-bit PWM/Servo Driver to control more servos with less pin)
    • Usually without torque sensing, position feedback, speed control, Daisy chain
    • ‘Fake’ speed control and position feedback can be achieved by using special library on your Arduino (VarSpeedServo, or this), or by using a dedicated servo controller like Pololu Maestro or ssc32.

Conclusion: Although ‘fake’ speed control and position feedback can achieved some how using regular servos, they are not precise. And you cannot adjust the PID parameters or daisy chain the servo. On the other hand, Dynamixel servos are expensive: a 15kgcm torque servo costs $50, a 35kgcm torque servo costs $200. The goal here is to build a 35kgcm torque servo within $40.


There are actually two ways to build a smart servo

  • Using geared DC motor, potentiometer, DC motor driver, MCU (any type of arduino will do), the advantage is that you choose high torque cheap DC motor easily
  • Using a regular servo motor (get rid of the electronics in it, keep the motor, case and potentiometer), the advantage is that the existing servo case, brackets and servo horns can be used.

Conclusion: I guess I will try both ways and see how it goes.