Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QCy5VHMVLkAmftYM6swWmx
10 KiB
| tags | project | author | date | status | |||||
|---|---|---|---|---|---|---|---|---|---|
|
Project Drogheda | Helgen CTO | 2026-09-09 | 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 (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_BCKPis already wired (/3V3via 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=BATTflag 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. ⚠U26does 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_ENpower-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
- Measure the sleeping current on a v5.5 board with
PWR_CTRLlow, MCU in STOP, and the loads in §4 disabled one at a time. That single number decides everything in §2. - Ask Telcel about PSM/eDRX on the current APN and plan. It sets which table applies.
- Pull the
tbat/tntcfleet 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.