Introduction: How to Mod a Servo to Get Closed Loop Feedback

► While driving a servo with a microcontroller (as Arduino), you can only give him orders of target location (in PPM signal).

With this order, the servo will move to this target location. But it's not instantaneous! You don't know exactly when the location will be reached...

This is open loop control.

► If you need to move to different locations in sequence, the usual way is to insert pauses (delay instructions) in order to let the servo achieve the move.

And if you also need reactivity, you have to mod the servo in order to get a closed loop circuit.


Step 1: Disassembling the Servo

unscrew the 4 screws

don't be surprised if there are on the top... look how the bottom is assembled with these long screws

dislodge the bulkhead adapter from the plastic bottom

you can now see the PCB, don't move it too far: there are short wires.

ready for the next step, finding the signal pin of the internal potentiometer!

Step 2: Use a Servo Tester in Order to Be Able to Move the Servo While Measuring Voltages

This tester offer you 3 modes: choose the manual mode when turning the pot, the servo is turning accordingly.


Look for something called "Multi Servo Tester 3CH ECS Consistency Speed Controler Power Channels CCPM Meter" for few bucks.

Step 3: Find the Signal Pin

The servo use an internal potentiometer in order to know its location.

We'll hack the PCB and retrieve this information from the pot itself :-)

In this case, I could see below the PCB the 3 red wires going from the pot (gnd, 5v, signal).

Use the multimeter in voltage continuous position. A good educated guess is the middle wire but...

Measure the voltage between black servo wire and the 3 pins (coming from 3 wires from below)

You should find 0V, 5V or less, and a third voltage that varies while the servo is moving. Use the servo tester for this!

Got it? next step

Step 4: Soldering

Now you want to solder a wire to this pin but BEFORE this, make sure to drill a hole in the bottom and to insert the wire.

Now you can solder!

Step 5: Signal Wire

Now you have a servo with a 4th wire giving you its actual position (no matter the last order he received).

Step 6: 8V Servo

You can perform the same with stronger servo often supplied in 7V or 8V or more


Juste be sure to check that pot signal varies always below 5V. If it would vary up to 8V this will cause your arduino to burn.

In the case of this (splendid) 60kg.cm RDS5160 digital servo, the power supply can be between 6 and 8.4VDC.

But the electronic board converts the voltage to a max of 3.3V: it's OK for arduino purposes :-)

By the way, you can knot your wire behind the plastic case to prevent tearing from outside...

Step 7: Going Further

You can now code a PID to regulate its movements.

Here are some links:
on servo http://forums.trossenrobotics.com/tutorials/how-to-diy-128/get-position-feedback-from-a-standard-hobby-servo-3279

on PID https://www.wescottdesign.com/articles/pid/pidWit...