docs: design note for a 48 V (13s) BMU variant
Context: the fleet includes 13s Li-ion scooter packs (46.8 V nominal, 54.6 V full charge) worth paralleling; the INA237 measurement chain already accepts up to 85 V of common mode, so the voltage ceiling comes from the switching sub-board and the Manual ON buck. Approach: component-level review of what survives 54.6 V as-is and what must change, grounded in the actual schematics and firmware (hard-coded threshold bounds located in the BLE service and the display steppers). Changes: - Add docs/superpowers/specs/2026-07-05-bmu-48v-13s-variant-design.md: drop-in 48 V MOSFET sub-board (80-100 V P-FETs, mandatory VGS zener clamp, 300 V command BJT), motherboard v2.1 (100 V buck + input caps + DRC class), firmware variant (Kconfig defaults, BLE and UI validation bounds, SOC/SOH recalibration), system risks (scaled circulating currents, precharge, pack-internal BMS behaviour) and a bench validation plan Impact: documented path to parallel 13s packs while staying in SELV (54.6 V < 60 V DC), with the pack-internal BMS behaviour identified as the main open risk.
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
# Design note — Variante BMU 48 V (packs Li-ion 13s)
|
||||
|
||||
> Statut : étude préliminaire (draft)
|
||||
> Date : 2026-07-05
|
||||
> Portée : adapter la BMU v2 à des packs 13s type trottinette (46,8 V nominal)
|
||||
> Référence pack : Ninebot NFKF4825B — 13INR22/71-5, 46,8 V, 24,5 Ah / 1147 Wh,
|
||||
> BMS interne HD4825-BMS-A05 (noyé silicone, ports B+/C+/P+ distincts)
|
||||
|
||||
## 1. Objectif
|
||||
|
||||
Réutiliser l'architecture BMU (mesure INA237 par voie + coupure MOSFET
|
||||
bidirectionnelle + bus I2C isolé en RJ45) pour mettre en parallèle des packs
|
||||
**13s Li-ion INR** récupérés de trottinettes, en plus des packs 7s actuels.
|
||||
|
||||
Fenêtre électrique cible :
|
||||
|
||||
| Grandeur | 7s (actuel) | 13s (cible) |
|
||||
|---|---|---|
|
||||
| Tension nominale | 25,9 V | 46,8 V |
|
||||
| Coupure basse (3,0 V/cellule) | 21,0 V | 39,0 V |
|
||||
| Pleine charge (4,2 V/cellule) | 29,4 V | **54,6 V** |
|
||||
|
||||
54,6 V < 60 V DC : le système reste en très basse tension de sécurité
|
||||
(ES1 / IEC 62368-1) — pas de changement de classe de sécurité.
|
||||
|
||||
## 2. Ce qui tient déjà (sans modification)
|
||||
|
||||
| Bloc | Verdict | Détail |
|
||||
|---|---|---|
|
||||
| Chaîne de mesure INA237 | ✅ | Mode commun jusqu'à +85 V ; VBUS 3,125 mV/LSB (>100 V lisibles) ; alertes BOVL/BUVL 16 bits OK à 54,6 V |
|
||||
| Shunt HOVB4026 2 mΩ 5 W | ✅ | Pleine échelle ±82 A ; 1,8 W à 30 A (36 % du budget) |
|
||||
| Isolation ISO1540 + alim transfo | ✅ | Isolation renforcée >> 55 V ; chaque carte flotte au potentiel de son pack |
|
||||
| TCA9535, LEDs, adressage, RJ45 | ✅ | Domaine logique 3,3 V isolé, indépendant de la tension pack |
|
||||
| Unités firmware | ✅ | mV en u16/i32 partout : 54 600 mV tient dans un u16 (config BLE 4×u16) |
|
||||
| Sous-carte enfichable | ✅ | C'est le point de design qui rend la variante possible : on remplace la sous-carte, pas la carte mère |
|
||||
| Connectique | ✅ | Anderson SB50 (600 V), cosses M5, embases 10 contacts — OK |
|
||||
|
||||
## 3. Hardware à modifier
|
||||
|
||||
### 3.1 Sous-carte MOSFET « 48 V » (respin drop-in, 38 × 85,5 mm)
|
||||
|
||||
| Élément | v2 actuel | Problème à 54,6 V | Remplacement proposé |
|
||||
|---|---|---|---|
|
||||
| Q2–Q5, Q7–Q10 | IRF4905, P-ch **55 V**, 74 A | Marge nulle (transitoires) | P-MOSFET **80–100 V** TO-263, R_DS(on) ≤ 15 mΩ — ex. Vishay SUM110P08-11L (80 V, 11 mΩ), *à valider en sourcing* ; sinon variante N-ch high-side + driver charge-pump |
|
||||
| V_GS | non clampé (déjà −24/−30 V > ±20 V abs max) | −54,6 V : destructif immédiat | **Zener 12 V grille-source** par groupe + R série grille (≈100 Ω) + pull-up 10 k conservé — corrige aussi le point de vigilance v2 |
|
||||
| Q1, Q11 (commande) | BC337/BC847, **45 V** | V_CE ≈ V_bus à l'état OFF | NPN haute tension **MMBTA42** (300 V, SOT-23) |
|
||||
|
||||
La commande 3 points (+3,3 V / CMD / GND) et le brochage des embases restent
|
||||
identiques : la sous-carte 48 V est interchangeable avec la 30 V.
|
||||
⚠ Marquer les sous-cartes (sérigraphie couleur) pour éviter tout panachage.
|
||||
|
||||
### 3.2 Carte mère (v2.1 mineure)
|
||||
|
||||
| Élément | v2 actuel | Problème | Remplacement |
|
||||
|---|---|---|---|
|
||||
| Buck Manual ON | MCP16331, **Vin max 50 V** | 54,6 V hors spec | **LM5164** (100 V, synchrone) ou module isolé 9–75 V ; feedback à recalculer (sortie ~5 V inchangée) |
|
||||
| C12/C13 entrée buck | 10 µF **50 V** | sous-dimensionnés | 10 µF **100 V** |
|
||||
| DRC | classe 30 V | isolement 54,6 V | repasser le DRC avec clearance puissance ≥ 0,5 mm (IPC-2221) — les zones v2 semblent déjà larges, à confirmer |
|
||||
| Fusible par branche | dimensionné 7s/18 Ah | pack 24,5 Ah | recalculer (I_max voie + I_circ toléré) |
|
||||
|
||||
Le reste de la carte mère (INA, TCA, jumpers, RJ45, LEDs, bornes) est inchangé.
|
||||
|
||||
## 4. Firmware à modifier (variante Kconfig « 13S »)
|
||||
|
||||
Trois points durs identifiés dans le code + deux calibrations :
|
||||
|
||||
1. `bmu_config/Kconfig` — defaults : `BMU_MIN_VOLTAGE_MV` 24000 → 41000,
|
||||
`BMU_MAX_VOLTAGE_MV` 30000 → 54600 (proposition à affiner).
|
||||
2. `bmu_ble/bmu_ble_control_svc.cpp:233-234` — bornes de validation codées en
|
||||
dur (20–30 V / 25–35 V) → à dériver du Kconfig (plage 13s : 36–48 V /
|
||||
45–56 V) plutôt que de nouvelles constantes magiques.
|
||||
3. `bmu_display/bmu_ui_config.cpp:188-189` — mêmes bornes dans les steppers
|
||||
de l'écran → même traitement.
|
||||
4. **Seuil de déséquilibre** : 1 V @7s ≈ 1,9 V @13s à iso-déséquilibre par
|
||||
cellule (×13/7). Garder le paramètre en absolu mais adapter le défaut de
|
||||
la variante (~2000 mV).
|
||||
5. **SOC/VRM et SOH** : mapping SOC linéaire 24,0–28,8 V → profil 13s
|
||||
(39,0–54,6 V) ; le modèle SOH FPNN est entraîné sur les packs 7s terrain
|
||||
→ recalibration nécessaire pour la chimie INR 13s (advisory only, les
|
||||
protections restent autoritaires).
|
||||
|
||||
## 5. Points système à instruire au banc
|
||||
|
||||
- **Courants de circulation** : ΔV pack plus grand à iso-déséquilibre
|
||||
cellule ; ordre de grandeur 13s : ΔV 3 V / ΣR ≈ 150 mΩ → ≈ 20 A.
|
||||
Le seuil « max 1 A de déséquilibre » de l'intake est à retraduire pour 48 V.
|
||||
- **Précharge / inrush** : bus 48 V avec charges capacitives (onduleurs) —
|
||||
prévoir un séquencement de fermeture des voies (la machine d'états le
|
||||
permet : fermer une voie, temporiser, fermer les suivantes) ou une
|
||||
résistance de précharge sur la première voie.
|
||||
- **BMS internes des packs** : les packs trottinette ont des FETs de sortie
|
||||
et une logique d'activation propres (ports C+/P+ séparés, wake possible).
|
||||
À caractériser : acceptation du backfeed sur P+, comportement en parallèle,
|
||||
besoin d'un signal d'enable. **Risque principal du scénario.**
|
||||
- **Thermique** : FET 80 V à R_DS(on) plus élevée que l'IRF4905 → vérifier
|
||||
la dissipation à I_max voie (4 FETs en parallèle par direction aident).
|
||||
|
||||
## 6. Plan de validation proposé (banc)
|
||||
|
||||
1. Deux packs 13s, ΔV imposé par alim/charge — mesurer I_circ vs modèle,
|
||||
valider les seuils et la coupure.
|
||||
2. Commutation sous charge : V_GS réel à l'oscillo (clamp), thermique
|
||||
FET/shunt à I_max.
|
||||
3. Backfeed/enable des BMS Ninebot : parallélisme de 2 packs réels,
|
||||
observation des coupures internes.
|
||||
4. Endurance : duty-cycling balancer + reconnexions sur 24 h.
|
||||
|
||||
## 7. Effort estimé
|
||||
|
||||
| Lot | Contenu | Ampleur |
|
||||
|---|---|---|
|
||||
| Sous-carte 48 V | respin 2 couches, même contour/connectique | petit (schéma 1 feuille, ~20 composants) |
|
||||
| Carte mère v2.1 | buck 100 V + condos + DRC | petit |
|
||||
| Firmware | variante Kconfig + 3 fichiers + profils SOC | petit |
|
||||
| Banc | protocole §6, dont caractérisation BMS packs | **le vrai travail** |
|
||||
Reference in New Issue
Block a user