Electrical/PCB: - LTC4040 Block B sized to the 12 Ah 1S4P pack (RPROG 825R -> 2.42 A ~ C/5, RS 8 mR -> 3.1 A input limit, PFI 4.60 V, backup 4.79 V, charge 4.00 V Li-ion via VSYS-referenced straps) + Block E cutoff (P11) + Block F PA4->VEH5V re-tap + Block H fail-safe Modo-B bypass (K1 normally-closed relay) + Block I NTC->PB1. - CARRIER-BOARD conversion: simpleRTK2B Pro on UNO-pattern female headers (MOD1; D0/D1=UART1, D2=RX2, D8=TX2, IOREF=3V3, 5V=SW_5V) + 4G NTRIP Master on on-board XBee socket (J7/J8; VCC=3V3_MODEM via new Block K MP1584 buck off SW_5V - the HP XBee socket is 3.3 V not 5 V). Board 120x100, placement + GND pour + DRC baselines. Custom symbols: LTC4040EUFD, AO4406A, SimpleRTK2B_Pro_Socket. - Fixed duplicated U2, stale no-connects, A4->A3 sheet; ERC 0 errors. Docs: - Canonical electrical-design-state + production delta (Block B values table, 5b/5c/5d/5e) + design/rationale/connections/BOM swept to the Jul-2 assumptions ledger (Conexiones-por-Bloque xlsx). - Guia de Conexion Protoboard: LaTeX source now maintained in-repo -> v2.1 PDF. - CircuiTikZ sheet + wiring Beamer: block 11 (NTC->PB1) + guinda ignition legend. - Client decks: Avance v1.1 (overclaims fixed) + RCA v1.1 (2-jul addendum). Repo hygiene: - .gitignore: live rtk-config (SIM/APN/NTRIP creds) now ignored and REMOVED from tracking (NOTE: rotate those credentials - they exist in prior commits); KiCad .bak/snapshots/.history, LaTeX intermediates, Office locks ignored+purged. - Removed rogue .history gitlinks that broke git status.
23 KiB
| title | tags | project | author | date | status | supersedes | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Watchdog v3 — Production Schematic Build Spec (delta from the prototype) |
|
Project Drogheda | Helgen CTO | 2026-06-25 | Active — build spec for the PRODUCTION schematic (proto file = current; this = what to add/change) | reconciles watchdog-connections.xlsx (Jun23) + watchdog-pcb-v3-bom.xlsx with the Jun-24 canonical state |
Watchdog v3 — Production Schematic Build Spec (Δ from prototype)
Why this exists. Decision (2026-06-25): the current
kicad/hbox-watchdog-v3.kicad_schis the PROTOTYPE (module buck, no battery). This doc is the delta to build the PRODUCTION schematic on the copykicad/hbox-watchdog-v3-PROD.kicad_sch. It is the single reconciled definition — the connection list (Jun 23) and the v3 BOM predate the Jun-24 battery re-add, so they are not on their own a production spec. Authority order: watchdog-electrical-design-state (CANONICAL) > design doc > BOM/connection-list. Build against this file.
Build status (2026-06-25) — Blocks A / C / D BUILT on PROD
Built on kicad/hbox-watchdog-v3-PROD.kicad_sch via the KiCad MCP. ERC = 0 errors; ~20 cosmetic
warnings remain (off-grid auto-placement, reserved-pin NC flags now legitimately used, and L/SW_Push/
Q_NPN_BCE symbol-cache mismatches) — all clear during layout positioning + Tools→Update Symbols from Library.
- Block A — discrete buck — DONE. Replaced the 3-pin U2 module with a custom MP1584EN symbol
(
Drogheda-sym.kicad_sym; datasheet pinout 1=SW 2=EN 3=COMP 4=FB 5=GND 6=FREQ 7=VIN 8=BST, registered in the projectsym-lib-table). Wired: VIN←24V, SW→L2→5V_FAN, FB divider R20 100k / R21 19.1k (→5.0 V), C22 22µF in, C23 22µF out, Dbk SS34 freewheel (K→SW, A→GND), Cbst 10nF BST–SW. New support parts added beyond the original BOM (required for the discrete IC): Rfreq 100k (FREQ→GND, sets fsw), Rcomp 40.2k + Ccomp 2.2nF (COMP loop comp), Ren1 100k / Ren2 20k (EN UVLO divider — EN abs-max is 6 V, so it must NOT tie directly to 24 V). ⚠ Bench-tune (typical placeholders): Rfreq (target fsw), Rcomp/Ccomp (loop stability), Ren1/Ren2 (UVLO threshold). - Block C — reset — DONE. SW1 (Switch:SW_Push) + P10 (2-pin ext) → NRST (J1.5) → GND.
- Block D — 4-LED gauge — DONE. RB1–4 330 Ω + DB1–4 LED on PB12–15 (J2.1–4) → GND.
- Cleanup: deleted 3 labels (24V/GND/5V_FAN) orphaned when the old U2 module was removed.
- Footprints: the new parts carry no footprint yet — assign at layout (same as the existing parts).
- Still deferred: Block B (LTC4040) + E (cutoff) + F (PA4→VEH5V). Pack Ah confirmed = ~12 Ah (2026-06-30) → LTC4040 sizing can proceed.
Build status (2026-07-02) — Blocks B / E / F / H / I capture session
LTC4040 sized to the 12 Ah pack (§4 values table — datasheet 4040fb formulas; internally compensated, no external comp). New Blocks H (K1 NC bypass relay, §5b) and I (NTC→PB1, §5c) specified from the Jul-2 assumptions ledger.
BUILT 2026-07-02 (all of B/E/F/H/I) — ERC = 0 errors, 62 cosmetic warnings (off-grid auto-placement + L/Q_NPN_BCE/SW_Push/AO4406A symbol-cache mismatches → clear during layout positioning + Tools→Update Symbols from Library). Capture notes:
- 37 new components, 107 pins netted; sheet bumped A4→A3; custom symbols LTC4040EUFD +
AO4406A added to
Drogheda-sym.kicad_sym. - Rail split done:
P2/R7/JP1 → VEH5V·F1/R2/J1-20/J2-18 → SYS5V(P11 cutoff between MAIN5V→SYS5V). JP1's alt rail is now VEH5V (vehicle 5 V, never battery-backed — a fan on the backed-up rail would drain the pack; refine of the old MAIN5V tie). - P4 → 3-pos (BAT+, BAT−, NTC); legacy P4 GND stub wire cut, stale labels removed.
- Fixed a duplicated U2 (two MP1584 instances stacked at the same position — deleted both, re-placed one). Removed 10 stale no_connect flags on header pins that had gained nets.
- New MCU taps live:
CHRG_ENJ2/5 ·CHRG_STATJ2/11 ·CHRG_FAULTJ2/12 ·BYP_CTRLJ2/13 ·NTC_TEMPJ1/15. §6.2 GNDREF note is stale — no placed GNDREF remains on PROD (verified). - Footprints assigned at capture for all new parts except L6 (8040 inductor) and K1 (HFD23 relay) — assigned during layout kickoff.
Fab gate: bench validation of the LTC4040 backup transition + temp-qualified charge cutoff (unchanged).
0. What the prototype schematic already has (the shared core — DO NOT re-draw)
49 parts, ERC-clean. Present and correct on both boards: MCU (J1/J2), MAIN5V/3V3 rails, 24 V reverse-polarity (Q10 IRFR5305 + DzG 15 V Zener + Rrp), TVS D10 + C10/C11, RTK-stack high-side load switch (Q1 AO3401A / Q5 MMBT3904 / R1 / R2 / F1 PPTC / C3), the three sense dividers (BAT PA0, 5V PA4, IGN PA5) incl. on-board ignition chain (Rig + D5 BAT54 + C9), fan low-side driver (Q2 AO3400A + Rg + Rgs + D2 SS34), I²C temp/humidity (U3 SHT40 + U4 TMP102 + R30/R31), status LED (Q4 + D1 + R3 + Rled), connectors P1–P8, H3 (DNP).
The production board keeps all of the above unchanged except the two corrections in §6. Everything in §1–§5 below is added on top.
1. Production delta — summary
| Block | Action | Status |
|---|---|---|
| A. Fan buck U2 | Replace the 3-pin module placeholder with the discrete MP1584 circuit | ✅ fully specified · BUILT |
| B. LTC4040 battery backup | Add charger + power-path + NTC; re-route P2→VEH5V→LTC4040→MAIN5V | ✅ sized 2026-07-02 (§4 values table) — bench-validate before fab |
| C. Reset | Add SW1 (on-board) + P10 (external) → NRST | ✅ fully specified · BUILT |
| D. 4-LED battery gauge | Add D_BAT1–4 + 4×330 Ω on PB12–PB15 | ✅ fully specified · BUILT |
| E. Power cutoff | Add P11 series switch in the post-merge 5 V (kills vehicle and battery) | ✅ node defined (MAIN5V→SYS5V, §5) |
| F. Corrections | Move PA4 sense tap to vehicle side (VEH5V); finish GND unify |
✅ do on both boards |
| G. H1 SWD | DROP (rely on USB-C flash + USB log); optional DNP 4-pad footprint | ✅ decided 2026-06-25 |
| H. Modo-B fail-safe bypass | Add K1 NC signal relay in the uplink (F9P TX2→4G DIN); MCU energizes to insert | ✅ specified 2026-07-02 (§5b) |
| I. NTC→PB1 hot-spot temp | Add P12 NTC connector + 10 k (1 %) divider + 100 nF on PB1 (block 11) | ✅ specified 2026-07-02 (§5c) |
2. New Blackpill pins consumed (WeAct pinout, design §2a)
| Pin | Header | Net | Use |
|---|---|---|---|
| PA8 | J2/5 | CHRG_EN |
LTC4040 CHGOFF — MCU cuts charge when TMP102/PB1 reads cell hot (100 k pull-down = enabled by default) |
| PB12 | J2/1 | BATLED1 |
gauge 25 % (was reserved 2nd-fan-tach spare → reassigned) |
| PB13 | J2/2 | BATLED2 |
gauge 50 % |
| PB14 | J2/3 | BATLED3 |
gauge 75 % |
| PB15 | J2/4 | BATLED4 |
gauge 100 % |
| NRST | J1/5 | NRST |
reset (SW1 + P10) |
| PB1 | J1/15 | NTC_TEMP |
[NEW 2026-07-02] analog hot-spot temp (ADC1_IN9), block 11 |
| PB3 | J2/11 | CHRG_STAT |
[NEW] U6 CHRG open-drain, 100 k↑3V3 (LOW = charging) |
| PB4 | J2/12 | CHRG_FAULT |
[NEW] U6 FAULT open-drain, 100 k↑3V3 (LOW = NTC/bad-battery fault) |
| PB5 | J2/13 | BYP_CTRL |
[NEW] K1 relay driver via Q6 (HIGH = MCU in-line on the Modo-B uplink) |
No peripheral conflict: PB12–15 plain GPIO; PA8 plain GPIO; NRST is the module reset pin.
3. Block A — Discrete fan buck (replace U2 module) ✅
Remove: the U2 = Conn_01x03 placeholder ("MP1584 mod").
Add (values from design §4.2 + production BOM):
| Ref | Value / MPN | Pkg | LCSC | Note |
|---|---|---|---|---|
| U2 | MP1584EN | SOIC-8-EP | C107226 | 24→5.0 V buck |
| L2 | 10 µH ≥1 A | SMD 4×4 | verify | per datasheet |
| R20 | 100 k 1% | 0603 | C25803 | FB top |
| R21 | 19.1 k 1% | 0603 | verify | FB bottom → Vout=0.8·(1+R20/R21)≈5.0 V |
| C22 | 22 µF / 50 V | 1210 | verify | buck input cap |
| C23 | 22 µF / 16 V | 0805 | C45783 | buck output cap |
| Dbk | SS34 | DO-214AC | C8678 | buck freewheel (separate from fan flyback D2) |
| JP1 | 0 Ω / open | 0603 | C21189 | rail select — OPEN = use buck |
Connections (From → To · Net): (pin functions per MP1584 datasheet — confirm exact pin #s at capture)
U2.IN → 24V 24V (protected rail, post-Q10)
U2.EN → 24V - enable (or datasheet EN divider)
C22.1 → 24V 24V input cap at the IC
C22.2 → GND GND
U2.SW → L2.1 SW2_NODE keep switch-node copper tiny
Dbk.K → L2.1 SW2_NODE freewheel cathode to SW node
Dbk.A → GND GND
L2.2 → 5V_FAN 5V_FAN
C23.1 → 5V_FAN 5V_FAN output cap
C23.2 → GND GND
R20.1 → 5V_FAN 5V_FAN FB top
R20.2 → U2.FB FB
R21.1 → U2.FB FB
R21.2 → GND GND
JP1.1 → 5V_FAN 5V_FAN OPEN by default
JP1.2 → MAIN5V MAIN5V close ONLY if upsizing SD-15B-05 (never both)
BST/COMP/SS small caps per MP1584 datasheet (e.g. BST ~10 nF) — add at capture. Keep U2 + L2 + the SW node away from the GNSS antenna feed / P3 (RF, design §8). The existing fan flyback D2 (SS34) across the fan stays as-is.
4. Block B — LTC4040 battery backup ✅ SIZED 2026-07-02 (datasheet 4040fb pass, 12 Ah pack)
Intent (canonical power tree): P2 (vehicle 5 V from SD-15B-05) → VEH5V → RS → U6 power path → VSYS = MAIN5V (the backed-up rail) ; LTC4040 ↔ 1S4P cell on P4 ; NTC on the cell.
LTC4040 architecture: single inductor SW↔BAT works as step-down charger (VSYS→BAT) when input
is good and 2.5 A step-up backup (BAT→VSYS) when PFI trips. A mandatory external NFET (Q7)
between VIN and VSYS (gate = IGATE charge pump) disconnects the dead input during backup. Buck and
boost are internally compensated — no external comp network.
| Ref | Value / MPN | Formula → result | Note |
|---|---|---|---|
| U6 | LTC4040EUFD | — | QFN-24 4×5 mm, EP = GND (stitch) |
| Q7 | NFET 30 V ≥10 A, ≤15 mΩ, SOIC-8 (AO4406A-class) | — | VIN→VSYS disconnect, gate = IGATE |
| RS | 8 mΩ 1 % (1206/2512 sense) | I_SYSLIM = 25 mV/RS → 3.1 A | protects the SD-15B-05 (5 V/3 A); charge sheds first, load prioritized |
| RPROG | 825 Ω 1 % | I_CHG = 2500·(0.8 V/RPROG) = 2000/RPROG → 2.42 A ≈ C/5 | ≤2.5 A max; PROG servos 0.8 V |
| RPF1/RPF2 | 287 k / 100 k 1 % (VEH5V→PFI→GND) | trip = 1.19 V·(1+R1/R2) → 4.60 V falling, ≈4.72 V recover | ⚠ bench-tune if the vehicle rail sags in service |
| RFB1/RFB2 | 499 k / 100 k 1 % (VSYS→BSTFB=RSTFB→GND) | V_backup = 0.8 V·(1+R1/R2) → 4.79 V; RST threshold −7.5 % ≈ 4.43 V | BSTFB+RSTFB shorted, one divider (datasheet) |
| L6 | 2.2 µH, Isat ≥ 8 A, DCR < 20 mΩ (8040 power inductor) | datasheet range 1–2.2 µH; boost NMOS ILIM 5.5–7.5 A | SW↔BAT; tiny SW copper |
| CVIN | 10 µF X5R + 2.2 µF | — | at U6 VIN |
| CVSYS | ≥100 µF low-ESR ceramic (2×47 µF 1210 + 10 µF) | datasheet minimum | backup-transition hold-up |
| CBAT | 22 µF X5R | ≥10 µF required | at U6 BAT |
| RNTB | 10 k 1 % low-drift (VEH5V/VIN→NTC) | with RT1 10 k: datasheet default window | B3380 ideal; B3950 acceptable (trip shifts a few °C — note in bring-up) |
| RT1 | 10 k NTC on the cell (via P4.3) | — | NTC→GND at U6 |
| P4 | JST-XH 3-pos (was 2-pos) | — | 1=BAT+, 2=BAT−, 3=NTC |
| F2/F0 straps | → VSYS · F1 → GND (solder jumpers JP2/3/4) | table: F2=1,F1=0,F0=1 → 4.00 V Li-ion | strap to VSYS not 3V3 so chemistry survives an absent MCU; 4.00 V ≈ 3× cycle life, kinder to hot cells (RCA #1); LiFePO4 = re-strap F2→GND (3.50 V) |
| CHGOFF | net CHRG_EN → PA8 + 100 k pull-down |
>1.2 V = charge OFF | default = charging enabled, NTC still guards |
| BSTOFF | tie GND | — | backup always armed; never float |
| CHRG / FAULT | → PB3 / PB4, 100 k↑3V3 | open-drain | STREAM-log telemetry |
| PFO | test point + DNP 100 k↑ | — | PA4 (VEH5V ÷2) already covers power-fail sensing |
| RST | leave open | — | Blackpill has its own supervisor |
| OVSNS | short to VIN | OVP module unused | input is the regulated SD-15B-05 inside the cabinet; 24 V side carries SPD |
| CLPROG | test point only | I_SYS = V_CLPROG/(32·RS) | unbuffered — do not load |
Connections (From → To · Net):
P2.1 → VEH5V VEH5V vehicle 5 V in (RENAMED from MAIN5V)
P2.2 → GND GND
VEH5V → RS.1 VEH5V RS = input current sense
RS.2 → U6.CLN + Q7.D VIN_SNS (U6.VIN Kelvin at RS.1 side: VIN pin → VEH5V node)
Q7.S → MAIN5V MAIN5V Q7 = VIN→VSYS disconnect NFET, gate → U6.IGATE
U6.VSYS(1,24) → MAIN5V MAIN5V backed-up system rail (feeds §5 cutoff merge)
U6.SW(21,22) → L6.1 SW_BAT keep copper tiny
L6.2 → U6.BAT + P4.1 BAT_PLUS (+ existing BAT_SENSE divider R5.1 stays on BAT_PLUS)
P4.2 → GND GND 1S4P −
P4.3 → U6.NTC NTC RT1 at the cell; RNTB 10 k VEH5V→NTC on-board
U6.PROG → RPROG → GND -
U6.CLPROG → TP -
U6.PFI → RPF1/RPF2 node PFI divider from VEH5V
U6.BSTFB + U6.RSTFB → RFB1/RFB2 node FB divider from MAIN5V
U6.CHGOFF → PA8 CHRG_EN + 100 k → GND
U6.BSTOFF → GND GND
U6.CHRG → PB3 CHRG_STAT + 100 k → 3V3
U6.FAULT → PB4 CHRG_FAULT + 100 k → 3V3
U6.F2/F0 → MAIN5V (VSYS) - via JP2/JP4 ; U6.F1 → GND via JP3
U6.OVSNS → U6.VIN VEH5V OVP unused
U6.EP → GND GND thermal/electrical
Checklist (fab gate unchanged):
Confirm pack Ah→ ~12 Ah (corrected 2026-06-30). RPROG sized (2.42 A ≈ C/5).Size L6, RS, PFI divider, compensation→ table above (internally compensated; no comp parts).Jumper-select charge voltage→ JP2/3/4 straps to VSYS/GND, default 4.00 V Li-ion.- Bench-validate the temp-qualified charge cutoff + backup transition before fab.
- ⚠ Safety-timer note: deep-discharge full recharge (12 Ah @ 2.42 A ≈ 5 h) exceeds the
internal charge safety timer — firmware restarts the cycle via
CHRG_ENwhen the cell is cool andBAT_SENSEis low (see canonical §7 firmware items).
The proto validates this path with the TP4056 + MT3608 + 1N5819 OR-ing + 10 k NTC stand-in (proto BOM). The PCB uses the LTC4040. Only the temp-qualified cutoff is LTC4040-only → validate that in firmware logic.
5. Blocks C / D / E — reset, gauge, cutoff ✅ (E node pending B)
C. Reset
| Ref | Part | Connections |
|---|---|---|
| SW1 | SPST momentary (SOT/SMD tact) | NRST → SW1 → GND |
| P10 | JST-XH 2-pos (external reset) | P10.1 → NRST · P10.2 → GND |
D. 4-LED battery gauge (firmware-driven from BAT_SENSE, HIGH = lit)
| Ref | Part | Connections |
|---|---|---|
| R_BL1..4 | 330 Ω 0603 ×4 | PB12→R_BL1, PB13→R_BL2, PB14→R_BL3, PB15→R_BL4 |
| D_BAT1..4 | LED 0805 ×4 | R_BLn → D_BATn.A ; D_BATn.K → GND |
E. Power cutoff (kills vehicle and battery)
- External switch in series in the post-merge 5 V (LTC4040 VSYS/MAIN5V → system loads).
- Define
SYS5V= MAIN5V after the cutoff; route the Blackpill 5 V pin + load-switch (Q1 source- F1) + the K1 relay coil from
SYS5V. Implement as 2-pos connector P11 to an external switch:P11.1 → MAIN5V · P11.2 → SYS5V. Ship with a jumper plug installed (open P11 = dead board). The PA4 divider taps VEH5V (Block F), not SYS5V.
- F1) + the K1 relay coil from
- Merge/cutoff node finalized with the §4 pass: MAIN5V = U6 VSYS output rail.
5b. Block H — Modo-B fail-safe uplink bypass ✅ NEW 2026-07-02
Requirement (ledger): a dead/absent/hung MCU must never cut RTCM3 corrections. In Modo B the
watchdog sits in-line on the uplink (F9P TX2 → 4G DIN) to inject $PHLG; the RTCM3 downlink
(4G DOUT → F9P RX2) is always direct and never enters the MCU.
Implementation: SPDT signal relay, normally-closed — chosen over an analog mux because a mux dies with the 3V3 rail; relay contacts keep the direct path even with the Blackpill physically removed or the board unpowered.
| Ref | Part | Note |
|---|---|---|
| K1 | SPDT signal relay, 5 V coil (HFD23/005-class) | NC = direct path; coil ~30 mA only while MCU inserted |
| Q6 | MMBT3904 (SOT-23) | low-side coil driver |
| R40 / R41 | 1 k (PB5→base) / 10 k (base→GND) | default OFF |
| D6 | 1N4148 (SOD-123) | coil flyback |
| P13 | JST-XH 3-pos | 1 = F9P_TX2 · 2 = 4G_DIN · 3 = GND |
P13.1 → K1.NC + PA10 F9P_TX2 PA10 = passive monitor tap (USART1 RX)
K1.COM → P13.2 4G_DIN
K1.NO → PA9 PA9_TX MCU uplink (USART1 TX, $PHLG injection)
SYS5V → K1.coil+ SYS5V
K1.coil− → Q6.C ; Q6.E → GND ; PB5 → R40 → Q6.B ; R41 B→GND ; D6 across coil (K→SYS5V)
De-energized (default, MCU dead, board cut off): NC closes F9P TX2 → 4G DIN — corrections and position flow exactly as if the watchdog weren't there.
5d. Block J — CARRIER-BOARD sockets (F9P + 4G on the board) ✅ NEW 2026-07-02 (PM)
Decision (Leo): the PROD board is now the HBOX carrier/motherboard — all three modules ride on female headers: Blackpill (J1/J2, already socketed), simpleRTK2B Pro as an Arduino-UNO-form shield (MOD1), and the 4G NTRIP Master on its own XBee socket (J7/J8). Board grown 100×80 → 120×100 mm (Leo approved; ASA case/plate to be reprinted).
| Ref | Part | Note |
|---|---|---|
| MOD1 | 4× UNO female headers (10+8+8+6, 2.54 mm) | footprint Module:Arduino_UNO_R3; custom symbol SimpleRTK2B_Pro_Socket in Drogheda-sym |
| J7/J8 | 2× PinSocket 1×10, 2.00 mm | XBee socket, rows 22.35 mm apart (J7 = pins 1–10 row) |
MOD1 pin map (pads = KiCad UNO footprint; functions verified against the official
pinout-simpleRTK2B_Pro-R00 image + UNO geometry cross-check):
D0 = TX1 (F9P UART1 TX) → GNSS_RX (PA3) power hdr: 5V → SW_5V (Pro's "5V=OUTPUT" sw OFF)
D1 = RX1 (F9P UART1 RX) → GNSS_TX (PA2) IOREF → 3V3 (defines TX/RX levels)
D2 = RX2 (F9P UART2 RX) → DOUT_4G (RTCM3 in, direct) GND ×3 → GND
D8 = TX2 (F9P UART2 TX) → USART1_RX (K1.NC + PA10 tap) 3V3/VIN/RESET/A0–A5/D3–D7/D9–D13/
AREF/SDA/SCL → NC (per Ardusimple:
don't connect unused special pins)
XBee socket: J7.1 VCC → 3V3_MODEM (⚠ the Pro's HP socket spec is 3.3 V, 1 A/1.5 A pk
— NOT 5 V; the old "socket gives 5 V" note was wrong) · J7.2 DOUT → DOUT_4G → F9P RX2
(RTCM3 direct, never through the MCU) · J7.3 DIN ← K1.COM (DIN_4G) · J7.10 GND. J8 all NC.
Consequences: Modo B is now the permanent uplink architecture with the K1 NC bypass as the hardware fail-safe (dead/absent MCU ⇒ TX2→DIN direct). The F9P's own XBee socket stays EMPTY; its XBEE↔UART switch parks on UART1 so UART2 stays on the rails. P3 / P13 / H3 → DNP (harness alternatives for non-socketed installs).
5e. Block K — 3V3_MODEM buck (U7) ✅ NEW 2026-07-02 (PM)
The modem needs 3.3 V @ ≥1.5 A pk — too much for the Blackpill's LDO, and an LDO from 5 V would
burn ~1.7 W. Second MP1584EN (U7, same BOM as Block A) fed from SW_5V so the watchdog's
stack power-cycle also reboots the modem (invariant #3):
U7: VIN/EN=SW_5V · SW→L7 10 µH→3V3_MODEM · FB R60 100k / R61 31.6k (→3.33 V) · Dbk2 SS34 · Cbst2 10 nF · Rfreq2 100k · Rcomp2 40.2k + Ccomp2 2.2 nF · C40 22 µF in · C41 22 µF + C43 100 µF elco out (LTE bursts).
Build status (2026-07-02 PM) — carrier conversion BUILT
MOD1 + J7/J8 + Block K captured; ERC 0 errors (82 cosmetic). Board 120×100, outline + GND pour resized, holes at (5,5)(115,5)(5,95)(115,95). Placement: shield field center-bottom (courtyard ≈ x22.6–98, y45–99) with only SMD ≤6 mm underneath (LTC4040 block, dividers, I²C, NTC, Rdfu); Blackpill sockets horizontal above it; XBee rows vertical right (module field x≈92–119, y26–44); K1/relay + buck A top-right; all operator/access parts (SW1, gauge, JSTs, P1) outside the shield. DRC: 87 pre-route errors — ~55 are the by-design under-shield courtyard overlaps vs MOD1 + ~29 sub-mm courtyard kisses left for the placement review. ⚠ Review notes: P3 (DNP) sits in the shield's notch corner; J8 is 1.2 mm from the board edge; verify D2/D8 = RX2/TX2 against a physical Pro before routing (positions read from the official pinout image).
5c. Block I — NTC→PB1 hot-spot temperature (block 11) ✅ NEW 2026-07-02
| Ref | Part | Note |
|---|---|---|
| R42 | 10 k 1 % (3V3 → PB1 node) | divider top |
| P12 | JST-XH 2-pos | external 10 k NTC (B≈3950), placed at the hot spot (battery/modem) |
| C24 | 100 nF (PB1 → GND) | ADC settling |
3V3 → R42 → PB1 (+C24) → P12.1 ; P12.2 → GND. ≈1.65 V @ 25 °C; firmware Beta/Steinhart;
can drive the CHRG_EN cutoff. This is the proto's temperature path (no SHT40 in hand);
the PCB keeps U3/U4 (I²C) and this channel.
6. Corrections to make on BOTH boards (proto + production) ✅
- PA4 5V-sense tap → vehicle side (live Finding 3). With the LTC4040 backing MAIN5V,
R7.1must move fromMAIN5VtoVEH5V(the P2/SD-15B-05 node, before hold-up). On the proto (no LTC4040) MAIN5V == vehicle 5 V so it's harmless there, but make the netVEH5Vnow so both boards match and production is correct. Without this,v5vnever drops belowV5V_OFF,vehiclePowernever clears, and the cell drains. - Finish the GND unify. The file still has 4
power:GNDREFsymbols (canonical §4 claimed these were converted topower:GND— not persisted). Convert all 4 topower:GND(or wire them to the GND-label net) and re-run ERC, or ground splits into GND vs GNDREF.
7. Open decisions / flags
- H1 (SWD header) — DECIDED 2026-06-25: DROP. SWD (PA13/PA14) isn't on the Blackpill
2×20 socket — it's on the module's own separate SWD header — so a carrier H1 buys nothing the
USB-C path doesn't already give: flashing via USB DFU (BOOT0), diagnostics via the USB CDC
STREAM log. Optional: lay an unpopulated (DNP) 4-pad SWD footprint (3V3 / SWDIO /
SWCLK / GND) for bench bring-up; if ever used, jumper SWDIO/SWCLK to the module's SWD header.
Remove or mark DNP the H1 rows in
watchdog-connections.xlsxandwatchdog-pcb-v3-bom.xlsx. - PB12 reassigned from "2nd-fan-tach spare" to gauge BATLED1 (fans are 2-wire, no tach — canonical open item). PB10 tach stays a DNP provision.
- JP1 stays OPEN (dedicated fan rail). Only close if SD-15B-05 is upsized to 5 V/5 A.
8. Build mechanics
- Production project copy already created:
kicad/hbox-watchdog-v3-PROD.kicad_{pro,sch,pcb}(the proto file is untouched — it was open in KiCad). - I can generate this in KiCad once the KiCad backend is back up and the proto is closed
(so there's no file conflict). Suggest also renaming the proto to
…-protoonce you're out.
Related
- watchdog-electrical-design-state (CANONICAL) · watchdog-pcb-v3-design (§4 sub-circuits) ·
watchdog-connections-rationale (Finding 3) ·
watchdog-connections.xlsx·watchdog-pcb-v3-bom.xlsx·kicad/hbox-watchdog-v3-PROD.kicad_sch