Drivetrain Gearing Question/Help

I feel like this must have been discussed many times on here, but I just can’t seem to find a clear explanantion of the math involved.

I’m looking for info about how to help my students determine the smallest gear reduction (maximum top speed) a robot can be geared for to avoid brownouts at takeoff, based on how many motors it has, its weight, and wheel diameter and also, hopefully, a better understanding of the physics behind the calculations. Alternatively (if it’s easier) how to gear for max acceleration at takeoff will also work.

I know that I can use a motor curve to look up the current that a motor will draw and the torque it will have based on the speed it is spinning at (at least, I think that’s what a motor curve does). Since a robot initally takes off from rest, my understanding is that it initially needs to (theoretically) momentarily draw the stall current? Of course, it also starts to move right away, so it probably never actually gets quite to that value and, once the robot is in motion, the motors don’t need as much current to spin. Once the robot is in motion, it should be basically fine (assuming it’s going over level ground, not pushing another robot, etc.)

To avoid brownouts, I know we need to keep the total current draw under a certain amount, but I’m not sure how to get a good approximation of the average current a motor will draw durring the first few moments of takeoff at a certain gear ratio, since just using the starting ~stall current would imply that it isn’t safe to use 4 NEO’s/Falcons/CIMs, which obviously isn’t the case.

Hopefully that makes sense.

If it would be helpful to use “real” numbers, let’s assume an approximately maximum weight robot with bumpers + battery (~150 lbs), 4" wheels, and using either 4 or 6 NEO motors.

A finer point - I’m aware that BOTH acceleration and top speed are important to actually optimize robot perfromance, with the ideal gear ratio designed to minimize the time to cross a target distance while both accelerating and, potentially, finishing the trip at max speed. At this point, I’m primarily concerned with making sure our robots stop browning out without resorting to just going super slow, so don’t want to get too lost in the finer points of that discussion and can live with just making sure we don’t overshoot our maximum top speed (or top acceleration), but if anyone wants to point me in the right direction to optimize everything, I’d certainly appreciate it.

Thank you all so much!

Can you find what you are looking for here? Calculators | Onshape4FRC


I think I’m using/interpreting the calculator correctly and I can’t seem to get the system voltage to drop below the brownout threshold for any reasonable speed or number of motors :frowning:

1 Like

You should get brownout with 6 NEOs and no current limit! Unless its geared to go really slow… Both our bot and the model said “OMG brownout” without the limits. Need to account for cables and battery internal resistance. BearBotics thread on drivetrain efficiency has real numbers for resistances…

Yes, that’s how I knew something was wrong. I should have communicated that more clearly than just using a frowny face.

Here’s numbers from our iLite simulator and the 2021/2022 robot.
6 NEOs total
4.4:1 gear ratio (12:64, 48:40)
4" diameter wheels
Longitudinal COF 1.2
lateral COF 1
Wheel base 19.882"
Wheel track width 16.125"
Weight distribution 50% front back and side to side
Robot inspection weight 100 pounds
Batt, bump, etc: 22 pounds
15’ sprint
12 times/match
Battery voltage at rest 12.7 Volts
Applied Voltage ramp 1200 V/s (very high)
Manual current limit per motor 46 Amps is the critical current.
Battery resistance 0.015 Ohm
Peak Battery discharge (C-rating) 20

I’d bump up the battery resistance with about 4’ of 4 or 6 AWG cable.

At 46 Amps it hits the current limit during takeoff with no wheel slipping at either end. 150 Amps gives you a brownout festival and wheel slip at start and stop.

Something that’s not well known: iLite doesn’t do a great job modelling stopping. I need to re-work it :wink:
It assumes that you draw a fixed full current limit during stopping. If you are in brake mode, it doesn’t draw much current at all from the battery, but large currents circulate in the motor. Driving the bot at full speed in reverse causes large battery currents. HOWEVER, with a NEO/SparkMax, the current limits are NOT implemented when the motor is turning the opposite direction of the command. IE, if you tell it full reverse when its going forward it will pull more current than your software limit is set for.

Bump the gear ratio up to 7:1 and go down to 4 motors and you’ll be busting the tires loose for sure.

1 Like

Thank you SO much! After playing around with your numbers, I was able to figure out what was going wrong before and have been able to get values that make way more sense.