PDA

View Full Version : Idea About to design a new digital servo tester. What features do you want?


Mikael Pedersen
Jan 14, 2004, 12:03 PM
I am thinking of making a redesign of my old digital servo tester. I have some ideas that I want to implement, but before I do that, I thought that some of you might have some ideas as well.
Quite a bit of my ideas are not usually found or needed in a normal servo tester, but then the associated hardware can be left out, making the tester cheaper to build.

My ideas are:

* Two output channels.
* One input channel (to read pulsewidths from the output of a receiver).
* Sweep mode, to stresstest a servo.
* Voltage readout. The tester will be run from a standard receiver battery, or the BEC from an ESC. The voltage readout can be used to see the battery voltage under load.
* Perhaps current readout, to measure the current consumption from a servo during stresstest. I am not sure if this will be possible yet.
* Perhaps RS-232 interface for PC control. Not sure about this one either, but I've had a few requests for this feature for my existing servo tester.
* 2x16 character LCD for menus and readouts.
* Simple and intuitive control. One rotary knob with built-in pushbutton is all that's needed.

I don't think all of the above will become a reality, but I'll give it a try.
If you are having some other ideas and/or comments, now is the time to speak up. I'll probably start the hardware design next week.

PaoloMarani
Feb 03, 2004, 07:18 AM
Originally posted by Mikael Pedersen
I am thinking of making a redesign of my old digital servo tester ...

I am just looking for a good servo tester and ... WOW, the one you are thinking has even more features than I was expecting!
:)

The only dubt is: how much it will be? :confused:
To reduce the cost I could renounce to voltage and current readout (I can use my multimeter) and the PC interface.

How is going the project?

Paolo Marani.

2 Piece
Feb 03, 2004, 08:17 AM
I'd like to see a true cycle mode/ "burn in" mode. Push a button and the cycler will operate the sevro for 30 minutes to "burn it in".
2 Piece

Mikael Pedersen
Feb 03, 2004, 09:14 AM
I don't know the final cost, as I haven't frozen the hardware design yet. And even then, there is the possibility to make some of the hardware functionality in some other way (cheaper/less feature), or even just leave out some hardware, if something like voltage/current and/or PC interface isn't needed.
I am designing the software in such a way that individual features can be removed easily.

The main system will consist of an Atmel mega8 AVR (maybe a mega16 if 8kb code isn't enough), a 2*16 char LCD, a 10 MHz xtal and a rotary encoder. I don't know what the cost of these parts are around the world, but I would guess it'll be around $30-$40.

In addition to that, I am planning to use a few opamps, resistors, a small smps, max232 and stuff like that for the extra features.

I am still waiting for some components to arrive, so I'm not working on the hardware part for the moment. Instead, I've started to write the software. The basic menu system and the event-handler are written. Next, I'll make some of the hardware-interface, to be able to test with real pulse widths.
And when that is in place, I can easily put whatever menus I want on top of it all.

But remember. This is nothing more than a hobby project, and I do like to have a life besides all of this as well, so don't expect to see it all done in a week or two ;)
You might want to take a look at my old servo tester. It might be enough to suit your needs until the new one is finished:
http://www.ejberg.dk/servotst/index.html

Mikael Pedersen
Feb 03, 2004, 09:17 AM
Originally posted by 2 Piece
I'd like to see a true cycle mode/ "burn in" mode. Push a button and the cycler will operate the sevro for 30 minutes to "burn it in".
That would be easy to make, once I have the tester up and running. In fact, my old one can do it already. You just have to keep an eye on the 30 minutes yourself :D

simingx
Feb 03, 2004, 12:35 PM
This may be asking too much, but how about a tachometer mode, since there already is a routine for measuring pulsewidth? :D

Or, going back to basics, how about a simplified version which uses LED 7-segment displays (4 digit perhaps?) to display pulse out and pulse in timings only, using 1 switch to select either pulse in or pulse out? Would be cheaper (no LCD, switches) and smaller (LED displays are available "ready-multiplexed" to save on wiring, and there's only one switch).

Anyway, I built the first version in half an hour using spare parts I had lying around... great stuff!

AndyKunz
Feb 03, 2004, 12:58 PM
You can buy one now from SubTech www.rcboats.com - they've been selling my design for a few years.

They call it the "DPM" - Digital Pulse Meter. The code he has in it is minimalistic - the hardware catually supports a lot more.

Andy

Mikael Pedersen
Feb 03, 2004, 03:26 PM
Interesting thought about the tachometer. I don't think I'll put it in for the moment. It would probably share a pin already used on the processor, calling for more circuitry.
But maybe it would be possible to make an extension plug, that just attaches to the servo input plug, and can be used that way?

About the simplified version:
That could be an idea, but in my opinion LCD's are more readable, especially in outdoor conditions (at least at daylight :D ). And last I had a look, 7-segment LED's were noticeably more expensive than the cheapest LCD's.
And with only one switch, how would you control the value of the out-pulse?

AndyOne
Feb 03, 2004, 04:27 PM
If you truely want to test a servo, how about some sort of mounting clamp and a link to a force meter to check the output torque.

I'm not sure what the tachometer idea was all about but a simple transit timer could be used to verify the spec of a servo.

Andy.

Moa
Feb 10, 2004, 04:40 PM
Deadband / Jitter and glitch detection may be of interest to some. Here are a couple of links to products with features that may be of interest.

http://www.vexacontrol.com/servoxciteref.html
http://www.hitecrcd.com/Support/Manuals/HFP-10.pdf

This second one is the user manual for the familiar Hitec programmer tester. Internet Explorer may prompt for Korean Fonts to load. This had to be permitted for me (4Meg) but the document is in English.

Congratulations Mikael for what you have achieved to date.

Mikael Pedersen
Feb 11, 2004, 03:01 AM
That is some interesting features. I'll put them on the list. Time will tell wether they can be fitted in there or not.

General update:
I am still working on the software only. I have made the first few menus to get a better idea of how the user interface "feels". I had to make a few minor adjustments, but now it "feels" just right. But I am already seeing the need to preserve program memory, or I'll run out before I have implemented all the planned menus.
I am still missing some hardware, so I havent progressed a single bit there.

whanderson
Feb 15, 2004, 08:52 PM
Originally posted by Mikael Pedersen
That is some interesting features. I'll put them on the list. Time will tell wether they can be fitted in there or not.

General update:
I am still working on the software only. I have made the first few menus to get a better idea of how the user interface "feels". I had to make a few minor adjustments, but now it "feels" just right. But I am already seeing the need to preserve program memory, or I'll run out before I have implemented all the planned menus.
I am still missing some hardware, so I havent progressed a single bit there.
It so happens that I have a tester in process that meets your requirements and most of those in this thread. In addition, my design will do 4 servos and 6 receiver input channels. The addition of a MAX232 enables communication with a PC. I also have included the ability to measure servo current on each channel in real-time. The photos are of my breadboard.

macr
Feb 18, 2004, 04:46 AM
Very interesting thread. Not knowing much about digital servo testers, I was wondering if they are of any use for normal servos as well? I like your setup whanderson, but frightened to ask how much that would cost to make, because it sure does look expensive. Keep up the innovations guys :)!

whanderson
Feb 18, 2004, 08:56 AM
Originally posted by macr
Very interesting thread. Not knowing much about digital servo testers, I was wondering if they are of any use for normal servos as well? I like your setup whanderson, but frightened to ask how much that would cost to make, because it sure does look expensive. Keep up the innovations guys :)!
The most expensive part is the PCB at $20. The LCD is $15, PIC16f873 is about $4. I suppose the question of cost depends on your point of view. To me this approach is inexpesive.

Mikael Pedersen
Feb 18, 2004, 05:16 PM
Ok. The first stable (more or less :D ) version of the software is a reality. The functionality is currently identical to my old servo tester (link in a previous post), except that it can control two servos instead of one, and of course the rotary encoder instead of buttons to navigate the menus.
Once this limited software is completely stable, I'll start adding the new functionality.

Would anyone be interested in beta-testing it in this early state?

The required hardware (for now) is an Atmel ATmega16 (not the "L" version), a 2*16 char LCD (HD44780 or compatible), a 10 MHz crystal (or complete oscillator) and a gray code rotary encoder with integrated pushbutton (or put a button next to it). And then the usual, like some sort of 5V supply, a handful capacitors and resistors and stuff like that.

The only non-standard item would be the rotary encoder. I am using one from Conrad (705586-12), but I'm sure there are several other types around. I just don't know where, as I haven't looked for them.

If you are interested, just let me know somehow (email is probably best).

Moa
Feb 19, 2004, 06:05 AM
I'm having a good think about assisting with beta at some stage. While checking out possible encoders I detected a contradiction. The Conrad 705586-12 appears to be an incremental encoder (endless) and not a grey encoder (absolute)as mentioned..Please confirm as incremental are lower cost and more readily available. If so, it appears a Piher CI-11 with switch should be suitable. http://www.piher-nacesa.com/pdf/04-CI-11v04.pdf

Mikael Pedersen
Feb 19, 2004, 07:03 AM
Ok sorry. I didn't know that gray code encoders always was absolute. The one needed for the servo tester is an endless type.
The Piher CI-11 looks good, as long as you get the 15-pulse version. The 20-pulse could probably be used with some software modifications.

And yes, the Mega8535 should work just as well, at least for now. The compiled code takes up just over 4Kb, so there is a good way up to the 8K in Mega8535. But at some point in the future, the code will probably cross the 8K boundary.

simingx
Feb 19, 2004, 07:44 PM
Why would a 20 pulse version need modifications? As far as I know, they just put out an endless train of A leading B or B leading A pulses when they are turned...

whanderson
Feb 19, 2004, 10:44 PM
Originally posted by Mikael Pedersen
Ok sorry. I didn't know that gray code encoders always was absolute. The one needed for the servo tester is an endless type.
The Piher CI-11 looks good, as long as you get the 15-pulse version. The 20-pulse could probably be used with some software modifications.

And yes, the Mega8535 should work just as well, at least for now. The compiled code takes up just over 4Kb, so there is a good way up to the 8K in Mega8535. But at some point in the future, the code will probably cross the 8K boundary.
Why use an encoder? Use push button switches to increment and decrement a counter. Use the counter's value to control servo pulse width. Or, use the MCU's A to D to measure the voltage drop across a pot and use that value to control pulse width. I have done both approaches and they work quite well.

Mikael Pedersen
Feb 20, 2004, 02:52 AM
Originally posted by simingx
Why would a 20 pulse version need modifications?
Look at the first page of the datasheet. The "graph code" section show the difference between the 15 and 20 pulse version. The 15 pulse has detents when both A and B are off, as well as on.
The 20 pulse version only has detents for A and B being off.

My software is currently written for the first option. A 20 pulse version will make two steps for each detent, making some menus unreachable. If there is enough demand, I'll probably make it configurable.

Of course the versions without detents at all, won't have this problem.

Mikael Pedersen
Feb 20, 2004, 03:08 AM
Originally posted by whanderson
Why use an encoder? Use push button switches to increment and decrement a counter.
My old servo tester was made with buttons, and that was fine for a while. But as time passed, I grew tired of pushing a lot of buttons all the time. Just turning a knob is so much easier.

Or, use the MCU's A to D to measure the voltage drop across a pot and use that value to control pulse width.
That wouldn't be nearly precise enough for my use. And I won't even try to think of how to make menu navigation with a pot :D

whanderson
Feb 20, 2004, 07:19 AM
Originally posted by Mikael Pedersen
My old servo tester was made with buttons, and that was fine for a while. But as time passed, I grew tired of pushing a lot of buttons all the time. Just turning a knob is so much easier.


That wouldn't be nearly precise enough for my use. And I won't even try to think of how to make menu navigation with a pot :D
The flash PICs have 10 bit AtoDs, that is 1024 steps. How much resolution do you need? Most ESCs implement 256 or less steps. I have a GWS servo tester and it does 100 steps. I agree about the switches, that is why I use the mini-joystick shown in the picture in my earlier post. The mini-joystick I use has a swicht in the stick. It closes when the stick is pushed in a downward direction. BTW the numbers on the LCD in my picture are the raw voltage values measured from the pots in the mini-joystick.

Mikael Pedersen
Feb 20, 2004, 08:03 AM
I need as much resolution as possible :p
No, not really, but in order to test the precision of transmitter/receiver (which can have up to at least 1024 steps), my input resolution should be at least twice as big.

I just took the full overkill approach, and made 10.000 steps between 1 and 2 ms. There is absolutely no need for such high a resolution in any servo tester. It was just one of those situations: I could do it, so I had to do it :D

That mini-joystick looks quite nice. Where can I get my hands on some? I already have an idea or two, where it could be useful.

whanderson
Feb 20, 2004, 12:16 PM
Originally posted by Mikael Pedersen
I need as much resolution as possible :p
No, not really, but in order to test the precision of transmitter/receiver (which can have up to at least 1024 steps), my input resolution should be at least twice as big.

I just took the full overkill approach, and made 10.000 steps between 1 and 2 ms. There is absolutely no need for such high a resolution in any servo tester. It was just one of those situations: I could do it, so I had to do it :D

That mini-joystick looks quite nice. Where can I get my hands on some? I already have an idea or two, where it could be useful.
The minijoystick can be found at:
http://www.digikey.com/scripts/DkSearch/dksus.dll?KeywordSearch

To get 10k steps rquires PWM resolution of at least 13 bits. How do you propose to generate this? Also, the input to the transmitter's modulator may be 1024 steps, but the receiver decoder's output is no where near that resolution. Sounds to me you may be making this much harder than it is. The only way to get resolutions of the order you propose is to go digital all the way from transmitter through the RF link (FSK or PSK for example) to receiver. Each control channel would need 10 (for 1024 step resolution) bits minimum with 4 channels needing 40 bits plus some overhead, say 8 bits giving a total of 48 bits per frame. If we stay at a 200Hz frame rate, the transmitted data bandwidth would be something like 2khz minimum. Bandwidth increases for step resolution increase and each servo channel added to the system.

Mikael Pedersen
Feb 20, 2004, 03:11 PM
Originally posted by whanderson
To get 10k steps rquires PWM resolution of at least 13 bits. How do you propose to generate this?
That is easy. I run my AVR at 10 MHz, and the 16 bit timer is running without prescaler, so each count is 100 ns. Exactly what is needed for 10.000 steps in a millisecond. The generation of pulses are done with output compare registers, that toggles the output pins without having to wait for an interrupt to execute first.
It works just fine. I have the same resolution in my existing servo tester.

Also, the input to the transmitter's modulator may be 1024 steps, but the receiver decoder's output is no where near that resolution.
And that is why I would like to measure my receivers :D

The only way to get resolutions of the order you propose is to go digital all the way from transmitter through the RF link (FSK or PSK for example) to receiver. Each control channel would need 10 (for 1024 step resolution) bits minimum with 4 channels needing 40 bits plus some overhead, say 8 bits giving a total of 48 bits per frame. If we stay at a 200Hz frame rate, the transmitted data bandwidth would be something like 2khz minimum. Bandwidth increases for step resolution increase and each servo channel added to the system.
Except for the frame rate, I'm with you all the way. I'm used to 50 Hz framerates. That is common, at least over here in Europe. And my entire radiolink is digital. At least with one of my receivers.
My transmitter is a Futaba FC-28, and the receiver is a Futaba 149DP. The specs say that it is a 1024 step system, and I really would like to measure that myself. And also all the other (non-digital) receivers, I got.

MondoMor
Feb 21, 2004, 09:31 AM
Originally posted by Mikael Pedersen
That mini-joystick looks quite nice. Where can I get my hands on some? I already have an idea or two, where it could be useful.

I found a pair in a PlayStation analog controller. They're really nice, but have detents that you can't remove easily. I removed the detent function from the "throttle" axis on one of them with some grinding and cutting. I was hoping to use it as a joystick for a simulator, but the pots are too small (~10k I think) for use as a plain joystick.

Mikael Pedersen
Feb 23, 2004, 05:35 PM
I am now making the beta testing of my new servo tester public. I invite anyone interested to try it, and report back with whatever suggestions, comments or bug reports you may have. Find it here:
http://www.ejberg.dk/servotst2/

The page suck, I know. It was just put together in a hurry, as I am overdue for the bed right now. I'll add a schematic in a day or two.
The hardware requirements given earlier in this thread, is still valid. More hardware will be added later on.

simingx
Feb 24, 2004, 11:08 AM
Originally posted by Mikael Pedersen
Of course the versions without detents at all, won't have this problem.

Ahh.. so desu ne. I got myself a Bourns one which turns freely... :o

Mikael Pedersen
Mar 01, 2004, 04:22 PM
I have added a crude schematic to the webpage.
And I have made beta version 0.02 available. The improvements are a few configuration options, and all other settings are saved automatically as well.

Earlier I said that the Mega8535 should work as well. I am sorry, but this is unfortunately not so. The Mega8535 has another layout in its interrupt-vectors, so that is a no-go.

Mikael Pedersen
Mar 10, 2004, 05:24 PM
Oh dear. I'm afraid I've done it again....
The Mega32 won't work either. I thought the Mega16 and Mega32 were the same, except for flash, sram and eeprom size, but they are not :( They also have different interrupt vector tables (and a few register bits swapped), so the only useful AVR for this project is the Mega16.

Current status:
Beta 0.04 just released. Grab it at the page mentioned earlier. New features in this version is mainly more advanced monitoring of the input signal. Jitter, spikes and missing pulses are detected. Useful for checking the quality of the transmitter - receiver connection.

I am still missing tacho-mode and voltage/current readouts. After that is done, I'll probably put a lot of comments in the source and write up a manual, and then make it all available.
PC-interface won't make it into the first public release, but I haven't forgotten it. There is still plenty of codespace to put it in later (I hope).

Mikael Pedersen
Mar 31, 2004, 01:48 PM
I'm just about done with the software now, but I think I could use a helping hand with some of the hardware of the servo tester.
I am planning to power the tester from a standard 4-cell receiver battery. But the voltage required by the Mega16 AVR, does not quite match that. So I need to find a way to take an input voltage of anywhere from 4V to 6V (perhaps even a broader range) and make it into 5V. Do you have any good ideas on how to do this? I would prefer small size and low component count.

My own idea is to use a LT1618 in SEPIC mode to do the voltage step up/down, but I've never tried to make such a converter before. Do you have another circuit, that is known to work without too much trouble?

simingx
Mar 31, 2004, 11:08 PM
Why not just use a Mega16L? 2.7-5.5V supply.

Mikael Pedersen
Apr 01, 2004, 01:58 AM
The Mega16L only goes to 8 MHz, and I need to run it at 10 MHz. I did think of the new Mega168, that can run up to 12 MHz @ 2.7V, but they are not yet in full production, and therefore nowhere to be found :(

Mikael Pedersen
May 20, 2004, 05:50 PM
Well. I think it is time for an update to this old thread.
I would like to thank everyone for all the help and comments throughout the construction of the servo tester. I am just about done with it now. I only need to fix a few loose ends, like commenting my code so others may stand a chance of understanding it, and putting some more information on the homepage. But it should now be possible to build one and use it. It has been through extensive beta testing, and there are no known bugs.
http://www.ejberg.dk/servotst2/

Mr.RC-CAM
May 20, 2004, 06:46 PM
Nicely done!

RC-CAM

ricky
May 22, 2004, 01:03 AM
Mikael,
Sounds interesting, will look forward of getting one of these from you.
Started one with the PIC 12C508 but got rattled down with the hex file
and getting it programed, so ended up in the dumpster. The 12C508 is
a bit too archaic any way the 16F84 is much more better. Good Luck!
ricky