Battery runtime planner
Pick a pack and a mission for the robot. The script steps through the mission one second at a time: the load pulls power, the pack voltage sags under that current, and the charge drops. The run ends when the loaded voltage hits the BMS cutoff, which can happen long before the pack is empty.
Pack
Conditions
Mission
Dark: pack voltage under load. Gray dashed: the voltage it would read at rest. Red dashed: the BMS cutoff. Blue: the end of the mission.
Power the robot draws. Short bursts make the voltage dips above.
Try this
- With the defaults, the patrol mission completes at 25 °C. Switch to −10 °C: the pack stops early with charge still inside, because the 320 W bursts sag below the cutoff.
- Stay at −10 °C and raise P from 3 to 4. More cells in parallel means less resistance and less sag.
- Still at −10 °C, switch to LiFePO4 with 8 cells in series. Its flat voltage curve stays above the cutoff longer, so less charge is left behind when it stops.
- Drop the state of health to 70%. An old pack has less capacity and more resistance: you lose runtime twice.
Notebook
Work with the same script in cells, like Jupyter, right here in the browser. Edit any cell and run it. Nothing is saved: Reset brings a cell back, and Download .ipynb keeps your edited version for VS Code or Jupyter.
The Python script: battery_runtime.py
This is the script the page runs. Run it yourself with python3 battery_runtime.py.