Drogheda/03-Architecture-Hardware/2026-09-09_Drogheda_Battery-Chemistry-HighTemp_v1.0.md

144 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
tags: [project-drogheda, hardware, battery, thermal, power]
project: Project Drogheda
author: Helgen CTO
date: 2026-09-09
status: Draft — decision input
---
# Backup cell at 45 °C: why Li-ion is failing, and what replaces it
> **Bottom line:** LiPo is not an upgrade — a LiPo pouch *is* Li-ion, in a worse package.
> And before changing any cell: **`RNTB` = 10 k makes the LTC4040 stop charging at
> +40…+42 °C.** At a 45 °C port the pack essentially never charges. That is a resistor,
> not a chemistry. The chemistry that then lets you *raise* that limit is
> **high-temperature LiFePO4**, which the LTC4040 already supports — `JP2` re-strap, no respin.
---
## 1. LiPo is the wrong direction
A "LiPo" pouch is lithium-ion (LCO or NMC) in a soft laminate bag. Same 0–45 °C charge
window, same calendar aging, and **worse** in a hot sealed box: no vent, no CID, and it
swells. The 2000 mAh cells are bench hardware. Keep them on the bench.
---
## 2. 🔴 The charger is refusing to charge — and it is our resistor
`RNTB` (10 k 1 %) biases the pack NTC (`RT1`, 10 k, on the cell via `P4.3`). The LTC4040
pauses charging when the NTC falls to **53.6 % of `RBIAS`** and resumes below **325 %**.
With `RBIAS` = 10 k that puts the charge window at:
| NTC β | Charge window today |
|---|---|
| B3380 | **−3.1 °C … +42.4 °C** |
| B3950 | **+0.6 °C … +39.7 °C** |
Port operating temperature is ~45 °C. **The pack sits above the hot-pause threshold
for most of the working day**, so it never reaches full charge and the backup is not
there when the power drops. The MCU's own `CHRG_EN` hot-cut sits on top of this.
This is very likely most of the "poor performance" — and it is **not** the cell's fault.
Note the earlier fleet finding blamed no-charge on the LTC4040 safety-timer latch; a
pack that is repeatedly hot-paused mid-charge is exactly how you *reach* that latch.
### Re-scaling `RNTB`
You cannot simply raise this on the current cell — an NMC/LCO 18650 **must not** be
charged at 55 °C. Raise it *together with* the chemistry change:
| Target hot pause | β | New `RNTB` | Resulting window |
|---|---|---|---|
| +55 °C | B3380 | **6.62 k** | +6.1 … +55 °C |
| +55 °C | B3950 | 5.56 k | +12.3 … +55 °C |
| **+60 °C** | **B3380** | **5.67 k → 5.6 k E24** | **+9.7 … +60 °C** |
| +60 °C | B3950 | 4.64 k | +16.0 … +60 °C |
`RBIAS` sets both ends, so raising the hot limit raises the cold one. **Specify the
B3380 NTC** (the delta doc already calls B3380 "ideal", B3950 "acceptable") — with B3950
you would refuse to charge below +16 °C, which is a real winter night in Ensenada.
⚠ Computed from the datasheet's 53.6 % / 325 % ratios and a β model with R25 = 10 k.
Check against the actual NTC part's R/T table before cutting the BOM.
---
## 3. The cell: high-temperature LiFePO4 26650
| | Today — NMC/LCO 18650 | **High-temp LFP 26650** |
|---|---|---|
| Charge temp | 0…45 °C | **−20…60 °C** (Topwell 3600 mAh) · **0…75 °C** (JGNE 4000 mAh) |
| Discharge temp | −20…60 °C | −50…80 °C · −30…75 °C |
| Nominal | 3.6 V | 3.2 V |
| Cell energy | ~11 Wh (3 Ah) | 11.5 Wh (3.6 Ah) · **12.8 Wh (4 Ah)** |
| Cycle life | 300–500 | **≥ 2000** to 80 % |
| Thermal runaway onset | ~150–200 °C | ~270 °C (olivine) — does not propagate |
| Calendar aging at 45 °C | fast | far slower |
**4P of the 3.6 Ah cell = 46 Wh; 4P of the 4 Ah = 51 Wh** — both at or above today's
~43 Wh. Even 3P clears 38 Wh.
### The board already supports it — one jumper
LTC4040 `F2` selects chemistry: **high = Li-Ion, low = LiFePO4**. Float table:
| F1 | F0 | F2 = 1 (Li-Ion) | F2 = 0 (LiFePO4) |
|---|---|---|---|
| 0 | 0 | 3.95 V | 3.45 V |
| **0** | **1** | **4.00 V ← we are here** | **3.50 V ← we land here** |
| 1 | 0 | 4.05 V | 3.55 V |
| 1 | 1 | 4.10 V | 3.60 V |
Current straps are F2=1 / F1=0 / F0=1. **Flip `JP2` (F2) only** → 3.50 V LFP float.
The 2026-07-06 pre-fab audit already recorded this path as preserved. No schematic
change, no respin. 3.50 V on LFP is ~90 % SoC — deliberately shy of 3.65 V, which is
exactly what you want for calendar life at temperature. `JP3` to F1=1 gives 3.60 V if
you later want the last few percent.
### What else must change
1. **`RNTB` → 5.6 k** (§2) — without this the swap changes nothing; the charger still
pauses at 42 °C.
2. **Firmware `BAT_CRITICAL` / `BAT_RECOVERY`.** LFP's discharge curve is flat at ~3.2 V
from 90 % to 15 % SoC. Voltage-based SoC stops working. Re-derive the thresholds
against the knee (~2.9 V), and expect the gauge to be near-useless mid-band —
coulomb-count or accept a three-state indicator. The firmware review already flagged
these thresholds as bench-tune items for the 4.00 V pack; this makes it mandatory.
3. **MCU `CHRG_EN` hot-cut threshold** — raise in step with `RNTB`, or it becomes the
new binding limit.
4. **LTC4040 boost current.** 3.2 V nominal instead of 3.6 V ⇒ ~12 % more pack current
for the same backup watts. Re-check against the boost limit and the `RS1` errata fix.
5. **Mechanical.** 26650 is 26.5 mm vs 18.5 mm and ~85 g/cell. New ASA battery-case
print, and re-check the 4P footprint inside the HBOX.
6. **Sourcing.** The high-temp grades are Chinese-supplier parts (JGNE, Topwell class),
not a shelf item in MX. Check MOQ, lead time and whether they will give a real R/T
and cycle-at-temperature spec before this goes on the 30-unit BOM.
---
## 4. Alternatives, briefly
| Option | Verdict |
|---|---|
| **High-temp LFP 26650** | ✅ **Recommended.** Solves charge-at-temperature, board already supports it, cost/Wh comparable |
| **Supercap / LIC hold-up** | −40…+65/85 °C, no charge-temperature window at all, effectively infinite cycles — but ~1/20 the energy. **The right answer if the real requirement is "report a power-loss alarm and shut down cleanly" rather than "run for hours".** Pin the requirement before dismissing it again |
| **Smaller pack, better cell** | Nobody has pulled this lever. 43 Wh is a lot for a parked machine. Halve the requirement and the thermal problem halves with it |
| **LTO** | Best temperature range and cycle life, but 2.4 V nominal breaks the LTC4040's 1S window entirely — new charger. Low energy density, expensive, hard to source. **Out** |
| **High-temp-rated NMC 18650** | Keeps the form factor, but you are still fighting the same chemistry for a few °C. Marginal |
| **NiMH** | High self-discharge at temperature, and trickle-charging hot is its own failure mode. **Out** |
---
## 5. Do this first — you already have the data
Do **not** buy cells on an assumption. `tbat` (TMP102 on the pack) and `tntc` are already
in `$PHLG` and already landing in `htracker`. Pull the fleet histogram and answer:
1. What is the **actual** pack temperature distribution, by unit and by hour?
2. What **fraction of the day** does it sit above the current ~40–42 °C hot pause?
3. Does `cflt` / charge-fault correlate with those windows?
Question 2 is the number that decides whether this is a resistor change, a chemistry
change, or both. It is one query against data we are already collecting.