Let's Make Robots!

DC Motor Guidelines?

Hello All,

I am building an autonomous vaccum cleaner robot.  I am using an existing cordless vaccuum as the base (why reinvent the wheel?) and putting powered wheels and a brain on it.

I am looking for guidelines as to how to spec motors for this (and other) projects.  One wouldn't think it should not bring about so much thought, but here it is.  Although there is a distinct possibility I am overthinking this.

I am using 6V cordless screwdriver motors connected directly to the drive wheels with a L293 H Bridge.  With PWM and no load, these draw 0.4 amps per side (0.8 amps total) which seems a lot, although as you would expect, the screwdrivers do have a lot of torque.  I was thinking that it might be good to replace these with smaller geared motors, but I am not really sure what I should use as criteria.  For instance, I saw Sparkfun.com had a geared motor rated at 6V - 60 ma, 140 rpm, 26 oz in.  Now if I remember my physics that means it has enough power to pick up 26 oz and move it 1" in a second (x2 since will be two motors.) The cordless vaccum weighs about 5# with the cordless screwdrivers, acrylic, Arduino etc but let us say it has a rolling resistance around 0.5 pounds of pressure.  So in one second, these motors will have 52 oz/in (3.25 pound/in/second) or should be able to move my robot 6.5"/second.  (6.5*3600)/12 = 1950'/hour or at the VERY best 0.36 mi/hr.  Those aren't going to cut the mustard unless I misunderstand what I am reading.

If I want my robot to move at 1 mile/hr (about right for the brush to pick up stuff on carpet), I need to have (1/0.36) * 52 oz/in = 144.04 oz/in/second or 9 pounds/in/sec.  Each of my motors then has to be 72.02 oz/in/sec which seems really, really high for very slow performance.  The robot will have inertia to overcome and then to keep it moving will require less power so maybe this is an issue, non issue.  But if the load is a continuous 0.5 pounds these numbers seem correct if I use two motors.

My other concerns were what if it runs into a slight incline going from the wood to tile in my kitchen?  What if it gets stuck on a pencil that my kids left on the floor?   If folks who have been there, done it could share with me their suggestions or guidelines, I would greatly appreciate it.




Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

The motor stuff can be a bit confusing at first, the things that you care about are:

Voltage - Depends on how high you want to go, normal choices are 6 volt, 12 volt, and 24 volt.  Higher voltage motors seem to be more powerful, but you need bigger/more batteries and you have to step the voltage down for the electronics.  I have been content at 6 volts so far.

RPM - The rpm of the motor combined with your wheel size, (ignoring wheel slipping), determines your speed.  So far I have used low RPM motors and ignored PWM.  You don't have to control the speed if 'full speed ahead' is slow.  The LMR robot runs along at about 0.5 mph, this turns out to be reasonable for just rolling around the house.  Does it need to get somewhere fast?  In a vacuum bot I would guess no.  I think it was Beloved Leader Fritsl that suggested nothing over 100 RPM.

Stall Current:  This is the amperage draw when the motor is running and held still (stalled).  It can be huge  compared to the running current.  Generally its advised that your motor driver be able to handle this number.  In the case of the LD293 I think that is 1 amp which is fine for the small motors used on a desktop robot.  For your task I think you are going to need something bigger, I would suggest one of the Sabertooth motor drivers 2x5, 2x10, etc...  Solarbotics carries them.  Several other robot shops also offer motor drivers, the key is to look at total amps they can handle and amps per channel.

Torque:  Torque is god, the number cannot be too high.  This will determine how heavy a robot your wheels  and motors can drag across the floor.  I go for the highest torque I can find within the limits of my voltage, RPM, and stall current.

Final Remarks:  For your task I would consider some of the following motors:



Without the encoders of course.

Here is a good tip by alegiaco you might find interesting:



                  Good luck and have fun with your project.

                                           Hal (kingart3)





I naively thought when I started this project, I would have it done in two weekends.  Looking from the outside at all of these cool projects others have done, you miss the hard engineering (and the missteps along the way) that goes into these creations.

The specific suggestions are a huge help.  I will definitely take advantage of your expertise and be sure to post when I have something to show.  Thanks for taking time to help me.

No problem,

Good luck on your project and have fun.  I have barely been at this a year and have learned a lot, much of it by screwing up...LOL.

Just work at the pace that makes you happy.  This is a hobby after all and suppose to be fun.

Truth to tell, hobby robotics is the ...most fun... thing I have done in several years.



                                     Hal (kingart3)


I am a software developer by day, so this is just so different from what I do daily basis and just so much fun.  I find it relaxing prototyping, thinking about how to solve a problem as I am driving home, etc. 

I got my 14 year old son in on some of the fun as well which has been great.  We have something fun to talk about except me yelling at him about house chores or whatever else he has or hasn't done.  That in itself has been gold, everything else is just gravy.



First, as Maxhirez said, your L293 aint gonna cut it.  Those drill motors will likely take 1 or 2 amps, maybe more, under load.  Been there, done that.

Torque has nothing to do with time.  It is the force provided by a rotating shaft x the distance from the shaft.  A 26 oz/in motor can provide 26 oz force at 1 inch, 8.66 oz at 3 inches.  If you need 8 oz (1/2 pound ) to push the bot, one motor can (barely) provide that with a 3 " radius wheel.  The distance travelled will be RPM x wheel diameter x PI x minutes.  140 RPM with a 3 " radius wheel gives about 2600 inches per minute, or about 42 inches per second.  1 MPH is about 18 inches per second.  BUT, unless the stated 26 oz/in of torque is at the rated 140 RPM, you won't get that much.  That may be the stall torque, which means the torque when the motor is stopped.  Probably the running torque at 140 RPM is about half that. And keep in mind that is running at a constant velocity.  Acceleration is a different matter.  Newton told us Force = Mass x Acceleration.You need to know the mass of the bot and the force the motors provide to find the acceleration, also taking into account the "rolling resistance" which is a force opposing the motors.

Ahh, that is why those numbers seemed so wrong - they were wrong.  It has been 25 years since I have done any physics.   Brings back memories of rolling steel balls down inclines etc.  Of course, that is obviously all I remember.  I appreciate you taking the time to give me a way to look at what the manufacturers give me and what that will mean to the project and others in the future. That really helps a lot.

So, I could be looking at 4 amps if it is stalled?  Wow.   These are the gems that you don't get except by blowing something up...or asking folks who have done it themselves.  It sure isn't documented anywhere.  Thanks again for the advice.

No problem.  Hope it is some help.  A note about stall current.  If you measure the resistance of the motor winding with a meter, you can find the maximum stall current.  Use Ohm's law.  If the resistance is, say, 1 Ohm, and you run with a six volt power supply, the max current is current = volts / resistance, or 6 amps = 6 volts / 1 Ohm.  Most multimeters aren't very accurate that low resistance, but you can touch the leads together to see their resistance, then subtract that reading from the motor reading.  Not completely accurate, but usually close enough.

Good Luck!

Very cool!  That makes sense but just one of those things I never thought of. Very nice little tidbit to know which will help me in configuring circuits with motors.

I did some research on 6V motors from the links that Hal kindly posted, and some of those motors had a stall current of 6 amps EACH.  I could be looking at 12 amps total stalled current with my current configuration.  All I need are some marshmallows at that point...

A motor controller that can handle the load might be nice, but something that can handle 12 amps will be over $100.  Cheaper would be to use my H Bridge with the Arduino power supply and turn on relays for the 7.2V.  I actually started thinking I would use relays; I bought a board with 8 relays (5v 250v 5amp/contactor I believe)  but ditched that when I realized it would be about 1 amp at 5v to keep 4 relays (I accidently bought SPST relays - but even 0.5 amp with DPDT is a lot of current) closed when the vaccuum cleaner is going forward

I have no idea how to do this, but a current sensing circuit which will push a bit high and have software in the Arduino manage what to do if the load from the 7.2V battery goes over 2 amps could be an elegant solution.  What do you think?


If you don't want to purchase from sparkfun, you could always do a search for it and find it elsewhere. OddBot is the guy that put that board together.

I know this isn't the advice you're looking for, but I predict if you use the 293 without stacking them like IHOP you're going to burn out the h-bridge pretty darn quick no matter what kind of motor you use.  That said, with the "why reinvent the wheel theme" running here, have you considered buying motors from a used roomba?  They run about $20 a pair on eBay and should have the oomph you need.  Also they're usually pretty well matched.