← Design notebook

BUILT BY AUTONOMOUS SYSTEMS · WORK IN PROGRESS

Power and electronics for gyropup

Prices were checked on 2026-10-25. Every part named here is in catalog/power_electronics.json, with 165 items, their sources and confidence. "Not published" means exactly that. Numbers marked assumption or example are for illustration and must be measured on the robot.

The short answer


1. Batteries

The J501 voltage limit decides most of this

The J501 accepts 12–36 V DC on a 2-pin terminal block (getting started, datasheet). What counts is the full-charge voltage plus any regen spike, not the nominal voltage.

Pack Nominal Full (4.2 V/cell) Empty (~3.0 V/cell) J501 direct?
5S power-tool "18 V / 20 V MAX" 18 V ~21 V ~15 V Yes
6S LiPo / Li-ion 22.2 / 21.6 V 25.2 V ~18 V Yes
7S Li-ion 25.2 V 29.4 V ~21 V Yes, with ~6.6 V headroom for spikes
8S 28.8–29.6 V 33.6 V ~24 V Yes, but only 2.4 V of headroom; needs a clamp
10S (Makita XGT 40 V, Ryobi 40 V, 36 V e-bike) 36 V 40–42 V ~30 V No, needs a DC-DC
12S 43.2–44.4 V 50.4 V ~36 V No
13S "48 V" e-bike 48 V 54.6 V ~39 V No
DeWalt FLEXVOLT in 60 V mode (15S) 54 V 60 V MAX – No (it gives 5S3P in a 20 V dock)

The empty column assumes 3.0 V/cell, the robot-side UVLO we recommend. Neither power-tool packs nor RC packs cut off on their own, so the robot must.

Shortlist (full list in the catalog)

Pack V full Wh Cont. A Mass Price Charger Notes
WREKD 7S2P Molicel P50B 10 Ah 29.4 252 120 1050 g $294 ISDT K4 $229.99 (1–8S) 24 V-class pick. No BMS, balance leads only; 161×48×72 mm. link
WREKD 6S2P P50B 10 Ah 25.2 216 120 900 g $252 ISDT K4 / ToolkitRC M6DAC Pro $129.99 link
WREKD 8S2P P50B 10 Ah 33.6 288 120 1200 g $336 ISDT K4 Too close to 36 V without a clamp. link
CNHL 6S 10 Ah 21700 Li-ion (XT60) 25.2 216 not published 852 g $149.99 as above Cheapest Wh/$ in the 24 V class. No continuous rating published. link
CNHL Black 6S 5000 65C LiPo (XT90) 25.2 111 325 (claimed) 790 g $64.99 as above Cheap pack for bring-up and test-stand falls. link
CNHL 6S 8000 30C LiPo 25.2 178 240 (claimed) 1300 g $93.99 as above link
WREKD 12S2P P50B 10 Ah 50.4 432 120 1800 g $504 iCharger X12 $179.99 + DC PSU 48 V-class pick. 275×48×72 mm. link
Tattu Plus 12S 10 Ah 15C smart LiPo 50.4 444 150 2978 g AUD only iCharger X12 Heavy for 444 Wh. link
UPP U005 48 V 7 Ah e-bike bottle 54.6 336 18 (BMS) 1800 g $208 UPP 54.6 V 4 A $78 The BMS limit is far too low for four leg motors. link
Milwaukee M18 HO 12 Ah (48-11-1813) ~21 (5S) 216 not published 1529 g $279 M18 charger $119 Hot-swap tool pack plus $10–16 fused docks. link
DeWalt FLEXVOLT 9 Ah (DCB609) 60 (15S mode) 180 not published 1565 g $259 DCB118 $149 Heaviest Wh/kg in the list. link
Makita XGT 40 V 5 Ah (BL4050F) 40 180 not published not published $309 DC40RA $159 10S, so it needs a DC-DC for the J501. link
Ryobi 40 V 6 Ah (OP4060A) 40 216 not published not published $219 OP406A $119 link

Wh is computed as Ah × nominal V where the vendor gave only Ah; each catalog entry marks this.

How the three families compare


2. DC-DC converters

J501 supply from a 48 V-class bus (12S/13S)

Converter In (V) Out Isolated Eff. Mass Price Comment
Mean Well DDR-120C-24 33.6–67.2 24 V 5 A (120 W, 180 W for 3 s) yes 91 % 510 g (packed) $69.20 Pick. Covers 12S/13S plus regen headroom; peak rating covers Orin bursts. Bravo
Mean Well RSD-150C-24 33.6–62.4 24 V 6.3 A yes 91 % 800 g $98.80 Railway-rated shock/vibration (EN50155); for a robot that falls a lot.
Victron Orion-Tr 48/24-5A 32–70 18–30 V adj, 5 A yes 86 % 420 g $58.70 Remote on/off input. link
Pololu D42V55F24 24–60 24 V ~4 A typ. at 42 V in no 90–95 % 6.5 g $49.95 Lightest. 60 V absolute max, so on 13S it needs a regen clamp. Pololu
Generic 30–90 V → 24 V 10 A potted buck (YANCINCNY C90J24V10A3S) 30–90 24 V 10 A no 94 % (claimed) 91 g $23.99 Cheap. Amazon-grade QA, so add a fuse. Amazon
Mean Well SD-150C-24 / SD-100C-24 36–72 24 V yes 80–81 % 860 / 650 g $53.80 / $40.70 Avoid: heavy, inefficient, and drops out below 36 V input (a 12S pack near empty).

The Pololu D36V50Fx family (50 V max) cannot be used on 13S (54.6 V full), and is marginal on 12S (50.4 V) once regen is added.

J501 on a 24 V-class bus (6S/7S)

There's no converter in the main path; the J501 runs from the pack directly. Protect that branch with these, in order:

  1. A fuse sized for the J501 (60 W at 21 V is ~3 A, so a 5–7.5 A blade fuse).
  2. An ideal-diode or reverse-polarity MOSFET, so a regen spike on the motor side cannot back-feed the computer.
  3. A TVS clamp below 36 V across the J501 input.
  4. Bulk capacitance.

A clean, isolated alternative is the Mean Well DDR-120B-24 (16.8–33.6 V in, 24 V 5 A out, $69.20, Bravo). Its input window matches 7S from 2.4 to 4.8 V/cell, and its UVLO (16.8 V) helps protect the pack. Use it if you see brownouts during motor surges.

5 V and 12 V aux rails

Rail 24 V class 48 V class
5 V (MCU, IMU, CAN transceivers, LEDs) Pololu D24V50F5, 6–38 V in, 5 A, 3 g, $32.95 (link) or D36V50F5, 5.5 A, $39.95 Pololu D42V55F5, 5–60 V in, 6 A, $47.95 (link) or Mean Well DDR-30L-5, 18–75 V, isolated, $27.60
12 V (contactor coil, fans, lidar) Pololu D36V50F12, $39.95 Pololu D42V55F12, $47.95 (link) or Mean Well DDR-30L-12, isolated, $27.60 (link)

Matek BEC12S-Pro ($22.99, 9–55 V) and Holybro UBEC 5 A (8–60 V, $20.99) are light FPV options. The 55 V maximum is too close to 13S.


3. Power distribution and safety

Topology

flowchart LR
  BAT[Battery pack<br/>7S or 12S] --> CONN[XT90-S / QS8 / AS150<br/>anti-spark main connector]
  CONN --> FUSE[Main fuse<br/>MRBF 58 V]
  FUSE --> SHUNT[Current/voltage monitor<br/>INA228 + shunt / PM07]
  SHUNT --> SPLIT{{always-on node}}
  SPLIT -->|fuse 5-7.5 A + ideal diode + TVS| CMP[J501 + Orin<br/>direct on 7S / DDR-120C-24 on 12S]
  SPLIT -->|fuse 3 A| AUX[5 V / 12 V buck<br/>MCU, IMU, contactor coil]
  SPLIT --> PRE[Precharge resistor<br/>or soft-start switch]
  SPLIT --> K1[Main contactor<br/>NO, coil-held]
  PRE --> MBUS[Motor bus<br/>+ TVS / brake clamp]
  K1 --> MBUS
  MBUS --> LEGS[4x leg QDD]
  MBUS --> WHEELS[2x wheel hub]
  subgraph COILLOOP [Contactor coil loop, all in series]
    V12[12 V aux] --> ES1[Mushroom e-stop NC]
    ES1 --> ES2[Wireless e-stop relay NC<br/>opens on heartbeat loss]
    ES2 --> EN[MCU enable MOSFET<br/>after precharge done]
    EN --> COIL[Contactor coil]
  end

Rules

  1. The e-stop opens the contactor coil circuit and nothing else.
    • Series chain: a mushroom button (NC), the wireless receiver's relay (NC), and the MCU's "enable" switch, all in series with the coil.
    • Fail-safe: losing coil power opens the contactor. An anti-spark MOSFET switch is not a safety device, because MOSFETs can fail shorted.
  2. The compute stays up after an e-stop. The J501 and the MCU sit on the always-on side, so logs and the remote link survive.
  3. Precharge before closing the contactor. If the contactor closes onto the drivers' bulk capacitors, the inrush welds its contacts. Sequence:
    1. The MCU enables the precharge path (resistor, or the soft-start of a Flipsky/Maytech switch).
    2. The monitor sees the motor bus reach ~95 % of the pack voltage.
    3. The MCU then energises the coil.
    4. It reads the auxiliary contact (HIITIO HCZ01-250F-A) to confirm the contacts closed, and later that they opened.
  4. Clamp the motor bus. If the contactor opens while the robot is rolling or falling, the wheel and leg motors back-drive. Their EMF charges the driver capacitors through the MOSFET body diodes, with no battery attached to absorb it. Fit a TVS or brake-resistor clamp under the drivers' maximum rating on the motor-bus side.
  5. A balancing robot falls when power is cut. Order stops from softest to hardest:
    • Soft stop: the controller crouches the robot and sits it on its wheels, then disables torque.
    • Hardware cut: for anything worse, accept the fall. Design the body or bumpers, and the 206 × 181 × 112 mm compute box, to land on.
  6. UVLO in software. Measure the pack voltage, warn at ~3.5 V/cell, crouch and stop at ~3.2 V/cell, and cut at 3.0 V/cell. None of the recommended packs has a BMS.

Parts

Function Part Price Notes
Main contactor HIITIO HCZ01-250F-A (250 A, 12–36 V coil, auxiliary contact, 422 g) $44.99 Amazon. The coil range runs from 12 V aux or directly from 7S.
TE Kilovac LEV100A4ANG (100 A, 12 V coil, 461 mA) $81.91 Brand-name sealed contactor. findchips
Littelfuse DCNLEV100, Altran ALEV100 $66.52 / $46.70 Alternatives. Gigavac GX12/GX14 and TE EV200 ($121–215) are oversized.
JWDAWN ZJ100A (100 A, 80 V) $18 Unsealed, unknown QA. Bench only.
Soft-start / anti-spark Flipsky Antispark Switch Pro 200 A (12–60 V, 14S, 100 A continuous) $33 Flipsky. Use it as the precharge/power switch ahead of the contactor, not as the e-stop. Flipsky's 120 A version is 12S-only.
Maytech MTS2009AS (25–85 V) $90
Main fuse Blue Sea 5191 MRBF terminal fuse block (58 V, 30–300 A) $29.93 Amazon. The only common fuse holder in the list rated above 13S.
Resettable breaker Blue Sea 7183 285-series 50 A $59.20 Rated 48 V DC: fine for 7S, not for 12S/13S.
Monitor Adafruit INA228 (85 V, 20-bit, I²C, energy/charge accumulators) $14.95 Adafruit. The on-board 15 mΩ shunt is good to ~10 A (J501 branch). Use an external shunt for the main bus.
Holybro PM07 (2–14S, 90 A continuous, analog V/I, 5.2 V 3 A BEC) $43.99 Easiest whole-bus monitor.
Victron SmartShunt 500 A (BLE + VE.Direct UART) $100.30 Good state-of-charge display; heavier and bulkier.
E-stop button IDEC XA1E-BV3U02-R (Ø16 mm, 2 NC) $76.67 Digi-Key
Schneider XB5AS8442 $91.51
Generic 22 mm twist-release NC $11.99 Amazon
Wireless e-stop FORT Robotics Wireless E-Stop (Humanistic Robotics' successor), 900 MHz up to 2 km / 2.4 GHz up to 200 m quote only FORT. Safety-rated; this is the professional answer.
Pololu RC switch with relay #2804 (10 A relay, behind a hobby RC receiver) $19.95 Pololu. Set the receiver failsafe so signal loss opens the relay. Not safety-rated.
DIY ESP-NOW heartbeat (2× Seeed XIAO ESP32C3) $9.98 The robot opens the coil if the heartbeat is missing for 100–200 ms (design value). Not safety-rated.

4. CAN

The J501 has two native CAN-FD ports

The reServer Industrial J501 v1.0 schematic (sheet "DI & DO & CAN" plus the transceiver sheet) shows the details below (schematic PDF, interfaces wiki).

Bus plan and load

Use one bus per side: the hip and knee QDDs plus the wheel motor, three nodes each.

USB-CAN adapters (bench, sniffing, or a third bus)

Adapter FD Linux Isolated Price
mjbots mjcanfd-usb-1x yes (to 12 Mbit/s) SocketCAN, gs_usb no $39 (link). The fdcanusb it replaces is discontinued.
CANable 2.0 (Openlight Labs) FD via slcan only (no native gs_usb FD) slcan / serial no $35 (link)
PEAK PCAN-USB FD yes mainline peak_usb yes, 500 V $368 (link)
PEAK PCAN-USB (classic) no mainline – $256
Damiao USB-CANFD yes (5 Mbit/s data) vendor tool / serial no $31.99 (link)
RobStride USB-CAN debugger no vendor tool / serial no $25.09
CubeMars R-Link V2.0 no vendor tool no $45.09 (needed for CubeMars firmware and setup)
mjbots pi3hat r4.5 5× FD plus an IMU Raspberry Pi SPI (Pi 4B/3B+ only, not Pi 5) no $149

Buy the vendor's own dongle for whichever actuator brand you choose: it is the setup and firmware tool. Use the J501 ports at runtime.


5. IMU and where the balance loop runs

What the reference robots do

The pattern: a hard-real-time balance controller at ~1 kHz, with the big Linux computer above it at 30–300 Hz.

Recommendation

Run the balance loop on an MCU and let the Jetson do perception, planning and leg posture.

Option Cost CAN Comment
Matek H7A3-SLIM flight controller $77.99 1× (JST-GH 4-pin: 5 V/CANH/CANL/GND) Cheapest real-time IMU + MCU. It has an STM32H7 and an ICM-42688-P (2.8 mdps/√Hz) wired over SPI, and it's in stock. Flash custom firmware (or ArduPilot's AP_Periph-style CAN). link
Teensy 4.1 + ICM-42688-P or BMI088 on SPI $31.50 + IMU 3 (1 FD); needs transceivers (Adafruit CAN Pal $3.95) Easiest to program (FlexCAN_T4), with a USB link to the Jetson. link
STM32G474 Nucleo $19.50 3 FDCAN; needs transceivers Most "proper" embedded route.
ESP32-S3 $19.95 1, classic only (TWAI) No CAN-FD. Fine at ≤1 Mbit/s classic.
Raspberry Pi Pico 2 $6.25 none native Needs an MCP2518FD. Not recommended.
Jetson only, with a PREEMPT_RT kernel $0 J501 can0/can1 Upkie shows Linux can hold 1 kHz with care, but a Jetson under GPU load is a riskier place for the loop that stops the robot falling over.

Split: the MCU reads the IMU at ≥1 kHz and closes the pitch/wheel loop at 1 kHz on the wheel motors. It also runs the heartbeat watchdog, UVLO and precharge sequencing. The Jetson commands leg joints and sends velocity and height setpoints at 100–300 Hz. Two wirings work:

IMU choice:


6. Wiring and connectors

Use Connector Rating Price
Battery main, 24 V class XT90-S (anti-spark, as on Upkie) 90 A family ~$2.25/pair (Gator-RC)
Battery main, 48 V class QS8 (anti-spark, 300 A vendor rating, to 6 AWG) or AS150 300 A / 150 A $8.99/pair (PRC QS8); $15.99 (PRC AS150)
Actuator power + CAN Amass XT30(2+2) / XT30PB: two power pins plus two signal pins (CAN-H/L) 30 A power $2.63 per lead (example). Used by CubeMars AK V3 ("XT30 2+2"), Damiao DM-J4310-2EC (XT30(2+2)-F cable) and RobStride 01/02 ("XT30PB"). Pinouts differ by brand; check before daisy-chaining mixed brands.
CAN/I²C to MCU and FC JST-GH 4-pin (Matek and Holybro CAN: 5 V / CANH / CANL / GND) signal silicone GH lead sets $6.99
J501 power and CAN the included 2-pin and 20-pin 3.81 mm pluggable terminals, with ferrules – Adafruit ferrule kit $17.95
CAN cable twisted 120 Ω pair, e.g. Belden 3105A (22 AWG, 1 pair) – (Belden)

Wire gauge (PowerStream rule-of-thumb chassis-wiring ampacity, table: 10 AWG 55 A, 12 AWG 41 A, 14 AWG 32 A, 16 AWG 22 A, 18 AWG 16 A, 20 AWG 11 A, 22 AWG 7 A):


7. Two architectures

flowchart TB
  P[WREKD 7S2P P50B<br/>29.4 V full, 252 Wh, 1.05 kg] -->|XT90-S| F[MRBF 80-100 A fuse]
  F --> M[PM07 or INA228+shunt]
  M --> N((always-on))
  N -->|5 A fuse, ideal diode, TVS < 36 V| J[J501 + AGX Orin<br/>15-60 W]
  N --> B5[Pololu D24V50F5<br/>5 V MCU/IMU]
  N --> B12[Pololu D36V50F12<br/>12 V coil/fans]
  N --> SS[Flipsky Antispark Pro<br/>soft-start]
  SS --> K[HIITIO contactor<br/>coil via e-stop chain]
  K --> MB[Motor bus + clamp]
  MB --> L1[L hip] & L2[L knee] & W1[L wheel]
  MB --> R1[R hip] & R2[R knee] & W2[R wheel]
  J -- can0 --> L1
  J -- can1 --> R1
  MCU[Matek H7A3 / Teensy 4.1<br/>IMU, balance 1 kHz, watchdog] -- CAN --> W1
  MCU -- USB/CAN --> J
Item Price
2× WREKD 7S2P P50B packs (hot-swap) $588
ISDT K4 charger $229.99
HIITIO HCZ01-250F-A contactor $44.99
Flipsky Antispark Pro $33
Blue Sea MRBF block (fuse extra) $29.93
Holybro PM07 + Adafruit INA228 $58.94
Pololu D24V50F5 + D36V50F12 $72.90
IDEC e-stop or generic e-stop $11.99–76.67
Pololu RC relay switch (with existing RC transmitter/receiver) $19.95
Matek H7A3-SLIM $77.99
XT90-S, XT30(2+2), wire, ferrules ~$60 (estimate)

Known prices only (with a generic e-stop) come to roughly $1.2 k, before the actuators, the J501 and the Orin.

B. 48 V class: 12S Li-ion, DC-DC for the J501

flowchart TB
  P[WREKD 12S2P P50B<br/>50.4 V full, 432 Wh, 1.8 kg] -->|QS8 or AS150| F[MRBF 60 A fuse<br/>58 V rated]
  F --> M[PM07 2-14S]
  M --> N((always-on))
  N --> D[Mean Well DDR-120C-24<br/>33.6-67.2 V -> 24 V 5 A, isolated]
  D --> J[J501 + AGX Orin]
  N --> B5[Pololu D42V55F5]
  N --> B12[Pololu D42V55F12 or DDR-30L-12]
  N --> SS[Flipsky Antispark Pro<br/>12-60 V soft-start]
  SS --> K[Contactor, coil via e-stop chain]
  K --> MB[Motor bus + clamp < driver max]
  MB --> LEGS[4x leg QDD 48 V] & WH[2x wheel]
  J -- can0/can1 --> LEGS
  MCU[Balance MCU + IMU] -- CAN --> WH

What changes from A:

Pick B if the actuators are 48 V-nominal (RobStride 01/02-class) or if the robot ends up near 20 kg and wire current gets uncomfortable.


8. Runtime estimate method

runtime_h = (E_pack_Wh × usable_fraction × η_path) / (P_compute + P_aux + P_motors_avg)

Worked example, illustrative only: one 7S2P pack (252 Wh) at 0.8 usable gives ~202 Wh.

P_motors_avg (assumed) Total with 40 W compute + 5 W aux Runtime
50 W 95 W ~2.1 h
100 W 145 W ~1.4 h
200 W 245 W ~0.8 h

The 12S2P pack (432 Wh) gives ~1.7× these runtimes for ~0.75 kg more mass.


Open items