LiXX Cell Pack Matcher
A web-based tool for finding the optimal cell configuration in lithium battery packs. It matches cells based on capacity and internal resistance to maximize pack performance and longevity.
Features
- Pack Configuration: Support for any SxP configuration (e.g., 6S2P, 4S3P, 12S4P)
- Cell Matching: Optimize by capacity (mAh) and internal resistance (mΩ)
- Multiple Algorithms:
- Exhaustive Search (optimal for small configurations)
- Surplus Cell Support: Use more cells than needed; the algorithm selects the best subset
- Live Progress: Watch the optimization in real-time
- Visual Pack Layout: Color-coded visualization of the matched pack
- Export Options: JSON, CSV, and clipboard support
- Keyboard Accessible: Full keyboard navigation support
- No Dependencies: Pure HTML/CSS/JavaScript, no build step required
Scientific Background
This tool implements cell matching algorithms based on research findings about lithium-ion battery pack assembly:
Internal resistance matching for parallel-connected lithium-ion cells and impacts on battery pack cycle life
Shi et al., Journal of Power Sources (2013) DOI: 10.1016/j.jpowsour.2013.11.064
Key findings:
- A 20% difference in internal resistance between parallel-connected cells can reduce cycle life by approximately 40%
- Resistance mismatch causes uneven current distribution
- Uneven current leads to higher operating temperatures and accelerated capacity fade
Usage
Quick Start
- Open
index.htmlin a web browser - Set your pack configuration (e.g., 6S2P)
- Enter cell data (label, capacity, and optionally internal resistance)
- Click "Load Example" to see sample data
- Adjust weights for capacity vs. IR matching
- Click "Start Matching"
- Review results and export if needed
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Alt + A |
Add new cell |
Alt + S |
Start matching |
Alt + E |
Load example data |
Esc |
Stop matching / Close dialog |
? |
Show keyboard shortcuts |
Cell Data Format
Each cell requires:
- Label: Unique identifier (e.g., "B01", "Cell-A")
- Capacity: Measured capacity in mAh
- Internal Resistance (optional): Measured IR in mΩ
Algorithm Selection
| Algorithm | Best For | Speed |
|---|---|---|
| Genetic Algorithm | Most cases, large pools | Fast |
| Simulated Annealing | Avoiding local optima | Medium |
| Exhaustive | Small configs (<8 cells) | Slow |
Matching Weights
- Capacity Weight: Importance of matching parallel group capacities
- IR Weight: Importance of matching internal resistance within parallel groups
For current high-rate applications (e.g., power tools, EVs), increase IR weight. For capacity-focused applications, increase capacity weight.
Project Structure
lixx_cell_pack_matcher/
├── index.html # Main application
├── css/
│ └── styles.css # Application styles
├── js/
│ ├── app.js # Main application logic
│ └── matching-algorithms.js # Matching algorithms
├── data/
│ └── favicon.svg # Application icon
├── README.md # This file
└── LICENSE # MIT License
Technical Details
Scoring Algorithm
The match quality score is calculated as:
score = (capacityWeight × capacityCV) + (irWeight × avgWithinGroupIRCV)
Where:
capacityCV: Coefficient of variation of parallel group capacitiesavgWithinGroupIRCV: Average coefficient of variation of IR within each parallel group- Lower score = better match
Coefficient of Variation
CV = (σ / μ) × 100%
Where σ is the standard deviation and μ is the mean.
License
MIT License - see LICENSE for details.