Skip to the content
PCBKitNew board
4 layers27 × 27 mmO32controller, the printed circuit board in 3D

Miniature closed-loop controller for brushless DC motors

Size
27 × 27 mm
Copper layers
4
Thickness
0.8 mm
Parts
88
Nets
86
Pads
282
Tracks, vias
743, 221
Pours
13
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
17 Dec 2022
Updated
10 Aug 2024

Overview

O32controller is an open-source printed circuit board by qwertpas, from the qwertpas/O32controller repository on GitHub, published under the MIT licence. It is a 4-layer board of 27 × 27 mm with 88 parts on 86 nets, routed with 743 tracks and 221 vias.

It is built around the STSPIN32F0A, MA702GQ-P and CSD88584Q5DCT, with the SDM2U30CSP and ESDA17P20-1F2 among its other parts. Its parts include 35 resistors, 21 capacitors, 12 connectors, 6 diodes and 3 ICs. It belongs with the robots and motor control boards and the STM32 boards of this library.

Main components

5

README

readme.md

BR2304 threeversions

Small robots often use servos or small brushed DC motors, but they are not as power dense as the brushless DC (BLDC) motors commonly found in drones. Called the Ø32 because the M2 mounting holes are on a 32mm diameter circle, this project controls 7-15V motors with accurate position feedback and field-oriented control (FOC), while fitting almost completely behind a 2304 or larger drone motor.

Specs:

  • 27mm x 27mm x 0.8mm, 4-layer, 1oz copper PCB
  • M2 mounting holes on a 32mm diameter circle
  • 7-15V input, bus voltage sensing
  • MCU internal temperature sensor and external NTC reading
  • built-in high speed 12-bit magnetic angle sensor and external SPI encoder port (3.3V)
  • 3 shunt current sensing and overcurrent protection
  • 2x 2-pin JST-SH connectors for RS-485 communication, allowing daisy chaining
  • 1x 4-pin JST-SH connector for SWD programming/debug and UART_TX output
  • FOC capable

Critical components:

  • STSPIN32F0A BLDC gate driver and Cortex-M0 MCU
  • MA702 magnetic angle sensor
  • CSD88584Q5DC half-bridge (50A continuous)

schematic Full schematic PDF

More info on Hackaday.io: https://hackaday.io/project/189115-32-bldc-controller

Firmware here: https://github.com/qwertpas/O32controller_FW

Changelog from v3 to v3.1:

  • Larger 15V TVS diode D2 (SMF15A) because there is space
  • Changed R4 from 121kΩ to 33kΩ for a more reasonable phase current limit of 43A using the 100mV comparator
  • Replaced external SPI pads with UART and GPIO PA15 pads for direct communication with another microcontroller without need for RS485 transceiver
  • Replace MA702 (12-bit magnetic encoder) with MA732 (14-bit, adjustable filter)
  • Picked out parts in stock from LCSC as much as possible

Changelog from v2 to v3:

  • Fixed TVS diode direction on VBUS (!!)
  • Changed to 37x 22uF ceramic capacitors instead of 2x 100uF electrolytic capacitors for a thinner PCBA
  • Removed I2C (formerly on PB6 and PB7)
  • Moved UART_TX and UART_RX to PB6 and PB7 (formerly on PA2 and PA15)
  • Changed PA2 to ADC1 CH2 to read a 10k NTC, soldered to pads
  • Changed PA15 to GPIO for external SPI CS (MAG2_CS)
  • Added 13.7k pulldown on SPI_MISO to keep it determined when no devices selected
  • Changed to 100nF filter capacitor on BUS_SENSE instead of 1nF to charge ADC capacitor better and for smoother data
  • Changed BUS_SENSE gain to 5x instead of 5.12x to reuse 13.7k resistor
  • Removed test point on BUS_SENSE
  • Added test point on LED_STATUS (for debugging using GPIO)
  • Removed NRST pushbutton to create space
  • Added 6 pads with 0.5mm pitch to solder FFC cable for an external SPI encoder
  • Changed vias to 0.25mm hole size and 0.55mm plated diameter instead of 0.2/0.5 for easier manufacturability
  • Changed minimum track clearance from 0.2mm to 0.16mm to make space for larger vias
  • Changed to equal number of vias (27) on the top side of all three shunt resistors
  • Changed most silkscreen text to 0.8mm width/height
  • Put all footprints and 3D models in project library O32controller

Parts

88
QtyValueFootprintReferences
61.78kResistor_SMD:R_0402_1005MetricR2, R3, R6, R7, R10, R11
610RResistor_SMD:R_0402_1005MetricR13, R15, R16, R18, R19, R21
627.4kResistor_SMD:R_0402_1005MetricR30, R31, R32, R33, R34, R35
5100nFCapacitor_SMD:C_0402_1005MetricC1, C4, C5, C6, C7
51nFCapacitor_SMD:C_0402_1005MetricC11, C18, C19, C20, C21
310nFCapacitor_SMD:C_0402_1005MetricC12, C14, C16
313.7kResistor_SMD:R_0402_1005MetricR4, R8, R12
32.2RResistor_SMD:R_0402_1005MetricR23, R24, R25
32.2kResistor_SMD:R_0402_1005MetricR14, R17, R20
34.7nFCapacitor_SMD:C_0402_1005MetricC13, C15, C17
3CSD88584Q5DCTO32controller:CSD88584Q5DCTQ1, Q2, Q3
3Motor ConnectionO32controller:SolderWire-Actual_1x01_D1.7mm_OD_2.75mmJ4, J5, J6
3SDM2U30CSPO32controller:SDM2U30CSP-7D1, D5, D6
3Sense_NO32controller:NetTie-2_SMD_Pad0.25mmNT1, NT2, NT3
3WSLF25122L000FEB 0.002RO32controller:R_Shunt_2512_6332MetricR1, R5, R9
2100uFO32controller:CAP_EEEFN1E101UPC8, C9
21kResistor_SMD:R_0402_1005MetricR28, R29
2BATT+O32controller:SolderWire-Actual_1x01_D1.7mm_OD_2.75mmJ2, J7
2BATT-O32controller:SolderWire-Actual_1x01_D1.7mm_OD_2.75mmJ3, J8
110kResistor_SMD:R_0402_1005MetricR27
110uFCapacitor_SMD:C_0603_1608MetricC3
1121kResistor_SMD:R_0402_1005MetricR22
11uFCapacitor_SMD:C_0402_1005MetricC10
122uHO32controller:IND_VLS201612CX-220M-1L1
13V3O32controller:SolderWire-Actual_1x01_D1.25mm_OD_1.8mmJ10
141.2kResistor_SMD:R_0402_1005MetricR26
147uFCapacitor_SMD:C_0603_1608MetricC2
1ESDA17P20-1F2O32controller:SMT2_0P91X0P63_STM-LD2
1GNDO32controller:SolderWire-Actual_1x01_D1.25mm_OD_1.8mmJ11
1GREENLED_SMD:LED_0603_1608MetricD4
1I2C/RS485_1O32controller:JST_SM02B-SRSS-TB(LF)(SN)J9
1I2C/RS485_2O32controller:JST_SM02B-SRSS-TB(LF)(SN)J12
1MA702GQ-PO32controller:MA702GQ-PU1
1REDLED_SMD:LED_0603_1608MetricD3
1RESETO32controller:Tactile_Switch_EVQ-P7A01PSW1
1SCL/BO32controller:NetTie-2_SMD_Pad0.25mmNT5
1SDA/AO32controller:NetTie-2_SMD_Pad0.25mmNT4
1STSPIN32F0AO32controller:VFQFPN-48-1EP_7x7mm_P0.5mm_EP2.8x2.8mmU2
1SWDO32controller:JST_SM04B-SRSS-TB(LF)(SN)J1
1THVD1420DRLRO32controller:THVD1420DRLR_SOT-585U3
1TestPointTestPoint:TestPoint_Pad_D1.0mmTP2

Questions

How big is the O32controller PCB?

It measures 27 × 27 mm and has 4 copper layers, 0.8 mm thick.

What parts does the O32controller use?

88 parts, built around the STSPIN32F0A, MA702GQ-P, CSD88584Q5DCT and SDM2U30CSP. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the O32controller KiCad files?

From the qwertpas/O32controller repository on GitHub, at the commit this page was made from: the board is v2/O32controller.kicad_pcb and its schematic v2/O32controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the O32controller design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

More from qwertpas/O32controller

1
  • 4 layers27 × 27 mmO32controller, the printed circuit board in 3D

    O32controller

    qwertpas/O32controller

    Miniature closed-loop controller for brushless DC motors

    126 parts37MIT

Similar boards

  • 2 layers27 × 27 mmSquirrelbrain, the printed circuit board in 3D

    Squirrelbrain

    qwertpas/squirrelbrain

    Main control PCB for Pinto robot squirrel

    38 parts1MIT
  • 4 layers67 × 51 mmBC Heater, the printed circuit board in 3D

    BC Heater

    rasusmilch/BC_Heater

    132 parts
  • 4 layers90 × 80 mmPowerboard v1, the printed circuit board in 3D

    Powerboard v1

    TIGERs-Mannheim/electronics

    TIGERs Mannheim Open-Source Electronics

    372 parts9
  • 4 layers32.3 × 47.3 mmESC module, the printed circuit board in 3D

    ESC module

    Prosjekt-gruppe/Ingenior-prosjekt-4

    Ingeniørprosjekt IV

    70 parts5MIT
  • 4 layers44 × 43.5 mmEsc4in1, the printed circuit board in 3D

    Esc4in1

    Swamy-BV/kicad-flow

    Build KiCad schematics and PCBs through MCP. Small, composable tools handle file formats and geometry; the caller controls placement, wiring, and routing.

    87 partsAGPL-3.0
  • 4 layersMoco rc1, the printed circuit board in 3D

    Moco rc1

    ziteh/moco

    PMSM/BLDC motor controller/driver PCBs

    89 parts24CERN-OHL-P-2.0
  • 4 layers31 × 40 mmEasyBLDCV4 STSPIN32F0A, the printed circuit board in 3D

    EasyBLDCV4 STSPIN32F0A

    buckles3636/EasyBLDC

    Please ensure your designs meet common standards and include necessary documentation and comments.

    58 parts2MIT
  • 2 layers42 × 23 mmBlmd, the printed circuit board in 3D

    Blmd

    Teruru-52/Mercury-pcb

    72 parts1