← battery-power-input

Circuit review & bench-test guide

battery-power-input — AruviX robot battery power board

Design-stage — board not yet fabricated

Document purpose#

This document explains the battery-power-input board at component level and turns the design evidence into a practical manual-review and bench-test plan. It is based on the authoritative generator (generate_design.py), the project README, the ERC report, and the manufacturer datasheets cited in section 6.

This board has NEVER been fabricated. The design status is schematic capture only: ERC passes with 0 errors / 0 warnings (--severity-all, reports/erc.rpt) and the netlist membership was verified (23 nets / 123 pin memberships), but no PCB layout exists, no board has been ordered, and there is no first-article bench result of any kind. Every number in this document is a calculated design target to verify, not a proven result. Several MPNs are still marked TBD-confirm in the generator (fuse, 22 µF bulk capacitors, shunt) and must be resolved before ordering.

1. What the board does#

The board is the robot power foundation: a 2S or 3S hobby LiPo pack (6.4–12.6 V) enters on a screw terminal, passes a 5 A fuse, a reverse-polarity ideal-diode P-FET, a 16 V TVS clamp, and a 10 mΩ INA226 current shunt, then fans out to three outputs: a raw metered battery rail (VBAT_OUT, for motor rails / robot-power-dist) and two independent 2 A synchronous bucks — AP63205WU (5 V) and AP63203WU (3.3 V). All battery telemetry (bus voltage, current, power, programmable alert) leaves the board on I2C at address 0x40 via a Qwiic connector and an optional pin header.

It is not a BMS: there is no cell-level monitoring, balancing, charge control, or hard low-voltage cutoff on the raw rail. The buck EN dividers implement a selectable 2S/3S input-UVLO floor for the logic rails only; VBAT_OUT stays live below that floor. Host software owns low-voltage policy via the INA226.

Functional block diagram#

2S/3S LiPo (XT60 pigtail)
        │
        v
J1 screw terminal ──> F1 5 A fuse ──> Q1 DMP4015SSS ──> VBAT_P
   1 BATT+  2 GND     (VBAT_FUSED)    ideal-diode P-FET    │
                                      D on battery side    ├── D1 SMBJ16A TVS
                                      S on load side       ├── C1,C2 2x22 µF + C3 100 nF
                                      gate: R2 100k to GND ├── R6/R7(+R8,JP3) UVLO div (5 V)
                                      D2 10 V VSG clamp    └── R9/R10(+R11,JP4) UVLO div (3V3)
        VBAT_P
          │
          v
   R1 10 mΩ shunt ── U1 INA226 (IN+ = VBAT_P, IN− = VBUS = VBAT_OUT)
          │              │  I2C 0x40, ALERT ── R3 10k pull-up
          v              └──> J5 Qwiic / J6 header (DNP), R4/R5 4.7k + JP1/JP2
       VBAT_OUT
          ├────────────> J2 raw motor rail (LIVE below UVLO)
          │
          ├──> U2 AP63205WU ── L1 4.7 µH ──> 5V_OUT ──> J3   (D3 green LED)
          │    C5/C6 in, C9 BST, C7/C8 out, EN from R6/R7 divider
          │
          └──> U3 AP63203WU ── L2 3.3 µH ──> 3V3_OUT ──> J4  (D4 green LED)
               C10/C11 in, C14 BST, C12/C13 out, EN from R9/R10 divider

2. Safety and scope boundaries#

2.1 LiPo pack safety — read before anything else#

Lithium-polymer packs store enough energy to start a fire, and unlike a lab supply they have no current limit: a shorted 3S hobby pack can deliver hundreds of amps until something burns or the pack vents. This board's protection (fuse, reverse FET, TVS) is unverified — treat it as absent until phase-by-phase bench results say otherwise.

2.2 General bench boundaries#

3. Power-control sequence#

  1. With nothing attached, all nets are dead. Q1's gate is held to GND by R2 (100 kΩ), but with no battery there is no VGS and no channel.
  2. Battery attaches at J1 (or the current-limited bench supply masquerading as it). Current flows J1 → F1 → Q1. Q1 is oriented as an ideal diode: drain to the battery (VBAT_FUSED), source to the load (VBAT_P), gate to GND. The body diode (anode = drain, cathode = source) conducts first, lifting VBAT_P to about VBAT − 0.7 V.
  3. As soon as VBAT_P rises, VGS = −VBAT_P appears across gate–source (gate at 0 V via R2, source at VBAT_P). DMP4015SSS VGS(th) is −1.5 to −2.5 V, and RDS(on) is specified at −4.5 V and −10 V, so at 6.4 V minimum pack voltage the channel is fully enhanced and the diode drop collapses to I×RDS(on) (≤15 mΩ at −4.5 V drive). D2 (BZT52H-C10) clamps VSG to about 10 V so a 12.6 V 3S pack cannot approach the ±25 V VGS abs max; roughly 26 µA flows through D2/R2 at 12.6 V.
  4. If the battery is reversed, the body diode is reverse-biased and VGS ≥ 0 keeps the channel off: no current flows, nothing downstream sees the negative voltage. This is the entire reverse-protection story — verify Q1's orientation before trusting it (section 9, phase A).
  5. VBAT_P charges C1/C2/C3; D1 (SMBJ16A, 16 V standoff) sits across the rail and only conducts on surges above its 17.8 V minimum breakdown.
  6. VBAT_P feeds the two UVLO dividers (R6/R7 and R9/R10, pre-shunt, so their ~21 µA each is unmetered) and the shunt R1. Everything downstream of R1 — J2 and both bucks — is metered by U1.
  7. Each buck enables when its EN divider crosses 1.18 V (rising): 5.96 V battery threshold with JP3/JP4 open (2S), 9.00 V bridged (3S). The AP632xx runs a fixed internal 4 ms soft-start, then regulates at 1.1 MHz. Falling thresholds: 5.36 V (2S) / 8.20 V (3S).
  8. D3 (green, via R12 1 kΩ) lights on 5V_OUT; D4 (green, via R13 470 Ω) lights on 3V3_OUT. The AP632xx WU parts have no power-good pin — the LEDs indicate voltage presence only, not regulation accuracy.
  9. U1 (INA226) powers from 3V3_OUT, so telemetry is only alive once the 3.3 V buck is up — below the buck UVLO the board is unmetered even though VBAT_OUT is live. Host software must treat missing telemetry as an alarm, not as zero current.

4. Interfaces: connectors, test points, jumpers#

The schematic defines no dedicated test points; bench probing uses the connector screw terminals and the passives named below. Adding TPs on VBAT_FUSED, VBAT_P, EN_5V, EN_3V3, SW_5V, and SW_3V3 is a recommended layout action.

ReferencePins/signalsIntended use
J11 BATT+, 2 GND (Phoenix MKDS 3, 5.08 mm)Battery input via XT60 pigtail, 6.4–12.6 V, ≤5 A
J21 VBAT_OUT, 2 GND (MKDS 3)Raw metered battery out (motor rail). Live below UVLO
J31 5V_OUT, 2 GND (MKDS 1,5)5 V / 2 A output
J41 3V3_OUT, 2 GND (MKDS 1,5)3.3 V / 2 A output
J51 GND, 2 3V3, 3 SDA, 4 SCL (JST-SH, Qwiic order)I2C telemetry to host
J61 GND, 2 3V3, 3 SDA, 4 SCL, 5 ALERT (1x05 header, DNP)Development telemetry + ALERT
JumperDefaultMeaning
JP1bridgedSDA 4.7 kΩ pull-up (R4) in circuit; cut if host bus has pull-ups
JP2bridgedSCL 4.7 kΩ pull-up (R5) in circuit; cut if host bus has pull-ups
JP3open = 2SBridge for 3S: parallels R8 (18 k) into the 5 V buck UVLO divider
JP4open = 2SBridge for 3S: parallels R11 (18 k) into the 3.3 V buck UVLO divider

Useful probe nodes: J1 pin 1 (BATT_P), the F1 clip on the Q1 side (VBAT_FUSED), either C1/C2/C3 pad (VBAT_P), either side of R1 (VBAT_P / VBAT_OUT — this pair is the shunt-drop measurement), J2 pin 1 (VBAT_OUT), R7/R10 top (EN_5V / EN_3V3), L1/L2 pads (SW and output nodes).

5. Component-by-component review#

5.1 Input protection chain#

Ref.Part / valueFunction and why neededIf absent/openIf wrong value / misassembled
J1Phoenix MKDS 3/2-5,08 screw terminalBattery input; rated well above 5 A; XT60 pigtail lands here (no stock XT60 footprint)No powerSwapped wiring = reverse-polarity event (Q1 must save the board); loose screw at 5 A heats and drops voltage
F15 A fast 5×20 fuse in Keystone 3517 clips (MPN TBD: Littelfuse 0217005.MXP)Wiring protection: opens the pack on a downstream hard shortNo power (open fuse)Slow-blow or oversized fuse lets a fault cook wiring/traces; undersized nuisance-trips at motor stall currents
Q1Diodes DMP4015SSS-13, −40 V P-FET, SO-8 (pins 1–3 S, 4 G, 5–8 D)Reverse-polarity ideal diode: drain to battery, source to load, gate to GND. Correct polarity: body diode conducts, then channel enhances (≤15 mΩ). Reverse: blocksNo power at all (VBAT_P never rises)Installed backwards (D/S swapped): reverse protection is gone — the body diode conducts a reversed pack into the board. Rotated 180° in the SO-8: gate lands on a drain pin, part never enhances, body-diode drop (~0.7 V, 3.5 W at 5 A) overheats it
D2Nexperia BZT52H-C10 zener, SOD-123FClamps Q1 VSG to ~10 V on 3S packs (VGS abs max ±25 V — clamp adds margin; the working divider is R2)Q1 sees full −12.6 V VGS — within rating, but no transient marginShorted D2 ties gate to source: Q1 never enhances, runs on body diode and overheats under load. Reversed: clamps at ~0.9 V forward, same never-enhances symptom
R2100 kΩReturns Q1 gate to GND so VGS = −VBAT develops; sets ~26 µA zener bias at 12.6 VGate floats: Q1 state undefined, may sit on body diode (hot at load)Much lower value wastes battery (e.g. 1 k = 12.6 mA); open behaves as absent
D1Littelfuse SMBJ16A TVS, 600 W, SMBClamps positive surges on VBAT_P (motor regen, hot-plug inductance). 16 V standoff clears 12.6 V full-charge 3S; VBR 17.8–19.7 V; VC(max) 26 V at 23.1 ADownstream sees unclamped transients (AP632xx VIN abs max 35 V DC gives headroom, but hot-plug ringing is unbounded)Reversed: conducts at ~0.7 V forward — board clamps its own battery, F1 blows or D1 burns. Lower-voltage variant (e.g. SMBJ12A) conducts on a healthy 3S pack
C1, C222 µF 25 V X7R 1210 (MPN TBD-confirm: GRM32ER71E226KE15L)Bulk reservoir for buck input pulses and motor-rail steps; absorbs hot-plug inductive energy with D1More rail bounce/ringing at hot-plug and load steps; buck input ripple worsens6.3/10 V-rated substitute risks failure at 12.6 V; Y5V/low-voltage parts lose most capacitance at bias
C3100 nF 50 V X7RHigh-frequency decoupling of the battery railSlightly worse HF noise; benign aloneShorted = battery-rail short (F1 opens)

5.2 Telemetry (INA226 and I2C)#

Ref.Part / valueFunction and why neededIf absent/openIf wrong value / misassembled
R110 mΩ 1 % 3 W 2512 (MPN TBD-confirm: Vishay WSLP2512R0100FEA)Current shunt: ±81.92 mV FS / 10 mΩ = ±8.19 A range; 50 mV drop and 0.25 W at the 5 A fuse rating (3 W part → healthy margin)Board is dead downstream — R1 is in the main power path (J2 and both bucks lose power)Wrong value silently scales every current/power reading (e.g. 100 mΩ part reads 10× and drops 0.5 V at 5 A; the pinned Bourns CSS2H-2512R-L100F is 0.1 mΩ — reads 1/100×, do not substitute). Poor solder on a 2512 at 5 A is a hot spot
U1TI INA226AIDGSR, VSSOP-10High-side monitor: 16-bit shunt+bus ADC, current/power engine, ALERT. IN+ = VBAT_P, IN− and VBUS = VBAT_OUT; VS = 3V3_OUT; A0 = A1 = GND → 0x40No telemetry; power still flows (sense pins are parallel taps)IN+/IN− swapped: current reads negative. VBUS left on the supply side would read pre-shunt voltage (design reads post-shunt). Wrong address strap moves the device off 0x40
C4100 nF 16 V X7RU1 VS decoupling (datasheet-required)ADC noise/reset sensitivityShorted = 3V3 rail short
R310 kΩALERT open-drain pull-up to 3V3_OUTALERT floats — host reads garbage/never sees alertsToo small loads the pin (10 mA IOUT abs max is far away at 0.33 mA; fine)
R4, R54.7 kΩSDA/SCL pull-ups to 3V3_OUT, behind JP1/JP2With jumpers cut too: bus floats, no ACKs, telemetry deadDoubled-up with host pull-ups: combined <2 k still legal at 400 kHz but check VOL margins
JP1, JP2Solder jumpers, bridgedRemove board pull-ups when host provides them(cut) see R4/R5
J5JST SM04B-SRSS-TB (Qwiic)Host telemetry; 1 GND, 2 3V3, 3 SDA, 4 SCL — SparkFun Qwiic orderNo telemetry to hostA non-Qwiic-pinned cable puts 3V3 on SDA — check before plugging a new cable
J61×05 header, DNPDev telemetry + ALERT (Qwiic cannot carry ALERT)ALERT unusable off-boardPopulate only for development

5.3 5 V buck (AP63205WU)#

Ref.Part / valueFunction and why neededIf absent/openIf wrong value / misassembled
U2Diodes AP63205WU-7, TSOT-23-63.8–32 V in, 5 V / 2 A synchronous buck, 1.1 MHz, 22 µA IQ, internal compensation, 4 ms soft-start, hiccup OCP (HS peak limit 2.5–3.1 A), 150 °C thermal shutdownNo 5 V railAP63200/01 (adjustable, 500 kHz) in the same package regulates to 0.8 V at FB — a wrong-variant board puts ~0.8 V on 5V_OUT. Rotated part shorts VIN to SW
C510 µF 25 V X5R 0805U2 input capacitor (datasheet Table 3)Input ripple current returns through C1/C2 far away — SW ringing, possible misbehavior; never run the buck without itLow-voltage part derates hard at 12.6 V
C6100 nF 50 V X7RU2 input HF decouplingWorse input spikes/EMIShorted = VBAT_OUT short
C9100 nF 50 V X7RBootstrap BST→SW (datasheet §13): supplies the high-side N-FET gate driveHigh-side switch cannot turn on: no or erratic 5 V outputWrong node (BST→GND) breaks switching similarly
L1Coilcraft XAL7030-472MEC, 4.7 µH, Isat 10.1 A, DCR 26 mΩEnergy-transfer inductor (datasheet Table 3 value). ΔI_L at 12.6 V in = 5·(12.6−5)/(12.6·1.1 MHz·4.7 µH) = 0.58 A (29 % of 2 A); peak at 2 A load = 2.29 A vs 10.1 A IsatNo output (open power path)Too-small L raises ripple/peak current; saturating inductor (undersized Isat) causes current-limit trips and heat. 10.1 A Isat is deliberately generous
C7, C822 µF 25 V X7R 1210Output capacitors, 2×22 µF per datasheet Table 3; set ripple and load-step droop with the internal compensationLarge ripple, droop, possible loop instability — the internal compensation assumes ~2×22 µFBig deviations (e.g. one 4.7 µF) risk regulation quality; verify with load-step test
R646.4 kΩ 1 %UVLO divider top, VBAT_P→EN_5V (EN abs max 35 V allows direct divider)EN floats low through R7 → buck never startsWrong value shifts both thresholds (math in section 7)
R711.3 kΩ 1 %UVLO divider bottom: 2S trip ON 5.96 V / OFF 5.36 VEN pulled to VBAT_P → buck runs to its internal 3.5 V POR — defeats pack protection floorWrong value shifts thresholds; verify by sweep (section 9E)
JP3Solder jumper, openBridge for 3S: parallels R8 into the divider → ON 9.00 V / OFF 8.20 V(open = 2S default)Bridged with a 2S pack: buck refuses to start below 9.00 V — looks like a dead 5 V rail
R818 kΩ 1 %3S UVLO parallel resistor (behind JP3)3S position falls back to 2S thresholdsWrong value shifts 3S thresholds only
R121 kΩ5 V LED resistor (~3 mA)LED darkVery low value wastes current
D3Kingbright APT1608SGC green 06035 V presence indicator (no PG pin on AP632xx)No indicationReversed = dark; indicates presence only, not accuracy
J3Phoenix MKDS 1,55 V output terminalLoose screw heats at 2 A

5.4 3.3 V buck (AP63203WU)#

Ref.Part / valueFunction and why neededIf absent/openIf wrong value / misassembled
U3Diodes AP63203WU-7, TSOT-23-6Same silicon family as U2 with 3.3 V fixed output; feeds logic and U1's VSNo 3.3 V rail and no telemetryVariant/orientation risks identical to U2
C10, C1110 µF 25 V X5R + 100 nFU3 input capacitorsAs C5/C6As C5/C6
C14100 nF 50 V X7RBootstrap BST→SWHigh-side drive lost, no 3.3 VAs C9
L2Coilcraft XAL7030-332MEC, 3.3 µH, Isat 12.3 A, DCR 19.5 mΩDatasheet Table 2 says 3.9 µH; 3.3 µH is the nearest stock XAL7030. ΔI_L at 12.6 V = 3.3·(12.6−3.3)/(12.6·1.1 MHz·3.3 µH) = 0.67 A (34 %, inside the 30–50 % window); peak 2.34 A vs 12.3 A IsatNo outputAs L1
C12, C1322 µF 25 V X7R 1210Output capacitors (2×22 µF, Table 2)As C7/C8As C7/C8
R9 / R1046.4 kΩ / 11.3 kΩ 1 %UVLO divider, identical math to R6/R7 (2S: ON 5.96 V / OFF 5.36 V)As R6/R7 — note EN pulled high defeats the floorAs R6/R7
JP4 / R11open / 18 kΩ 1 %3S select: ON 9.00 V / OFF 8.20 V bridgedAs JP3/R8As JP3/R8
R13470 Ω3.3 V LED resistor (~2.5 mA)LED dark
D4Kingbright APT1608SGC green 06033.3 V presence indicatorNo indicationReversed = dark
J4Phoenix MKDS 1,53.3 V output terminalLoose screw heats at 2 A

6. Datasheet summary and design interpretation#

DeviceKey manufacturer facts (verified against the cited document)Board-specific interpretation
AP63203WU / AP63205WU (DS41326 Rev. 3-2 datasheet, AP63205 product page)VIN 3.8–32 V operating, 35 V DC abs max (40 V/400 ms); EN abs max 35 V; fsw 1.1 MHz ±6 % FSS; IQ 22 µA (PFM at light load); EN precision threshold 1.18 V rising / 1.10 V falling, pull-up 1.5 µA off → 5.5 µA on (4 µA hysteresis source); UVLO Eq.1 R5=(0.932·VON−VOFF)/4.1 µA, Eq.2 R6=1.1·R5/(VOFF−1.1+5.5 µA·R5); internal 4 ms soft-start; HS peak current limit 2.5/2.8/3.1 A min/typ/max, hiccup after 2 ms at limit, ~16 ms off; internal VIN POR 3.3–3.7 V rising; thermal shutdown +160 °C typ; VOUT accuracy ±1 % (4.95–5.05 V / 3.27–3.33 V in CCM); Tables 2/3: L = 3.9 µH (3.3 V) / 4.7 µH (5 V), CIN 10 µF, COUT 2×22 µF, CBST 100 nF; TSOT-26 θJA 89 °C/W12.6 V max input sits far inside 32 V. The EN divider math in section 7 uses the datasheet thresholds, not the task-pin estimate. Fixed-output parts tie FB directly to VOUT — there is no external divider to get wrong, but a wrong variant (AP63200/01) would regulate FB to 0.8 V. Hiccup behavior means an overload shows as a repeating ~16 ms burst pattern, not a latched shutdown
INA226 (SBOS547B datasheet, product page)VS abs max 6 V, operating 2.7–5.5 V; IN± common-mode −0.3 to +40 V abs max (0–36 V operating); shunt FS ±81.92 mV, LSB 2.5 µV; bus 0–40.96 V FS, LSB 1.25 mV, 36 V max applied; CAL = 0.00512/(Current_LSB·R_shunt); Power LSB = 25 × Current_LSB; Current = ShuntReg×CalReg/2048; config reg 00h default 0x4127 (1 avg, 1.1 ms/1.1 ms, continuous shunt+bus); registers: 01h shunt, 02h bus, 03h power, 04h current, 05h cal, 06h mask/enable, 07h alert limit, FEh mfr ID 0x5449, FFh die ID 0x2260; A0=A1=GND → 7-bit address 0x40; ALERT open-drain, active-low default, latch/polarity via 06h bits LEN/APOL; I2C to 2.94 MHzWith the 10 mΩ shunt the natural range is ±8.19 A and Current_LSB = 0.25 mA (section 7 works the CAL value to 0x0800). VBUS is wired to the load side (VBAT_OUT), so bus readings are post-shunt — at 5 A they read 50 mV below the pack. VS comes from 3V3_OUT: telemetry dies below buck UVLO while the raw rail stays live
DMP4015SSS (datasheet DS35416 Rev. 12-2, product page)−40 V VDS, ±25 V VGS abs max; VGS(th) −1.5/−2/−2.5 V min/typ/max; RDS(on) 7 typ/11 max mΩ at −10 V, 9/15 mΩ at −4.5 V; body diode VSD −0.7 typ/−1.0 max V at −1 A; ID −8.8 to −10.1 A at 25 °C (2 oz Cu); SO-8 pins 1–3 source, 4 gate, 5–8 drain; θJA 70 °C/W (2 oz + vias)At 6.4 V minimum pack the −6.4 V drive lands between the two RDS(on) test points → expect ≤15 mΩ, i.e. ≤75 mV drop and ≤0.38 W at the 5 A fuse limit. D2 clamps VSG well below the ±25 V rating. Note the README/generator quote ±20 V for VGS max — the datasheet says ±25 V; either way 10 V clamped is safe
SMBJ16A (SMBJ series datasheet, product page)600 W 10/1000 µs unidirectional TVS; VR (standoff) 16 V; VBR 17.8–19.7 V at 1 mA; VC max 26.0 V at IPP 23.1 A; SMB (DO-214AA)Standoff clears 12.6 V full-charge 3S with margin; leakage is negligible in normal operation. Worst-case 26 V clamp is inside the AP632xx 35 V DC abs max and the INA226 40 V common-mode abs max — unlike the sister PD board, there is no clamp-vs-abs-max gap here, but this is a calculated claim, not a surge-tested one
BZT52H-C10 (BZT52H series datasheet)SOD-123F zener, C10 = 10 V nominal (±5 % class), Ptot 375–830 mW mounting-dependent, IF max 250 mA, VF ≤0.9 V at 10 mA; pin 1 = cathode (marking bar)Dissipation is microwatts (~26 µA bias). Cathode must face Q1's source (VBAT_P); a reversed part forward-conducts and pins VSG near 0.9 V — Q1 never enhances
XAL7030 inductors (Coilcraft Doc 863)472: 4.7 µH, Isat 10.1 A, DCR 26 mΩ; 332: 3.3 µH, Isat 12.3 A, DCR 19.5 mΩ; shielded compositeSaturation margins are >4× the calculated 2.3 A peaks; DCR loss ≤0.1 W at 2 A

Check the latest datasheet revision and exact orderable suffix before procurement; the Diodes and Littelfuse links above resolve from a browser but reject some automated fetchers.

7. Expected values before bench testing#

All values are calculated from generate_design.py values and the cited datasheets. None has ever been measured on this design.

7.1 DC operating points#

QuantityDesign target / calculated rangeWhat to measure
Input range6.4–12.6 V (2S–3S)J1 with bench supply
Q1 drop, enhanced≤15 mΩ → ≤30 mV at 2 A, ≤75 mV at 5 AVBAT_FUSED→VBAT_P differential
Q1 drop, body diode only (fault indicator)~0.5–1.0 VSame nodes — this reading means Q1 is not enhancing
Shunt drop10 mV/A: 20 mV at 2 A, 50 mV at 5 AAcross R1 (differential/DMM)
5V_OUT4.95–5.05 V (±1 %, CCM)J3, calibrated DMM
3V3_OUT3.27–3.33 VJ4
Buck IQ contribution~22 µA each, no load, PFMInput current at no load (expect total idle well under 1 mA incl. dividers and INA226's 330 µA)
LED currentsD3 ≈ 3 mA, D4 ≈ 2.5 mAImplied in idle current

7.2 UVLO thresholds — the math to verify on the bench#

Datasheet model (DS41326 Fig. 22 / Eq. 1–2, EN rising 1.18 V / falling 1.10 V, pull-up 1.5 µA off → 5.5 µA on), equivalent form:

V_ON  = (1.18 / (Rtop ∥ Rbot) − 1.5 µA) · Rtop
V_OFF = (1.10 / (Rtop ∥ Rbot) − 5.5 µA) · Rtop

2S (JP3/JP4 open): Rtop = 46.4 k, Rbot = 11.3 k, Rtop∥Rbot = 9.087 k

3S (JP3/JP4 bridged): Rbot' = 11.3 k ∥ 18 k = 6.942 k, Rtop∥Rbot' = 6.039 k

Tolerance note: 1 % resistors plus the 1.15–1.23 V EN threshold spread give roughly ±4 % on these numbers — expect ~5.7–6.2 V (2S ON) and ~8.6–9.4 V (3S ON). Log the exact values per board.

7.3 Buck ripple and dynamics#

QuantityTargetBasis
Inductor ripple ΔI_L (12.6 V in)0.58 A (5 V), 0.67 A (3.3 V)DS41326 Eq. 7
Output ripple, calculated core~3–4 mV pk-pk (ΔI_L/(8·fsw·C) with one 22 µF of effective derated C)First-principles; C derating unknown until layout/parts final
Output ripple, accept/investigate< 20 mV pk-pk accept; > 50 mV investigateEngineering margin over the calculation; datasheet Fig. 16 shows clean ripple at 20 mV/div
Switching frequency1.1 MHz ±6 % jitter (FSS) in CCM; bursty PFM at light loadEC table
Soft-start~4 ms VOUT ramp after ENEC table
Load-step deviation (0.2→2 A)Record baseline; expect recovery within ~hundreds of µs (no datasheet number)Fig. 17 qualitative
Overload behaviorPeak limit 2.5–3.1 A, then hiccup: ~2 ms at limit, ~16 ms off, repeat§6 OCP

7.4 INA226 configuration and calibration — worked register math#

Shunt R1 = 10 mΩ. Maximum expected current: 8.19 A (full shunt scale; the fuse limits to 5 A continuous).

Current_LSB = 8.19 A / 2^15 = 0.25 mA/bit          (Eq. 2, rounded value)
CAL = 0.00512 / (Current_LSB × R_shunt)
    = 0.00512 / (0.25e-3 × 0.010)
    = 2048 = 0x0800                                 (Eq. 1)
Power_LSB = 25 × Current_LSB = 6.25 mW/bit

Register program for bring-up (7-bit address 0x40; write = pointer byte then two data bytes MSB first):

StepRegisterWriteMeaning
10x00 Config0x8000 then read back 0x4127Software reset; confirm default (1 avg, 1.1 ms shunt and bus CT, continuous shunt+bus)
20x05 Calibration0x0800CAL = 2048 per the math above
30x00 Config (optional)0x4527AVG = 16 for quieter bench readings (still continuous mode)
40x06 Mask/Enable (optional)0x1000BUL: alert when bus voltage drops below the limit
50x07 Alert limit (optional)0x15406.8 V / 1.25 mV = 5440 → 2S low-voltage alert example

Identity sanity checks before trusting data: register 0xFE reads 0x5449 ("TI"), 0xFF reads 0x2260. Until CAL is written, current (0x04) and power (0x03) read zero by design — bus and shunt registers work uncalibrated.

Worked example to cross-check on the bench (2.00 A load, 11.1 V pack):

Shunt reg 0x01: 20 mV / 2.5 µV  = 8000  = 0x1F40  (sign bit clear)
Bus reg   0x02: 11.08 V / 1.25 mV ≈ 8864 ≈ 0x22A0 (reads post-shunt: pack − 20 mV)
Current   0x04: 8000 × 2048 / 2048 = 8000 → 8000 × 0.25 mA = 2.000 A
Power     0x03: 8000 × 8864 / 20000 = 3546 → 3546 × 6.25 mW ≈ 22.2 W

Handy identity for this CAL choice: CAL = 2048 makes the current register numerically equal the shunt-voltage register, so current[A] = shunt_reg × 0.25 mA — any divergence between the two registers indicates a readback or math bug, not the analog front end. Cross-check current against a series DMM (expect agreement within ~1 % + offset; shunt tolerance 1 % dominates).

8. Manual schematic and assembly review checklist#

Schematic/layout review (before ordering):

Assembly inspection (per board, before any power):

9. Ordered bench-test procedure#

Stop at the first abnormal result. Record everything in the section 11 template. Phases A–F use a current-limited bench supply on J1, never a battery. A real pack appears only in phase G.

A. Unpowered inspection, resistance, and FET-orientation checks#

  1. Complete the section 8 assembly checklist under magnification.
  2. DMM resistance, both polarities: J1+ to GND, VBAT_P to GND, VBAT_OUT to GND, 5V_OUT to GND, 3V3_OUT to GND. Expect no hard shorts (capacitor charging ramps are normal; the UVLO dividers read ~57.7 k from VBAT_P to GND through each divider, ~29 k combined with both, in parallel with whatever the DMM sees of the buck inputs).
  3. Q1 orientation verification (DMM diode mode, fuse installed):
  1. Verify JP3/JP4 state matches the intended pack (open = 2S for first bring-up).
  2. I2C bus: SDA and SCL each read ~4.7 k to 3V3_OUT (JP1/JP2 bridged), no shorts to GND.

B. First power-up — current-limited supply masquerading as the battery#

  1. Bench supply: 8.0 V, current limit 0.2 A, output off. Wire to J1 observing polarity. No loads on J2/J3/J4. DMM on 5V_OUT.
  2. Enable the supply. Expect: input current settles well under 10 mA; both green LEDs light; no part warms.
  3. Measure: 5V_OUT 4.95–5.05 V, 3V3_OUT 3.27–3.33 V, VBAT_P ≈ supply minus a few mV, VBAT_OUT ≈ VBAT_P (µA-level shunt drop).
  4. Q1 enhancement check: measure J1+ → VBAT_P differential. Expect ≤ a few mV at this current. A reading near 0.5–0.7 V means Q1 is running on its body diode (gate circuit fault: R2 open, D2 shorted or reversed, or gate landed on the wrong pin) — stop and fix before any load testing, or Q1 will burn at amp-level currents.
  5. Scope SW_5V (L1 input pad): expect clean 1.1 MHz-region switching or PFM bursts at this light load; no continuous ringing after edges.
  6. Reverse-input tolerance check (supply, not pack): disable output, swap J1 wiring, set limit 0.5 A, enable briefly. Expect ~0 mA input current and 0 V on VBAT_P/5V/3V3. Restore correct wiring. (This proves the reverse-protection story at low energy; never perform this experiment with a battery.)

C. Telemetry bring-up (INA226)#

  1. Connect the I2C host (3.3 V logic) to J5. Scan the bus: the device must ACK at 0x40 only.
  2. Read 0xFE = 0x5449 and 0xFF = 0x2260; read 0x00 = 0x4127 after reset.
  3. Write CAL = 0x0800 to 0x05 (section 7.4). Read back.
  4. No-load sanity: bus register ≈ supply voltage (LSB 1.25 mV); shunt and current registers near zero (idle draw is below ~2 LSB of current).
  5. Apply a known load on J2 (e.g. power resistor drawing ~1 A, supply limit raised to 1.5 A). Verify shunt reg ≈ current reg numerically (CAL = 2048 identity), current ≈ series-DMM reading within ~1–2 %, bus ≈ VBAT_OUT, power ≈ bus × current.
  6. Alert check: write 0x06 = 0x1000 (BUL), 0x07 = 0x1540 (6.8 V). Lower the supply to 6.5 V: ALERT (J6 pin 5, populate J6 or probe R3) must go low; raise to 8 V: releases (transparent mode). Restore 0x06 = 0x0000.

D. Buck load, ripple, and efficiency#

Supply at 8.0 V (later repeat key points at 6.4, 7.4, 11.1, 12.6 V), limit 3 A. Electronic load on J3, then J4. Short, thick leads; sense at the terminal.

  1. Load sweep (line/load regulation): at each input voltage, step the 5 V load through 0 / 0.1 / 0.5 / 1.0 / 1.5 / 2.0 A. Record J3 voltage (target: within 4.95–5.05 V in CCM plus small load regulation — record the actual curve; datasheet Fig. 6 shows ~1 % droop 0→2 A), input current, and U2/L1 temperature. Repeat for the 3.3 V rail at J4 (3.27–3.33 V window).
  2. Output ripple (probe technique matters): 20 MHz bandwidth limit, tip-and-barrel (probe ground spring on the output-capacitor pad — no ground clip lead, which adds tens of mV of pickup at 1.1 MHz). Measure at C7/C8 (and C12/C13) at 2 A, 12.6 V in. Target < 20 mV pk-pk; calculated core value is only ~3–4 mV, so a 50+ mV reading means probe pickup, capacitor derating, or layout trouble — investigate before accepting.
  3. Load step: 0.2 A → 2 A → 0.2 A steps (load slew ~1 A/µs), capture VOUT deviation and recovery on each rail. No datasheet limit exists; record the baseline (expect recovery within hundreds of µs, deviation well under ±150 mV). Watch for ringing that suggests marginal COUT.
  4. Both rails loaded simultaneously (2 A + 2 A, input ≥7 V, limit raised accordingly): re-verify regulation and thermals. Total input power at 12.6 V should be roughly (10 W + 6.6 W)/η with η per datasheet Fig. 4 (~90 % region) — log efficiency.
  5. Overload/hiccup: slowly raise one rail's load past 2 A. Expect cycle-by-cycle limiting somewhere in 2.5–3.1 A peak, then hiccup (repeating ~16 ms off bursts) on a hard short. Confirm recovery when the short is removed and that the other rail rides through (they share VBAT_OUT — record any coupling). Keep shorts brief on a hot board.
  6. Thermal soak: 60 min at 2 A + 2 A, 12.6 V in, worst intended ambient. Log U2, U3, L1, L2, R1, Q1, F1 temperatures. TSOT-26 θJA is 89 °C/W — at roughly 0.5–0.7 W loss each buck may run 45–60 °C above ambient; investigate anything trending past ~110 °C junction estimate.

E. UVLO threshold verification — both jumper positions#

Do this with the bench supply (no pack) and light loads (~0.1 A per rail) so the thresholds aren't masked by droop.

  1. 2S position (JP3/JP4 open):
  1. 3S position (bridge JP3 and JP4 with solder):
  1. Restore the jumpers to the configuration matching the first real pack and re-verify once.
  2. Note for the record: below UVLO the INA226 loses its 3.3 V supply — confirm the host sees the bus NACK (0x40 disappears) rather than a zero-current reading. This is the "unmetered live motor rail" state the README warns about.

F. Input transient and DC robustness (still supply-fed)#

  1. Hot-plug emulation: with 30–50 cm of typical silicone battery wire between supply and J1, snap the connection at 12.6 V and capture VBAT_P with single-shot trigger. Ring peak must stay below ~17 V (D1 breakdown floor); if D1 conducts on every plug, add bulk or revisit the clamp choice.
  2. DC line sweep 6.4 → 12.6 V at 1 A + 1 A load: no dropouts, no LED flicker, monotonic INA226 bus readings.
  3. Fuse path check: measure the total drop J1+ → J2+ at 5 A briefly (fuse + Q1 + shunt + copper). Expect on the order of 100–200 mV; the fuse element itself contributes tens of mV and warms — normal.

G. First real pack — only after A–F pass#

  1. Pre-checks: pack per-cell voltages ≥3.6 V, no damage; pigtail polarity re-verified with DMM against J1 markings; JP3/JP4 match the pack; correct fuse installed; fire container at hand.
  2. Attach the pack with no loads. Expect exactly the phase-B quiescent behavior. Verify INA226 bus reading matches the pack voltage.
  3. Repeat one load point per rail (1 A) and one J2 load point, watching temperatures. Keep the first pack session under 10 minutes, attended.
  4. Endurance and integration (motor rails, robot-power-dist, host low-voltage policy exercising ALERT) belong to the platform test plan, not this guide.

10. Troubleshooting map#

SymptomFirst measurementsLikely areas
Nothing powers, input current ~0F1 continuity; J1+ vs VBAT_FUSED; body-diode check across Q1Blown/missing fuse, Q1 installed backwards (blocks forever), broken J1 crimp/screw
VBAT_P sits ~0.5–0.7 V below input, Q1 hot at loadVGS at Q1 (gate pin 4 to VBAT_P)Q1 not enhancing: R2 open, D2 shorted/reversed, gate mis-landed
Both rails dead, VBAT_OUT dead, VBAT_P fineVoltage across R1Open/cracked shunt or bad 2512 solder — R1 is in the main path
One buck dead, other fineEN pin voltage vs 1.18 V; BST cap; SW activityUVLO divider values/JP state, C9/C14 bootstrap open, wrong/damaged U2/U3
Rail present but wrong voltage (≈0.8 V or swapped 5/3.3)Part marking on U2/U3Wrong variant populated (AP63200/01 regulates FB to 0.8 V; U2/U3 swap crosses 5 V and 3.3 V)
Rail starts then cycles every ~16 msLoad current, SW envelopeHiccup OCP: overload, saturating substitute inductor, or output short
Rails drop out at the wrong input voltageEN divider node voltages; JP3/JP4Wrong Rbot/JP state (2S vs 3S mix-up), datasheet-tolerance stack
Excess ripple/noise on outputsProbe technique first (ground spring, 20 MHz BW); then COUTGround-clip pickup, derated/wrong output caps, layout hot loop
No I2C ACK at 0x403V3_OUT present? Pull-ups to 3.3 V? A0/A1 solderINA226 unpowered (below UVLO!), JP1/JP2 cut with no host pull-ups, address strap fault, VSSOP bridge
Current reading wrong by a fixed factorCAL register; R1 markingCAL ≠ 0x0800, wrong shunt value (100 mΩ or 0.1 mΩ lookalike)
Current reads negativeShunt reg sign bitIN+/IN− swapped at U1 or shunt kelvin nets crossed
Bus voltage reads low under loadCompare bus reg vs VBAT_PNormal: VBUS is post-shunt (−10 mV/A); only investigate beyond that
ALERT never assertsR3 present? 0x06 contentsMask/Enable not configured, latch mode confusion (read 0x06 to clear), J6 not populated
Pack drains while board "off"Idle input currentThere is no off switch: dividers (~42 µA) + INA226 + LEDs always draw; store with pack disconnected

11. Bench record template#

FieldRecord
Board revision / serial
Assembly variant, JP1–JP4 state, DNP audit
Shunt MPN and measured value; fuse MPN
Bench supply / e-load / DMM / scope IDs and cal dates
Phase A resistance + Q1 diode-check results
First power-up (8 V / 0.2 A) rail voltages, idle current
Q1 enhanced drop at 1 A / 5 A
INA226: ID regs, CAL readback, 1 A cross-check vs DMM
Regulation sweeps (per rail, per VIN)
Ripple pk-pk at 2 A (technique noted)
Load-step captures (file paths)
Overload/hiccup observations
UVLO measured: 2S ON/OFF, 3S ON/OFF, per rail
VBAT_OUT-live-below-UVLO confirmed?
60-min thermal soak temperatures
Hot-plug ring peak
First-pack session notes
Deviations, photos, raw-file paths
Reviewer / date / disposition

12. Review conclusion#

The architecture is a clean series protection chain (fuse → reverse FET → TVS/bulk → shunt) feeding one raw and two regulated rails, with the telemetry deliberately placed so the INA226 meters the entire robot. Its strongest design decisions are the electrically-correct ideal-diode orientation (drain-to-battery — a documented deviation from the original task pin, and the right call), datasheet-table buck components rather than guessed ones, and per-rail UVLO dividers with an explicit 2S/3S select.

The principal risks, in order: (1) nothing here has ever been built — no layout, no first article, so every number above is a target; (2) the board is not a BMS and the raw VBAT_OUT rail is live below UVLO and unmetered when the 3.3 V rail is down — host policy is a hard dependency for pack safety; (3) assembly-sensitive single points: Q1 orientation (reverse protection silently absent if backwards), the U2/U3 variant swap, and the 10 mΩ shunt value; (4) TBD-confirm MPNs (fuse, bulk 22 µF, shunt) must be locked before ordering; (5) hot-plug transient behavior and dual-rail overload coupling are analytically fine but only bench captures will close them. Follow the phase order in section 9 — in particular, the first thing this board ever meets must be a current-limited bench supply, not a LiPo pack.