Series: FRC Technical Foundations Unit: 3 — Electrical and Power Session length: ~3 hours Prerequisites: Lessons 1–4
Every legal FRC robot has the same spine. Learn it once and it is yours for good.
Battery. A 12 V sealed lead-acid battery, roughly 5.8 kg. It is the source of everything and the limit on everything.
Main breaker. A 120 A breaker on the positive lead, the single point that disconnects the entire robot. Must be accessible from outside the robot.
Power distribution. Either a REV Power Distribution Hub (PDH) or a CTRE PDP / PDP 2.0. Battery in, many protected channels out. Each channel is protected by exactly one auto-resetting circuit breaker sized for its load — typically 40 A for large motors, 30 A or less for small ones.
roboRIO. The robot controller: a dual-core ARM processor plus an FPGA, running both the safety-critical trusted code and your team’s code. It has Ethernet, USB, CAN, PWM, DIO, analog, SPI, and I²C. It gets power from a dedicated regulated connection on the PD board.
Radio. The wireless bridge that links the robot to the Driver Station. In the current control system this is a Vivid Hosting VH-109, configured with your team’s encryption key at each event. Wiring details matter here and change between hardware revisions — check the current WPILib wiring page rather than assuming.
Motor controllers. The devices that actually switch power to motors. The modern ones are smart controllers on the CAN bus — SPARK MAX and SPARK Flex from REV, TalonFX integrated into Kraken and Falcon motors from CTRE. They do closed-loop control, current limiting, and telemetry on board.
Robot Signal Light. Required. Flashes when the robot is enabled, solid when disabled. It exists so that a human standing next to your robot can tell whether it is about to move.
Sensors. Encoders, gyros, limit switches, distance sensors, cameras. Some on CAN, some on DIO, some on USB.
Understanding the control system means being able to trace two independent things.
Battery → main breaker → PD board → channel breaker
→ motor controller → motor
Every actuator on your robot follows exactly this route. If a mechanism is dead, this is the sequence you check, in order, with a multimeter. Not by swapping parts.
Driver Station laptop → radio → roboRIO (your code)
→ CAN bus → motor controller → motor
Notice these paths are almost entirely separate. They meet only at the motor controller. This is why a robot can have perfect communications and a dead mechanism, or a perfectly wired mechanism that never moves.
Rule 5.1 — Diagnose by tracing a path, not by swapping parts. Random substitution occasionally fixes the problem and never teaches you anything. Worse, it often introduces a second fault.
This is the concept students most often miss.
CAN is a shared two-wire bus. Every device on it — motor controllers, the PD board, CANcoders, the Pigeon gyro — is connected to the same pair of twisted wires, daisy-chained from device to device. Each device has a unique ID, and they take turns talking.
Three consequences that matter enormously in practice:
One break kills everything downstream. Because it is a daisy chain, a single disconnected CAN wire halfway along the chain takes out every device after it. A robot where “the whole left side stopped working” often has one loose CANH wire, not four dead controllers.
Duplicate IDs cause chaos. Two devices with the same CAN ID will fight. Symptoms are bizarre and intermittent. Every device gets a unique ID, assigned deliberately, and written down.
The bus has finite bandwidth. Every device publishing status frames at a high rate consumes bus capacity. On a robot with twenty CAN devices, default status frame rates can saturate the bus and cause timeouts. Vendor tools let you slow down frames you do not need.
Rule 5.2 — Maintain a written CAN ID map, and keep it current. Device, ID, physical location, what it drives. Tape a printed copy inside the robot. You will use it at every competition.
Here is a scene every FRC team recognises. The robot is driving fine. The driver accelerates hard while raising the elevator. Everything goes dead for half a second, then comes back. Nothing was broken.
That is a brownout.
A 12 V FRC battery is not an ideal voltage source. It has internal resistance — typically 10–20 mΩ, higher when the battery is old or cold. When you draw current, the voltage at the terminals drops by I × R.
Draw 200 A from a battery with 15 mΩ internal resistance and you lose 200 × 0.015 = 3 V immediately. A battery resting at 12.6 V is now delivering 9.6 V. Add voltage drop in your wiring and connectors, and the roboRIO may see well under 7 V.
The roboRIO monitors its input voltage. Below roughly 6.8 V it enters a staged brownout protection sequence, shedding non-critical loads and eventually disabling PWM outputs, to protect itself from resetting mid-match. The robot appears to die.
Four brushless drive motors accelerating from a standstill can each pull over 100 A momentarily. Add an elevator and an intake and you can command 400 A of demand from a battery that cannot supply it without collapsing.
The fix is almost never bigger wire. It is:
Rule 5.3 — Set current limits on every motor before you drive the robot for the first time. Not after the first brownout. Before.
[ANECDOTE SLOT] — A brownout you diagnosed, ideally one that was initially blamed on something else entirely. These stories teach the “symptoms lie” lesson better than any explanation.
Wire is a resistor. Longer and thinner means more resistance, which means more voltage lost and more heat produced.
Rules of thumb used across FRC:
Circuit | Typical gauge |
|---|---|
Battery and main breaker leads | 6 AWG |
40 A motor branches | 12 AWG |
30 A branches | 14 AWG |
Small loads, 20 A and below | 18 AWG |
The current rule to internalise is the general principle behind them all: the breaker protects the wire, not the device. A breaker must be sized so that it trips before the wire it protects overheats. Putting a 40 A breaker on 18 AWG wire is how you start a fire. This relationship is specified in the game manual’s robot construction rules, and it is checked at inspection.
Time: 90 minutes. Equipment: A training chassis, a laptop with the WPILib suite installed, a roboRIO, a radio, the imaging tool, and vendor configuration tools (REV Hardware Client or Phoenix Tuner X).
Starting from a roboRIO that has been deliberately reset:
Do this without a step-by-step handout. Students should be navigating the official WPILib documentation, because that is the skill.
Evidence of learning: A working robot, a written bring-up checklist produced by the students, and a completed CAN ID map.
Time: 45 minutes. Equipment: A chassis with brushless drive motors, a multimeter, and access to Driver Station logs or the PD board’s CAN telemetry.
Evidence of learning: A voltage-versus-current plot, a calculated internal resistance for at least two batteries, and a written battery rotation policy for competition.
Time: 30 minutes. Equipment: As above, plus vendor configuration software.
Set drive motor current limits to an unrestricted value, then 60 A, then 40 A. For each: time a 5 m sprint, record minimum bus voltage, and note whether the robot browns out.
Students will usually expect the current-limited robot to be noticeably slower. Usually it is barely slower and dramatically more stable. That surprise is the lesson.
Evidence of learning: A three-row table of limit, sprint time, and minimum voltage, with a recommended limit and a one-sentence justification.
Knowing what the components are is different from being able to wire them so they survive a season. Lesson 6 — Wiring, Harnesses and Pneumatics covers the craft of it, plus the subsystem the source curriculum leaves out entirely.



