Falcon 500 Closed Loop Velocity

The kF term on most motor controllers (i.e. Talon SRX, Talon FX, Spark MAX) is multiplied by the velocity setpoint and added to the feedback output. This operation (kF * setpoint) is similar to the kV * \dot{d} (where \dot{d} is the velocity setpoint) in the characterization equation.

Assuming your characterization is done with SI units, your kV will have units of volt seconds per meter. This makes sense because multiplying a quantity with units of volt seconds per meter by a speed setpoint (with units of m/s) will result in units of volts, which corresponds to a typical motor signal.

Since this thread deals with Falcon 500, I’ll explain how to convert the kV from the characterization tool into a kF for the Falcon 500; however, similar dimensional analysis will apply for any other motor controller.

CTRE motor controllers require kF to be in units of output units / native units per decisecond, where output units are scaled in the interval [-1023, 1023]. As an example, I will use a Kv of 0.115 from the characterization tool on a mechanism with a gear reduction of 1:9.09 and wheel radius of 0.0762 meters.

\frac{0.115 Vs}{1 m} \times \frac{10 ds}{1 s} \times \frac{1023 \text{ output units}}{12 V} \times \frac{2 * \pi * 0.0762 m}{1\text{ output rotation}} \times \frac{1 \text{ output rotation}}{9.09 \text{ input rotations}} \times \frac{1 \text{ input rotation}}{2048 \text{ native units}}
= 0.00252 \frac{\text{output units * ds}}{\text{native units}}

In the calculations above, a native unit is one tick reported by the Falcon 500 internal encoder.

6 Likes