PCB Design for BLDC Control

Set Capacitance to "47nF" on C10, Set Voltage Rating to "100V" on C10, and 7 more changes

0:14

Set C10's Capacitance to "47nF"

Set C10's Voltage Rating to "100V"

Set C10's Package to "SMD_0603_1608Metric"

Set C10's Role to "Charge Pump Flying Capacitor"

Set C10's Role Details to "DRV8323 flying capacitor between CPH and CPL"

Set C21's Capacitance to "1uF"

Set C21's Voltage Rating to "16V"

Set C21's Package to "SMD_0603_1608Metric"

Set C21's Role to "VCP Bypass"

Set C21's Role Details to "DRV8323 VCP bypass capacitor from VCP to VM"

21 days

Updated 11 connections

0:36

Connected U2:CPH, C10:P1 to ^DRV_CP_FLYING_H

Connected U2:CPL, C10:P2 to ^DRV_CP_FLYING_L

Connected U2:VCP, C21:P1 to ^DRV_VCP

Connected U2:VM, C21:P2, C10:P2 to ^VIN_24V

Connected C10:P1, U2:CPL, U2:CPH to ^DRV_CP_FLYING

Connected C10:P2, R20:P2, R21:P2, R22:P2, R23:P2 to ^GND

Connected R20:P1, U4:~RXT~/GPIO.3 to ^CP2102_GPIO3_PULL

Connected R21:P1, U4:17 to ^CP2102_GPIO17_PULL

Connected R22:P1, U4:~WAKEUP to ^CP2102_WAKEUP_PULL

Connected R23:P1, U4:~CTS to ^CP2102_CTS_PULL

Disconnected C10:P1, C10:P2, C21:P1, C21:P2, U1:IO15, U1:IO16, U1:IO17, U1:IO2, R20:P1, R20:P2, R21:P1, R21:P2, R22:P1, R22:P2, R23:P1, R23:P2

nets {

net GND = D2 A - U2 PGND:GND, U2 VDRAIN - U2 VIN:GND, R23:P2, R22:P2, R21:P2, R20:P2, GND:GND, U1:15, D2:A, U5 G - L1 P2:GND, U5:3, U5:8, U2:BGND, U4 SUSPEND - U4 RXD:GND, U4:SUSPEND, U4:~SUSPEND, R17:P2, J1 SHIELD__3 - C1 P2:GND, C7:P2, Q7 E - Q8 E:GND, Q7:E, U4 GND - U5 G:GND, U4:3, U4:12, U4:21, R12 P1 - R13 P1:GND, R12:P1, C13:P2, C6:P2, Q1 S - Q2 S:GND, Q1:S, U3:GND, U1 GND - U2 PGND:GND, J1:GND, J1:GND__1, J1:SHIELD, J1:SHIELD__1, J1:SHIELD__2, J1:SHIELD__3, C14:P2, C9:P2, C2:P2, C16:P2, C17:P2, C4:P2, C8:P2, C18:P2, Q3:S, C3:P2, C12:P2, U1:47, U1:46, U1:45, U1:44, U1:43, U1:42, U1:41, U1:40, U1:39, U1:38, R13:P1, U3 DIR - R20 P1:GND, U3:DIR, U2:PGND, U2:AGND, Q8:E, C11:P2, R18:P2, C20:P2, U2:DGND, C1:P2, C5:P2, C15:P2, Q2:S, U2:EP, R16:P2, U1:1;

net 3V3 = R10:P1, C3:P1, C7:P1, R11:P1, C13:P1, C14:P1, U3:VDD3V3, U2:DVDD, D1:A, R19:P1, U3:VDD5V, C2:P1, R14:P2, U1:3V3, C9:P1, C16:P1, U2:CAL, C1:P1, L1:P2, R15:P2, C4:P1;

net Net 1 = U4:~RTS, Q7:B;

net USB_VBUS = U4:USB, J1:VBUS, J1:VBUS__1, C5:P1, C8:P1, U4:VREGIN;

net BUCK_SW = D1:K, U2:SW, C19:P2, C11:P1, L1:P1;

net SHUNT_A_HIGH = U2:SPA, R7:P1;

net VIN_24V = Q4:D, C21:P2, U2:VM, C10:P2, U2:CPL, C10:P1, U2:CPH, U2:VIN, D2:K, U2:VDRAIN, Q6:D, C6:P1, C17:P1, Q5:D, C12:P1, C18:P1;

net PHASE_A_SW = Q1:D, Q4:S, U2:SHA;

net DRV_nFAULT = U2:nFAULT, R14:P1, U1:IO34;

net UART_RX = R2:P1, U1:RXD0;

net CURR_A_KELVIN = U1:SENSOR_VP, U2:SOA;

net SHUNT_C_LOW = R9:P2, U2:SNC;

net ESP_EN = U4:VDD, R16:P1, U1:EN, Q8:C;

net CP2102_GPIO1 = U4:RS485/GPIO.1;

net ESP_BOOT = U1:IO0, R17:P1, C15:P1, Q7:C;

net USB_DP = J1:DP1, J1:DP2, U4:D+, U5:IO1;

net ENC_PGO = U3:PGO, U1:IO33;

net I2C_SDA = R10:P2, U3:SDA, U1:IO21;

net GATE_AL = R4:P1, U2:GLA;

net SPI_SCK = U2:SCLK, U1:IO18;

net CP2102_GPIO0 = U4:CLK/GPIO.0;

net USB_UART_RX = R2:P2, U4:TXD;

net PHASE_B_SW = Q2:D, U2:SHB, Q5:S;

net SHUNT_B_LOW = U2:SNB, R8:P2;

net SPI_MISO = U1:IO19, U2:SDO;

net BUCK_FB = U2:FB, R18:P1, C20:P1, R19:P2;

net GATE_BH = U2:GHB, R5:P1;

net DRV_EN = U2:nSHDN, U2:ENABLE, R15:P1, U1:IO4;

net SHUNT_A_LOW = R7:P2, U2:SNA;

net PWM_BL = U2:INLB, U1:IO14;

net I2C_SCL = R11:P2, U1:IO22, U3:SCL;

net PHASE_C_SW = Q6:S, U2:SHC, Q3:D;

net SHUNT_B_HIGH = U2:SPB, R8:P1;

net PWM_BH = U1:IO27, U2:INHB;

net GATE_BL = U2:GLB, R6:P1;

net GATE_AH = U2:GHA, R3:P1;

net BUCK_BOOT = C19:P1, U2:CB;

net SHUNT_C_HIGH = U2:SPC, R9:P1;

net PWM_AL = U1:IO26, U2:INLA;

net USB_UART_TX = R1:P2, U4:9;

net UART_TX = U1:TXD0, R1:P1;

net PWM_CH = U2:INHC, U1:IO12;

net SPI_MOSI = U1:IO23, U2:SDI;

net PWM_AH = U1:IO25, U2:INHA;

net USB_DN = U5:IO2, U4:D-, J1:DN1, J1:DN2;

net Net 2 = U4:~TXT~/GPIO.2, Q8:B;

net PWM_CL = U1:IO13, U2:INLC;

net DRV_VREF = U2:VREF;

net CURR_C_KELVIN = U1:IO35, U2:SOC;

net SPI_CS = U2:nSCS, U1:IO5;

net ENC_OUT = U1:IO32, U3:OUT;

net GATE_CH = U2:GHC;

net GATE_CL = U2:GLC;

net CURR_B_KELVIN = U2:SOB, U1:SENSOR_VN;

net DRV_VCP = U2:VCP, C21:P1;

net CP2102_GPIO3_PULL = R20:P1, U4:~RXT~/GPIO.3;

net CP2102_GPIO17_PULL = R21:P1, U4:17;

net CP2102_WAKEUP_PULL = R22:P1, U4:~WAKEUP;

net CP2102_CTS_PULL = R23:P1, U4:~CTS;

}

21 days

0:34

I corrected the DRV8323 support-capacitor values and am now rewiring the flying capacitor, VCP bypass, and the falsely shorted CP2102 pull resistors. After that I will re-check ERC/DRC and confirm the remaining airwire count.
21 days

Updated 1 layout rule

0:10

Set Layout's boardInsetMargin to "0.2mm"

21 days

Corrected charge pump and refreshed layout

9:46

Analyzing the schematic.

Started: verifying nets and refreshing layout rules

Accessing knowledge base.

Running design review.

Working.

Searching the project.

Researching ESP32 connections.

Searching connections and conventions.

Searching 3 domains.

Search complete — 150 results across 3 domains.

21 days

No changes applied.

0:09

21 days

Updated 3 connections

0:20

Connected U2:CPH, C10:P1 to ^DRV_CP_FLYING_H

Connected U2:CPL, C10:P2 to ^DRV_CP_FLYING_L

Disconnected C10:P1 from C10:P2

nets {

net GND = D2 A - U2 PGND:GND, GND:GND, U1:15, D2:A, U5 G - L1 P2:GND, U5:3, U5:8, U2:BGND, U4 SUSPEND - U4 RXD:GND, U4:SUSPEND, U4:~SUSPEND, R17:P2, J1 SHIELD__3 - C1 P2:GND, C7:P2, U2 VDRAIN - U2 VIN:GND, R20:P2, Q7 E - Q8 E:GND, Q7:E, R21:P2, U4 GND - U5 G:GND, U4:3, U4:12, U4:21, R12 P1 - R13 P1:GND, R12:P1, C13:P2, C6:P2, Q1 S - Q2 S:GND, Q1:S, U3:GND, U1 GND - U2 PGND:GND, J1:GND, J1:GND__1, J1:SHIELD, J1:SHIELD__1, J1:SHIELD__2, J1:SHIELD__3, R22:P2, C14:P2, C9:P2, C2:P2, C16:P2, C17:P2, R23:P2, C4:P2, C8:P2, C18:P2, Q3:S, C3:P2, C12:P2, U1:47, U1:46, U1:45, U1:44, U1:43, U1:42, U1:41, U1:40, U1:39, U1:38, R13:P1, U3 DIR - R20 P1:GND, U3:DIR, U2:PGND, U2:AGND, Q8:E, C11:P2, R18:P2, C20:P2, U2:DGND, C1:P2, C5:P2, C15:P2, Q2:S, U2:EP, R16:P2, U1:1;

net 3V3 = R10:P1, C3:P1, C7:P1, R11:P1, C13:P1, C14:P1, U3:VDD3V3, U2:DVDD, D1:A, R19:P1, U3:VDD5V, C2:P1, R14:P2, U1:3V3, C9:P1, C16:P1, U2:CAL, C1:P1, L1:P2, R15:P2, C4:P1;

net VIN_24V = C21:P2, U2:VIN, D2:K, U2:VDRAIN, Q4:D, U2:VM, Q6:D, C6:P1, C17:P1, Q5:D, C12:P1, C18:P1;

net BUCK_SW = D1:K, U2:SW, C19:P2, C11:P1, L1:P1;

net SHUNT_A_HIGH = U2:SPA, R7:P1;

net PHASE_A_SW = Q1:D, Q4:S, U2:SHA;

net DRV_nFAULT = U2:nFAULT, R14:P1, U1:IO34;

net CURR_A_KELVIN = U1:SENSOR_VP, U2:SOA;

net SHUNT_C_LOW = R9:P2, U2:SNC;

net GATE_AL = R4:P1, U2:GLA;

net SPI_SCK = U2:SCLK, U1:IO18;

net PHASE_B_SW = Q2:D, U2:SHB, Q5:S;

net SHUNT_B_LOW = U2:SNB, R8:P2;

net SPI_MISO = U1:IO19, U2:SDO;

net BUCK_FB = U2:FB, R18:P1, C20:P1, R19:P2;

net GATE_BH = U2:GHB, R5:P1;

net DRV_EN = U2:nSHDN, U2:ENABLE, R15:P1, U1:IO4;

net SHUNT_A_LOW = R7:P2, U2:SNA;

net PWM_BL = U2:INLB, U1:IO14;

net PHASE_C_SW = Q6:S, U2:SHC, Q3:D;

net SHUNT_B_HIGH = U2:SPB, R8:P1;

net PWM_BH = U1:IO27, U2:INHB;

net GATE_BL = U2:GLB, R6:P1;

net GATE_AH = U2:GHA, R3:P1;

net BUCK_BOOT = C19:P1, U2:CB;

net SHUNT_C_HIGH = U2:SPC, R9:P1;

net PWM_AL = U1:IO26, U2:INLA;

net CP_HIGH = C21:P1, U2:VCP;

net PWM_CH = U2:INHC, U1:IO12;

net SPI_MOSI = U1:IO23, U2:SDI;

net PWM_AH = U1:IO25, U2:INHA;

net PWM_CL = U1:IO13, U2:INLC;

net DRV_VREF = U2:VREF;

net CURR_C_KELVIN = U1:IO35, U2:SOC;

net SPI_CS = U2:nSCS, U1:IO5;

net GATE_CH = U2:GHC;

net GATE_CL = U2:GLC;

net CURR_B_KELVIN = U2:SOB, U1:SENSOR_VN;

net DRV_CP_FLYING_H = U2:CPH, C10:P1;

net DRV_CP_FLYING_L = U2:CPL, C10:P2;

}

21 days

Updated 1 layout rule

0:09

Set Layout's sizeX to "70mm"

Set Layout's sizeY to "70mm"

Set Layout's boardShape to "circular"

Set Layout's stackup to "Standard 4 Layer (Custom)"

Set Layout's boardInsetMargin to "0.2mm"

Set Layout's keepOut to "0.2mm"

21 days

Updated 3 connections

0:15

Connected U2:CPH, C10:P1 to ^DRV_CP_FLYING_H

Connected U2:CPL, C10:P2 to ^DRV_CP_FLYING_L

Disconnected C10:P1 from C10:P2

nets {

net GND = D2 A - U2 PGND:GND, GND:GND, U1:15, D2:A, U5 G - L1 P2:GND, U5:3, U5:8, U2:BGND, U4 SUSPEND - U4 RXD:GND, U4:SUSPEND, U4:~SUSPEND, R17:P2, J1 SHIELD__3 - C1 P2:GND, C7:P2, U2 VDRAIN - U2 VIN:GND, R20:P2, Q7 E - Q8 E:GND, Q7:E, R21:P2, U4 GND - U5 G:GND, U4:3, U4:12, U4:21, R12 P1 - R13 P1:GND, R12:P1, C13:P2, C6:P2, Q1 S - Q2 S:GND, Q1:S, U3:GND, U1 GND - U2 PGND:GND, J1:GND, J1:GND__1, J1:SHIELD, J1:SHIELD__1, J1:SHIELD__2, J1:SHIELD__3, R22:P2, C14:P2, C9:P2, C2:P2, C16:P2, C17:P2, R23:P2, C4:P2, C8:P2, C18:P2, Q3:S, C3:P2, C12:P2, U1:47, U1:46, U1:45, U1:44, U1:43, U1:42, U1:41, U1:40, U1:39, U1:38, R13:P1, U3 DIR - R20 P1:GND, U3:DIR, U2:PGND, U2:AGND, Q8:E, C11:P2, R18:P2, C20:P2, U2:DGND, C1:P2, C5:P2, C15:P2, Q2:S, U2:EP, R16:P2, U1:1;

net 3V3 = R10:P1, C3:P1, C7:P1, R11:P1, C13:P1, C14:P1, U3:VDD3V3, U2:DVDD, D1:A, R19:P1, U3:VDD5V, C2:P1, R14:P2, U1:3V3, C9:P1, C16:P1, U2:CAL, C1:P1, L1:P2, R15:P2, C4:P1;

net VIN_24V = C21:P2, U2:VIN, D2:K, U2:VDRAIN, Q4:D, U2:VM, Q6:D, C6:P1, C17:P1, Q5:D, C12:P1, C18:P1;

net BUCK_SW = D1:K, U2:SW, C19:P2, C11:P1, L1:P1;

net SHUNT_A_HIGH = U2:SPA, R7:P1;

net PHASE_A_SW = Q1:D, Q4:S, U2:SHA;

net DRV_nFAULT = U2:nFAULT, R14:P1, U1:IO34;

net CURR_A_KELVIN = U1:SENSOR_VP, U2:SOA;

net SHUNT_C_LOW = R9:P2, U2:SNC;

net GATE_AL = R4:P1, U2:GLA;

net SPI_SCK = U2:SCLK, U1:IO18;

net PHASE_B_SW = Q2:D, U2:SHB, Q5:S;

net SHUNT_B_LOW = U2:SNB, R8:P2;

net SPI_MISO = U1:IO19, U2:SDO;

net BUCK_FB = U2:FB, R18:P1, C20:P1, R19:P2;

net GATE_BH = U2:GHB, R5:P1;

net DRV_EN = U2:nSHDN, U2:ENABLE, R15:P1, U1:IO4;

net SHUNT_A_LOW = R7:P2, U2:SNA;

net PWM_BL = U2:INLB, U1:IO14;

net PHASE_C_SW = Q6:S, U2:SHC, Q3:D;

net SHUNT_B_HIGH = U2:SPB, R8:P1;

net PWM_BH = U1:IO27, U2:INHB;

net GATE_BL = U2:GLB, R6:P1;

net GATE_AH = U2:GHA, R3:P1;

net BUCK_BOOT = C19:P1, U2:CB;

net SHUNT_C_HIGH = U2:SPC, R9:P1;

net PWM_AL = U1:IO26, U2:INLA;

net CP_HIGH = C21:P1, U2:VCP;

net PWM_CH = U2:INHC, U1:IO12;

net SPI_MOSI = U1:IO23, U2:SDI;

net PWM_AH = U1:IO25, U2:INHA;

net PWM_CL = U1:IO13, U2:INLC;

net DRV_VREF = U2:VREF;

net CURR_C_KELVIN = U1:IO35, U2:SOC;

net SPI_CS = U2:nSCS, U1:IO5;

net GATE_CH = U2:GHC;

net GATE_CL = U2:GLC;

net CURR_B_KELVIN = U2:SOB, U1:SENSOR_VN;

net DRV_CP_FLYING_H = U2:CPH, C10:P1;

net DRV_CP_FLYING_L = U2:CPL, C10:P2;

}

21 days

adding physical no connect markers...

0:57

Searching for components.

Started: adding physical no connect markers

21 days

Stopped due to a problem. Please try again.


To get started, talk to Flux or create a New Document.

Documents

    Documents are markdown text files which describe project goals, capture details, or even simulation outputs.

    Assets

    Assets are files uploaded to this project which can be used in various ways.

    ESP32 BLDC Motor Controller thumbnail
    Multi-layer circular BLDC motor controller for a 24 V, up to 750 W system using an ESP32-WROOM with DRV8323RS gate driver, six external MOSFETs, 2 mOhm shunt current sensing, bottom-mounted AS5600 encoder, USB-C programming/user interface, 3.3 V logic powered from the DRV8323RS buck regulator, and heavy motor phase pads sized for approximately 30 A current paths. Target layout is a circular board around 50 mm diameter, expandable if required for thermal management, power routing, and signal integrity.

    Properties

    Properties describe core aspects of the project.

    Pricing & Availability

    Distributor

    Qty 1

    Arrow

    $5.20–$8.28

    Digi-Key

    $12.59–$13.61

    LCSC

    $13.85–$17.09

    Mouser

    $20.99

    TME

    $0.55

    Verical

    $2.06–$5.09

    Controls