From Team 449 Wiki
A motor is a device used to convert electrical energy into rotary motion. The voltage provided to a motor is controlled using a motor controller, which allows us to control motor speed in code. Motors spin way too fast for most applications, and don't provide enough torque, so they usually need to be used with gearboxes.
The motors used in FRC are brushed DC motors. The details of how they work are beyond the scope of this article, but basically, they use magnets to make a shaft spin.
Motors are directly controlled by allowing them to receive a certain voltage, which has a roughly linear correspondence with speed. Since V=IR, and resistance is fixed for a given load, current draw is directly proportional to voltage. That said, most motor calculations are done with full voltage (12V, on a robot), so this will be assumed for the rest of this section. Everything scales linearly with voltage.
Speed, torque, and current
The fundamental notion one must understand to work with a brushed DC motor is that of the "torque-speed curve" - that is, the relationship between the motor's output torque, and the speed at which the motor is spinning. For a brushed DC motor, this relationship is linear, as seen in the "motor curve" below: The above graph describes the performance of a CIM, however the motor curve for any brushed DC motor will look similar (corresponding graphs for any motor used in FRC can be found under "motor data" on the motor's page on this wiki). Note that, as load (torque) on the motor shaft increases, the current draw increases linearly and the speed decreases linearly from the "free speed", until reaching the "stall torque" at which the motor does not spin. Further application of torque to the motor shaft (not pictured in this graph) results in backdrive, in which the motor speed is negative - the current draw continues to increase linearly with torque in such a situation. Since mechanical power output is equal to torque times speed, it is quadratic, and peaks at one half of the motor's stall torque. This is a crucially important fact - when designing a mechanism, gearing should generally be chosen so that normal operation is on the "rising" side of the power curve, that is, less than half of the motor's stall torque (or, equivalently, greater than half of the motor's free speed). Because the torque/speed relation is linear, the performance of a DC brushed motor can be adequately described by three values: the free speed, the stall torque, and the stall current - however, full "motor curves" as seen above remain useful visualizations for design purposes.
See also: Gearbox
When calculating the needed gear ratio for a mechanism, we first determine the "output torque" required for the mechanism - this can usually be done by drawing a free body diagram. From this, we can then work out the gear ratio required to obtain this torque from the motor. There is no tutorial to do this, as it is unique to every situation, but VEX Robotics has good resources on selecting motors, and you should definitely read that page. The most important consideration is that a motor should not come anywhere near stalling, which is why safety factors are important.
Gear ratio from expected load
A typical safety factor is 3. We use a safety factor to ensure that the motor does not stall or pop its breaker if load exceeds what we expect. A safety factor greater than 2 ensures, as mentioned above, that the motor will be on the "rising side" of the power curve.
Gear ratio from desired speed
This should only be used in applications where the required power (desired speed*load) is several times less than the motor output power for the desired speed. For example, this is fine for use on a ball intake or flywheel shooter, but it should not be used on a climbing mechanism.
Use the VEX motor data tables.