144 lines
7.0 KiB
Markdown
144 lines
7.0 KiB
Markdown
---
|
||
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.
|