Servo Tester 1

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:

Schematic



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 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.....

Software

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.

How to use the servo tester

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.

More features

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.