Skip to content
Programming, Controls & Sensors·Lesson 26 of 51

Integrated and CAN Encoders: NEO, Falcon/Kraken, and CANcoder

The encoders built into modern brushless motors and the CTRE CANcoder, plus sensor fusion in firmware.

Sign in to track progress, earn XP, and save lessons.

Modern brushless motors and CAN devices include encoders, so often you do not wire a separate sensor at all.

Integrated motor encoders

  • REV NEO / NEO Vortex brushless motors have a built-in hall-effect encoder read by the Spark MAX / Spark Flex controller. You access it via the controller's RelativeEncoder (SparkMax.getEncoder()), in motor rotations by default; set a conversion factor for real units.
  • CTRE Falcon 500 / Kraken X60 integrate the encoder into the Talon FX. Phoenix 6 exposes it as the motor's internal rotor sensor with getPosition() and getVelocity() status signals.

Integrated encoders are convenient and high-resolution, but they measure the motor shaft, so you must account for the gear ratio to get mechanism units, and they are relative unless fused with an absolute sensor.

The CTRE CANcoder

The CANcoder is a magnetic rotary encoder that reports absolute position and velocity over the CAN bus (CAN FD and CAN 2.0). Because it is absolute and on the bus, it is a standard azimuth sensor for swerve modules. You read it in Phoenix 6 with getAbsolutePosition() and configure a magnet offset and sensor direction in Phoenix Tuner X.

Sensor fusion in firmware: FusedCANcoder

Phoenix 6 offers FusedCANcoder, a Talon FX feedback mode that fuses a CANcoder's absolute reading with the motor's internal rotor signal. You get the absolute knowledge of the CANcoder plus the high bandwidth and resolution of the rotor — ideal for swerve steering, where you want a correct boot angle and crisp control. This fusion happens on the device, not in robot code, so it is fast and consistent.

Important licensing caveat: FusedCANcoder (and the related SyncCANcoder) require a Phoenix 6 Pro license on the Talon FX. Without a Pro license the controller falls back to RemoteCANcoder (reading the CANcoder over the bus, without rotor fusion) and reports a UsingFusedCANcoderWhileUnlicensed fault. RemoteCANcoder still works for absolute feedback; you just lose the on-device fusion bandwidth benefit.

Choosing an encoder

  • Drivetrain wheels: integrated motor encoder (relative is fine; you zero odometry at start).
  • Swerve azimuth: CANcoder (FusedCANcoder if Pro-licensed, otherwise RemoteCANcoder) or a Through Bore for absolute boot angle.
  • Arms/wrists: an absolute encoder for boot position, optionally fused with the motor encoder.

Always verify your unit conversions on the bench: command a known move and confirm the reported distance/angle matches reality before trusting it in autonomous.

Key takeaways

  • NEO/Vortex (Spark MAX/Flex) and Falcon/Kraken (Talon FX) include relative encoders on the motor shaft — account for gear ratio.
  • The CTRE CANcoder is an absolute, CAN-based encoder, ideal for swerve azimuth.
  • Phoenix 6 FusedCANcoder fuses absolute CANcoder data with the rotor on-device but requires a Pro license; unlicensed it falls back to RemoteCANcoder.

Lesson quiz

Required

Answer all 3 questions correctly to complete this lesson.

1.The REV NEO and NEO 550 brushless motors have a built-in feedback sensor used by the SPARK MAX. What type of integrated encoder is it, and roughly what resolution does it provide?

2.In Phoenix 6, what units does a Falcon 500 or Kraken X60 (Talon FX) report its integrated encoder position in?

3.The CTRE CANcoder is commonly used as the absolute steering sensor on swerve modules. Which description of the CANcoder is correct?

Answer every question to submit.