Low-cost controller for 10 small DC servo motors with quadrature encoder

Hey,
I need expert advise !!!
I am planning to build a robotic rover with 6 wheels. Rover will be able to carry approximately 10kg load.
Each wheel will be driven by a separate small DC servo motor with quadrature encoder. Heading angle of 4 of these motors will be controlled by separate motors. Therefore there will be 10 motors to drive wheels. Note that, these motors are NOT radio control (RC) motors.
Following links shows the source of my inspiration;
http://ksjtracker.mit.edu/wp-content/uploads/2008/02/marssciencelab.jpg
http://ridwan.chendarma.com/v/project /
http://www.emeraldinsight.com/fig/0490340205001.png
Can you advise me on the following * Where can I find low-cost small DC motors with quadrature encoders? * Where can I find servo motor controller for these 10 motors? (I want to be able to control these motors in velocity and position mode. Therefore I am looking for some kind of of PID controllers)? * Do you know any rover mechanical CAD design files on internet?
Thank you.
Albert Goodwill albertgoodwill @ gmail com
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Albert Goodwill wrote:

I can't give expert advice, but it sounds like you need 10 DC gearmotors with encoders, 10 motor drivers (the amplifier electronics), and a microprocessor to direct the motor drivers. The microprocessor can easily drive the motors with a PWM signal, although you'll have to search for one with 6 timers. The problem I see is when you say "low cost". You might be able to get the motors in a surplus shop, but with encoders they will still probably be $30 to $50 US each (if you're lucky). Motor drive amplifiers will probably have to be new, and they are $30 to $100 US, each. With structure and everything else, you're probably looking at $1000US. Does that meet your definition of "low cost"?
Also, encoders don't do velocity all that well, the microprocessor has to compute it and noisy values result, which may have to be averaged, introducing a time lag in the data. A tachometer gives better velocity sensing, but isn't that great for positioning.
You'll scale back the cost a bunch if you just use 4 wheels. Once it is working, you could add the other two wheels if your requirements and budget dictate so.
Here's a good place for micros and drive amplifiers:
http://www.bdmicro.com/
I've used several of their products, and they provide great technical help during the build. The AVR ATmega128 processor has plenty of computation power for servo loops (but only 4 timers). It also has good Linux support, which was important to me.
There are also serial servo controllers that can issue PWM commands to many motor drivers, the processor commands it over a single RS-232 line.
I think the Mars Rover double-bogie design is available on the net, but I don't have any pointers.
Mike Ross
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Sorry, no wheel help here. But, for CAD files, I suspect that if you contact the people at one of the links you provided , they may have some CAD Files.
Joe Dunfee
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

You might want to look at our IsoPod(TM) and ServoPod(TM) line.
With a single one of those boards, you can have up to 6 hardware quadrature inputs, and either 6 complementary PWM outputs, or 12 independent (single line) LAP PWM outputs. If your four steering motors were analog feedback, rather than quadrature, you'd have enough quadrature and PWM to drive the whole robot off of a single processor board, with PID and position/velocity control on all.
Randy M. Dumse www.newmicros.com
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Dear Randy,
Thank you for the information. I have just checked your web site with for your IsoPod(TM) and ServoPod(TM) product line. They sound FANTASTIC!!!
However, they seem to have 2 quadrature encoder inputs rather than 6. Am I missing something here? Can you tell me how to connect 6 quadrature encoders?
Can IsoMax (Virtually Parallel Machine Architecture Programming Language for IsoPod(TM), ServoPod(TM)) handle 10 PID concurrently (6 with quadrature encoder feedback and 4 with analog feedback)?
Your NMIH-0030 H-Bridge product (10 of those) also seems to be suitable for my application. I assume that in addition to 10 PWM signals, IsoPod(TM) and ServoPod(TM) can also concurrently produce Dir (direction) signals. (Can you confirm this please?)
Is it also possible on to decode multiple channel RC pulse streams (see http://www.veetail.com/HowRCworks3.shtml ) with IsoPod(TM) and ServoPod(TM)?
Thank you
Albert Goodwill albertgoodwill at gmail com
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

In my opinion, nothing else comes close for motion control.
The IsoPod(TM), ServoPod(TM), have two built in hardware quadrature inputs that only do quadrature decoding. They share pins with some of the timers. There are 16 timers, 14 with pins. The 16-bit timers are programmable and can do the function of quadrature as well. They can be concatenated to give a full 32-bits of quadrature.
So you can do the 6 channels of quadrature in hardware by using the two built-ins and four timer channels. You still have a couple timers left over for other purposes. By hardware, I mean, once set up, you only have to read them when you want the answer. There is no software burden on the processor to have these channels coming in. I have some code examples for setting up 32-quadrature decodes. I use 6 channels input on the Panavision Back Pan Plus movie crane, so I know it works and works well. In fact, I even use the other timers to pull the velocity of the signal by doing pulse width timing on all channels.
I'm not absolutely certain IsoMax(TM) can handle that many channels of PID. It rather matters how often you want updates. Perhaps at 100 updates per second, I'd think there is a good chance of operating in purely high level.
Then NMIH-0030 is not my favorite H-bridge because the PWM upper limit is low, in the audio range. I much prefer the NMIH-0050, which is more robust, and we've tested at higher rates. Depends on your motors. Coreless are low inductance and need higher PWM frequencies or they will be operating in the resistive range, which is pure waste of power.
Have you looked into Locked Anti Phase (LAP)? With a single PWM line you can send both direction and power. At 50% the wheel is locked, at 25% it is half power one way, and at 75% it is half power the other way. Again, we've set up the NMIN-0050 to be able to operate off of LAP adding an inverter to the board. Since it isn't my favorite, I don't remember how the NMIN-0030 is set up for LAP.
But either LAP, or complementary, or PWM on one line or another at a time, you have to control the direction of the motor, and may have to reverse a line when crossing zero, if you use, say, a PWM line for power and a port line for direction. Only LAP and complementary PWM take care of themselves that way.
Yes, it is also possible to decode RC pulse streams. The timers are again wonderfully configureable, and can be used in a processor hands- off mode to measure the width of a pulse. Being able to reliably pull a string of pulse widths out though, may depend on getting back to the stream often enough, and that may depend on how loaded your processor is with the PID routines. Again I have some code examples of pulling the pulse width on a single servo channel, and we've got support in the language for doing that measurement.
Randy
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
RMDumse wrote:

It is pretty easy to decode the entire stream of RC pulses with the DSP56F807, but you need to open up the RC receiver to do it. I started with a pair of timers, but I think it is just using one of them now (it has been several years since I coded that). All of the servo signals are available on a single signal just before the decoder part of the receiver. The decoder is either a shift register or a Johnson counter depending on the receiver design. In either case, the composite signal is used as the clock to the counter or shift register.
BobH
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On Sat, 06 Sep 2008 06:40:16 -0700, Albert Goodwill wrote:

Our FPGA cards with SoftDMC firmware can currently drive 8 servo motors/card at ~20 KHz PID update rate, 10 would be a minor hack. about 16 axis worth of control hardware/CPU will fit in a 400K FPGA
Peter Wallace Mesa Electronics
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here. All logos and trade names are the property of their respective owners.