Test Types & Methods

Tri et classification des cellules

Découvrez comment trier et classifier les cellules de batterie à partir des données de test avec TofuPilot pour l'appariement en capacité, le tri par.

JJulien Buteau
intermediate10 min de lecture14 mars 2026

Tri et classification des cellules avec TofuPilot

Un pack batterie est aussi bon que sa cellule la plus faible. Le tri des cellules classe les cellules de production par performance mesurée pour que vous puissiez assembler des packs à partir de cellules appariées. TofuPilot stocke les données de test de chaque cellule et vous permet de les interroger, filtrer et classer en fonction des mesures réelles.

Pourquoi le tri des cellules est important

Les cellules d'une même ligne de production présentent une variation naturelle. La capacité varie de 2 à 5 %. L'impédance varie de 10 à 20 %. Si vous assemblez un pack à partir de cellules non appariées :

  • La cellule la plus faible limite la capacité du pack
  • Les cellules vieillissent à des rythmes différents, causant un déséquilibre
  • Le BMS doit travailler plus pour maintenir les cellules équilibrées
  • La durée de vie du pack est plus courte que nécessaire

Trier les cellules avant l'assemblage garantit que les packs fonctionnent de manière cohérente et durent plus longtemps.

Critères de tri

ParamètreComment il est mesuréPourquoi c'est important
Capacité (Ah)Cycle complet charge/déchargeDétermine l'énergie du pack
Impédance interne (mohm)Impédance AC à 1 kHzAffecte la délivrance de puissance et la chaleur
Tension en circuit ouvert (V)Tension au repos après formationIndique la cohérence de l'état de charge
Taux d'autodécharge (mV/jour)Chute de tension sur 7-14 jours de reposDétecte les micro-courts-circuits internes
Poids (g)Mesure par peséeDétecte les cellules sous-remplies ou sur-remplies

Configuration du tri des cellules dans TofuPilot

Étape 1 : Définir la procédure de test de tri

cell_grading_test.py
from tofupilot import TofuPilotClient

client = TofuPilotClient()

def grade_cell(serial, capacity_ah, impedance_mohm, ocv_v, self_discharge_mv_day, weight_g):
    # Déterminer le grade
    if capacity_ah >= 3.1 and impedance_mohm <= 30 and self_discharge_mv_day <= 0.5:
        grade = "A"
        passed = True
    elif capacity_ah >= 2.9 and impedance_mohm <= 40 and self_discharge_mv_day <= 1.0:
        grade = "B"
        passed = True
    elif capacity_ah >= 2.7 and impedance_mohm <= 50:
        grade = "C"
        passed = True
    else:
        grade = "REJECT"
        passed = False

    client.create_run(
        procedure_id="CELL-GRADING",
        unit_under_test={
            "serial_number": serial,
            "part_number": "CELL-21700-NMC",
        },
        run_passed=passed,
        steps=[{
            "name": "Test de capacité",
            "step_type": "measurement",
            "status": capacity_ah >= 2.7,
            "measurements": [
                {"name": "capacity_ah", "value": capacity_ah, "unit": "Ah", "limit_low": 2.7},
            ],
        }, {
            "name": "Test d'impédance",
            "step_type": "measurement",
            "status": impedance_mohm <= 50,
            "measurements": [
                {"name": "impedance_mohm", "value": impedance_mohm, "unit": "mohm", "limit_high": 50},
            ],
        }, {
            "name": "Autodécharge",
            "step_type": "measurement",
            "status": self_discharge_mv_day <= 1.0,
            "measurements": [
                {"name": "self_discharge_mv_day", "value": self_discharge_mv_day, "unit": "mV/day", "limit_high": 1.0},
                {"name": "ocv_v", "value": ocv_v, "unit": "V", "limit_low": 3.5, "limit_high": 4.2},
            ],
        }, {
            "name": "Physique",
            "step_type": "measurement",
            "status": 68.0 <= weight_g <= 72.0,
            "measurements": [
                {"name": "weight_g", "value": weight_g, "unit": "g", "limit_low": 68.0, "limit_high": 72.0},
                {"name": "grade", "value": grade, "unit": ""},
            ],
        }],
    )
    return grade

Étape 2 : Analyser la distribution des grades

Après le tri d'un lot de production, le tableau de bord TofuPilot affiche la distribution :

GradeQuantitéPourcentagePlage de capacitéPlage d'impédance
A85085 %3,10-3,25 Ah22-30 mohm
B12012 %2,90-3,09 Ah31-40 mohm
C202 %2,70-2,89 Ah41-50 mohm
REJET101 %< 2,70 Ah> 50 mohm

Suivez cette distribution dans le temps. Si le rendement de Grade A passe de 85 % à 75 %, le processus de fabrication dérive.

Étape 3 : Assemblage de packs avec cellules appariées

Interrogez TofuPilot pour les cellules Grade A avec une capacité dans une fenêtre étroite pour l'assemblage des packs.

pack_matching.py
from tofupilot import TofuPilotClient

client = TofuPilotClient()

# Récupérer toutes les cellules Grade A du dernier lot
runs = client.get_runs(
    procedure_id="CELL-GRADING",
    run_passed=True,
    limit=1000,
)

# Filtrer les cellules Grade A dans une fenêtre de capacité de 50 mAh
grade_a_cells = []
for run in runs:
    for step in run.get("steps", []):
        for m in step.get("measurements", []):
            if m["name"] == "capacity_ah" and m["value"] >= 3.1:
                grade_a_cells.append({
                    "serial": run["unit_under_test"]["serial_number"],
                    "capacity": m["value"],
                })

# Trier par capacité et regrouper en ensembles appariés
grade_a_cells.sort(key=lambda c: c["capacity"])

# Créer des packs de 12 cellules avec un écart de capacité < 50 mAh
pack_size = 12
for i in range(0, len(grade_a_cells) - pack_size + 1, pack_size):
    pack = grade_a_cells[i:i + pack_size]
    spread = pack[-1]["capacity"] - pack[0]["capacity"]
    if spread <= 0.05:
        print(f"Pack: {[c['serial'] for c in pack]}, écart: {spread*1000:.0f} mAh")

Filtrage par autodécharge

L'autodécharge est le filtre de sécurité le plus important. Les cellules avec un taux d'autodécharge élevé peuvent présenter des micro-courts-circuits internes pouvant conduire à des événements thermiques.

Le test nécessite une longue période de repos (7-14 jours), ce qui en fait le goulot d'étranglement de la production de cellules. Suivez les données d'autodécharge dans TofuPilot pour :

  • Définir des seuils de réussite/échec basés sur les données, à partir des distributions de production
  • Identifier les cellules nécessitant un filtrage prolongé
  • Corréler l'autodécharge avec d'autres paramètres (données de formation, impédance)

Traçabilité de la cellule au pack

Quand un pack tombe en panne sur le terrain, remontez jusqu'aux cellules individuelles :

  1. Recherchez le numéro de série du pack dans TofuPilot
  2. Trouvez quelles cellules ont été assemblées dans ce pack
  3. Consultez les données de tri de chaque cellule
  4. Vérifiez si une cellule était marginale au moment du tri

Cette traçabilité est exigée par la plupart des constructeurs automobiles et devient le standard dans l'industrie des batteries.

Plus de guides

Mettez ce guide en pratique