A brownout is a controls safety event: when battery voltage sags, the roboRIO disables outputs and your robot can stop responding mid-match. Understanding the staged thresholds and limiting current is the fix.
Know the thresholds (WPILib). As battery voltage drops under heavy load:
- 6.8V - the 6V output on the PWM pins begins to drop (Stage 1).
- 6.3V (roboRIO 1.0, fixed) or 6.75V (roboRIO 2.0 default, settable via RobotController.setBrownoutVoltage) - full brownout: PWM disabled; the 6V, 5V, and 3.3V user rails disabled; relay and GPIO outputs disabled; CAN motor controllers and pneumatics commanded off.
- The controller stays in brownout until voltage rises back above 7.5V.
Step 1 - Build a power budget. Treat ~180A as a worst-case sustained draw and allocate it across subsystems. Many teams gear the drivetrain so wheels slip at roughly 40-50A per motor, which caps the worst-case stall draw.
Step 2 - Set supply current limits in Phoenix 6. On a CTRE TalonFX (e.g., Kraken X60 or Falcon 500), a reasonable starting point is a 70A supply limit that drops to 40A after 1.0 second of active limiting (these also happen to be the Phoenix 6 defaults):
import com.ctre.phoenix6.configs.CurrentLimitsConfigs;
import com.ctre.phoenix6.hardware.TalonFX;
TalonFX motor = new TalonFX(1);
var limits = new CurrentLimitsConfigs();
limits.SupplyCurrentLimit = 70; // amps, steady
limits.SupplyCurrentLowerLimit = 40; // amps, after sustained limiting
limits.SupplyCurrentLowerTime = 1.0; // seconds
limits.SupplyCurrentLimitEnable = true;
motor.getConfigurator().apply(limits);
When enabled, the limiter holds supply current at or below SupplyCurrentLimit (preventing brownouts) and, after limiting for SupplyCurrentLowerTime, drops to SupplyCurrentLowerLimit to keep the branch-circuit breaker from tripping. The 2025 Phoenix 6 rework replaced the old SupplyCurrentThreshold/SupplyTimeThreshold pair with these SupplyCurrentLowerLimit/SupplyCurrentLowerTime fields and made the limiter far more responsive at actually preventing brownouts.
Step 3 - Monitor and detect. Read per-channel current from the REV PDH or CTRE PDP (these log current), and check RobotController.isBrownedOut() / RobotController.getBatteryVoltage() in code. Check the 12V fault count live on the Driver Station's CAN/Power tab during operation, and after practice review the Driver Station Log Viewer's battery-voltage graph for the dips that indicate a brownout.
if (edu.wpi.first.wpilibj.RobotController.isBrownedOut()) {
System.out.println("BROWNOUT at " + RobotController.getBatteryVoltage() + "V");
}
Step 4 - Tune. If you still brown out, lower SupplyCurrentLimit, fix your gearing, or start matches only on a battery that tested above ~12.7V and under 0.015 Ohm. The deliverable is a committed config plus a one-page subsystem current budget.
the part worth keeping
Key takeaways
- Brownout stages: 6.8V (PWM 6V sag), 6.3V (roboRIO 1.0) / 6.75V (roboRIO 2.0) full disable, 7.5V to recover.
- Phoenix 6 SupplyCurrentLimit (e.g., 70A dropping to 40A after 1.0s) is the primary code-side brownout defense.
- Use RobotController.isBrownedOut() plus the DS Log Viewer to detect and confirm fixes.
SafetySafety Worked Examples & Mini-Projectslesson 3 of 5
Keep going
Take the quiz+10 XP with an accountMore in Safety Worked Examples & Mini-Projects
where this came from
Sources and 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, in public, in the corrections log.
sources and further reading
- docs.wpilib.orgWPILib - roboRIO Brownout and Understanding Current Draw
- v6.docs.ctr-electronics.comCTRE Phoenix 6 - Improving Performance with Current Limits
- api.ctr-electronics.comPhoenix 6 API - CurrentLimitsConfigs
clipped to this lesson
Articles that go further on this
The lesson gets you through the topic. These go wider on it, and they read in one sitting.
- 18 min readCTRE Phoenix for FRC: Kraken X60/X44, TalonFX, Phoenix 6, CANcoder & Pigeon 2A practical guide to the CTRE Phoenix ecosystem for FRC: Kraken X60/X44 motors, TalonFX, Phoenix 6 API, Pro/FOC licensing, CANcoder, Pigeon 2 & CANivore./blogread it
- 7 min readFRC Brownout: Why Your Robot Goes Limp and How to Actually Fix ItThe exact roboRIO brownout voltage stages, how to spot one in the Driver Station log, and the fixes ranked by payoff: current limits, battery health, gearing, and compressor scheduling./blogread it
- 8 min readFRC Robot Rules: Weight, Size, and Bumper Limits ExplainedA beginner's guide to FRC robot weight, size, frame perimeter, extension, and bumper rules - with the recent-season numbers and why you must check the current manual./blogread it
answer sheet
Lesson quiz
All 3 right completes the lesson. Miss one and only that question comes back, anything you already answered correctly stays banked.
0 of 3 answered
01At what battery voltage does the roboRIO 1.0 hit full brownout, disabling PWM outputs and the user power rails?
02In Phoenix 6, which limit serves as the primary code-side defense to stop a motor from browning out the roboRIO?
03Current-draw brownouts most commonly occur in which situation?
Answer every question to submit.
All 28 lessons in Safetyopenclose
01 / culture-and-roles
02 / ppe-and-shop-safety
03 / battery-pneumatics-electrical
04 / events-and-program
05 / safety-worked-examples-mini-projects
- Not read yet:Mini-Project: A Battery Management & Logging System
- Not read yet:Mini-Project: Write a Robot Lockout/Tagout (LOTO) Procedure
- Not read yet:Worked Example: Current Limits That Prevent Brownouts
- Not read yet:Mini-Project: Assemble a Competition Pit Safety Kit
- Not read yet:Mini-Project: Run a Mock Pit Safety Inspection
06 / safety-common-mistakes-troubleshooting
- Not read yet:Troubleshooting Brownouts and Power Sag
- Not read yet:Battery Handling Mistakes That Cause Injuries and Fires
- Not read yet:Electrical Isolation and Wiring Mistakes Inspectors Fail You For
- Not read yet:Stored-Energy Surprises: Pneumatics and Springs
- Not read yet:Pit and Shop Conduct Mistakes That Hurt Your Judging
07 / safety-advanced-engineering-case-studies