Note: Be sure also to check out the newer Servo Tester 2.
This is yet another R/C servo tester circuit. There are hundreds of different testers out on the net. Some are analogue, others are digital, but common for almost all of them are that they provide a way of changing the generated pulse width (with a knob or a couple of buttons) and that is it.
My servo tester offers some more features, but the
schematic is kept quite simple.
Let's have a look at it right
away:

The tester is based on an Atmel
AT90S2313 AVR. Other components include 4 push-buttons and a 1*16
character LCD.
NOTE: AT90S2313 has since been replaced by
ATtiny2313. There is a new version available for this AVR.
Notes to the schematic:
The value of C1 and C2 may need to be changed, depending on the requirements of the crystal you're using.
Pins 7-10 to the LCD have been connected to ground. Some LCD's require these 4 pins to be left floating in order to work.
The contrast adjustment (R3) is not connected to a negative voltage. There is no negative voltages anywhere in this circuit. Be sure to get a LCD that has enough contrast without requiring a negative voltage at the contrast pin.
As you may have noted, there is no power supply. The idea is to use a normal receiver battery (4-cell NiCd/NiMH) and connect it to one of the servo plugs. For this reason, you may want to have two servo output plugs in parallel. One for the servo, and one for the battery.
A decoupling capacitor of around 100nF from Vcc to Gnd, close to the AVR, could be a good idea also.
The display should preferably be a genuine HD44780 based 1*16 character LCD. I have recently become aware that certain “compatible” chipsets doesn't handle the cursor exactly the same way as the real HD44780. This may affect the look in the display, and possibly make menu navigation more difficult than needed. In particular, I know that at least the KS0070B has this problem.
The circuit is so simple, that I didn't even bothered to make a dedicated PCB for it. Just mock it up on whatever you may have nearby. But for your own sake, make sure you put the AVR in a socket in case of problems or future software revisions.

Ok. Enough hardware for now. Let's go to the.....
Newest version is 2.05. This one is for the newer tiny2313. Download it here: servotst_205.zip
The newest version for the original (and now obsolete) AT90S2313 is 2.04. Download it here: servotst_204.zip
There is no functional difference between 2.04 and 2.05, other than they are for different AVR's.
The zip-file contains a .hex and a .eep file, which must be programmed into the AVR Flash and EEPROM memories respectively. If you have previous experiences with AVR's, you probably already have the means to program them. If not, one cheap way could be to use PonyProg from LancOS.
Also included in the zip-file is the source code for the servo tester, if you feel like improving its functionality.
At power on, the servo tester will look like the
previous image. It is driving the output with a pulse width of 1.5200
ms. By pressing the left and right buttons, you can move the cursor
over each digit of the pulse width. When placed over a digit, you can
increase and decrease the digit with the up and down buttons. The
smallest step available is 0.1 µs, which is more than enough
for even the best digital servos on the market. You will most likely
never use the last digit.
You can't go lower than 0.8000 ms or
higher than 2.2000 ms. Pulse widths beyond these limits can cause
mechanical failure in some servos.
By placing the cursor to the far left (as in the picture), you can access other functions by pressing the down button (and up to get back). The next function is “In”. It displays the current pulse width on the input plug. If no pulse width is present, the display will show 0.0000 ms. Due to the very high resolution (0.1 µs), the readout can be very erratic and quite hard to read. If this is the case, press down once more to go to the “In avg” display. Here, the average of the last 32 pulses are displayed. This provides for a far more steady readout.
By pressing down again, you get to the “Transparent” mode. Here, the input pulse width is once again shown, but this time it is also sent to the output. This way you can insert the servo tester between a receiver and a servo in order to see the pulse width, but without interfering with the servo function.
The next three menus are the “Sweep min”, “Sweep max” and “Sweep step”. Here you can setup a low and a high pulse width, and a speed. By going to the next (and last) menu “Sweep On”, the output will start to move the servo from the low pulse width to the high, and back again, at a certain speed. This can be used for long time testing servos or to find the practical reaction time limit for a fast servo.

Oh, so all of the above wasn't enough, eh?
Well, the 2313 is a very small controller, with only 2 Kb Flash. I think I've more or less reached the limit for what can be squeezed into it. Every now and then I receive some requests for enhancements or new features, but I haven't made a single one of them. I have started on a few of them, but over and over again, I bumped into the 2 Kb limit. And then I have just left it where it is now. After all it is already a very feature packed servo tester compared to most other designs on the net.
But I have to admit that it does have some shortcomings. In particular it isn't very well suited for using together with an ESC. It is too complicated to make quick adjustments to the pulse width. It is much easier just to turn a knob one way or the other. There is no need for any high precision here.
So I've finally decided to move on and make a new
and improved version. The Servo
Tester 2.