# KWR-1 kitchen work robot - electrical interconnect

Generated from `spec.parts_db.POWER`, the joint drive schedule and the sensor schedule. See `WIRING.svg` for the one-line.

## Specification level: READ THIS FIRST

Items whose name ends in **`class`** are specified by **type and rating, not by manufacturer part number**. `TBM-7631 frameless class`, `SHG-32-100 class` and `CRBH 10020 crossed roller class` name a Kollmorgen frameless family, a Harmonic Drive series and a THK series as *representative catalogue equivalents* - they are not order codes, and nobody has confirmed availability, lead time or price for a specific SKU.

This is a normal and honest level for a design that has been sized but not sourced: every rating a supplier needs is fixed (voltage, continuous and peak current, torque, ratio, interface), so a buyer can select against it. What is NOT done is the sourcing pass. Before ordering you must:

1. pick real SKUs meeting each rating below,
2. put the actual part numbers into `spec/parts_db.py`,
3. re-run the build - the drive-sizing and power gates recheck the design against whatever you selected, and `bom_cost.py` reprices it.

The BOM's *fabricated* rows are a different matter: those carry real materials, processes and tolerancing intent (S235/AlMg3, laser cut + MIG weld), because we draw those ourselves.

## Power path

| # | from | to | conductor | protection |
|---|---|---|---|---|
| 1 | battery 48V 30Ah LiFePO4 pack w/ 60A BMS class | main fuse | 10 mm2 (AWG 8) welding-grade, red/black pair | 80 A MIDI fuse (fault backup) |
| 2 | main fuse | breaker | 10 mm2 (AWG 8) welding-grade, red/black pair | 63 A thermal-magnetic DC breaker class |
| 3 | breaker | E-stop contactor | 10 mm2 (AWG 8) welding-grade, red/black pair | dual-channel safety relay class + 63 A contactor |
| 4 | E-stop contactor | PDU 48 V bus | 10 mm2 (AWG 8) welding-grade, red/black pair | - |
| 5 | PDU | 14 x joint drive | 2.5 mm2 (AWG 13), per-drive fused 15 A | 15 A per branch |
| 6 | PDU | 2 x wheel drive | 2.5 mm2 (AWG 13), per-drive fused 15 A | 14 A peak each |
| 7 | PDU | DC-DC 24 V | 48->24 V 240 W isolated class | in-line |
| 8 | PDU | DC-DC 12 V | 48->12 V 120 W isolated class | in-line |
| 9 | battery | charge port | Anderson SB50 + dock blade contacts | shared fuse |

## 24 V and 12 V loads

- **24 V** (48->24 V 240 W isolated class): 14 spring brakes, dual-channel safety relay, 8 stabilizer limit switches, E-stop buttons, dock interlock
- **12 V** (48->12 V 120 W isolated class): controller / EtherCAT master, wrist depth camera, head camera, IMU

## Signal

- EtherCAT: master -> J1 -> ... -> J7 -> master, M12 8-pin X-code tees
- 14 x 19-bit BiSS-C absolute output encoders (one per joint, output side)
- 2 x wheel hall + incremental, drive-integrated
- wrist depth camera USB3; head camera; stabilizer limits 24 V digital

## Fail-safe behaviour

- Brakes are **spring-applied, 24 V-released**: power loss or E-stop LOCKS the arm rather than dropping the payload.
- The E-stop contactor opens **motor power only**. Logic and encoders stay powered so the controller can report the fault and hold position knowledge.
- Power and fieldbus use DIFFERENT CODINGS (S vs X) in the same M12 shell size, so they are mechanically non-mating - which is what coding is for. An earlier revision claimed separate shell SIZES and named M15, which is not a size the M-series has.

## What the build gate enforces on these numbers

`verify/engineering.py::check_power_battery_wiring` recomputes the duty-cycle draw from a simulated task timeline and fails the build unless:

- average power <= 350 W
- continuous current <= 80% of the 63 A breaker, and <= battery continuous rating
- peak current <= battery 120 A and <= 1.25 x the 80 A fuse
- 1.25 x continuous <= wire ampacity (70 A)
- volt drop over 1.6 m <= 2% of 48 V
- runtime >= 3 h

## Limits of this drawing

This is a **one-line**: topology, protection and ratings. It is not a physical harness drawing and carries no wire lengths, terminal numbers or panel layout. Routing geometry is in `02_cad/subassemblies/wiring.glb`; runs, bend radii and service loops are in `cable_schedule.csv`.
