Brownouts: Why the Robot Goes Limp Mid-Match
Understand the roboRIO's staged brownout protection and the current-limiting fixes that keep your robot alive under load.
Sign in to track progress, earn XP, and save lessons.
You floor the throttle, the lights dim, the robot stutters, and the Driver Station logs a 'Brownout' warning. This is the roboRIO protecting itself from low battery voltage, and it is one of the most common rookie failures.
The mechanism. The roboRIO uses staged brownout protection. When battery voltage drops below 6.8V, the 6V output on the PWM pins begins to drop. When it falls below 6.3V, the original roboRIO enters full brownout protection — it disables PWM outputs, shuts down user power rails, and sends disable commands to CAN motor controllers to keep itself from rebooting. The roboRIO 2.0 has a software-configurable Stage 2 level that defaults to 6.75V. Voltage sags hardest during hard acceleration or when a mechanism stalls, because motors pull their highest current then.
Diagnose it. In the Driver Station Charts/Power tab, watch battery voltage during the maneuver that triggers the brownout. A healthy battery under load should stay well above 7V; if it dives toward 6.3V you have your answer. Also check the PDH/PDP for tripped breakers and confirm the main breaker and battery leads are tight — a corroded or loose battery connection causes a large voltage drop that mimics a weak battery.
Fix it, in order of impact:
- Use a good, freshly charged battery. An old or undercharged battery is the single most common cause. Load-test your batteries and retire weak ones.
- Add current limits in software. This is the highest-leverage code fix. On a SPARK MAX set a smart current limit in the config (e.g. 40A for a drive NEO). On a Kraken/TalonFX set a stator current limit in
TalonFXConfiguration. Stator current limits are very effective at capping the supply current that drags voltage down. - Ramp your commands. Slew-rate-limit driver inputs so the robot can't slam from 0 to 100% instantly; WPILib's
SlewRateLimiterdoes this in a few lines. - Tighten every power connection. Re-crimp battery leads, check the Anderson connector, and torque the main breaker terminals.
// SPARK MAX example (REVLib 2025+)
SparkMaxConfig cfg = new SparkMaxConfig();
cfg.smartCurrentLimit(40);
motor.configure(cfg, ResetMode.kResetSafeParameters,
PersistMode.kPersistParameters);
The mindset: brownouts are a power-budget problem, not a 'the robot is broken' problem. Decide how much current each subsystem may draw, enforce it with limits, and keep your batteries healthy.
Key takeaways
- Below 6.8V the 6V PWM rail drops; below 6.3V the original roboRIO enters full brownout protection (roboRIO 2.0 default ~6.75V)
- Current limits (SPARK MAX smart current limit / TalonFX stator limit) are the most effective software fix for brownouts
- A fresh battery and tight, clean power connections prevent most brownouts before any code change is needed
Go deeper
Lesson quiz
RequiredAnswer all 3 questions correctly to complete this lesson.
1.On the original roboRIO (1.0), at what battery voltage does it enter full brownout protection and disable outputs?
2.What happens to the robot's actuators when the roboRIO triggers a brownout?
3.Which of the following is the most common underlying cause of mid-match brownouts?
Answer every question to submit.