⚡ Hardware · Competition Prep

V5 Battery Management

The V5 battery is one of the most misunderstood components in VRC. Teams either ignore it completely or worry unnecessarily. This guide covers what the battery actually does, how to charge it correctly, read its LED codes, monitor it in code, and build a competition-day protocol that guarantees consistent performance.

1
How It Works
2
Charging
3
Competition Day
4
Reading LEDs
5
Code & Monitor
6
Storage
// Section 01
How the V5 Battery Actually Works
The V5 battery uses a chemistry and voltage regulation system that is fundamentally different from older VEX batteries. Understanding it corrects several common misconceptions that lead to bad practices.

LiFePO4 Chemistry — Why It Matters

The V5 battery uses Lithium Iron Phosphate (LiFePO4) chemistry. This is not a standard lithium-ion battery — it is a safer, longer-lived variant chosen specifically for high-current robot use. Key properties:

The Most Important Fact: Motor Performance Is Consistent

The V5 motor runs internally at a slightly lower voltage than the battery’s minimum voltage. This means motor performance is accurate to ±1% regardless of battery charge level. A 30% battery produces identical motor speed and torque to a 100% battery. The V5 system was specifically designed to eliminate the performance degradation that plagued the old Cortex system, where a low battery could drop motor output to 51% of rated power.

This has a critical practical implication: your autonomous PID tuning does not need to account for battery level. Movements tuned at 100% battery will produce identical results at 40% battery. This is one of the biggest advantages of the V5 system over older platforms.

The Coulomb Counter — Why the % Reading Behaves Oddly

Because LiFePO4 has an unusually flat voltage curve, the V5 Brain cannot estimate remaining capacity by measuring voltage (as most battery-powered devices do). Instead, the battery has an internal coulomb counter — it measures electrical charge flowing in (during charging) and out (during use) and computes remaining capacity from that data.

Practical implications:

Runtime Expectations

// Section 02
Charging Strategy
The V5 battery is designed to be kept on the charger whenever not in use. The charging system handles cell balancing automatically. Your job is to make sure batteries are always available fully charged.

The Golden Rule: Always On the Charger

Put the battery on the charger any time the robot is not being actively driven. Between matches at a competition, between practice sessions at school, overnight. The charger will not overcharge the battery — it terminates automatically when fully charged and simply maintains charge. There is no harm in leaving a battery on the charger indefinitely.

Official VEX guidance: place the V5 Robot Battery on the charger whenever it is not in use, like between matches at competitions. The charger handles everything automatically.

Charge Times

How Many Batteries to Bring

ℹ️
Minimum for a competition: 2 batteries per robot. One on the robot, one charging in the pit at all times. This rotation ensures you always have a near-full battery ready when your match is called. With one battery, you risk entering a match at 50% or below if matches are called faster than the ~60 minute charge time.
Event TypeRecommended BatteriesWhy
Local qualifier (8–12 matches)2 batteries1 on robot, 1 always charging. Swap every 2–3 matches.
Large tournament (12+ matches)3 batteriesBuffer for back-to-back matches with no pit time. One always at 100%.
State / regional championship3–4 batteriesLong days, minimal wait time. Eliminations can run fast.
Skills-only event1–2 batteries60-second runs use minimal charge. One battery handles many attempts.

The Pit Charging Rotation

Establish a consistent rotation so a fully-charged battery is always ready:

  1. After each match, immediately remove the battery from the robot and plug it into the charger
  2. Put the next battery (the one that was charging) onto the robot
  3. Label batteries with numbers on masking tape so you know which has been charging longest
  4. Never put a battery on the robot that has been charging less than 30 minutes unless it is showing 3–4 green LEDs
⚠️
Bring your own charger to every competition. Some pit areas have limited outlets and shared chargers may not be available. A power strip in your team bag — alongside all chargers — ensures you are never dependent on event infrastructure.
// Section 03
Competition Day Protocol
A competition day battery protocol removes uncertainty. You should never enter a match wondering how much charge you have. The protocol makes that impossible.

Night Before the Event

Morning of the Event

Between Matches — The Exact Protocol

  1. As soon as you return to the pit after a match: press the battery button. Check the LEDs.
  2. If 3–4 LEDs: still good for another match, but swap to the charged battery and put this one on the charger anyway. Always keep the highest-charge battery on the robot.
  3. If 1–2 LEDs: swap immediately. Do not use this battery for another match without at least 30 minutes of charging.
  4. Write the match number on a sticky note next to the battery when you plug it in. When the next match is called, you know exactly how long it has been charging.
  5. Confirm battery is fully seated on the robot — click, not just inserted. Brain should show solid battery icon.

Skills Runs — Battery Matters More Here

While motor performance is consistent regardless of battery level, there is one area where battery charge genuinely affects skills results: the autonomous coding skills run is 60 seconds — four times longer than a match autonomous. If the battery percentage drops during the run into the steep-drop region of the discharge curve, the Brain may report unusual percentage readings that could affect any battery-monitoring code you have. More importantly:

🏆
The best skills teams have a dedicated pre-skills ritual: fresh battery installed → robot placed in consistent starting position → autonomous verified on Brain screen → 30-second stand-back wait for IMU calibration confirmation → run. Every variable is controlled before the 60-second window begins.
// Section 04
Reading the Battery LED Codes
The four green LEDs and one red LED on the battery face tell you everything about charge state and battery health. Every team member should be able to read them instantly.

Green LED Charge Status

Press the black button on the battery to see current charge
1 LED lit — 0–25% charge. Charge immediately. Do not use for a match.
2 LEDs lit — 25–50% charge. Usable but charge before next match.
3 LEDs lit — 50–75% charge. Good for 1–2 more matches. Swap in rotation.
4 LEDs lit — 75–100% charge. Ready for competition.
All 4 LEDs flashing (charger connected) — actively charging. Number of lit LEDs shows progress.
All 4 LEDs dim / flash once every 5 sec — fully charged, charger still connected. Normal.

Red LED Warning Codes

Red flashing fast (5×/sec) — critically low battery. Charge immediately. Do not drive.
Red + green flashing together — overvoltage error. Let battery discharge slightly, then recharge.
Red solid + green flashing slow (1×/sec) — internal cell failure. Battery is essentially dead. Replace it.

Battery Medic — Deep Diagnostics

The V5 Brain has a hidden diagnostic tool called Battery Medic that shows individual cell voltages, charge/discharge history, and error counts. To access it on the Brain: navigate to Brain Settings → System Info, then hold Shift and click the battery icon (exact method may vary with firmware version — check the VEX KB). Battery Medic reveals:

A battery with many undervoltage errors may still show 100% charge but will die unexpectedly under load. Run Battery Medic on each battery at the start of every season to identify weak batteries before they fail at competition.

// Section 05
Monitoring Battery in Code
PROS exposes battery voltage, percentage, current, and temperature. Display it on the controller screen, log it, or use it to protect your robot from running a match at critically low charge.

Reading Battery Values in PROS

src/main.cpp — battery API
// Battery percentage (0.0 – 100.0) double pct = pros::battery::get_capacity(); // Battery voltage in millivolts (e.g. 12800 = 12.8V) double voltage = pros::battery::get_voltage(); // Current draw in milliamps (positive = discharging) double current = pros::battery::get_current(); // Battery temperature in Celsius double temp = pros::battery::get_temperature();

Display Battery on Controller Screen

Show the battery percentage on the primary controller so the drive team can see it at a glance during the match. Run this in a separate task so it does not slow the control loop:

src/main.cpp — battery display task
// In initialize() — start a background task to update controller screen pros::Task([](){ while(true) { double pct = pros::battery::get_capacity(); master.print(0, 0, "BAT: %.0f%% ", pct); pros::delay(2000); // update every 2 seconds — don't spam the display } });

Low Battery Warning in Autonomous

Add a low-battery guard at the start of your autonomous function. If the battery is critically low, run only the safest baseline routine rather than the full route:

src/main.cpp — battery guard in autonomous
void autonomous() { double batPct = pros::battery::get_capacity(); // Battery < 20% — warn and run minimum-movement fallback if (batPct < 20.0) { master.rumble("---"); // triple buzz alert to drive team master.print(0, 0, "LOW BAT: %.0f%%", batPct); // Run the simplest possible autonomous (AWP touch only) autonSafeMinimum(); return; } // Normal battery — run selected autonomous chassis.pid_targets_reset(); chassis.drive_imu_reset(); selector.call_auton(); }

Log Battery for Skills Analysis

For skills runs, log the battery percentage at the start and end of every run. Over multiple runs you can see how much charge each 60-second run consumes and whether there is a relationship between battery level and route consistency:

src/autons.cpp — skills battery logging
void skillsRun() { double startPct = pros::battery::get_capacity(); master.print(0, 0, "START: %.0f%%", startPct); // ... full skills route here ... double endPct = pros::battery::get_capacity(); master.print(0, 0, "END: %.0f%%", endPct); master.print(1, 0, "USED: %.0f%%", startPct - endPct); // Typical: a 60-second skills run uses 3–8% battery }
💡
A 60-second skills run typically consumes 3–8% battery depending on your robot’s motor usage. This means a full battery can support 12–30 skills attempts before recharging — far more than the 3 attempts per event. Battery management is rarely the limiting factor for skills, but logging the data confirms this for your specific robot.
// Section 06
Storage, Longevity & Competition Checklist
LiFePO4 batteries last significantly longer than older chemistries when stored correctly. Most premature battery deaths are caused by storing a discharged battery for an extended period.

Storage Guidelines

Extending Battery Lifespan

The V5 battery is rated for ~2,000 full charge cycles. At 2–3 charges per competition day and 10–15 competitions per season, a battery lasts several competitive seasons with proper care. Things that shorten lifespan:

When to Replace a Battery

🚫
Never use a battery with physical damage. A cracked casing, swollen battery pack, or damaged connector is a safety hazard. LiFePO4 is significantly safer than standard Li-ion, but a physically damaged pack should be removed from service and disposed of according to your local lithium battery recycling guidelines.

Competition Day Battery Checklist

Progress: 0 / 0
⚙ STEM Highlight Chemistry & Electrical Engineering: LiFePO4 Electrochemistry
The V5 battery uses Lithium Iron Phosphate (LiFePO₄) chemistry. The flat discharge curve — which makes voltage a poor charge indicator — is caused by a two-phase equilibrium during discharge: the cathode material transitions between FePO₄ and LiFePO₄ phases at nearly constant voltage. The Brain’s coulomb counter (measuring charge „Q = ∫I dt”) is actually doing basic calculus — integrating current over time. Motor performance consistency comes from the motor running internally below the battery’s minimum voltage, using a buck converter.
🎤 Interview line: “The V5 battery’s flat discharge curve is a result of a two-phase electrochemical equilibrium in the LiFePO₄ cathode. Because voltage barely changes, the Brain uses a coulomb counter — integrating current over time, which is calculus — to estimate remaining capacity.”
🔬 Check for Understanding
Why does the V5 Brain use a coulomb counter instead of measuring voltage to estimate battery percentage?
Voltage measurement is too inaccurate for battery chemistry
LiFePO₄ has a nearly flat discharge curve, so voltage barely changes even as capacity depletes — making voltage a poor indicator
The V5 Brain doesn’t have a voltmeter circuit
VEX chose this to prevent teams from knowing real battery level
Related Hardware Guides
🔍 Robot Pre-Check →⚡ Wiring & ESD →⚡ Quick-Swap Motors →
Related Guides
🔍 Robot Pre-Check → 🏁 Match Day Guide → ⚡ Wiring & ESD →
← ALL GUIDES