Skip to main content

Motor Controllers

A motor controller sits between your robot's battery and a motor. It takes a command from the robot controller (like "spin at 75% power") and converts it into the right voltage and current to actually move the motor. Without it, you'd have no way to control speed, direction, or how hard the motor pushes.

This page covers the five motor controllers used on our robot:

ControllerMakerBest For
SPARK MAXREV RoboticsNEO / NEO 550 brushless motors
Thrifty NovaThe Thrifty BotNEO / NEO 550 / Thrifty Pulsar / Minion brushless motors
SPARK FlexREV RoboticsNEO Vortex brushless motors
Talon FXCTR ElectronicsKraken X60 / Falcon 500 motors
Talon FXSCTR ElectronicsNEO / NEO 550 / Minion brushless motors
How motor controllers talk to the robot controller

Most controllers support two communication methods:

  • PWM — a simple signal wire. Easy to set up but limited features (no feedback, no closed-loop control).
  • CAN bus — a two-wire network that lets multiple devices share one cable chain. Gives you encoder readings, current data, temperature, and proper closed-loop control. Always prefer CAN on a real robot.
    • CAN FD is an upgraded version of CAN — same two wires, but faster. Most modern motor controllers support it.

SPARK MAX

Official docs: https://docs.revrobotics.com/brushless/spark-max/overview

The SPARK MAX (model REV-11-2158) is a brushless motor controller from REV Robotics. It handles both brushless motors (NEO, NEO 550) and brushed DC motors.

Specifications

ParameterValue
Operating voltage5.5V – 24V DC
Absolute max voltage30V
Continuous output current60A
Peak current100A for 2 seconds
CommunicationCAN, PWM
Dimensions70 × 35 × 25.5 mm
Weight113g
Power Connection15 cm long, 12 awg integrated leads
Motor Connection15 cm long, 12 awg integrated leads, 6 pin JST-PH connector for encoder
CAN ConnectionJST-PH 4-Pin connector with premade cable
USB ConnectionConfiguration and manual control
Sensor Connection10 pin Data Port

Wiring

Power Connection:

Connect the integrated (red/black) 12 AWG wires to the Power Distribution channel. If an extension is needed, use 12 AWG or thicker wire with Anderson PowerPole connectors.

Reversed polarity = dead controller

The SPARK MAX has no reverse polarity protection. Connecting red to negative or black to positive will permanently destroy it. Double-check before powering on.

Motor Connection (brushless):

Connect the integrated (red/black/white) 12 AWG wire to the motor cables using Anderson PowerPole connectors.

Connect the motor encoder cable to the 6 pin JST-PH encoder port. If an extension is needed, use a 6 pin JST-PH joiner board and a 6 pin JST-PH extension cable.

The wire colors must match between controller and motor. If they don't, the motor won't spin and could be damaged. You also must plug the encoder cable into the ENCODER port on the controller — brushless motors won't run without it.

Motor Connection (brushed):

Connect the integrated (red/black/unused white) 12 AWG wire to the motor cables using Anderson PowerPole connectors. Insulate the white wire — don't cut it, just zip-tie it out of the way.

CAN and PWM:

Connector

If a connector is required, the pinout is as follows:

PinCANPWM
1 & 3CAN High (Yellow)Signal
2 & 4CAN Low (Green)Ground

While the two pairs are connected internally, it is also recommended to connect them externally when using CAN, so that an unplugged cable does not disconnect the rest of the bus. Only one of each pin type is required for PWM.

CAN

SPARK MAX is not CAN FD compatible

Avoid placing it on the same CAN bus as other CAN FD devices.

CAN uses a JST-PH connector. Rather than crimping these connectors, a COTS cable is used with the next connection soldered on. The cable has two pairs of wires that are internally connected, so either pair can be used for daisy-chaining. Match wire colors end-to-end along the entire CAN bus.

PWM

PWM uses a JST-PH connector. Rather than crimping these connectors, a COTS cable is used. The cable should connect directly to the robot controller. If an extension is needed, it should be soldered.

Sensor Port:

Data Port A 10-pin port that allows a variety of sensors to be connected.

PinDescription
13.3V
25V
3Analog Input
4Forward Limit Input
5Quadrature B
6Multi-Function Pin
7Quadrature A
8Reverse Limit Input
9Quadrature C
10Ground

Various breakout boards are available.

Sensor Voltages

The SPARK MAX accepts 3.3V sensors. If the firmware is version 1.5.0 or newer, the SPARK MAX is 5V tolerant.

USB:

USB-C port used for configuration and manual control only. The motor won't run on USB power alone — you need 12V on the main leads.

LED Status Codes

The RGB LED on the top tells you the status and fault codes of the motor controller.

LED Color & PatternWhat It Means
Cyan blinkingBrushless mode, brake, waiting for signal
Cyan solidBrushless mode, brake, signal received
Magenta blinkingBrushless mode, coast, waiting for signal
Magenta solidBrushless mode, coast, signal received
Blue blinkingBrushed mode, brake, waiting for signal
Blue solidBrushed mode, brake, signal received
Yellow blinkingBrushed mode, coast, waiting for signal
Yellow solidBrushed mode, coast, signal received
Green blinkingMotor spinning forward (partial speed)
Green solidMotor spinning forward (full speed)
Red blinkingMotor spinning reverse (partial speed)
Red solidMotor spinning reverse (full speed)
Green/White blinkingForward limit switch triggered
Red/White blinkingReverse limit switch triggered

Common Faults & Troubleshooting


Thrifty Nova

Official docs: https://docs.thethriftybot.com/thrifty-nova

The Thrifty Nova is made by The Thrifty Bot as a cost-effective brushless motor controller. It supports brushless motors (NEO, NEO 550, Thrifty Pulsar, Minion) and brushed DC motors.

Specifications

ParameterValue
Operating voltage4V – 20V DC
Absolute max voltage25V
Continuous output current45A
Peak current80A for 2 seconds
CommunicationCAN (FD capable)
Dimensions2.2 in diameter × 0.761 in
Weight0.21 lbs
Power Connection6 in long, 12 awg integrated leads
Motor Connection6 in long, 12 awg integrated leads, 6 pin JST-PH connector for encoder
CAN ConnectionJST-PH 4-Pin connector with premade cable
USB ConnectionConfiguration and manual control
Sensor Connection10 pin Data Connector

Wiring

Power Connection:

Connect the integrated 12 AWG wires to the Power Distribution channel. If an extension is needed, use 12 AWG or thicker wire with Anderson PowerPole connectors.

Motor Connection (brushless):

Connect the integrated (red/black/white) 12 AWG wire to the motor cables using Anderson PowerPole connectors.

Connect the motor encoder cable to the 6 pin JST-PH encoder port. If an extension is needed, use a 6 pin JST-PH joiner board and a 6 pin JST-PH extension cable.

The wire colors must match between controller and motor. If they don't, the motor won't spin and could be damaged. You also must plug the encoder cable into the ENCODER port on the controller — brushless motors won't run without it.

Motor Connection (brushed):

Connect the integrated (red/black/unused white) 12 AWG wire to the motor cables using Anderson PowerPole connectors. Insulate the white wire — don't cut it, just zip-tie it out of the way.

CAN and PWM:

Connector

If a connector is required, the pinout is as follows:

PinCAN
1 & 3CAN High (Yellow)
2 & 4CAN Low (Green)

While the two pairs are connected internally, it is also recommended to connect them externally when using CAN, so that an unplugged cable does not disconnect the rest of the bus.

CAN

CAN uses a JST-PH connector. Rather than crimping these connectors, a COTS cable is used with the next connection soldered on. The cable has two pairs of wires that are internally connected, so either pair can be used for daisy-chaining. Match wire colors end-to-end along the entire CAN bus.

PWM

Thrifty Nova does not support PWM.

Sensor Port:

Data Port A 10-pin port that allows a variety of sensors to be connected.

PinDescription
13.3V
25V
3Analog Input
4Forward Limit Input
5Quadrature B
6Multi-Function Pin
7Quadrature A
8Reverse Limit Input
9Quadrature C / PWM Input
10Ground

Various breakout boards are available.

Sensor Voltages

The Thrifty Nova accepts 3.3V sensors but is 5V tolerant.

USB:

USB-C port used for configuration and manual control only. The motor won't run on USB power alone — you need 12V on the main leads.

LED Status Codes

The RGB LED on the top tells you the status and fault codes of the motor controller.

LED Color & PatternWhat It Means
Yellow alternatingIdle output
Yellow solidCAN connected but no control
Green flashingForward motion
Red flashingReverse motion

Common Faults & Troubleshooting


SPARK Flex

Official docs: https://docs.revrobotics.com/brushless/spark-flex/overview

The SPARK Flex is the next-generation version of the SPARK MAX, built specifically for the NEO Vortex motor. Using its docking interface, it physically clips onto the Vortex instead of having loose motor wires, which makes wiring cleaner and more reliable. It also works with older NEO and NEO 550 motors using the SPARK Flex Dock adapter.

Specifications

ParameterValue
Operating voltage6V – 24V DC
Absolute max voltage30V
Continuous output current60A
Peak current100A for 2 seconds
CommunicationCAN (FD capable), PWM
Dimensions60 mm diameter × 28.2 mm
Weight130g
Power Connection45 cm long, 12 awg integrated leads
Motor ConnectionDocking Connector
CAN Connection45 cm long, 26 awg integrated leads
USB ConnectionConfiguration and manual control
Sensor Connection10 pin locking Data Port

Wiring

Power Connection:

Connect the integrated 12 AWG wires to the Power Distribution channel. If an extension is needed, use 12 AWG or thicker wire with Anderson PowerPole connectors.

Motor Connection:

The docking interface handles motor wiring automatically when you fully seat the NEO Vortex. Make sure both docking screws are completely tightened — a partially seated dock loses the electrical connection intermittently, which is very hard to diagnose.

CAN and PWM:

Wire Colors

Description of wire colors:

ColorCAN ModePWM Mode
YellowCAN HighSignal
GreenCAN LowGround

CAN

Two integrated pairs of wires come out of the controller. Solder these wires to the next connection. The two pairs are internally connected, so either pair can be used for daisy-chaining. Match wire colors end-to-end along the entire CAN bus.

PWM

When using PWM, only one pair is required. Insulate the other pair — do not cut it, simply zip-tie it out of the way.

Sensor Port:

Data Port A 10-pin port that allows a variety of sensors to be connected.

PinDescription
1Reserved (Do Not Use)
25V
3Analog Input
4Forward Limit Input
5Quadrature B
6PWM Input
7Quadrature A
8Reverse Limit Input
9Quadrature C
10Ground

Use the Breakout Cable (REV-11-2853) or Pigtail Cable (REV-11-2852) to access data port pins cleanly.

Sensor Voltages

The SPARK Flex accepts 5V sensors.

USB:

USB-C port used for configuration and manual control only. The motor won't run on USB power alone — you need 12V on the main leads.

LED Status Codes

The RGB LED on the side tells you the status and fault codes of the motor controller.

LED Color & PatternWhat It Means
Cyan blinkingBrushless mode, brake, waiting for signal
Cyan solidBrushless mode, brake, signal received
Magenta blinkingBrushless mode, coast, waiting for signal
Magenta solidBrushless mode, coast, signal received
Blue blinkingBrushed mode, brake, waiting for signal
Blue solidBrushed mode, brake, signal received
Yellow blinkingBrushed mode, coast, waiting for signal
Yellow solidBrushed mode, coast, signal received
Green blinkingMotor spinning forward (partial speed)
Green solidMotor spinning forward (full speed)
Red blinkingMotor spinning reverse (partial speed)
Red solidMotor spinning reverse (full speed)
Green/White blinkingForward limit switch triggered
Red/White blinkingReverse limit switch triggered

Common Faults & Troubleshooting


Talon FX

Official docs: https://v6.docs.ctr-electronics.com/en/stable/docs/hardware-reference/talonfx/index.html

The Talon FX isn't a standalone box — it's a motor controller built directly into CTR Electronics motor products. The most common ones in FRC are:

  • Kraken X60 — full-size, high-power brushless motor
  • Kraken X44 — compact, lower power version of the X60

Because the controller is integrated, there's no separate box to mount. The Talon FX is configured and programmed using Phoenix 6 (the CTR software suite) and Phoenix Tuner X (the configuration app).

Specifications

ParameterValue
Operating voltage6V – 24V DC
Absolute max voltage27V
Continuous output current60A
Peak current120A for 2 seconds
CommunicationCAN FD, PWM
DimensionsIntegrated into the motor
WeightIntegrated into the motor
Power Connection#6-32 screw terminal
Motor ConnectionIntegrated into the motor
CAN Connection#4-40 screw terminal
USB ConnectionNone
Sensor ConnectionNone

Wiring

Use the correct screw specs

Using screws longer than specified on the power or CAN terminals will physically damage the integrated controller.

Overtightening the screws can cause internal damage to the integrated controller, while screws that are too loose can result in a poor connection and may loosen further over time.

Power Connection:

Use a wire with a cable lug to connect to the power terminals. The wire should run directly from the Power Distribution channel with no intermediate connections, unless the robot design requires them.

  • Screw size: #6-32 × ¼ in (IP10/T10 Torx driver)
  • Torque: 0.9 N·m — snug but don't strip it
  • Wire must be crimped with cable lugs appropriate for the wire gauge and a #6 size screw
  • 10 AWG is preferred, 12 awg is acceptable. Red wire for positive, and black wire for negative

Motor Connection:

The Talon FX is integrated into the motor and requires no connections.

CAN and PWM:

CAN

Use a wire with a cable lug to connect to the CAN terminals. The wire should run directly to the next CAN device with no intermediate connections, unless the robot design requires them. Match wire colors end-to-end along the entire CAN bus.

  • Screw size: #4-40 × ¼ in (IP8/T8 Torx driver)
  • Torque: 0.6 N·m
  • Wire should be crimped with cable lugs appropriate for the wire gauge and a #4-40 size screw
  • 22 awg, green and yellow, twisted pair wire must be used. Always connect two can pairs to allow daisy chaining.

PWM

Use a wire with a cable lug to connect to the CAN terminals. The wire should run directly to the robot controller with no intermediate connections, unless the robot design requires them.

Sensor Port:

Talon FX does not have a sensor port.

USB:

No USB available. All configuration and control is done through Phoenix Tuner.

LED Status Codes

The Talon FX has two RGB LEDs on the back that work together to show status and fault codes.

LED PatternWhat It MeansWhat To Do
OffNo powerCheck power wires and breaker
Alternating red (2 LEDs)No CAN signalCheck Yellow/Green wiring, check for swapped wires
Alternating orangeCAN detected, no Phoenix programDeploy your robot code
Both blink orange simultaneouslyDisabled, CAN activeEnable the robot or send a control request
Phoenix Tuner X also shows an animated LED gif for any Talon FX — useful when the motor is buried somewhere hard to see on the robot.

Common Faults & Troubleshooting


Talon FXS

Official docs: https://v6.docs.ctr-electronics.com/en/stable/docs/hardware-reference/talonfxs/index.html

The Talon FXS is a brushless motor controller from CTR Electronics. It handles both brushless motors (NEO, NEO 550, Minion) and brushed DC motors.

Specifications

ParameterValue
Operating voltage6V – 24V DC
Absolute max voltage27V
Continuous output current60A
Peak current120A for 2 seconds
CommunicationCAN FD, PWM
Dimensions1.43 × 1.16 × 3.06 in
Weight0.25 lbs
Power Connection#6-32 screw terminal
Motor Connection#6-32 screw terminal for stator, 6 pin JST-PH for encoder
CAN Connection#4-40 screw terminal
USB ConnectionNone
Sensor Connection10 pin Gadgeteer Data Port

Wiring

Use the correct screw specs

Using screws longer than specified on the power or CAN terminals will physically damage the controller.

Overtightening the screws can cause internal damage to the integrated controller, while screws that are too loose can result in a poor connection and may loosen further over time.

Power Connection:

Use a wire with a cable lug to connect to the power terminals. The wire should run directly from the Power Distribution channel with no intermediate connections, unless the robot design requires them.

  • Screw size: #6-32 × ¼ in (IP10/T10 Torx driver)
  • Torque: 0.9 N·m — snug but don't strip it
  • Wire must be crimped with cable lugs appropriate for the wire gauge and a #6 size screw
  • 12 awg or larger must be used. Red wire for positive, and black wire for negative

Motor Connection:

Use a wire with a cable lug to connect to the motor terminals. If the motor has built-in leads, connect to them using Anderson PowerPole connectors.

Connect the motor encoder cable to the 6 pin JST-PH encoder port. If an extension is needed, use a 6 pin JST-PH joiner board and a 6 pin JST-PH extension cable.

  • Screw size: #6-32 × ¼ in (IP10/T10 Torx driver)
  • Torque: 0.9 N·m — snug but don't strip it
  • Wire must be crimped with cable lugs appropriate for the wire gauge and a #6 size screw
  • 12 awg or larger must be used. Red wire for positive, and black wire for negative

CAN and PWM:

CAN

Use a wire with a cable lug to connect to the CAN terminals. The wire should run directly to the next CAN device with no intermediate connections, unless the robot design requires them. Match wire colors end-to-end along the entire CAN bus.

  • Screw size: #4-40 × ¼ in (IP8/T8 Torx driver)
  • Torque: 0.6 N·m
  • Wire should be crimped with cable lugs appropriate for the wire gauge and a #4-40 size screw
  • 22 awg, green and yellow, twisted pair wire must be used. Always connect two can pairs to allow daisy chaining.

PWM

Use a wire with a cable lug to connect to the CAN terminals. The wire should run directly to the robot controller with no intermediate connections, unless the robot design requires them.

Sensor Port:

Gadgeteer Data Port A 10-pin port that allows a variety of sensors to be connected.

Pin NumberDescription
1Reserved (Do Not Use)
25V
3Analog Input
4Forward Limit Input
5Quadrature B
6Reserved (Do Not Use)
7Quadrature A
8Reverse Limit Input
9PWM Input
10Ground

Various breakout boards are available.

Sensor Voltages

The Talon FXS accepts 5V sensors.

USB:

No USB available. All configuration and control is done through Phoenix Tuner.

LED Status Codes

The Talon FXS has two RGB LEDs on the top that work together to show status and fault codes.

LED PatternWhat It MeansWhat To Do
OffNo powerCheck power wires and breaker
Alternating red (2 LEDs)No CAN signalCheck Yellow/Green wiring, check for swapped wires
Alternating orangeCAN detected, no Phoenix programDeploy your robot code
Both blink orange simultaneouslyDisabled, CAN activeEnable the robot or send a control request
Phoenix Tuner X also shows an animated LED gif for any Talon FXS — useful when the motor is buried somewhere hard to see on the robot.

Common Faults & Troubleshooting