Comment suivre les données de test de cyclage batterie avec TofuPilot
Les tests de cyclage batterie génèrent des milliers de points de données par cellule : courbes de tension, profils de courant, relevés de température, mesures de capacité sur des centaines de cycles. TofuPilot stocke tout dans un format structuré et interrogeable pour que vous puissiez suivre la perte de capacité, comparer les cellules et détecter les problèmes de qualité avant qu'ils n'atteignent le pack.
À quoi ressemblent les données de cyclage batterie
Un seul test de cyclage de cellule produit :
| Point de données | Par cycle | Sur 500 cycles |
|---|---|---|
| Tension vs temps | ~1 000 échantillons | 500 000 échantillons |
| Courant vs temps | ~1 000 échantillons | 500 000 échantillons |
| Température | ~100 échantillons | 50 000 échantillons |
| Capacité de charge (Ah) | 1 valeur | 500 valeurs |
| Capacité de décharge (Ah) | 1 valeur | 500 valeurs |
| Rendement coulombique | 1 valeur | 500 valeurs |
Multipliez cela par des centaines ou des milliers de cellules en production, et vous faites face à un problème de gestion de données que les tableurs ne peuvent pas résoudre.
Enregistrement des données de cyclage dans TofuPilot
Téléchargement par cycle
Téléchargez les résultats après chaque cycle de charge/décharge. Cela vous donne une visibilité en temps réel sur les performances de la cellule.
from tofupilot import TofuPilotClient
client = TofuPilotClient()
def log_cycle(cell_serial, cycle_number, charge_ah, discharge_ah, temp_max, voltage_curve):
coulombic_eff = discharge_ah / charge_ah * 100 if charge_ah > 0 else 0
capacity_retention = discharge_ah / nominal_capacity * 100
client.create_run(
procedure_id=f"CELL-CYCLING-C{cycle_number}",
unit_under_test={"serial_number": cell_serial},
run_passed=capacity_retention > 80 and temp_max < 45,
steps=[{
"name": f"Cycle {cycle_number}",
"step_type": "measurement",
"status": capacity_retention > 80,
"measurements": [
{"name": "charge_capacity_ah", "value": charge_ah, "unit": "Ah", "limit_low": 2.8},
{"name": "discharge_capacity_ah", "value": discharge_ah, "unit": "Ah", "limit_low": 2.8},
{"name": "coulombic_efficiency_pct", "value": coulombic_eff, "unit": "%", "limit_low": 99.0},
{"name": "capacity_retention_pct", "value": capacity_retention, "unit": "%", "limit_low": 80.0},
{"name": "max_temperature_c", "value": temp_max, "unit": "°C", "limit_high": 45.0},
{"name": "voltage_curve_v", "value": voltage_curve, "unit": "V"},
],
}],
)Téléchargement du résumé de fin de vie
Après la fin du cyclage, téléchargez un résumé avec les métriques clés de vieillissement.
client.create_run(
procedure_id="CELL-CYCLING-SUMMARY",
unit_under_test={"serial_number": cell_serial},
run_passed=final_capacity_retention > 80,
steps=[{
"name": "Résumé de cyclage",
"step_type": "measurement",
"status": final_capacity_retention > 80,
"measurements": [
{"name": "total_cycles", "value": 500, "unit": "cycles"},
{"name": "initial_capacity_ah", "value": 3.2, "unit": "Ah"},
{"name": "final_capacity_ah", "value": 2.72, "unit": "Ah"},
{"name": "capacity_retention_pct", "value": 85.0, "unit": "%", "limit_low": 80.0},
{"name": "avg_coulombic_efficiency", "value": 99.7, "unit": "%", "limit_low": 99.0},
{"name": "max_temperature_observed", "value": 42.3, "unit": "°C", "limit_high": 45.0},
],
}],
)Suivi de la perte de capacité à travers la production
La vraie valeur des données de cyclage centralisées est la comparaison des cellules entre lots de production. Le suivi de tendance des mesures de TofuPilot montre :
- Distribution de rétention de capacité : Toutes les cellules vieillissent-elles au même rythme ?
- Variation lot par lot : La nouvelle formulation d'électrolyte change-t-elle la courbe de dégradation ?
- Détection d'anomalies : Quelles cellules se dégradent plus vite que prévu ?
Si les cellules du lot 47 montrent 90 % de rétention à 300 cycles alors que le lot 46 montrait 94 %, quelque chose a changé dans le processus de fabrication. Les données dans TofuPilot vous le disent immédiatement.
Classification des cellules à partir des données de cyclage
Toutes les cellules ne sont pas égales. Les données de cyclage aident à classer les cellules en catégories pour différentes applications.
| Grade | Critères | Application |
|---|---|---|
| A | Capacité > 3,1 Ah, rétention > 95 % à 200 cycles | Packs VE |
| B | Capacité > 2,9 Ah, rétention > 90 % à 200 cycles | Stockage d'énergie |
| C | En dessous du Grade B | Applications de seconde vie |
Les filtres de mesure de TofuPilot vous permettent d'interroger les cellules par n'importe quelle combinaison de métriques de cyclage pour attribuer automatiquement les grades.
Intégration avec les cycleurs de batterie
La plupart des cycleurs de batterie (Arbin, Maccor, Neware, BioLogic) exportent les données en CSV ou en formats propriétaires. Analysez la sortie du cycleur et téléchargez vers TofuPilot.
import csv
from tofupilot import TofuPilotClient
client = TofuPilotClient()
def import_arbin_data(csv_path, cell_serial):
with open(csv_path) as f:
reader = csv.DictReader(f)
for row in reader:
if row["Step_Type"] == "Discharge":
client.create_run(
procedure_id="CELL-CYCLING",
unit_under_test={"serial_number": cell_serial},
run_passed=float(row["Discharge_Capacity(Ah)"]) > 2.8,
steps=[{
"name": f"Cycle {row['Cycle_Index']}",
"step_type": "measurement",
"status": True,
"measurements": [
{"name": "discharge_capacity_ah", "value": float(row["Discharge_Capacity(Ah)"]), "unit": "Ah"},
{"name": "charge_capacity_ah", "value": float(row["Charge_Capacity(Ah)"]), "unit": "Ah"},
{"name": "max_voltage_v", "value": float(row["Voltage(V)"]), "unit": "V"},
],
}],
)Surveillance de la sécurité
Les tests de batterie ont des exigences de sécurité uniques. TofuPilot aide à suivre les mesures critiques pour la sécurité :
- Température maximale : Cellules approchant des seuils d'emballement thermique
- Anomalies de tension : Cellules qui n'atteignent pas la tension de charge complète ou chutent trop vite
- Sauts de capacité : Changements soudains de capacité indiquant des courts-circuits internes
- Croissance de l'impédance : Résistance interne croissante indiquant une dégradation
Définissez des limites strictes sur ces mesures de sécurité. Une cellule qui passe les spécifications de capacité mais présente un comportement de température anormal nécessite une investigation avant d'être intégrée dans un pack.