USB-C brings in a nominal 5 V. On the main control board that splits into a logic/host rail and a protected servo (and amp) rail.
| Net | Source | Loads |
|---|---|---|
| +5V | USB-C VBUS → 3 A PPTC fuse | ESP32 5V, 5 V indicator, eFuse input |
| SERVO_5V | TPS259571 eFuse out of +5V (~2 A via R14) |
Servo header 5 V pins, bulk capacitor; amp supply via net tie |
| AUDIO_5V | Net-tied from SERVO_5V (not raw +5V) | MAX98357A Vin |
| 3V3 | ESP32 onboard LDO, from the 5 V input | ESP32 core/GPIO, PCA9685 VCC / VDD, OLED VCC, I2C pull-ups |
| GND | Board USB-C GND + ESP32 GND | Everything |
ESP32 internally runs at 3.3 V logic. Servo power does not pass through the ESP32 3.3 V regulator. On the main control board: +5V feeds the module 5V pad; SERVO_5V feeds the servo plugs; PCA9685 VDD ← 3V3. The chip has no package “V+” pin — servo 5 V is a board distribution net to the connector (same idea as Adafruit breakout V+). The advanced breakout harness draws equivalent nets without the board eFuse — wiring.md.
Warning
Never power the servos from the ESP32 3.3 V regulator.
Waveshare documents the C3-Zero LDO as ME6217C33M5G (hundreds of mA class). That is enough for logic + OLED + PCA9685 digital. It is not a servo supply.
Multi-servo stall can hit the eFuse’s ~2 A limit before the 3 A resettable fuse trips. Use a 5 V / ≥ 2 A supply; expect occasional SERVO_5V (and amp) cutouts under heavy load, then auto-retry.
Datasheet stall currents for PowerHD HD-1370A:
| Voltage | Per servo stall | × 5 servos |
|---|---|---|
| 4.8 V | ~260 mA | ≈ 1.3 A |
| 6.0 V | ~320 mA | ≈ 1.6 A |
Robot rail is nominally 5 V, so expect something between those two if several HD-1370A servos stall or start together.
Tower Pro SG90 (recommended) is larger and typically stalls harder. Same 5 V / ≥ 2 A floor; give more margin if several SG90s move while audio plays. Do not treat the HD-1370A milliamp table as an SG90 budget.
This excludes:
- ESP32 (Wi-Fi TX peaks)
- OLED
- PCA9685 logic
- MAX98357A + speaker peaks
- USB host current shared with programming when flashing over the same cable
Power and data enter on the main control board USB-C (one cable). Nets: VBUS → fuse → +5V, GND, D− → GPIO18, D+ → GPIO19. Servos and the amp sit behind the eFuse on SERVO_5V / AUDIO_5V. Details: interfaces.md.
Two 5.1 kΩ CC resistors on the board mark it as a USB device. The charger decides how much current arrives. Use a 5 V / ≥ 2 A source, with extra margin if several servos move while audio plays. The connector is not USB-PD voltage conversion. Feed it 5 V USB.
Five HD-1370A servos at stall (~1.3 A @ 4.8 V) plus the rest of the robot leaves little safety margin on a 1.5 A port. SG90 stall is typically higher still.
Leave the ESP32-C3-Zero onboard USB-C unused when the robot is assembled so two 5 V sources cannot fight on the same rail. That one cable supplies robot power and programming / serial CDC (ARDUINO_USB_MODE=1, ARDUINO_USB_CDC_ON_BOOT=1, monitor 115200).
Advanced path (Adafruit 5993, CC resistors advertising up to ~1.5 A): wiring.md.
If the rail sags under servo or audio load:
- ESP32 resets / brownouts
- Servo jitter or weak motion
- OLED glitches or blanking
- Audio noise / dropouts
- Unstable I2C (NACKs, PCA9685 or OLED “not found” after motion starts)
- Resets specifically when multiple servos start moving
Bring-up test turns all five servos together — that is a power-stress moment.
Related: main-control-board.md, components.md, interfaces.md. Advanced harness: wiring.md.