Alexis Lussier Desbiens
[Editors Note: Alexis has provided us with a great idea for implementing feedback from a servo motor. This article gives us an overview of how he modified a servo motor to give positional feedback by measuring the position of the potentiometer. Rather than just connecting the pot to the A/D converter, he determined that adding an op-amp filter would provide more resolution. Great idea.]
It's easy to control a servo, you just have to send it a command between 1 and 2msec and the servo will hold the commanded position. But you are never sure that the servo is really at this position. So, you have no way to know the real speed (first derivative of the position) of the servo or if the servo is broken (not moving to a changing command).
The T-80 (a servomotor) has four wires who seem to be imply in the position control loop. Three of those wires come from the internal potentiometer and the other one from the case of the motor. At least one of those wires should carry some information about the position... So this is my investigation!
I first look at the output from each of those wire at a constant position:
The red wire is the maximum value that the yellow wire can take, the yellow wire is the position and the green wire the lowest value that the yellow wire can take. The black wire is the ground. We can see to things. First, the max. value on the A/D will never reach more than 110 so we are losing half of the resolution of the A/D. Second, the lowest value is 20... so we are losing some range here too! I decided to design and differantial op-amp (between the yellow and the green wire) with a gain of 2.2x. This way, one degree will be near one count on the A/D :
I also put a low-pass filter (not shown)at the output because at high torque, the motor
from the servo generates a lot of noise. The graph below show the results : the output
varies from 40 to 200 on the A/D and depends a little bit of the load on the servo.
And this is one experiment that I did (finding the inertia of the servo) by using the rotational speed (first derivative one the output of my sensor). It give the rotational speed of the pulley attached on the servo for different falling mass (servo was off).
Other servo should have different characteristics. I know that the potentiometer of some servo have a range from 0 to 5V... So do not apply this circuit to your servo without taking some reading. Also, the color of each wires may change... I hope I gave you enough informations about how to proceed!
Alexis Lussier Desbiens - http://alexisld.cjb.net