Skip to content

feat(pcb): per-console power distribution + monitoring CAN node (PDU) — INA180 telemetry #202

Description

@mottihoresh

Body consolidated 2026-07-08 — the original exploratory scope (below-the-fold history in comments) converged over 6 comments into a built board. This body now reflects current state; the comment thread holds the decision history.

Status — hardware done, awaiting boards

Per-console Power Distribution + Monitoring CAN node (PDU). PCB routed, DRC 0/0, ERC-cleanPR #217 (pcb/pdu-power-202 → main). Bare boards ordered (JLCPCB, in transit); LCSC components pending (batched with the Right-Nav order). Firmware split → #216. Rev1 = instrumentation-first (measure real cockpit load, let data drive final fuse/shunt sizing).

Role / architecture

  • ~3 PDUs, one per console (Left · Right · Main Instrument). Each injects + monitors + fuses its console's power locally.
  • Sits PSU → PDU → console J_BUS. GND + CAN stay continuous across all PDUs; +12V/+5V are segmentable (a heavy zone dead-ends its OUT power pins → next zone gets a fresh injected feed).
  • Built on the PanelGroup base (STM32F103C8 + SN65HVD230 CAN + AMS1117) + design-block library (feat(pcb): OpenSkyhawk Design Block library (reusable power/CAN/MCU/harness circuits) #201). Own NODE_ID.

Locked design (supersedes the original body — see DESIGN-NOTES.md for full BOM/rationale)

Function Part Note
Current sense ×2 INA180A2 (SOT-23-5, gain 50) + 0.1%/25 ppm dividers → STM32 ADC analog high-side; NOT INA219/INA226 (relaxed accuracy → cheaper, inspectable SOP; INA219 = documented fallback if absolute-V ever needed; INA3221 QFN-banned)
Shunt ×2 CSRF2512 10 mΩ 2512 (C346481) Kelvin (4-terminal) via pad routing; footprint swappable
Voltage sense 0.1%/25 ppm dividers, both sides of each fuse rail-V + fuse-open detect
Temp NTC B3450 ±1% + STM32 internal sensor TMP117 dropped (WSON-banned)
Fuse ×2 12V 5 A · 5V 2 A MINI blade + holder source-side, off-board consumable; GND never fused
PSU input Mini-Fit Jr 6-pin (2×+12V / 1×+5V / 3×GND) J_PSU_IN
Bus ×2 Mini-Fit Jr 8-pin J_BUS_IN/OUT connector split dropped — CAN/power split is a Y-harness into the fabbed 8-pin J_BUS
Input TVS D1 SMBJ12A (12V) · D2 SMBJ6.0A (5V, LCSC C5331096) per the #214 input-rail standard
  • Copper: large pours (12V 6–10 mm / 5V 5–8 mm / GND max, via-stitched) — sized for Kelvin accuracy + thermal margin, not current (a console is ~2–3 A). Fuse-aware neck rule: ≥2 mm per-console, ≥5 mm whole-bus.
  • Servo power (new standard): 12V rail → local buck → servos, never logic 5V (+ bulk cap + polyfuse). Servos become a 12V load (captured by the 12V INA180); keeps 5V monitoring clean.
  • Fault bitmap (over CAN): 12V/5V UV · 12V/5V OV · overcurrent · fuse-open · sensor-fail · CAN-fail · temp warn · temp critical.

Remaining before this closes

Split off / related

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthardwarePCB, KiCad, and hardware designneeds testingFirmware / Code is complete including unit tests, final bench testing needs to be done.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions