Back to 5.2.2 Rotation

5.2.2 Rotation — Electrical & Control

V-Model Traceability: This page addresses RM-4 (yaw angular velocity ≥ 150°/s) and RM-1 (hold commanded angle under punch impact) at the electrical and control layer.

Requirements Cascade

The rotation electrical subsystem responds to the following system-level requirements defined in the Robot Mechanism section:

System Req Subsystem Implication
RM-4 Yaw angular velocity ≥ 150°/s; the motor and drive ratio must deliver sufficient speed under load
RM-1 Hold commanded angle under punch impact; closed-loop position control with disturbance rejection

Motor Specification

The base rotation uses a Z55BLD400-24GU 400 W BLDC motor with a 26:1 integrated gearbox and a 3.5:1 (70:20 tooth) belt stage, yielding a 91:1 total drive ratio, controlled via the ZBLD C20-800LRC CAN motor driver. The motor provides high torque at low speed, making it well-suited for the timing-belt-driven yaw stage, which requires smooth re-angling under the inertia of the full upper structure.

Parameter Value
Motor model Z55BLD400-24GU (400 W BLDC)
Gearbox 26:1 integrated gearbox + 3.5:1 (70:20) belt stage = 91:1 total
Driver ZBLD C20-800LRC (CAN interface)
Nominal voltage 24 V
Peak current draw ~16 A (stall)
Position feedback AS5047P 14-bit magnetic encoder (SPI)

Control Architecture

The base rotation controller is an Arduino Uno R4 WiFi, operating as a separate controller from the Teensy 4.0 that manages the arm motors. Communication with the Jetson host uses WiFi UDP, eliminating physical cable routing through the rotating base joint. The CAN bus for the base motor operates at 125 kbps (versus 1 Mbps for the arm motors), necessitating a separate bus.

Command Protocol

Command Format Effect
Step left L:deg Decrements target angle by deg degrees
Step right R:deg Increments target angle by deg degrees
Go to absolute GO:deg Sets target to deg degrees (absolute)
Set peak RPM PEAK:rpm Sets the maximum motor speed cap

Validated Test Results

The base rotation controller was validated through seven controlled manoeuvres, confirming stable settling and correct limit enforcement:

Test Result
L:15 × 7 steps (0° to −90°) Each step settled at target ±1°; steady current 0.24–0.26A
Limit at −90.2° Motor stopped; limit held; no further motion toward boundary
Recovery from −90° (R:15) Motor returned to −75°; return-direction always permitted
GO:0 from −75° Smooth return to 0° in approximately 2.5s
R:15 × 8 steps (0° to +89.5°) Each step settled correctly at commanded target
GO:0 from +60° Smooth return; peak current 0.6A during fast traverse
Limit enforcement at +90° Rightward motion blocked; leftward return permitted
Empirical Power at 150°/s: Measured steady-state current is 1.43–1.55A (33–36W) at 2275 RPM target. The PID controller's proportional output provides inherent soft-start; pre-PID testing under direct speed-command triggered a PSU overcurrent trip at 1.58A. The PID architecture eliminates this risk via the configured Peak RPM ceiling.

Design Rationale

The Z55BLD400 driver operates at 125 kbps, whereas the Damiao arm motors use 1 Mbps; separate buses eliminate firmware complexity for dual-baud switching. A wireless WiFi UDP link was chosen to eliminate cable fatigue: a physical cable routed through the rotating base joint would experience continuous twist and flex, eventually failing. Base rotation is additionally decoupled from arm control as an independent failure domain, such that either subsystem can be power-cycled without disturbing the other.

Power Integration

The Z55BLD400 motor is connected to the 24V motor bus via the distribution busbar, alongside the arm motors and height motor. The Arduino controller is powered from the isolated 12V logic rail through a HW-140 buck converter module (LM2596-based, 12V → 6V) (≥1 A), ensuring motor bus OVP events do not reset the base rotation controller.

Component Rail Current Notes
Arduino R4 WiFi 6V VIN (from HW-140 buck converter) ~300 mA WiFi active + logic
WCMCU-1051 CAN transceiver 5V ~50 mA From Arduino 5V rail
AS5047P encoder 3.3V ~15 mA From Arduino 3.3V regulator
Total from PSU 12V via HW-140 (6V VIN) ~400 mA 2 W nominal
Base rotation power subsystem
Base rotation power subsystem: Z55BLD400 BLDC motor on the 24V bus via ZBLD C20-800LRC CAN driver, with RegenClamp V0.3 protection. Arduino R4 WiFi powered independently from the 12V logic rail via LM2596-based buck converter.

Regenerative Braking Resistor Sizing

The Z55BLD400 is a 400 W BLDC motor; back-EMF during rapid deceleration will spike the 24 V bus. The RegenClamp V0.3 dissipates this residual energy to prevent PSU over-voltage protection (OVP) trips at approximately 28 V. The sizing of a regenerative brake resistor is governed by two constraints. First, the electrical resistance limit must be low enough to allow sufficient current to flow out of the system, preventing a voltage bottleneck as governed by Ohm's Law. Second, the thermal wattage limit must possess enough thermal mass to absorb the instantaneous power spike without melting the internal wirewound element as governed by Joule's Law. The analysis below details how the specific resistor requirements were obtained for the base rotation axis.

Hardware Profile

Parameter Component / Characteristic
Driver ZBLD C20-800LRC
Motor Z55BLD400-24GU BLDC
Mechanics High-inertia rotational load with a 91:1 total gear ratio
Selected Resistor 5 Ω, 100 W Aluminium Wirewound

Electrical Calculation (Resistance Sizing)

When the heavy upper torso of the robot rotates and suddenly stops, the high kinetic energy back-drives the motor, generating a massive current spike. At the 26.5 V clamp threshold, a 5 Ω resistor allows a maximum braking current of 5.3 A:

Ipeak = 26.5 V / 5 Ω = 5.3 A

This 5.3 A braking limit provides aggressive deceleration capability for the heavy, high-inertia base without allowing the bus voltage to spike past the safe threshold of the driver.

Thermal Calculation (Wattage Sizing)

When the 5.3 A current flows through the resistor, the instantaneous heat generated is approximately 140.45 W:

Ppeak = (26.5 V)2 / 5 Ω = 140.45 W

Dumping a 140.45 W pulse into a 100 W-rated resistor represents a safe 1.4× thermal overload. Aluminium-housed wirewound resistors bolted to a metal chassis can safely handle 5× to 10× pulse overloads for short durations under 2 seconds. The 100 W continuous rating ensures the resistor will not overheat during rapid, repetitive sparring movements.

Summary of Component Selection

Subsystem Clamp Threshold Resistance Peak Current Peak Power Spike Resistor Rating Overload Factor
Base Rotation 26.5 V 5 Ω 5.3 A ~140 W 100 W 1.4× (Safe)

Verification Targets

The following tests are planned for the rotation electrical subsystem, mapping to the right side of the V-Model:

Test Criterion Target Status
Angular velocity Yaw speed under no-load ≥ 150°/s Pending
Prev: Timing Belt Selection Next: Testing & Evaluation