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
126
Nets
86
Pads
354
Tracks, vias
812, 211
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 126 parts on 86 nets, routed with 812 tracks and 211 vias.

It is built around the CSD88584Q5DC, MA732GQ-Z and CL21A226MAQNNNE, with the SR0402FR-7T10RL, CC0402MRX7R9BB102 and CRCW04022R20JNEDHP among its other parts. Its parts include 58 capacitors, 37 resistors, 13 connectors, 6 diodes and 3 ICs. It belongs with the robots and motor control boards and the STM32 boards of this library.

Main components

12

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

126
QtyValueFootprintReferences
3722uFO32controller:C_0805_nosilkC21, C22, C23, C24, C25, C26, C27, C28, C29, C30, C31, C32, C33, C34, C35, C36 +21
8100nFCapacitor_SMD:C_0402_1005MetricC1, C4, C5, C6, C8, C9, C10, C58
61.78kResistor_SMD:R_0402_1005MetricR15, R17, R24, R26, R33, R35
610RResistor_SMD:R_0402_1005MetricR11, R13, R20, R22, R29, R31
627.4kResistor_SMD:R_0402_1005MetricR14, R16, R23, R25, R32, R34
513.7kResistor_SMD:R_0402_1005MetricR9, R10, R19, R28, R37
41nFCapacitor_SMD:C_0402_1005MetricC7, C14, C17, C20
310nFCapacitor_SMD:C_0402_1005MetricC12, C15, C18
31kResistor_SMD:R_0402_1005MetricR1, R2, R7
32.2RResistor_SMD:R_0402_1005MetricR12, R21, R30
32.2kResistor_SMD:R_0402_1005MetricR3, R5, R6
34.7nFCapacitor_SMD:C_0402_1005MetricC13, C16, C19
3CSD88584Q5DCO32controller:CSD88584Q5DCTQ1, Q2, Q3
3Motor ConnectionO32controller:SolderWire-Actual_1x01_D1.7mm_OD_2.75mmJ10, J11, J12
3PU2512FKMP50R002LO32controller:R_Shunt_2512_6332MetricR18, R27, R36
3SDM2U30CSPO32controller:SDM2U30CSP-7D1, D4, D5
3Sense_NO32controller:NetTie-2_SMD_Pad0.25mmNT1, NT2, NT3
2BATT+O32controller:SolderWire-Actual_1x01_D1.7mm_OD_2.75mmJ1, J2
2BATT-O32controller:SolderWire-Actual_1x01_D1.7mm_OD_2.75mmJ3, J4
2RS485O32controller:JST_SM02B-SRSS-TB(LF)(SN)J8, J9
2TestPointO32controller:TestPoint_Pad_RectTP1, TP3
110uFCapacitor_SMD:C_0603_1608MetricC3
1121kResistor_SMD:R_0402_1005MetricR4
11uFCapacitor_SMD:C_0402_1005MetricC11
122uHO32controller:IND_VLS201612CX-220M-1L1
147uFCapacitor_SMD:C_0603_1608MetricC2
154.9kResistor_SMD:R_0402_1005MetricR8
1AuxUARTO32controller:SolderUART-1.27mmJ7
1GREENLED_SMD:LED_0603_1608MetricD3
1MA732GQ-ZO32controller:QFN-16_MA732U3
1NTCO32controller:SolderNTC-1.27mmJ5
1PA15O32controller:SolderPad1-1.27mmJ13
1REDLED_SMD:LED_0603_1608MetricD6
1SMF15ADiode_SMD:D_SMFD7
1STSPIN32F0ATRO32controller:VFQFPN-48-1EP_7x7mm_P0.5mm_EP2.8x2.8mmU1
1SWDO32controller:JST_SM04B-SRSS-TB(LF)(SN)J6
1THVD1420DRLRO32controller:THVD1420DRLR_SOT-585U2

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?

126 parts, built around the CSD88584Q5DC, MA732GQ-Z, CL21A226MAQNNNE and SR0402FR-7T10RL. 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 v3/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

    88 parts37MIT

Similar boards

  • 4 layers20 × 30 mmMicro17, the printed circuit board in 3D

    Micro17

    M17-Project/Micro17

    M17 baseband processor board - OpenRTX on a Module

    93 parts20
  • 4 layers40 × 60 mmTrinketcore, the printed circuit board in 3D

    Trinketcore

    alph4345/test

    TrinketCore puts everything a small rechargeable gadget needs on one 40 × 60 mm board, ready to order assembled from PCBWay:

    113 parts
  • 6 layers72 × 69.5 mmDashMotor48V, the printed circuit board in 3D

    DashMotor48V

    ShangqunYu/Dash48V

    48v version motor controller board

    104 parts
  • 4 layers40 × 40 mmZiteh moco moco sc1, the printed circuit board in 3D

    Ziteh moco moco sc1

    punkfab/pcb-corpus

    235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

    118 parts1
  • 4 layers60.7 × 27.2 mmKyberBoard, the printed circuit board in 3D

    KyberBoard

    lowdrant/kyber

    Extending/Retracting Lightsaber CAD/FW/EDA

    71 parts2AGPL-3.0
  • 4 layers38.5 × 42 mmM FC, the printed circuit board in 3D

    M FC

    Def12345678/M-FC-G474-Rev-A

    Modular STM32G474 Flight Controller Rev-A. Focus on modularity using JST-SH connectors for all peripherals (ESC, RX, etc.). ICM-42688-P IMU and DPS368 barometer. Requires external 5V 2.5A (no onboard BEC).

    112 partsMIT
  • 4 layers32.3 × 33.3 mmFmcw2 mcu, the printed circuit board in 3D

    Fmcw2 mcu

    Ttl/fmcw2

    FMCW radar design files

    124 parts199
  • 4 layers80.5 × 50 mmBwlc1a, the printed circuit board in 3D

    Bwlc1a

    teapotlaboratories/bwlc1a

    Low-power Cellular GPS Tracker

    178 parts2MIT