60 KiB
A (Power tree) + F-5x (temperature sensors / fan) — v6 audit findings
Snapshot: sch ecee9fed… / pcb 6ddec80d… (evidence pack 2026-09-28)
Auditor: POWER (block §4-A plus the temperature-sensor and fan parts of §4-F). All values come from the evidence pack (nets.json, ref_pins.json, components.csv, pcb_pads.csv, pcb_tracks.csv, vias.csv, zone fills parsed from src/hbox-watchdog-v6.kicad_pcb) and from datasheets fetched this session. Scratch scripts and results are in /home/claude/v6audit/work/A_power/ (q.py net/ref dump, segs.py segment lists, path.py widest-path bottleneck and resistance per current path, pdist.py pad edge-to-edge distances, islands.py/island_of.py GND-pour island map, under.py copper under parts).
Conventions: "edge" = pad-copper to pad-copper distance (shapely, true pad shapes); "ctr" = pad centre distance. Track resistance assumes 1 oz (35 µm) copper, ρ = 1.72e-8 Ω·m. Trace temperature rise uses IPC-2221 (k = 0.048 external, 0.024 internal). IPC-2221 is known to be pessimistic for inner layers next to planes, and IPC-2152 gives roughly half the internal rise. Both are quoted where it matters. The GND-island analysis uses the zone fills stored in the file. Refill before fab and re-run islands.py.
Sources read
findings/_COMMON_BRIEF.md,INDEX.md,evidence/MANIFEST.md, master brief §3–§5, §4-A, §4-F (temperature/fan).docs/2026-09-28_Drogheda_EinarBoard-v6_Review-vs-V5.5-Lessons_v1.0.md(§1 F1/F4/F5/F6/F7/F8, §2, §3, §4 checklist).docs/2026-09-27_Drogheda_EinarBoard-V5.6_ECO_ES_v1.0.md(§0 R1–R5, §A, §C, §D, §E, §F, §H, §I).docs/2026-09-28_Drogheda_EinarBoard-V5.6_Schematic-Change-Report_v1.0.md(§1, §2, §6).docs/2026-09-28_H0008_charging-overnight-log.md.docs/project/claude__2026-09-27_HBOX-V5.5-V4_Modem-on-battery_Diagnosis-and-0.5.8-Field-Strategy.md.- Memory copies in
docs/memory/:drogheda-battery-hightemp,drogheda-einarboard-modem-rail,drogheda-backup-lowpower,drogheda-power-cost,drogheda-fan-policy,drogheda-einarboard-v5-audit,drogheda-einarboard-harness,drogheda-einarboard-short-incident,drogheda-einarboard-v6-brief,preferences. - Evidence:
components.csv,nets.json,ref_pins.json,ic_pins_U6/U25/U20/U2/U12/U17/U21.csv,mcu_pins.csv,pcb_footprints.csv,pcb_pads.csv,pcb_tracks.csv,vias.csv,zones.csv,net_routing_summary.csv,drc_summary.md,clearance_24v.md,diff_v56_v6.md,sch_pcb_sync.md,bom.csv,firmware_constants.csv; firmwaresrc/fw/hbox_v5_bringup.ino,board_v5.h. - Datasheets (fetched this session):
- LTC4040 Rev B (ADI
4040fb.pdf): pin functions p.10–11; EC p.3–5 (ICHG 950/1000/1050 mA at RPROG 2k, VCLN 23.5/25/26.5 mV, VBSTFB 0.78/0.80/0.82 V, PFI 1.17/1.19/1.21 V falling with 30 mV hysteresis, RSTFB 0.74 V, NTC hot 34.9 %VIN / cold 76.5 %VIN, safety timer 4.25 h Li-ion, ILIMBST 5.5/6.5/7.5 A, IBATQ 40 µA, IINQ 570 µA); "2.5 A from a battery as low as 3.2 V" p.15; "external load prioritized … charge current drops to zero" p.13/16; RPROG = 2000 V/ICHG p.18; CSYS "at least 100 µF low-ESR ceramic" p.10, "≥75 µF transient" p.21; θJA 43 °C/W; overtemperature protection only (no charge-current thermal regulation), p.5 Note 2; layout p.22–23; abs max VIN 6 V steady / 7 V transient, VSYS/BAT/SW 6 V p.2; OVSNS "6.2 k to the connector if OVP used, else short to VIN" p.11. - TPS54360B (TI
tps54360b.pdf): Vref 0.792/0.800/0.808 V; fSW = 92417·RT^-0.991 (162 k → 600 kHz); tON,min 135 ns; peak switch limit 4.5/5.5/6.8 A; EN 1.2 V, Ip 1.2 µA, Ih 3.4 µA, VIN UVLO 4.1–4.3 V; gmps 12 A/V, gmea 350 µS; compensation equations; 5 V/3.5 A example design (53.6k/10.2k, 13k/6.8 nF/39 pF, 8.2 µH, 2×47 µF ceramic, B560C, 2×2.2 µF/100 V); soft start 1024 cycles; θJA 42 °C/W; abs max VIN 65 V. - AP64350 (Diodes DS41976 Rev 5-2): abs max VIN 42 V DC / 45 V 400 ms, EN 42 V; VIN 3.8–40 V; UVLO rising 3.5–3.7 V, hysteresis 400 mV; EN high 1.18–1.25 V / low 1.03–1.09 V, EN pull-up 5.5 µA; FB 792–808 mV; RT = 100000/fSW (200 k → 500 kHz); HS limit 4.25/5/5.75 A; tON,min 100 ns; Table 1 (5 V: 14.0 k/3.3 nF/47 pF, 5.5 µH, 2×22 µF); R5 = 4.67e3·fc·VOUT·COUT; θJA 45 °C/W.
- MP1584 (MPS Rev 1.0): abs max VIN 30 V, all other pins (EN, FB, COMP, FREQ) 6 V; VIN 4.5–28 V; EN rising 1.5 V/hysteresis 0.3 V; UVLO 3.0/2.6 V; FB 0.776/0.8/0.824 V; switch limit 4.0–4.7 A.
- AMS1117 (AMS
ds1117.pdf): dropout 1.1 V typ/1.3 V max at 0.8 A; ground current 5/11 mA; output cap 22 µF tantalum; VOUT 3.251–3.399 V. - A7670X series Hardware Design V1.03 (SIMCom, Table 8 p.26–27): VBAT 3.4/3.8/4.2 V; 2 A peak (GSM max-power TX); supply ≥ 2 A for < 300 mV drop; ≥ 300 µF bulk (≥ 600 µF if the supply cannot give 2 A); VBAT trace ≥ 3 mm; off leakage 20 µA; PWRKEY ≥ 50 ms, STATUS ~7 s; A7670SA includes GSM 850/900/1800/1900.
- JLC DB (
get_jlcpcb_part/search_jlcpcb_parts): C524806, C2071691, C15051, C6186, C51118, C15578, C840531, C5440143, C2827940, C165527, C88734, C88744, C116241, C881921, C206910, C206912, C206914, C20627123, C699039, C224019, C152082, C50603, C85100, C8678, C2624, C35349, C105362, C687163, C17700165, C17700167, C17700171, C153036, C440198, C86817, C15849, C138687, C28695, C22843, C22840, C25957, C23082, C23080, C99269.
- LTC4040 Rev B (ADI
Findings
A-01 24 V front end: the /24V branch is unfused and outside the D32 clamp, and it feeds parts rated 30 V / 42 V
- Severity: Blocker
- Block / refs: §4-A (input protection; lead "F2 only protects the U25 branch"); lesson F8; memory
drogheda-einarboard-v6-brief(T9 "9–36 V in"),drogheda-einarboard-short-incident,drogheda-power-cost(MP1584 finding). - Evidence:
- Topology (netlist):
P1.1 /24V_INsplits into two branches.- Branch 1:
F2 (0154002.DR, 2 A fast) → /VIN_FUSED → Q23 IRFR5305 → /VIN_PROT(D32 SMCJ33A, C149/C150/C151) → U25. - Branch 2:
Q10 IRFR5305 → /24V= {C10 47 µF/50 V, C11, C22, Ren1, U2.7 (MP1584EN VIN), D20 → /VIN_MODEM → U20.2 (AP64350 VIN)}. It has no fuse, and its only clamp is D10 SMBJ33A on/24V_IN(600 W, VC 53.3 V @ 11.3 A, C224019). D32 (1.5 kW) sits on branch 1 only.
- Branch 1:
- Ratings on branch 2:
- U2 MP1584EN: VIN operating 4.5–28 V, abs max 30 V. EN = /24V·20k/120k = 6.0 V at 36 V vs EN abs max 6 V.
- U20 AP64350: abs max 42 V (45 V for 400 ms).
- D21 PMEG3050EP (VRRM 30 V, leakage 8 mA @ 30 V per JLC) is reverse-biased by VIN_MODEM − MAIN5V = 36 − 0.45 − 4.79 ≈ 30.8 V at the 36 V spec limit and ≈ 48 V during a D10 clamp event.
- Standards: 24 V truck systems see 28–28.8 V charging, ISO 16750-2 overvoltage 36 V/60 min, and ISO 7637-2 pulse 2a (+112 V, 2 Ω, 50 µs). Pulse 2a through D10 gives ≈ (112 − 45)/2 ≈ 33 A, above its 11.3 A 10/1000 µs rating, with a clamp ≥ 53 V. U2 dies at the 36 V overvoltage test and U20 is over its 42 V abs max during pulse clamping.
- Layout: the
/24Vbranch is 1.5 mm on In1 at 0.15 mm from the In1 GND pour and has a via 0.15 mm from the B.Cu/3V3pour (clearance_24v.md). An inner-layer breakdown there is an unfused vehicle-battery short, or 24 V straight onto 3V3. - F2 sizing today: U25 input at 2.5 A/5 V is 0.60 A @ 24 V, 1.25 A @ 12 V and 1.67 A @ 9 V. The Littelfuse 154 continuous-current derating (~75 %, lower when hot) puts a 2 A fuse at its limit on a 12 V machine.
- Topology (netlist):
- Consequence: (1) A short of C10/C22, U2, U20 or D22 (a U20 high-side short puts 24 V on VBAT_MODEM and SMAJ5.0A D22 crowbars it) draws vehicle-fuse current through 0.3–1.5 mm board copper. That is a fire and harness risk. (2) U2, and in pulses U20 and D21, are over their absolute maximum ratings on the v6 target supply (9–36 V, 24 V trucks). (3) This design also carries the V5.5 U2 exposure forward.
- Fix: Make U25 the only consumer of vehicle voltage. Everything else then runs from protected 5 V.
- Fan from VEH5V, delete the 24 V fan buck. DNP U2, L2, Dbk1, Cbst1, Rcomp1, Ccomp1, Rfreq1, Ren1, Ren2, R20, R21, and close JP1 (
/5V_FAN=/VEH5V, upstream of RS1, so fan current is outside the LTC4040 limit). JP1 today is an open solder jumper: change the footprint toJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm, or fit a 0 Ω 0805. Fan current (assumed 0.2–0.3 A) adds to U25: ≤ 2.68 + 0.3 = 2.98 A vs 3.5 A rating and 4.5 A minimum current limit. Fan stays dark on battery, as today (ECO D4). This also retires the MP1584 cost item ($2.21 @100, C15051) and EMC items E3/E4 for U2. - Modem buck input from MAIN5V only ("Option A"). Delete D20 and its 48 mm
/VIN_MODEMrun, and replace D21 with a copper bridge or 0 Ω link. U20 then never sees vehicle voltage. On battery its input rises from ~4.4 V to ~4.74 V (no 0.30 V diode drop; see A-05). On vehicle power the modem load (≤ 1.8 A peak at 5 V) becomes LTC4040 system load. The LTC4040 prioritises system load over charge current (datasheet p.13), and U25 is stiff: estimated 0.16 V dip for a 1.8 A step, against PFI rising max 4.66 V and U25 min 5.18 V with A-04. Needs the modem auditor's agreement. Option B, if the 24 V modem feed must stay: fuse and clamp as below and replace U20 with a ≥ 60 V synchronous buck, because the 42 V AP64350 cannot live behind a 53 V clamp. - Q10 branch. With (1) and (2) done,
/24Vhas no loads. DNP Q10, DzG1, Rrp1, C10, C11, C22, and keep Q23 as the single reverse-polarity FET. - F2. Keep it on the (now only) branch. Rate it 3 A (0154003.DR, C206912, 2217 in stock) for 24 V-only fleets, or 4 A (0154004.DR, C206914, 778 in stock) if 12 V machines are in scope. Same holder footprint. Optional layout: put F2 ahead of D10 so a shorted TVS opens the board fuse.
- Effort check: every item is a schematic change (DNP/value) plus one short re-route (D21 bridge). No new parts.
- Fan from VEH5V, delete the 24 V fan buck. DNP U2, L2, Dbk1, Cbst1, Rcomp1, Ccomp1, Rfreq1, Ren1, Ren2, R20, R21, and close JP1 (
- Effort: both (mostly schematic/BOM; D21 → bridge and removal of the D20 run are layout)
- Confidence: high on topology and ratings (netlist plus datasheets). Medium on the Option A system impact until the modem auditor reviews it and a bench test runs U25 with a 2 A modem step.
A-02 LTC4040 (U6) thermal copper and placement repeat lesson F5 (the H0008 slow-charge mechanism)
- Severity: Blocker
- Block / refs: §4-A (LTC4040 thermal); lesson F5; ECO §D2 / §E1–E2; memory
drogheda-einarboard-v5-audit(SW_BAT 0.3 mm critical); H0008 log. - Evidence (measured):
| Item | v6 now | Target | Result |
|---|---|---|---|
/SW_BAT U6.21/22 → L6.1 |
F.Cu 0.50 mm × 11.9 mm plus 0.25/0.30 mm necks at the pins; R ≈ 12.2 mΩ | ≥ 2 mm polygon | ❌ (V5.5 was 0.3 mm; improved but 4× short) |
/BAT_PLUS P3.1 → L6.2 (battery current) |
F.Cu 1.0 mm × 21.3 mm, 10.4 mΩ | ≥ 1.5 mm + via farm | ❌ |
/BAT_PLUS L6.2 → U6.23 (BAT pin, sense-class) |
1.0/0.5/0.25 mm, 18.8 mm | Kelvin from L6.2/CBAT | ⚠ acceptable electrically |
| U6 VSYS pins 1/24 → CSYS | 0.30 mm necks (1.5 mm) + 0.5 mm × 6.7 mm; C32/C33/C34 3.9–5.3 mm edge | pour, CSYS ≤ 2 mm | ❌ |
| CSYS GND return | C32.2 on F.Cu island 16 (the U6 EP island); C33.2 on island 3; C34.2 on its own 2.2 mm² island with 1 via | same island as EP, via array | ❌ |
| U6 EP (pad 25, 2.65 × 3.65 mm, solid zone connect) | 0 vias in EP; nearest GND via 5.21 mm (188.6, 102.7) | ≥ 9 vias to In1/In2 | ❌ |
| EP copper | F.Cu GND island 16 = 252 mm² with 5 GND vias. Within 6 mm of U6: F.Cu GND 33.7 mm², In1 GND split between islands 0/1 (cut by 7 /VFB_BST + /IGATE + /CHRG_* In1 segments), In2 GND 99 mm², B.Cu = /3V3 pour |
solid planes under U6 | ❌ |
| L6 distance | L6.1 ↔ U6.21/22 8.65–9.10 mm edge (10.7–11.1 ctr; footprints 15.25 mm) | ≤ 5 mm | ❌ |
| VIN caps C30 10 µF / C31 2.2 µF → U6.6 | 7.2 / 6.2 mm edge | < 3 mm | ❌ |
| CBAT C35 22 µF | at P3 (192.0, 112.7): 5.2 mm from U6.23 but 21.9 mm from L6.2 | at L6.2/BAT pin | ⚠ |
| Temperature sensor ≤ 10 mm of U6 | none; nearest is U3 SHT40 at 71.4 mm | ≤ 10 mm | ❌ (F-51) |
- Trace temperature rise (IPC-2221 external,
/SW_BAT0.5 mm): charging at 2.42 A (R50 825 Ω) +32 °C; at 1.40 A (A-03) +9 °C; sustained backup at 3.6 A battery current (2.3 A at VSYS) +79 °C. The same current at 2.0 mm gives +8 °C. - IC dissipation estimate (assumption: charger efficiency ≈ 90 % at 2.4 A, IC share ≈ 75 %):
- At 2.42 A: ≈ 0.75 W. As-built θJA ≈ 60–70 °C/W (the datasheet's 43 °C/W assumes a via array), so ΔTj ≈ 45–53 °C, before the 45 °C port ambient and enclosure rise.
- At 1.4 A: ≈ 0.25–0.3 W, so ΔTj ≈ 18–21 °C.
- The LTC4040 has overtemperature shutdown only, with no charge-current thermal regulation (datasheet p.5 Note 2). The H0008 pulsing (60–70 mV at 30 s) and the ~1.3 A average versus 2.42 A programmed are what on/off thermal cycling would produce. This is not yet proven: the clamp-meter and IR checks in the H0008 "Pendientes" 1–2 are still open.
- Consequence: R5 (≥ 1.3 A without thermal cycling) is not met by layout. In continuous backup the boost node and the VSYS necks run hot. This repeats the V5.5 lesson.
- Fix (layout instructions, for Michelle):
- Re-cluster: L6 pad 1 ≤ 5 mm from U6.21/22. C32/C33/C34 ≤ 2 mm from VSYS pins 1/24, with GND pads on the EP island. C30/C31 ≤ 3 mm from pin 6. C35 (or an extra 22 µF 0805, C86817) at L6.2 next to BAT pin 23.
/SW_BAT: F.Cu polygon ≥ 2 mm wide covering pins 21–22 to L6.1, kept compact (it is the switch node)./BAT_PLUSP3 → L6.2: ≥ 1.5 mm F.Cu (or a pour), plus ≥ 4 vias to an In2 copper area if routed inner./MAIN5V: pour from pins 1/24 over C32–C34 to the Q7 drain pads, ≥ 2 mm, with no 0.3/0.5 mm necks.- EP: 12 vias (3 × 4 at 0.9 mm pitch, 0.3 mm drill / 0.6 mm pad), plugged or capped (JLC via-in-pad). Or use the
QFN-24-1EP_4x5mm_P0.5mm_EP2.65x3.65mm_ThermalViasfootprint and add vias to reach ≥ 9. - Keep In1 and In2 GND solid for ≥ 5 mm around U6/L6: move the
/VFB_BSTand/IGATEIn1 runs (see A-14). - Put the TMP102 from F-51 between U6 and L6.
- Effort: layout
- Confidence: high (measured from the board file). The OT-cycling causality stays medium until the H0008 clamp/IR test.
A-03 R50 = 825 Ω programs 2.42 A. Set 1.43 kΩ to meet R5 at worst case
- Severity: Blocker
- Block / refs: §4-A (R50); lesson F4; ECO §C; R5; H0008 log; memory
drogheda-battery-hightemp. - Evidence:
- Datasheet: ICHG = 2000 V/RPROG (p.18), accuracy ±5 % (950–1050 mA at 2 k, p.3).
- R50 825 Ω/1 % (C50214): 2.42 A nominal (2.28–2.57 A).
- V5.6 value 1.5 kΩ: 1.333 A nominal, 1.254–1.414 A worst case, so the low corner is below the R5 floor of 1.3 A.
- 1.43 kΩ: 1.399 A nominal, 1.316–1.483 A worst case, which is ≥ 1.3 A at every corner.
- H0008 (V5.5, same R50): ≈ 1.3 A average delivered, 8.5 h to C/8, pulsing charge (A-02). At 1.4 A the IC loss drops by (2.42/1.4)² ≈ 3×, and delivered current is about what H0008 actually got, without the cycling mechanism. Charge time for the ~11.6 Ah pack from ~3.5 V is ≈ 6–7 h (CC plus CV taper). The Li-ion safety timer (4.25 h, 3.7–5 h) only runs in CV (p.14), so it does not cut CC.
- Input side: 1.4 A × 4.0 V/(0.9 × 5.3 V) ≈ 1.17 A plus ≈ 0.35 A logic gives 1.52 A, against the RS1 limit of 2.14–2.41 A effective (A-07). The charger stops being input-limited.
- Consequence: At 825 Ω, v6 repeats the H0008 behaviour. U25 also sits at the RS1 limit (≈ 2.5 A continuous) whenever charging, which drives the A-06/A-07 thermal problems.
- Fix: R50 → 1.43 kΩ 1 % 0603, LCSC C22840 (Extended; 4965 in stock in the DB snapshot). If Leo prefers V5.6 BOM commonality, use 1.5 kΩ (C22843, Basic), but R5 is then met only nominally.
- Effort: schematic-only
- Confidence: high for the numbers. Medium that thermal cycling is the whole H0008 story (pending the clamp test).
A-04 U25 set-point 5.00 V (4.87–5.14 V) is incompatible with the charge governor. Set R121 = 57.6 k
- Severity: Major
- Block / refs: §4-A (U25 set-point); lesson F7; ECO §A/§C ("≥ 5.30 V");
firmware_constants.csv(CHG_RAIL_ON 5.05, CHG_RAIL_OFF 4.90, V5_PFI 4.60). - Evidence (Vout = Vref·(1 + R121/R122), Vref 0.792/0.800/0.808 V, resistors 1 %):
| R121 / R122 | min | nom | max | vs CHG_RAIL_ON 5.05 | vs LTC4040 VIN max 5.5 |
|---|---|---|---|---|---|
| 53.6 k / 10.2 k (as-is) | 4.871 | 5.004 | 5.140 | nominal below the start line: charger never (or randomly) enabled | ok |
| 56.2 k / 10.2 k | 5.069 | 5.208 | 5.350 | low corner 0.02 V above | ok |
| 57.6 k / 10.2 k | 5.176 | 5.318 | 5.463 | ≥ 0.13 V above | 37 mV margin |
| 57.6 k / 10.2 k, 0.1 % resistors | 5.256 | 5.318 | 5.380 | ok | 120 mV margin |
- LTC4040 PFI from v6's R51 270 k / R52 100 k at 1.19 V: falling 4.27/4.40/4.54 V, rising 4.38/4.51/4.66 V. The firmware constant V5_PFI 4.60 V is stale (it comes from the old 287 k).
- As-is margin U25 min → PFI rising max = 0.21 V. With 57.6 k: 0.52 V.
- The ADC measures 5V_SENSE (R7/R8 10 k/10 k) against VDDA = the 3V3 LDO (±1.5 %, and lower on battery, A-08). Firmware thresholds carry ±2–3 % error unless calibrated with VREFINT.
- With the as-is topology the modem does not load VEH5V (it runs from /24V), so the V5.5 LTE-sag argument is gone on vehicle power. It comes back if A-01 Option A is adopted.
- Consequence: With FW 0.6.0 thresholds, v6 as-is will not start charging on most units, so R5 fails. The margins are thin under modem bursts if the modem moves to MAIN5V.
- Fix: R121 → 57.6 k 1 % 0603, LCSC C23082 (Extended; 3673 in stock in the DB snapshot). Optionally specify R121/R122 at 0.1 % to take the upper corner to 5.38 V. In firmware v6 (FW 0.7.x), calibrate the ADC against VREFINT and set V5_PFI = 4.40 V.
- Effort: schematic-only (plus firmware constants)
- Confidence: high
A-05 Backup mode: worst-case load reaches 93–97 % of the LTC4040 boost capability during a 2 A modem burst; W5500 always powered; U20 input weakly bypassed
- Severity: Major
- Block / refs: §4-A (backup path, budget); lessons F1/F2; ECO §A, §I-1; R1, R3; memory
drogheda-einarboard-modem-rail,drogheda-backup-lowpower; modem-on-battery diagnosis. - Evidence:
- What stays alive on battery (netlist):
BAT → L6 → U6 boost → /MAIN5V. Backup VSYS = 0.8·(1 + 499k/100k): 4.60/4.79/4.99 V (VBSTFB 0.78–0.82 V). R53 must stay at 499 k because the 5.0 V limit sits at the top corner.- From MAIN5V: (a) D21 → /VIN_MODEM → U20 → modem (D21 anode is before P5, so the cutoff switch does not cut this path; EN is held low by R113 when the MCU is unpowered). (b) P5 (cutoff) → /SYS5V → D12 → U17 (3V3: MCU and all logic), U12 (3V3_ETH, EN tied to VIN → always on), F1 → Q1 (PWR_CTRL) → U21 → F9P, K1 coil (BYP_CTRL).
/VIN_MODEMfalls to MAIN5V − Vf(D21) once 24 V is gone. There is no separate "D21/MAIN5V" rail.
- LTC4040 boost: 2.5 A load from battery ≥ 3.2 V; switch limit 5.5 A min (p.4, p.15). It runs only when PFI < threshold (p.13). BAT quiescent 40 µA.
- CSYS: C32/C33 47 µF/16 V X7R 1210 plus C34 10 µF/50 V 0805 = 104 µF nominal, which meets the 100 µF text. Effective at 4.8 V ≈ 59 µF (assumed DC-bias loss −40 % / −40 %), below the 75 µF transient guidance (p.21).
- U20 input (A7670 needs a 2 A-capable supply, HD Table 8): C127 10 µF/50 V 0805 + C128 1 µF only. The V5.6 ECO specified 2×22 µF + 10 µF.
- U20 UVLO: falling ≈ 3.1–3.3 V against VIN_MODEM ≥ 4.2 V on battery, so ≈ 1 V margin (V5.5 had 0.1 V). The V5.5 failure mechanism is fixed, and the residual risk is boost current limit.
- Worst-case current budget. Assumptions:
- Logic (3V3): 90 mA typ, 120 mA worst including 4 gauge LEDs, plus AMS1117 Iq 5 mA.
- F9P (3V3_GNSS): 100 mA cold, 85 mA steady, including LNA (u-blox ~68 mA typ).
- W5500: 132 mA at 3.3 V (100BASE-TX), through U12 at η 0.85.
- K1 coil: 30 mA (G5V-1 5 VDC, 167 Ω).
- Modem VBAT: 2.0 A GSM peak (HD Table 8). LTE TX average assumed 0.7 A (HD table is TBD). Idle 20 mA. R112 bleeder 3.8 mA.
- Efficiencies: U20 0.88, U25 0.87, boost 0.88. Battery 3.5 V.
- What stays alive on battery (netlist):
On 24 V (as-is topology, charging with R50 825 Ω / with 1.43 k):
| Rail | Cold start | Steady | Modem TX burst |
|---|---|---|---|
| /3V3 (U17 out) | 0.120 A | 0.090 A | 0.090 A |
| /3V3_GNSS | 0.100 A | 0.085 A | 0.085 A |
| /3V3_ETH | 0.132 A | 0.132 A | 0.132 A |
| /VBAT_MODEM | 2.0 A pk (0.3 A avg) | 0.024 A | 2.0 A pk |
| /VIN_MODEM @ 23.5 V (from /24V) | 0.37 A pk | 0.005 A | 0.37 A pk |
| /24V (+ fan 0.2 A @ 5 V via U2) | 0.42 A | 0.05 A | 0.42 A |
| /SYS5V | 0.35 A | 0.31 A | 0.31 A |
| /VEH5V (U25 out; charger held off 120 s at boot) | 0.36 A | 2.50 A (RS1-limited) / 1.48 A | 2.50 / 1.48 A |
| /VIN_PROT @ 24 V | 0.09 A | 0.60 / 0.38 A | 0.60 / 0.38 A |
| P1 total @ 24 V | 0.50 A | 0.65 / 0.43 A | 1.02 / 0.80 A |
| P1 total @ 9 V (12 V vehicle low) | — | 1.73 / 1.1 A | 2.8 / 2.2 A |
On battery (as-is topology; VSYS 4.79 V; VIN_MODEM ≈ 4.4 V after D21):
| Rail | Cold start (all on, modem registering) | Steady (registered, idle) | GSM TX burst | LTE TX |
|---|---|---|---|---|
| /VIN_MODEM | 1.96 A pk | 0.024 A | 1.96 A pk | 0.69 A |
| /SYS5V (logic + F9P + W5500 via U12 + K1) | 0.36 A | 0.32 A | 0.32 A | 0.32 A |
| /MAIN5V = boost load | 2.33 A (93 % of 2.5 A) | 0.34 A | 2.28 A (91 %) | 1.01 A (40 %) |
| same at the VSYS low corner 4.60 V (VIN_MODEM 4.2 V) | 2.43 A (97 %) | 0.34 A | 2.38 A (95 %) | 1.04 A |
| Battery current (VSYS·I/(3.5 V·0.88)) | 3.62 A | 0.53 A | 3.55 A | 1.57 A |
| with fixes below + FW sequencing (W5500 off, K1 off, F9P deferred, D21 bridged) | 1.95 A (78 %) | 0.15 A | 1.95 A | 0.85 A |
| with fixes + LTE-only on battery (peak ≈ 1 A assumed) | ≈ 1.2 A (48 %) | 0.15 A | — | 0.85 A |
- Consequence: As-is, a cold modem registration (or a GSM burst) with everything else on uses 93–97 % of the boost rating, with no allowance for bursts above 2.0 A or a hot, aged pack. Hitting the limit droops VSYS: U17 drops out first (A-08), then U20 → VBAT_MODEM < 3.4 V. That is the V5.5 "modem dark on battery" symptom through a different mechanism. R1/R3 are not robust on hardware as-is. They are achievable with firmware sequencing (mandatory) plus the fixes below. Without U12 gating, W5500 alone costs ≈ 0.5 W continuous on battery, against a 20–50 mW duty-cycle sleep target.
- Fix:
- U12 EN (pin 2) off
/SYS5Vonto a new net/ETH_PWR_ENfrom PD2 (pad 54, free), with 100 k to GND (C25803). MP1584 EN threshold 1.5 V and abs max 6 V are compatible with 3.3 V drive. Default OFF. (E auditor: W5500 reset/strap implications.) - CSYS: add 2 × 47 µF 16 V X7R 1210 (C5440143) at U6 VSYS pins 1/24 (≈ 113 µF effective).
- U20 input: with A-01 Option A (5 V input), add 2 × 22 µF 16 V 0805 (C86817) ≤ 3 mm from U20.2, GND to U20.7/EP, plus 1 × 220 µF 16 V polymer (C881921) at
/VIN_MODEM. If the 24 V feed stays (Option B), use 50 V parts (e.g. 2 × 10 µF 50 V 1210 C138687). - D21: replace with a bridge (Option A), which removes 0.30 V and lowers U20 input current by ≈ 7 %.
- MAIN5V from U6 to U20: ≥ 1.5–2 mm the whole way (today 0.3/0.5 mm necks and 60 mm; A-07).
- Firmware sequencing (see firmware section): mandatory.
- U12 EN (pin 2) off
- Effort: both
- Confidence: medium. Datasheet limits are firm. Load currents for the modem (LTE average), F9P and fan are assumptions. Raise confidence with the ECO §I-1 bench test: MAIN5V and VIN_MODEM scope during a battery-only cold start at VBAT 3.5 V, plus a current probe on
/BAT_PLUS.
A-06 Switcher hot loops and exposed-pad grounding: loops close through inner planes via distant vias; no EP vias on any regulator
- Severity: Major
- Block / refs: §4-A ("input/output cap distance < 3 mm", compensation/BST); ECO §E4; Review §2 "Switcher EP vias"; datasheets TPS54360B/AP64350 layout sections.
- Evidence:
- Board-wide there are 69 GND vias (8 in the SE power quadrant x > 150, y > 85). The F.Cu GND pour is split into 71 islands (stored fill). The EP-pad zone connection defaults to thermal (0.5 mm spokes) except U6.25 and U2.9, which are solid.
| Reg | Cin → VIN pin (edge) | Cin GND ↔ return (diode anode / GND pin) | EP vias / nearest GND via | Other |
|---|---|---|---|---|
| U25 TPS54360B | C150 2.88 mm ✅, C149 6.37 mm | C149.2/C150.2 on island 16, D34.2 + U25 EP on island 3 (3006 mm², only 3 vias at (145.7, 129.9), (148.1, 135.3), (198.8, 78.1): ≥ 30 mm from U25). The input loop closes through In1/In2 via ≥ 11 mm and ≥ 30 mm detours. | 0 / 14.4 mm; EP thermal-relief | D34 4.28 mm from SW; L22 17.0 mm from SW (/SW_PWRIN 20.4 mm at 1 mm); BST C152 1.49 mm ✅; FB/COMP/RT 1.0–2.9 mm ✅ |
| U20 AP64350 | C128 0.72 mm, C127 2.38 mm ✅ | C127.2/C128.2 → U20.7 6.9/8.5 mm; EP on a different island (3) from pin 7 (island 20) | 0 / 5.15 mm; EP thermal-relief | L20 2.24 mm ✅; BST 1.8 mm ✅; COMP 0.7/2.2 mm ✅; FB 3.2/4.1 mm |
| U2 MP1584 (fan) | C22/C10/C11 17.0–20.8 mm ❌ | C22.2 ↔ Dbk1.2 11.7 mm | 0 / 19.7 mm | Dbk1 6.5 mm, L2 11.9 mm from SW; FB divider R20/R21 0.67/1.48 mm ✅ (ECO E3 fixed) |
| U12 MP1584 (3V3_ETH) | C101 6.40 mm | C101.2 (island 41, 0 vias) ↔ D11.2 (island 40) 14.9 mm; U12.5/U12.9 on island 39 (21 mm², 0 vias) tied by 0.2 mm GND tracks | 0 / 6.4 mm | D11 11.9 mm, L8 15.1 mm from SW; Cout C102/C103 28–36 mm; FB top R87 24 mm |
- D34 (B560C) thermal: average current (1 − D)·Io ≈ 0.78 × 2.5 = 1.95 A → ≈ 1.0 W at 24 V. The GND pad has thermal-relief spokes and the cathode sits on a 1 mm SW trace. Estimated +75–100 °C over local ambient at full load, which approaches Tj max 150 °C in a 45 °C box. It drops to ≈ 0.55 W with A-03.
- U25 IC loss ≈ 0.5–0.75 W (24–36 V) with no EP vias.
- Consequence: For U25, SW-node and VIN-pin ringing and conducted/radiated EMI from a non-sync buck switching 2.5 A at 24–36 V. Ringing adds on top of the 53 V TVS clamp relative to the 65 V SW/VIN abs max. Poor regulator and diode thermals. For U12, a broken hot loop next to the Ethernet magnetics. U2 loses its local input bypass (MP1584 VIN abs max 30 V). U2 disappears if A-01 fix 1 is taken.
- Fix:
- U25: place C149/C150 ≤ 2 mm from pins 2/7 with their GND on the same F.Cu copper as D34.2 and the EP. D34 ≤ 3 mm from pin 8. L22 ≤ 5 mm from pin 8, SW copper ≤ 1.5× pad area. EP: 8 vias (4 × 2, 0.3/0.6 mm) and
zone_connectsolid on pad 9. D34 GND pad solid to ≥ 150 mm² F.Cu GND with ≥ 6 vias. - U20: C127/C128 GND ≤ 2 mm to pin 7/EP. EP 8 vias, solid zone connect.
- U12: Cin C101 ≤ 3 mm with GND next to pin 5. D11 and L8 ≤ 4 mm from pin 1. EP ≥ 6 vias. Replace the 0.2 mm GND ties with pour.
- Stitching: GND vias every ≤ 5 mm around each regulator and on both sides of each hot loop. (Layout auditor F owns board-wide stitching.)
- U25: place C149/C150 ≤ 2 mm from pins 2/7 with their GND on the same F.Cu copper as D34.2 and the EP. D34 ≤ 3 mm from pin 8. L22 ≤ 5 mm from pin 8, SW copper ≤ 1.5× pad area. EP: 8 vias (4 × 2, 0.3/0.6 mm) and
- Effort: layout
- Confidence: high on the geometry. Medium on the island picture because it depends on stored fills: refill, then re-run
islands.py.
A-07 5 V power-path bottlenecks: VEH5V and VIN_SW run the full LTC4040 input current on inner 0.5/0.8 mm tracks
- Severity: Major
- Block / refs: §4-A; DRC
track_width(183 warnings, T15 rules); lead "netclass patterns match no net". (A separate issue: the24V/IGN_IN/Q10_GATEpatterns resolve nothing. Layout auditor owns clearance.) - Evidence (widest path,
path.py):
| Path | Bottleneck | Length / R | Current | IPC-2221 ΔT | Action |
|---|---|---|---|---|---|
/VEH5V L22.2 → RS1.1 |
In1 0.5 mm × 13.6 mm | 24.8 mm / 18.9 mΩ | 2.5 A (charging, as-is) / 1.5 A | +168 °C / +52 °C (internal; IPC-2152 ≈ half) | ❌ widen |
/VIN_SW RS1.2 → Q7.1–3 |
In2 0.8 mm × 23.6 mm | 26.0 mm / 15.9 mΩ | 2.5 A | +77 °C internal | ❌ |
/MAIN5V Q7 → U6.24 / C32 |
F.Cu 0.5 mm × 13.3 / 6.6 mm | 23 / 15 mΩ | 2.2 A (charger in) / 2.4 A (backup) | +26 / +32 °C | ❌ |
/MAIN5V U6.1 → C32 |
0.30 mm neck 1.5 mm | 12 mΩ | 2.4 A | +73 °C (short neck) | ❌ (A-02) |
/MAIN5V Q7 → D21 (modem, battery) |
1.0 mm (In2 6.8 mm) | 40 mm / 20 mΩ | 2.0 A | +12 °C | ⚠ widen to ≥ 1.5 mm |
/VIN_MODEM D21 → U20.2 |
0.5 mm × 5.8 mm | 5.7 mΩ | 2.0 A | short | ⚠ ≥ 1 mm |
/BAT_PLUS P3 → L6 |
1.0 mm × 21.3 mm | 10.4 mΩ | 3.6 A backup peak / 2.42 A | +25 / +10 °C | (A-02) |
/VIN_PROT Q23 → U25.2 |
0.5 mm × 9.8 mm | 13.5 mΩ | 0.6 A @ 24 V, 1.7 A @ 9 V | +14 °C @ 9 V | ok for 24 V |
/24V_IN P1 → Q10 |
In1 1.5 mm | 12.4 mΩ | ≤ 1.0 A (24 V) | small | ok |
/SW_BAT |
see A-02 | ||||
/3V3_ETH, /SW_5V, /SW_IN, /SYS5V, /5V_FAN, /FAN_RET, /SW_FAN |
0.25–0.5 mm (DRC-flagged) | ≤ 0.4 A | < 5 °C | ok (DRC hygiene only) |
- RS1 Kelvin: the CLN sense (U6.7) taps at the via (183.91, 104.21), 1.66 mm down the 0.8 mm trace from the RS1.2 pad (+1.0 mΩ in the sense loop). The effective input limit is 25 mV/11 mΩ = 2.27 A typ (2.14–2.41 A) instead of 2.35–2.65 A. That is harmless (more conservative) but unintended.
- Consequence: Hot inner copper under U6/Q7 at charge current, extra drop, and the 2.5 A input path sharing heat with the U6 area.
- Fix: Put
/VEH5Vfrom L22.2 to RS1.1 on F.Cu ≥ 2 mm (or a pour) and move L22/C153/C154 toward RS1, or use ≥ 2 mm inner with ≥ 4 vias per transition. Put/VIN_SWon F.Cu ≥ 2 mm and move Q7 within 5 mm of RS1/U6. For/MAIN5V, see A-02, and run ≥ 1.5 mm to D21/U20. Route the U6.7 CLN and U6.6 VIN sense traces from the inner edges of the RS1 pads (Kelvin). Fix the netclass patterns (prefix/) so the T15 widths become rules instead of warnings. - Effort: layout
- Confidence: high
A-08 U17 AMS1117-3.3 drops out on battery and sets a 25–55 mW sleep floor
- Severity: Major
- Block / refs: §4-A ("dropout for the LDOs at the backup voltage"); memory
drogheda-backup-lowpower(AMS1117 = #1 sleep-floor suspect); R1. - Evidence:
LDO_IN = SYS5V − Vf(D12 SS34 ≈ 0.30–0.35 V at 0.1 A). On battery SYS5V ≈ VSYS 4.60–4.99 V minus ≈ 0.02 V, so LDO_IN ≈ 4.25–4.65 V.- AMS1117 dropout: 1.1 V typ / 1.3 V max at 0.8 A, ≈ 1.0 V at 0.1 A, so it needs ≈ 4.3–4.4 V. At the low boost corner, and during every boost-limited dip (A-05), 3V3 sags by ≈ 50–150 mV.
- VDDA = 3V3 via R104 10 Ω. The firmware assumes ADC_REF = 3.3 V, so BAT_SENSE/5V_SENSE read up to +4 % high. The 3.40 V low-battery cut then trips at ≈ 3.27 V real. The NTC channels (R42/R126 from 3V3) are ratiometric and unaffected.
- Ground current is 5 mA typ / 11 mA max (25–55 mW at 5 V).
- The datasheet asks for a 22 µF tantalum output cap. The /3V3 rail is all ceramic (C118 22 µF 0805 plus many 100 nF), which is a stability question for genuine AMS1117 parts.
- Consequence: Degraded 3V3 exactly when running on battery, wrong battery-voltage telemetry, and a duty-cycle sleep floor already as large as the whole 20–50 mW target.
- Fix: U17 → TI TLV1117LV33DCYR, LCSC C15578 (SOT-223, same 1-GND/2-OUT/3-IN pinout and footprint; 1 A; dropout 455 mV at 1 A, ≈ 0.1 V at 0.15 A; IQ ≈ 100 µA; ceramic-stable; VIN max 5.5 V vs LDO_IN max ≈ 5.3 V with A-04). Do not use C48937499: it is listed under the same MPN but its spec (1.2 V dropout, 12 V) is the wrong die. Firmware: VREFINT calibration anyway.
- Effort: schematic-only (value/LCSC; same footprint)
- Confidence: high (AMS1117 numbers). Medium for TLV1117LV at 0.1–0.15 A: check the TI dropout curve during sourcing.
A-09 Aluminium electrolytics: 85 °C/2000 h parts on the 5 V and modem rails (≈ 1-year life in a port box); modem bulk also over its ripple rating
- Severity: Major
- Block / refs: §4-A (Cout type/ESR); ECO §A (220 µF polymer); cross-ref modem auditor (C130/C131).
- Evidence:
- C78 (VEH5V bulk), C130, C131 (VBAT_MODEM bulk) = C2827940 SamYoung MVG 16 V 220 µF, −40…+85 °C, 2000 h @ 85 °C, 130 mA @ 120 Hz ripple.
- C10 (/24V) = C165527 MVK 50 V 47 µF, 105 °C/1000 h.
- C3 = C88734 and C103 = C88744: Rubycon TZV, 105 °C/2000 h.
- C151 = C116241: Nichicon UUD, 105 °C/5000 h ✅.
- 10 °C-rule life at 65 °C local (45 °C ambient plus enclosure/board rise, assumption): MVG ≈ 8,000 h (0.9 y of 24/7). MVK ≈ 16,000 h. TZV ≈ 32,000 h. UUD ≈ 80,000 h.
- C130/C131 take the modem's GSM/LTE burst edges (2 A, 577 µs, 217 Hz). Ripple current exceeds the 130 mA rating, so self-heating shortens life further.
- Consequence: Bulk capacitance and ESR drift within the first year. That affects the U20 loop (A-17), modem brown-out margin (HD: ≥ 300 µF) and U25 transient response.
- Fix: C78, C130, C131 → Lelon OVZ221M1CTR-0608 220 µF 16 V polymer, C881921 (same 6.3 × 7.7 can; 105 °C/2000 h, polymer ≈ ×10 per −20 °C, so > 100,000 h at 65 °C). C10 is removed by A-01; otherwise use a 105 °C ≥ 5000 h part. After the swap, re-check U20 compensation (A-17), because polymer ESR moves the ESR zero from ≈ 2.4 kHz to > 15 kHz.
- Effort: schematic-only (same footprints)
- Confidence: medium (lifetime model plus assumed local temperature). High on the part ratings.
F-51 No charger-die or cell temperature reaches the MCU; the firmware thermal inhibit has no source on v6 (R4)
- Severity: Major
- Block / refs: §4-F (temperature sensors), §4-A (sensor ≤ 10 mm of U6); ECO §D2/§D3/§D5; lesson F5/F6; firmware
CHG_CELL_HOT_C 45 / CHG_CELL_COOL_C 40("TMP102 on the cell"); memorydrogheda-fan-policy(thermalCtlTemp ignores the NTC),drogheda-battery-hightemp. - Evidence — every temperature source on v6:
| Sensor | Ref / net | Position (mm) | MCU pin / ADC | Distance to U6 (187.0, 107.7) | Notes |
|---|---|---|---|---|---|
| Board air + RH | U3 SHT40-AD1B (I²C 0x44) | (122.4, 77.3) | PB6/PB7 I²C1 | 71.4 mm | 52 mm from U19, 28.8 mm from U20 |
| MCU die | U16 internal | (120.7, 67.4) | ADC1_IN16 (TS_CAL1/2 used) | 77 mm | |
| External probe 1 | P7 NTC-HOTSPOT → /NTC_TEMP, R42 10 k to 3V3, C24 100 nF |
(109.75, 44.0) | PB1 = ADC1_IN9 | ~100 mm | jack only |
| External probe 2 | P8 NTC-PROBE-2 → /NTC2, R126 10 k to 3V3, C157 |
(133.0, 44.0) | PC4 = ADC1_IN14 | ~83 mm | jack only |
| Pack NTC | P3.3 → /NTC → U6.17 only (R55 10 k from VEH5V) |
(196.0, 110.5) | none | — | LTC4040 window: hot pause 42.4 °C, resume 40.1 °C, cold −3.1 °C (B3380); 39.7/37.9/0.6 °C (B3950) |
| Modem die | A7670SA internal (AT) | (174.3, 72.0) | USART6 (AT) | — | firmware-only (F-53) |
| Accelerometer | U26 SC7A20 (has a temperature output, low accuracy) | — | I²C | — | not a thermal sensor |
| TMP102 | absent (V5.x U4 and the V5.6 U18 TMP102 were deleted in v6 T10) | — | — | — |
- Free MCU ADC pin: only PC5 (pad 25, ADC1_IN15). Free digital pins: PB10, PA9, PD2.
- Consequence: CHG_CELL_HOT/COOL (45/40 °C) have no cell sensor unless an installer tapes P7 to the pack. There is no charger-die visibility, so the A-02/H0008 cycling is invisible in telemetry. R4 is not met in firmware. (The cell is still protected in hardware by the LTC4040 NTC pause.)
- Fix:
- Charger temperature: TMP102AIDRLR C99269 (SOT-563) placed between U6 and L6, ≤ 5 mm from the U6 EP, on I²C1 at 0x48 (ADD0 → GND; confirm the U10 SC16IS752 strap stays at 0x4D), with 100 nF C14663.
- Cell temperature to the MCU: tap
/NTCinto PC5 through 100 k (top, C25803) / 120 k (bottom) + 10 nF. PC5 ≤ 0.545·5.46 V = 2.98 V. The 220 k load shifts the LTC4040 hot threshold by < 0.6 °C. Firmware computes Rntc = R55·Vntc/(VEH5V − Vntc), using PA4 for VEH5V; it is valid whenever VEH5V is present, which is when charging is possible. - Firmware:
tchg,tcellappended to$PHLG. The governor inhibits on tcell (Li-ion 45 °C / LFP 55–60 °C) and on tchg (e.g. > 85 °C shed).
- Effort: both (2 parts plus 3 passives; place the TMP102 in the A-02 re-cluster)
- Confidence: high
A-10 No over-voltage protection on VEH5V now that the 5 V source is a non-isolated on-board buck
- Severity: Minor
- Block / refs: §4-A (input protection); LTC4040 p.11 (OVSNS); memory
drogheda-power-cost("galvanic isolation lost"). - Evidence:
- U6.16 OVSNS is tied straight to
/VEH5V, so the OVP feature is not used (datasheet: short OVSNS to VIN when OVP is not used). - A TPS54360B high-side short puts
/VIN_PROT(24–36 V) on VEH5V. LTC4040 VIN abs max is 6 V steady / 7 V transient, and Q7 then passes it to MAIN5V → SYS5V → U17/U21/U12/U20. - V5 used the isolated SD-15B, so v6 adds this failure mode.
- U6.16 OVSNS is tied straight to
- Consequence: A low-probability single-point failure destroys the whole board (F9P $85, modem, MCU).
- Fix (pick one): (a) use the LTC4040 OVP arrangement per the datasheet OVP application: OVSNS through 6.2 kΩ from the U25 output node, plus the series N-FET (≥ 40 V V_DS) the application shows. Verify the topology against the datasheet figure before committing. (b) Minimum: a 1.5 kW 5 V TVS (SMCJ5.0A class) on VEH5V as a crowbar that forces F2 open. This is imperfect, because VEH5V can exceed 7 V for the fuse's melt time.
- Effort: schematic + small layout
- Confidence: medium (topology of the datasheet OVP figure not fully extracted)
A-11 CHGOFF (PA8) has a pull-DOWN: the charger runs at full programmed current whenever the MCU is not driving the pin
- Severity: Minor
- Block / refs: §4-A (EN default states); LTC4040 p.10 ("CHGOFF: GND = enable, > 1.2 V = disable"); firmware line 356 ("HIGH = charge OFF").
- Evidence: R56 100 k from
/CHRG_ENto GND. During MCU reset, DFU, boot and unflashed boards, CHGOFF = 0, so the charger is enabled with no governor or thermal inhibit (2.42 A with R50 as-is). This contradicts the board's own policy that MODEM_EN (R113) and PWR_CTRL default OFF while the MCU is not in control. - Consequence: An uncontrolled charge during DFU or boot loops. It is bounded by the LTC4040 input limit and NTC window, so there is no damage.
- Fix: R56 → 100 k from
/CHRG_ENto /3V3 (C25803, same footprint re-netted), so the default is charge OFF. On battery the charger is inactive anyway. - Effort: schematic + one-track layout
- Confidence: high
A-12 Q5 base floats during MCU reset: the F9P rail (Q1/U21) is not guaranteed OFF
- Severity: Minor
- Block / refs: §4-A (EN defaults); firmware "PWR_CTRL LOW = stack OFF".
- Evidence:
/BASE_LS= {R1.2, Q5.1} only;/PWR_CTRL= {U16.15, R1.1}. The STM32 pins are floating inputs during reset. Datasheet-max pin leakage (1 µA) × hFE ≈ 100–300 µA into R2 10 k gives 1–3 V Vgs on the AO3401A, so partial turn-on is possible (typical leakage is nA, so it is benign in practice). - Fix: add 47 k 0603 from
/BASE_LSto GND (Basic 0603 1 %). - Effort: schematic + small layout
- Confidence: medium
A-13 PFO goes only to TP2 (and CLPROG only to TP1): no hardware power-fail interrupt to the MCU
- Severity: Minor
- Block / refs: §4-A (CHRG/FAULT/PFO); LTC4040 p.11.
- Evidence:
/PFO_TP= {U6.20, TP2}. Firmware detects backup by polling 5V_SENSE (V5_OFF 3.80 V), but the LTC4040 has already switched to backup at PFI 4.40 V./CLPROG_TP= {U6.3, TP1}: this is the VSYS current monitor, V = 32·(VIN − CLN), i.e. 0.8 V at the 2.5 A limit. - Consequence: Tens of ms late on backup entry, and the firmware cannot shed the modem/K1/W5500 before the boost takes the full load. Input current is not measurable in telemetry.
- Fix: route
/PFOto PB10 (pad 29, EXTI10) with 100 k to /3V3 (3V3 stays up on battery). Optional: CLPROG → an ADC pin through 1 MΩ (datasheet recommends isolation, PROG-side ≤ 40 pF). No ADC pin is left if F-51 takes PC5, so CLPROG is a Note. - Effort: schematic + layout (two tracks)
- Confidence: high
A-14 BSTFB divider 21–24 mm from U6 (feedback net 41 mm, 5 vias, cutting In1 under U6); IGATE 43 mm unguarded
- Severity: Minor
- Block / refs: §4-A (BSTFB); LTC4040 layout p.22–23 (guard IGATE with VSYS copper).
- Evidence: R53.2 → U6.18 21.4 mm edge, R54.1 24.0 mm.
/VFB_BSTis F.Cu 16.8 mm + In1 24.4 mm with 5 vias; 7 of its In1 segments lie inside a 6 mm radius of U6, splitting In1./IGATEis F.Cu 6.0 mm + In1 37.0 mm, with Q7.4 ↔ U6.15 at 23.2 mm. The IGATE charge pump has µA-class drive, so leakage in a humid port box can partially enhance Q7. Its body diode at 2.5 A dissipates ≈ 1.2 W. - Fix: R53/R54 ≤ 3 mm from pins 18/10, with the top leg Kelvin-tapped at the CSYS pads and the net on F.Cu. Q7 ≤ 5 mm from U6.15 with IGATE ≤ 8 mm on F.Cu, flanked by MAIN5V copper.
- Effort: layout
- Confidence: high (geometry). Medium (consequence).
A-15 U25 footprint carries a second property LCSC Part = C2071691 (AP64350, pin-compatible)
- Severity: Minor
- Block / refs: §4-H cross-ref;
sch_pcb_sync.md; INDEX gotcha 7. - Evidence: U25
LCSC= C524806 (TPS54360B),LCSC Part= C2071691. The TPS54360B pinout (1 BOOT, 2 VIN, 3 EN, 4 RT/CLK, 5 FB, 6 COMP, 7 GND, 8 SW) is identical to the AP64350 pinout. If a BOM tool picksLCSC Part, the boards assemble and run, but with a 42 V-rated part behind a 53 V clamp and the wrong compensation. That is a latent field failure nobody would notice at test. - Fix: delete the
LCSC Partproperty from U25 (PCB and schematic). - Effort: schematic-only
- Confidence: high
F-52 Modem temperature: no on-board sensor near U19 (ECO D3 dropped)
- Severity: Minor
- Block / refs: §4-F; ECO §D3 (TMP102 #2 at the modem); R4.
- Evidence: The nearest board sensor to U19 is U3 at 52.1 mm. The only modem temperature path is AT over USART6. SIMCom A76xx has
AT+CPMUTEMP; availability on A7670SA firmware is not verified. That path also works only while the modem is powered and responsive. - Fix: either firmware-only (poll
AT+CPMUTEMPinto a$PHLGtmodemfield) or a second TMP102 C99269 at 0x49 (ADD0 → 3V3) between U19 and U20. The latter is cheap and independent of modem state. - Effort: firmware-only, or schematic + layout
- Confidence: medium
A-16 U25 EN/UVLO divider DNP: U25 runs from 4.1–4.3 V
- Severity: Note
- Evidence: R124 523 k / R125 84.5 k DNP. EN floats (1.2 µA pull-up), so the internal UVLO is 4.1–4.3 V rising with 325 mV hysteresis. Populating them gives a start of ≈ 8.0 V and a stop of ≈ 5.5 V (TI equations with Ip 1.2 µA, Ih 3.4 µA). Between ≈ 4.3 V and 5.8 V input, VEH5V sits in dropout inside the PFI band (4.27–4.66 V), so the LTC4040 toggles backup (hysteresis 0.11 V). This only matters for 12 V vehicles under crank.
- Fix (optional): populate R124 523 k/1 % and R125 84.5 k/1 % (Basic 0603, pick LCSC in sourcing) if 12 V machines are in scope.
- Effort: schematic-only
- Confidence: medium
A-17 U20 compensation is the AP64350 5 V table set (14 k / 3.3 nF / 47 pF, 500 kHz) applied at 3.8 V
- Severity: Note
- Block / refs: §4-A; V5.6 change report §6.1; Review §4 #14.
- Evidence:
- Output network: L20 4.7 µH, C132 22 µF/16 V 0805 (≈ 10–12 µF effective at 3.8 V), C133 1 µF, plus C130/C131 2 × 220 µF aluminium at 13–21 mm (ESR ≈ 0.15 Ω pair, assumed).
- Datasheet: fc = R5/(4.67e3·VOUT·COUT).
- Bulk-dominated (455 µF): fc ≈ 1.7 kHz. Phase is about −90° (integrator) −84° (fp ≈ 184 Hz) +27° (zero at 3.44 kHz) +36° (electrolytic ESR zero ≈ 2.4 kHz), so PM ≈ 69°.
- Ceramic-only: fc ≈ 50 kHz ≈ fSW/10 (the guideline edge).
- With polymer bulk (A-09) the ESR zero moves above 15 kHz and PM falls to ≈ 40°.
- Fix: if A-09 goes ahead, set R116 = 10 k (keep C141 3.3 nF, C142 47 pF) and verify with a 0.1 → 2 A load step at VIN 4.4 V and 5.3 V. Otherwise bench-verify the current values.
- Effort: schematic-only
- Confidence: low-medium (estimate). Raise it with a Bode plot or load step.
A-18 U25 compensation is the TPS54360B datasheet example (13 k / 6.8 nF / 39 pF), designed for 8.2 µH + 58 µF
- Severity: Note
- Evidence:
- v6 has 10 µH, C153/C154 2 × 47 µF X7R (≈ 56 µF effective), C78 220 µF aluminium, and ≈ 70 µF effective downstream (C30/C31, C32–C34 through RS1 + Q7, ≈ 20 mΩ).
- fco = R4·gmps·Vref·gmea/(2π·Cout·Vout) ≈ 43.7/(2π·Cout·5.3): ≈ 4–6 kHz with the bulk counted, ≈ 22 kHz ceramic-only. The compensation zero is at 1.8 kHz, and PM estimates > 60° in both cases.
- Stable, but a slower load step: ≈ 0.16 V dip for 1.8 A, relevant if A-01 Option A moves the modem onto VEH5V.
- Fix: none required. Optionally raise R123 to 24 k after A-01/A-09 to restore ≈ 10 kHz. Bench-verify with a 0.3 → 2.5 A step.
- Effort: schematic-only (optional)
- Confidence: medium
A-19 Load-dump survivability of D10 SMBJ33A / D32 SMCJ33A depends on vehicle-level suppression
- Severity: Note
- Evidence:
- SMCJ33A: VBR 36.7 V min, VC 53.3 V @ 28.1 A. SMBJ33A: VC 53.3 V @ 11.3 A.
- Adequate for continuous 24 V systems (≤ 32 V), for the ISO 16750-2 36 V/60 min overvoltage test (below VBR min), and for ISO 7637-2 fast pulses behind the U25 65 V rating.
- Not adequate for an ISO 16750-2 Test B suppressed load dump (24 V: Us* ≤ 58 V, 100–350 ms, Ri 1–8 Ω, i.e. ≈ 10 A for 350 ms, hundreds of J): the TVS would fail short. After A-01, F2 then opens. The alternative is a surge stopper, which is out of scope.
- Fix: confirm the fleet has alternator load-dump suppression (Inputs needed). Keep SMCJ33A. Do not raise the TVS voltage, because U25 has 65 V abs max.
- Effort: none / decision
- Confidence: medium
A-20 Other power items
- Severity: Note
- Evidence / fix:
- (a) U12 MP1584EN (C15051, $2.21 @100, TA −20…+85 °C): if not replaced, gate EN (A-05). Optional swap to AP64350 C2071691 ($0.58, VIN 3.8 V min, synchronous, better battery margin; needs a re-layout for pinout).
- (b) F1 PPTC 3 A (C20627123, 10–60 mΩ, trip 5 A) now protects only the F9P LDO branch (≈ 0.1 A). It is harmless (≤ 6 mV) and not protective. The V5.6 "≥ 4 A low-R" requirement was for the modem, which is no longer behind it. Keep it.
- (c) P2 bench jack has no reverse protection (VEH5V −0.3 V abs max). A bench-only risk, which the silkscreen should state.
- (d) JP_CUT across P5 (V5.6 JP6) is absent. Harness auditor G owns it.
- (e) C22 value mismatch: the schematic says "22uF/50V" but LCSC C138687 is 10 µF/50 V (moot if U2 is removed; BOM auditor H).
- (f) K1 G5V-1: operating range −40…+70 °C, which is close to the enclosure worst case.
- (g) R112 1 k VBAT_MODEM bleeder: 3.8 mA / 14 mW while the modem is on. Fine.
- Effort: —
- Confidence: high
F-53 Fan block
- Severity: Note
- Evidence:
- Driver: U2 MP1584 from /24V, 5V_FAN = 0.8·(1 + 100/19.1) = 4.99 V (4.76–5.23 V).
- FB divider R20/R21 at 0.67/1.48 mm from U2.4 and
/FB_FAN4.1 mm, so ECO E3 is fixed. - PWM: PA6 (TIM3_CH1) → Rg1 100 Ω → Q2 AO3400A low side, with Rgs1 100 k gate pull-down (default OFF ✅) and D2 SS34 flyback ✅.
- 2-wire fan, no tach (
ENABLE_FAN_TACH 0, a decision). Fan dark on battery by design (ECO D4). - U2 is out-of-rating on the 24 V bus (A-01) and its Cin is 17–21 mm away (A-06).
- Fix: take A-01 fix 1 (fan from VEH5V via a bridged JP1, U2 block DNP). Firmware policy
vehiclePower && ignitionOnis unchanged, and the fan supply then equalsvehiclePowerexactly. AddtNtcCtothermalCtlTemp()(memorydrogheda-fan-policy). - Effort: schematic-only (with A-01)
- Confidence: high
Pass checks
| Check | Evidence (one line) | Result |
|---|---|---|
| U25 output formula / tolerance | 0.8·(1 + 53.6/10.2) = 5.004 V; Vref 0.792–0.808 → 4.87–5.14 V | ✅ math / ❌ set-point (A-04) |
| U25 RT / fsw / min on-time | 162 k → 600 kHz (TI eq.); tON at 36 V = 0.147/600 k = 244 ns ≥ 135 ns | ✅ |
| U25 inductor | 10 µH ≥ Lmin 7.2 µH (36 V) / 7.7 µH (60 V), KIND 0.3; SRP1265A Isat 15.5 A, Irms 10 A vs peak 3.1–3.4 A | ✅ |
| U25 current capability | load ≤ RS1 limit 2.14–2.41 A (+0.3 A fan with A-01) vs 3.5 A rating, 4.5 A min switch limit | ✅ |
| U25 Cout / ripple | 2 × 47 µF X7R 1210 (≈ 56 µF eff) + 220 µF; ΔI 0.69 A @ 24 V, ΔV ≈ 3 mV | ✅ (life ❌ A-09) |
| U25 compensation | datasheet example; fco ≈ 4–6 kHz, PM > 60° (estimate) | ✅ (A-18 Note) |
| U25 BOOT cap | C152 100 nF, 1.49 mm edge to pins 1/8 | ✅ |
| U25 Cin value | 2 × 2.2 µF/100 V X7R 1210 ≈ 3.4–3.8 µF eff at 24–36 V ≥ TI 3 µF | ✅ (placement A-06) |
| U25 soft start / inrush | 1024/600 kHz = 1.7 ms; ≈ 0.9 A into ≈ 280 µF | ✅ |
| U25 EN / UVLO | EN floats → on; internal UVLO 4.1–4.3 V | ✅ (A-16 Note) |
| Reverse polarity Q23 (and Q10) | P-FET D→input, S→load, gate R119 100 k + D33 15 V clamp (Rrp1 10 k + DzG1); IRFR5305 −55 V/65 mΩ | ✅ |
| DzG1 netlisted (V5 corruption) | DzG1.1 /Q10_GATE, .3 /24V | ✅ |
| TVS standoff | D32 SMCJ33A / D10 SMBJ33A VRWM 33 V ≥ 32 V max 24 V system; polarity pad 1 = K on the + rail | ✅ (A-19) |
| F2 part assigned | C206910 0154002.DR 2 A/125 V, 50 A breaking | ✅ part / ❌ coverage (A-01) |
| RS1 input limit | 10 mΩ 1 W 1206 (C105362): 23.5–26.5 mV → 2.35–2.65 A (2.14–2.41 A with the CLN tap, A-07) < U25 3.5 A | ✅ |
| LTC4040 PROG node | R50 1.26 mm from pin 2; /PROG 2.6 mm (≤ 40 pF) |
✅ |
| LTC4040 BSTFB (backup VSYS) | 499 k/100 k → 4.60/4.79/4.99 V within 3.5–5.0 V; keep 499 k | ✅ (placement A-14) |
| LTC4040 PFI | 270 k/100 k, 1.19 V: fall 4.27/4.40/4.54, rise 4.38/4.51/4.66 V | ✅ (FW V5_PFI stale) |
| LTC4040 RSTFB / RST | RSTFB tied to BSTFB (datasheet allows), RST NC | ✅ |
| LTC4040 OVSNS | tied to VIN → OVP unused | ⚠ (A-10) |
| NTC window RNTB | R55 10 k: hot 42.4 °C / resume 40.1 °C / cold −3.1 °C (B3380) | ⚠ (chemistry D1 pending) |
| Chemistry straps | JP2 1-2 (F2 = MAIN5V = Li-ion), JP3 F1 = 0, JP4 F0 = 1 → 4.00 V; LFP by JP2 2-3 (+ RNTB 5.6 k → +10.0…+60.4 °C) | ✅ |
| Safety timer | Li-ion 4.25 h (3.7–5 h), counts in CV only | ✅ |
| CHRG / FAULT | R57/R58 100 k to 3V3 → PB3/PB4 | ✅ |
| CHGOFF default | R56 100 k pull-down → charger ON without MCU | ⚠ (A-11) |
| BSTOFF | tied to GND → boost always armed (no FW shutdown; BAT UVLO 2.45 V is the only floor) | ✅ / Note |
| Q7 ideal-diode orientation | AO4406A N-ch: S = VIN_SW (CLN), D = MAIN5V → body diode blocks VSYS→VIN | ✅ |
| L6 | 2.2 µH (datasheet 1–2.2 µH), rated 8 A ≥ ILIMBST max 7.5 A | ✅ (placement ❌ A-02) |
| CSYS | 104 µF nominal ≥ 100 µF; ≈ 59 µF effective | ⚠ (A-05) |
| CBAT | C35 22 µF ≥ 10 µF | ✅ value / ⚠ placement |
| U20 FB | 75 k/20 k → 3.70/3.80/3.90 V within A7670 3.4–4.2 V | ✅ |
| U20 RT / min on-time | 200 k → 500 kHz (450–550); tON at 36 V = 211 ns ≥ 100 ns | ✅ |
| U20 UVLO on battery | falling ≈ 3.1–3.3 V vs VIN_MODEM ≥ 4.2 V (≈ 1 V margin; V5.5 had 0.1 V) | ✅ |
| U20 EN default | R113 100 k vs 5.5 µA pull-up → 0.55 V < 1.03 V → OFF; PC10 3.3 V > 1.25 V | ✅ |
| U20 BST | C129 100 nF, 1.8 mm | ✅ |
| L20 | 4.7 µH (MWSA0804S-4R7), rated 5 A vs peak 2.2 A (batt) / 2.7 A (24 V) | ✅ |
| U2 FB / placement | 4.99 V; divider at pin (0.67/1.48 mm) | ✅ (rating ❌ A-01, Cin ❌ A-06) |
| U12 FB | 100 k/31.6 k → 3.18/3.33/3.48 V | ✅ (EN ❌ A-05, loop ❌ A-06) |
| U21 AP2112K | dropout 250 mV @ 600 mA; F9P ≈ 0.1 A; SW_5V ≥ 4.5 V on battery; EN = VIN follows Q1 | ✅ |
| U17 AMS1117 on 24 V | LDO_IN ≈ 4.6 V ≥ 4.4 V | ✅ (battery ❌ A-08) |
| DFU-only power | DFU_VBUS → D13 → LDO_IN; D12 blocks back-feed into SYS5V | ✅ |
| K1 flyback | D6 1N4148W across the coil | ✅ |
| Temperature sensor ≤ 10 mm of U6 | none (U3 at 71.4 mm) | ❌ (F-51) |
| Fan PWM default | Rgs1 100 k → Q2 OFF at reset | ✅ |
Review-vs-Lessons §4 checklist items re-verified
- #1 LTC4040 copper + thermal vias + re-cluster (F5): still ❌.
/SW_BATis now 0.5 mm (was 0.25 mm on 25-Sep) × 11.9 mm with 0.25/0.30 mm necks./BAT_PLUSmain path 1.0 mm. EP 0 vias (nearest 5.21 mm). L6 8.65–9.10 mm edge. C30/C31 6.2–7.2 mm. CSYS GND on three F.Cu islands. → A-02. - #2 U25 set-point (F7): still ❌. R121 53.6 k → 5.00 V (4.87–5.14 V). Re-cluster status: C150 2.88 mm (improved), C149 6.37 mm, D34 4.28 mm, L22 17.0 mm (edge), Cin/diode GND on different islands. → A-04, A-06.
- #3 R50 (F4): still ❌ 825 Ω. Also, 1.5 k only meets R5 nominally; 1.43 k is recommended. → A-03.
- #4 Modem rail integrity on battery (power parts): U20 Cin is still C127 10 µF + C128 1 µF (no 2 × 22 µF) ⚠.
/VIN_MODEM0.5/0.8 mm (D21 → U20 5.8 mm at 0.5 mm) ⚠. VBAT_MODEM bulk C130/C131 at 13.2/20.9 mm from L20 on 2 mm copper (improved from 0.25/0.5 mm; modem auditor owns U19-side distances). D21 drop and boost budget → A-05. Topology → A-01. - #5 Temperature sensor at the charger: still ❌. → F-51.
- #6 W5500 in reset / U12 EN: U12 EN still tied to VIN (always on, including on battery) ❌. → A-05 fix 1. (ETH_RST pull-down belongs to E.)
- #8 NTC window / chemistry: unchanged ⚠ (R55 10 k, JP2 Li-ion). Decision D1 pending; BOM-only change.
- #10 F1 / F2: F2 LCSC now assigned (C206910) ✅, but it protects only the U25 branch ❌ (A-01). F1 3 A PPTC is harmless (A-20b).
- #14 AP64350 compensation vs datasheet: evaluated. It is the 5 V table set; the estimate is stable with electrolytic bulk and marginal with polymer. → A-17.
- "Switcher EP vias (U20, U25): 0" (Review §2): still 0 on U20, U25, U2, U12 and U6. → A-06, A-02.
- #15 Bench validation (power parts): still required: U6/L6 IR at 1.4 A charge and 2.3 A backup; U20 VIN scope during a battery cold start at VBAT 3.5 V; D34/U25 IR at full load.
V5.6 power / charger / temperature fixes vs v6
| V5.6 fix (ECO / change report) | v6 status |
|---|---|
| A: modem buck AP64350 with MCU EN + 100 k pull-down | equivalent (U20, PC10, R113); fed from /24V + MAIN5V instead of SYS5V → A-01 |
| A: Cin 2 × 22 µF + 10 µF at the modem buck | missing (10 µF + 1 µF) → A-05 |
| A: 220 µF polymer output | missing (2 × 220 µF 85 °C aluminium) → A-09 |
| A: L 4.7 µH ≥ 4 A | has (L20 4.7 µH/5 A, C17700167) |
| A: C3 → 220 µF polymer (F9P rail) | equivalent / not needed (F9P behind the U21 LDO; C3 47 µF 105 °C + C40 + C119) |
| A: R53 stays 499 k | has |
| A (opt): U12 → AP64350 | missing (optional) → A-20a; U12 EN gating → A-05 |
| C: RS1 10 mΩ | has (C105362) |
| C: R50 1.5 k | missing (825 Ω) → A-03 (1.43 k) |
| D1: RNTB / JP2 per chemistry | unchanged, pending decision |
| D2 / E1 / E2: SW_BAT ≥ 2 mm, BAT_PLUS ≥ 1.5 mm, EP ≥ 9 vias | missing → A-02 |
| D3: TMP102 near the modem | missing → F-52 (AT alternative) |
| (V5.x U4 TMP102 "cell") | removed in v6, no replacement → F-51 |
| D4: fan unchanged | has; E3 FB divider at pin fixed |
| D5: NTC probe to PB1 | has (P7 → PB1) + second probe P8 → PC4 |
| E4: buck Cin loops < 3 mm | missing / worse (U2 17–21 mm; U12 6.4 mm; U25 GND islands) → A-06 |
| F: F1 ≥ 4 A low-R | equivalent / not needed (modem not behind F1) |
| F: JP_CUT across the cutoff | missing (owner G) |
Requirements input R1–R5
- R1 (10 min off → wake → report on battery): needs change A-05 (+ A-08) plus firmware. The hardware structure is right (independent PWR_CTRL / MODEM_PWR_EN, U20 UVLO margin ≈ 1 V). As-is, the boost reaches 93–97 % at a GSM burst with all loads on, W5500 cannot be powered off, and the AMS1117 floor eats the sleep budget.
- R2 (modem never dark; MCU can power-cycle it): satisfied as-is for the power side (U20 EN on PC10 with pull-down, UVLO margin, the modem can be power-cycled alone). A-01 changes the U20 input source but not the control.
- R3 (report while on battery): needs change A-05 plus firmware (same budget as R1). Also A-13 (PFO interrupt) for fast load shedding.
- R4 (temperature management): needs change F-51 (charger TMP102 plus pack NTC to PC5), plus firmware. Fan: satisfied, and simplified by A-01 fix 1 (F-53).
- R5 (charge ≥ 1.3 A without thermal cycling): needs A-03 (R50 1.43 k) + A-02 (copper/vias) + A-04 (R121 57.6 k or firmware retune). A-07 is recommended.
Firmware implications (things board_v6.h / FW 0.7.x must do)
- Pins (power-related):
- Unchanged:
PIN_CHRG_EN PA8(HIGH = charge OFF; polarity unchanged by A-11, only the reset default becomes OFF),PIN_CHRG_STAT PB3,PIN_CHRG_FAULT PB4,5V_SENSE PA4(÷2),BAT_SENSE PA0(÷2),NTC_TEMP PB1,NTC2 PC4,PWR_CTRL PA1,MODEM_PWR_EN PC10,BYP_CTRL PB5. - New, if the fixes are taken:
PIN_ETH_PWR_EN PD2(A-05),PIN_PFO PB10EXTI falling (A-13),NTC_CELL PC5ADC1_IN15, ratio 120/220 (F-51), TMP102 charger sensor at 0x48 (F-51), optional modem TMP102 at 0x49 (F-52).
- Unchanged:
- Constants:
V5_PFI4.60 → 4.40 V (falling; rising 4.51 V).- With R121 57.6 k, keep
CHG_RAIL_ON 5.05/CHG_RAIL_OFF 4.90. If R121 stays 53.6 k, the governor must be retuned (ON ≤ 4.80 V is not possible with PFI rising max 4.66 V and ADC error), so the hardware change is preferred. - The v6 supply cannot fold (RS1 2.14–2.41 A < U25 4.5 A min limit): the governor is a safety net only.
- ADC: compute VDDA every window from VREFINT (
VREFINT_CAL@ 0x1FFF7A2A). Never assume 3.30 V, especially on battery (A-08). - Thermal inhibit: CHG_CELL_HOT/COOL on
tcellfrom PC5 (Li-ion 45/40 °C; LFP 55–60 °C). Shed ontchg> 85 °C from the new TMP102. Appendtchg,tcell,tmodemto$PHLG. Include the NTC inthermalCtlTemp(). - Backup entry (PFO EXTI or 5V_SENSE < V5_OFF):
- Immediately
ETH_PWR_EN= 0 (or hold ETH_RST low if not fitted). BYP_CTRL= 0 except inside the TX window.- Modem to LTE-only on battery (
AT+CNMP=38) to avoid 2 A GSM bursts.
- Immediately
- Duty window (R1/R3):
- Never start the modem with W5500, K1 and the F9P acquiring simultaneously.
- Order: modem EN → PWRKEY → wait STATUS (~7 s) and first RTCM on PC7, with the F9P OFF or already settled ≥ 4 s. Then the F9P for a hot fix. Then ≥ 2
$PHLG→ modem OFF → F9P OFF → MCU STOP (LSE RTC). - Refuse a modem cold start below VBAT ≈ 3.4 V: the boost's 2.5 A rating holds only down to 3.2 V.
- Low battery: BSTOFF is hard-wired to GND, so firmware cannot switch the boost off. At
VBAT_BACKUP_MINgo to STOP with every load off. The hardware floor is only LTC4040 BAT UVLO 2.45 V plus the pack PCM. - Fan: if the fan moves to VEH5V (A-01), the fan exists exactly when
vehiclePower. The policy stays as is, and the ignition proxy becomes optional. - Charger status: "pausa NTC" = CHRG low ∧ FAULT low (datasheet table p.14). Bad battery = CHRG high ∧ FAULT low.
Inputs needed from Leo
- Supply systems in the fleet: 24 V only, or 12 V machines too? This sets F2 at 3 A vs 4 A, the U25 UVLO (A-16), and whether 9 V operation matters. Do the machines have alternator load-dump suppression (A-19)?
- The fan part (5 V, 2-wire) and its current. Assumed 0.2–0.3 A for the VEH5V feed (A-01).
- Decision on A-01 Option A (modem buck from MAIN5V only, D20 removed, D21 bridged) versus Option B (keep the 24 V feed with a ≥ 60 V buck). Coordinate with the modem auditor.
- Pack details: capacity (Ah), PCM cut-off voltage, NTC β (B3380 vs B3950), and the chemistry decision D1.
- Is GSM/2G fallback required on battery, or is LTE-only acceptable? This sets the backup peak (A-05).
- Must Ethernet work on battery? Assumed no, so U12 is gated.
- Enclosure internal temperature at 45 °C ambient. Assumed 60–65 °C local near the regulators, for electrolytic life (A-09) and U6/D34 thermals.
- Bench data from the H0008 "Pendientes": clamp-meter charge current and U6/L6 temperature. This confirms or refutes OT cycling (A-02/A-03).