Having obtained a bunch of RC servos I thought it would be a good idea to test them. One way to do it would be to use an Arduino; which is what I did initially. I then needed the Arduino for another project, so I no longer had a convenient way of testing my servos. I decided to create a stand-alone device for the purpose. It had to be simple and cheap.
RC servos are controlled by a 50Hz PWM (Pulse Width Modulation) signal. To control the angle of the servo the period of the pulse varies from about 500uS to about 2.5mS; this is during the 20mS period of the 50Hz cycle. The high ratio between the PWM pulse and the 50Hz duration does make life a little difficult.
The circuit contains a dual op-amp. The part I used can work right down to 3V and up to 32V. Pretty much any voltage you choose to run your servo at can be accommodated. I tested the circuit with a servo on from 3V to 6V which is all my servos would take. When varying just the power the servo didn’t move at all whatever position it was set to. I also tested it up 15V without a servo but with an oscilloscope attached and pulse remained stable.
The first part, IC1A is a blocking oscillator set to run at about 50Hz and the second part IC1B is a comparator. Importantly the blocking oscillator retains the same frequency whatever voltage you drive it from. All the other parts of the circuit are also referenced to V+ as well so the circuit behaves consistently whatever supply you use. When I set this up the oscillator did not run at exactly 50Hz but it worked anyway. If you want the circuit to run more precisely you can replace R1 with a 56k resistor in series with a 50k trimmer and adjust for 50Hz.
Normally you would take the signal from the output of the blocking oscillator but this is a square wave and in this case what is needed is a triangle wave; this is available on the inverting input of the op-amp. It is not a perfect triangle wave, but it serves the purpose very well. The triangle wave goes from about 0.25 of V+ to 0.75 of V+. The triangle wave is compared with the control voltage set by the divider on the inverting input of the IC1B.
The required range of the control voltage on the input of the comparator is only about 1/20th of V+ which is why the voltage divider is so elaborate. I found that the best way to adjust the trimmer R8 was to set the control R6 to midway and then adjust R8 until the servo also went to halfway. Once set in this way the control should sweep the servo to its full extent.
Note that to improve stability my circuit has a 220uF capacitor underneath the board between pin 4 and pin 8 of the op-amp. Without this there would be interference from the motor causing the servo to jitter. The layout doesn’t follow the schematic exactly and the potentiometer R6 is connected between the top track and V+.