Skip to content

Latest commit

 

History

History
70 lines (45 loc) · 3.94 KB

power.md

File metadata and controls

70 lines (45 loc) · 3.94 KB

Power

Architecture

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.

Servo current (worst case)

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

USB supply

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.

Insufficient-power symptoms

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.