Drogheda/03-Architecture-Hardware/2026-09-09_Drogheda_Backup-LowPower-DutyCycle_Design-Brief_v1.0.md

198 lines
10 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, firmware, power, battery, thermal]
project: Project Drogheda
author: Helgen CTO
date: 2026-09-09
status: Draft — design proposal
---
# Backup mode: duty-cycled low power, and what it does to the charging problem
!!! warning "Designators from before 22-Oct (T43)"
This document keeps the designators the board had on its date. Since 22-Oct (T43) the V5.6, V5.7 and v6 carry new ones, and several old names now belong to another part: on the V5.6/V5.7 the LTC4040 is U14 (was U6); on the v6, U6 is the modem and the LTC4040 is U17. To read it against today's board, use the [old → new table](https://drogheda.helgen.online/hardware/designadores-t43-22oct/#8-tablas-viejo-nuevo) (in Spanish); parts already gone by 22-Oct are not in it.
> **Bottom line:** yes, do the duty-cycle. But **the wake interval barely matters — the
> sleep floor is everything.** 10 min vs 60 min changes runtime by 2 %. Dropping the
> sleeping draw from 150 mW to 20 mW changes it by **5.5×**. And the payoff is bigger than
> runtime: at ~1.5 Wh/day the pack needs **~10 minutes of charging a day**, which the
> narrow cool window we already have can supply. **The duty-cycle largely dissolves the
> temperature problem** — that is the real reason to do it.
---
## 1. "Can't we just move the charge temperature?"
The **threshold** is ours (`RNTB`). The **limit** is the cell's. Charging an NMC/LCO 18650
at 55 °C is not a tuning choice — it is accelerated SEI growth, gas generation and a safety
liability inside a sealed IP67 box in full sun. Not something to ship on 30 units.
What you *can* legitimately buy, without changing the cell:
- **Lower the float.** Damage rate is temperature × voltage × time. You are already at
4.00 V rather than 4.20 V, which is most of the win. `JP3`/`JP4` → F1=0/F0=0 gives
**3.95 V** and a little more margin. That justifies nudging the hot pause to maybe
**48–50 °C** *if the cell's datasheet supports it*. A few degrees, not fifteen.
- Anything beyond that needs a cell rated for it — see the high-temp LFP note.
**But read §3 before deciding any of this.**
---
## 2. Duty-cycled backup — the numbers
Pack ~43 Wh, 85 % usable = **36.5 Wh**. Boost efficiency 88 %.
**Today, continuous:** ~2.5 W at the 5 V rail → **~13 h**; with the fan running, ~8 h.
**Duty-cycled**, wake = 10 s at 1.5 W (modem held in PSM, no re-attach):
| sleep floor | 10 min | 30 min | 60 min |
|---|---:|---:|---:|
| 150 mW | 7.7 d | 8.5 d | 8.7 d |
| 100 mW | 10.7 d | 12.4 d | 12.9 d |
| 50 mW | 17.9 d | **23.0 d** | 24.7 d |
| 20 mW | 29.8 d | **47.3 d** | 55.5 d |
| 10 mW | 38.3 d | 73.1 d | 94.6 d |
If the carrier will not give us PSM and every wake is a full LTE re-attach (~35 s):
| sleep floor | 10 min | 30 min | 60 min |
|---|---:|---:|---:|
| 150 mW | 5.6 d | 7.5 d | 8.1 d |
| 50 mW | 9.7 d | 16.9 d | 20.8 d |
| 20 mW | 12.5 d | 27.3 d | **38.8 d** |
**Read the rows, not the columns.** Your 10-minute instinct costs 20–50 % against 30 min
and buys the operator nothing they need. Go **30 min**, and spend the effort on the floor.
---
## 3. 🔴 The part that matters most — it also fixes the charging
| Duty cycle | Daily energy | Charging needed at 2.42 A |
|---|---:|---:|
| 30 min wake, 50 mW sleep | 1.59 Wh/day | **~10 min/day** |
| 30 min wake, 20 mW sleep | 0.77 Wh/day | **~5 min/day** |
| 10 min wake, 100 mW sleep | 3.41 Wh/day | ~22 min/day |
Today the pack must replace ~30 Wh after a long outage and we give it a charge window that
closes at 42 °C. At **1.6 Wh/day** you need *ten minutes* of cool weather. Port nights drop
well below 40 °C — the existing window is already enough.
So the ordering changes: **do the firmware work first.** It is free, it ships to the
installed fleet over the existing update path, and it may retire the cell question entirely.
Keep the high-temp LFP option open — but stop treating it as the first move.
It also means the 43 Wh pack is oversized. At 1.6 Wh/day a **single 12 Wh cell gives 6+
days** — cheaper, cooler, smaller, easier to keep topped up.
---
## 4. What actually sets the sleep floor
Ranked by what I expect to find on the bench. **All of these need measuring, not assuming.**
| Suspect | Est. | Fix |
|---|---:|---|
| **`U17` AMS1117-3.3** — quiescent 5 mA typ / 11 mA max, and it burns 1.7 V × I as heat | **25–55 mW** | Swap for a low-Iq LDO. `U21` (AP2112K, 55 µA) is already in the BOM; a TPS7A02-class part is ~1 µA. **This is probably the single biggest item and it is a one-part change** |
| **`K1` coil** — ~30 mA from SYS5V while the MCU is inserted | **150 mW** | See §5 |
| **LTC4040 boost** at very light load — light-load efficiency and its own Iq | 10–40 mW? | Measure. If bad, this caps everything and needs a rethink |
| Battery gauge LEDs `PB12–15`, `D17`, `D18`, `DB1–4`, `D4G1` | 50–150 mW | All off in backup, or one 50 ms blink per wake |
| `U12` MP1584 → `/3V3_ETH` + `W5500` (~130 mA) | 400+ mW | Ethernet is useless on battery — disable `U12`, hold `W5500` in reset |
| `MAX3232` charge pump, `SP3485`, `SC16IS752` | 5–15 mW | Shutdown pins / disable |
| `U18` `V_BCKP` | **0.15 mW** | ✅ already right — see §6 |
| MCU in STOP + LSE RTC | 0.1–0.2 mW | Achievable; today it is ~165 mW because `loop()` never stops |
⚠ **Today's `SLEEP` state is not a low-power state.** It cuts `PWR_CTRL` and then keeps
spinning `loop()` at 84 MHz with Serial, I²C polling and the gauge alive. Real STOP-mode
+ RTC wake is the substantive firmware change here. `Y4` (32.768 kHz) is on the board, so
LSE-driven RTC wake is available.
---
## 5. `K1` — reverse the earlier call
The Firmware v3.1 brief said: *"bobina ~30 mA de SYS5V … se queda insertado; 30 mA contra
12 Ah es ruido."* That was correct for a 13-hour continuous budget. **It is wrong for a
duty-cycled one** — 150 mW against a 20–50 mW target is 3–7× the entire rest of the floor,
and it alone would cap you at 8 days no matter what else you fix.
**New rule: `BYP_CTRL` low between wakes, high only during the TX window.** 150 mW × 10 s
per 30 min = 0.8 mW average — it disappears. The fail-safe semantics are unchanged
(de-energised = F9P→modem direct), and between wakes there is nothing to inject anyway.
Longer term, a **latching relay** (G6K-class, pulse to switch, zero hold) removes the
question permanently. Worth pricing for the v6 BOM.
---
## 6. Don't chase position — you already have the right parts
The machine is **parked**. Its position does not change during an outage, so re-acquiring
a fix every wake is pure waste.
- `V_BCKP` is already wired (`/3V3` via 1 kΩ + Schottky, 45 µA) and keeps ephemeris, so
when you *do* want a fix it is a hot start (~2–5 s), not a 30 s cold start. Good design,
already done.
- Report the **stored** position with a `pwr=BATT` flag and a staleness marker. Take a real
fix only every **N-th** wake (e.g. every 2 h) as an anti-theft check.
- **`U26` (SC7A20 accelerometer) is on the v6 board.** Wire its interrupt to a wake-capable
pin and you get motion-triggered wake for free: asleep while the machine is still, awake
within a second if someone moves it. That is strictly better than polling GNSS.
⚠ `U26` does not appear in any of the v6 briefs — confirm what it was placed for and that
its INT line reaches an EXTI/wake pin before counting on this.
---
## 7. Modem: PSM before power-cycling
Power-cycling the modem every 10 minutes means paying a full network attach every 10 minutes
— 20–30 s at 100–300 mA with 2 A bursts. **3GPP PSM keeps the module registered while it
sleeps at tens of µA**, with no re-attach cost; eDRX is the lighter variant.
- The A7670SA (Cat-1bis) supports PSM. **Whether you get it is a Telcel question**, not a
module question — it depends on the APN/plan and the network granting the requested TAU.
**Verify this early; the whole table in §2 hinges on which column you land in.**
- Fall back to `MODEM_PWR_EN` power-cycling only if PSM is refused — and then stretch the
interval to 30–60 min so the attach cost amortises.
⚠ **Inrush risk.** You already tripped the LTC4040 `PFI` at 4.60 V on LTE inrush with no
pack connected. Duty-cycling means taking that 2 A / 7.6 W burst **repeatedly, at low SoC,
on a hot or aged pack**. Hold the ≥ 470 µF modem bulk, and bench the worst case: coldest
SoC × hottest pack × attach burst. This is the most likely way the design fails in the field.
---
## 8. Proposed state machine
```
RUNNING ──(5V_SENSE PA4 falls, debounced)──► BACKUP_ENTRY
BACKUP_ENTRY: hot-start fix (or use last) → $PHLG{pwr=BATT, evt=POWER_LOSS} → TX now
(operators care most in the first minute — do not make them wait 30)
→ BACKUP_SLEEP: PWR_CTRL low · MODEM→PSM · BYP_CTRL low · U12/W5500 off
transceivers shutdown · LEDs off · fan off · MCU STOP + RTC(T)
→ wake on RTC(T) or accelerometer INT or PA4 rising:
read vbat/tbat → if vbat < BAT_CRITICAL: TX final "shutting down" → deep off
else: BYP_CTRL high → modem wake → TX heartbeat → back to BACKUP_SLEEP
→ PA4 rising: full wake, resume RUNNING
```
**Adaptive cadence** (cheap, and better product behaviour): 15 min for the first hour,
30 min to 24 h, 60 min after. Include the **drain rate** in `$PHLG` so ops can see how long
the unit has left rather than guessing.
**Fan: off in backup, full stop.** A 5 V fan is 0.75–1.25 W — it would consume the entire
budget in hours. If the box is too hot to sit idle without a fan, that is a thermal problem,
not a power-management one.
---
## 9. Do these three first
1. **Measure the sleeping current** on a v5.5 board with `PWR_CTRL` low, MCU in STOP, and
the loads in §4 disabled one at a time. That single number decides everything in §2.
2. **Ask Telcel about PSM/eDRX** on the current APN and plan. It sets which table applies.
3. **Pull the `tbat`/`tntc` fleet histogram** — with §3's 10 min/day figure in hand, the
question is no longer "is it ever cool enough" but "is it cool enough for ten minutes",
which is a much easier bar and may already be met.