Two control methods
Motor controllers can be commanded two ways, and the choice affects wiring, capability, and debugging.
PWM (Pulse Width Modulation)
With PWM, the roboRIO sends a single pulse signal to each controller over a 3-wire cable plugged into one of the roboRIO's PWM ports (0-9). The pulse width (typically 1.0-2.0 ms) tells the controller how fast and which direction to drive.
Pros:
- Simple and easy to understand.
- Easy to troubleshoot - one controller per port.
- No device IDs to configure.
Cons:
- One wire run per controller (lots of wires).
- No feedback data comes back to the roboRIO over PWM.
- Limited to 10 controllers (the number of PWM ports).
WPILib recommends PWM as a starting point because it is less complex and easier to debug.
CAN (Controller Area Network)
CAN is a digital network that daisy-chains many devices on just two wires (CANH and CANL). The roboRIO, the PD, and every CAN motor controller share the same bus.
Pros:
- Far less wiring - one bus serves dozens of devices.
- Rich two-way data: the controller reports velocity, position, current, temperature, and faults.
- Advanced features: closed-loop control, motion profiling, current limiting, follower mode.
- Easier configuration through vendor tools.
Cons:
- Each device needs a unique CAN ID (set with Phoenix Tuner X for CTR, REV Hardware Client for REV).
- A single broken connection can take down everything downstream on the bus.
Which to choose?
Most competitive teams use CAN for motor controllers to unlock current limiting and telemetry, while sometimes using PWM for a simple device like an LED blinker driver. Beginners often start with PWM and migrate to CAN as they get comfortable.
Sources
Key takeaways
- PWM sends one pulse signal per controller over a 3-wire cable to roboRIO ports 0-9 - simple but no feedback.
- CAN is a two-wire digital bus that daisy-chains many devices and returns rich telemetry.
- CAN unlocks current limiting, closed-loop control, follower mode, and far less wiring.
- Each CAN device needs a unique ID (set via Phoenix Tuner X or REV Hardware Client).
Keep going
Take the quiz · +10 XP with an accountMore in Motor Controllers and the CAN Bus
Sources & corrections
This lesson is AI-assisted: drafted from primary sources, then reviewed and edited by hand. Errors still get through. When one is reported we fix it and write down what changed — publicly, in the corrections log.
Sources and further reading
Read next
Articles on this, for competition day
The lesson covers how it works. These cover what to do when it breaks.
- 8 min read
The FRC Control System Explained: roboRIO, PDH, Radio, and Everything Between
The FRC control system explained: how the roboRIO, REV PDH, radio, motor controllers, and CAN bus connect to make your robot drive — a plain-English electronics board tour.
Read - 7 min read
FRC LED Lights: Wiring, Power Budgeting, and the WPILib AddressableLED API
How to wire addressable LEDs off the PDH's switchable channel, budget their current draw, and use WPILib's AddressableLED API to signal robot state.
Read - 12 min read
SystemCore: FRC's New 2027 Control System Explained
SystemCore replaces the roboRIO for FRC 2027: verified specs, ports, wiring changes, WPILib code updates, and what your team should do before kickoff.
Read
Lesson quiz
RequiredAll 3 right completes the lesson. Miss one and only that question comes back — anything you already answered correctly stays banked.
0 of 3 answered
01.What is a key advantage of CAN control over PWM control for FRC motor controllers?
02.How does CAN wiring typically differ from PWM wiring on an FRC robot?
03.What does a PWM (Pulse Width Modulation) signal do in a basic FRC motor controller?
Answer every question to submit.
All 35 lessons in Electrical & Wiring
- Not started:Mini-Project 1: A Single-Motor Test Stand from Battery to Spin
- Not started:Mini-Project 2: Current-Limited Drivetrain (CTRE and REV)
- Not started:Mini-Project 3: A Live Power-Monitoring Dashboard
- Not started:Mini-Project 4: A Switchable Channel for Lights and Vision
- Not started:Mini-Project 5: CAN Device Bring-Up with Tuner X and the Hardware Client