Skip to the content
4 layers85 × 54 mmIntegrated motor controller, the printed circuit board in 3D

Integrated Motor Controller for a robotics competion hosted by my work. The competitions changes each year so this board is flexible and contains mutliple headers for expanding to daughter boards.

Size
85 × 54 mm
Copper layers
4
Thickness
1.6 mm
Parts
150
Nets
104
Pads
518
Tracks, vias
884, 166
Pours
178
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
10 May 2026
Updated
24 May 2026

Overview

Integrated motor controller is an open-source printed circuit board by kgieselman, from the kgieselman/integrated_motor_controller_pcb repository on GitHub, published under the CERN-OHL-S-2.0 licence. It is a 4-layer board of 85 × 54 mm with 150 parts on 104 nets, routed with 884 tracks and 166 vias.

It is built around the AP63205WU, LSM6DSV and M24C64-RMN6TP, with the USBLC6-2SC6, 1812L200THPR and ASE-25.000MHZ-ET among its other parts. Its parts include 45 capacitors, 33 resistors, 15 connectors, 10 diodes and 9 ICs. It belongs with the robots and motor control boards and the STM32 boards of this library.

Main components

11

README

README.md

Integrated Motor Controller PCB

A reusable base board for yearly robotics competitions. The base board handles drive, sensing, control, and radio. Per-season expansion is exposed through a small set of discrete headers (AUX, UART, QWIIC I²C, servo), not a single dedicated mechanism connector.

Adapter boards are named after creature parts: Fang (ping pong gripper/launcher), with future adapters extending the menagerie.

Architecture

text
┌──────────────────────────────────────────────────────────────────┐
│                        Base Board                                │
│                                                                  │
│  ┌───────────────────┐  ┌──────────────────────────────────────┐ │
│  │ Power             │  │  STM32 H563RIT6                      │ │
│  │ 2S/3S → 5V ×2     │  │  250 MHz, 2MB / 640KB                │ │
│  │ (aux + main)      │  │  Y1 ASE-25MHz active oscillator      │ │
│  │ 5V → 3.3V LDO     │  │  BZ buzzer, D6–D9 LEDs               │ │
│  │ USB/batt PowerPath|  └────────────┬─────────────────────────┘ │
│  └───────────────────┘               │                           │
│                                      │                           │
│  ┌───────────────────────────────────┼───────────────┐           │
│  │   DRV8874 ×2 Motor Drivers        │               │           │
│  │   ~9A peak each                   │  Encoders ×2  │           │
│  │   IN1/IN2 + IPROPI                │  TIM4 / TIM8  │           │
│  └───────────────────────────────────┴───────────────┘           │
│                                                                  │
│  Connectors (* = DNP, footprint reserved):                       │
│   J1  RCVR    1×4 pin       — ELRS/CRSF RX/TX + 5 V *            │
│   J2  SWD     2×3 pin       — SWDIO/SWCLK/nRST, 3.3 V *          │
│   J3  ENC 0   1×3 pin       — encoder 0 signal, 3.3 V *          │
│   J4  ENC 1   1×3 pin       — encoder 1 signal, 3.3 V *          │
│   J5  UART    1×3 pin       — expansion UART, JST GH 1.25 mm *   │
│   J6  CH0     1×3 pin       — servo 0, +5V_Aux, GND *            │

Key Specs

MCUSTM32H563RIT6 — Cortex-M33 @ 250 MHz, 2 MB flash, 640 KB SRAM, LQFP-64
ClockY1 ASE-25.000MHZ — Abracon active oscillator, 4-pin SMD 3.2×2.5 mm
Motor drivers2× DRV8874 (PWP-16, HTSSOP) — IN1/IN2 mode (PMODE driven high), IPROPI current sense
IMULSM6DSV (U6) — 6-axis, SPI1 on PB3/PB4/PB5, CS=PC12, INT1=PD2, INT2=PB8; LGA-14 3×2.5 mm
EEPROMM24C64 — 64 Kbit, I²C1 on PB6/PB7, WC=PA9
RC controlExternal CRSF/ELRS receiver via J1 (1×4); JP1/JP2 solder jumpers bridged by default
Servo channels3, powered from +5V_Aux buck
Expansion UARTJST GH 1.25 mm
I2C expansionJST SH 1.0 mm, 1×4
Power input2S/3S LiPo (7.4–12.6 V) via XT60; USB-C VBUS can power logic rails only
Power topologySW1 power switch; SI7157DP; 2N7002; AP63205WU bucks (5V_Aux + 5V); AP1117-33 LDO for 3.3 V
DebugSWD, MCU RST, MCU BOOT0, USR button, power switch, LEDs, buzzer
Board4-layer FR4

Schematic Hierarchy

text
integrated_motor_controller.kicad_sch (Root)
├── power_regulator_2s_3s.kicad_sch — Battery input, power switch, bucks, LDO, VBAT sense
├── mcu_h563r.kicad_sch             — STM32H563, Y1 active oscillator, bypass, pin assignments, VCAP, SW2/SW3
├── motor_driver_drv8874.kicad_sch  — DRV8874 (instantiated twice: Motor 0 + Motor 1), motor output connectors
├── imu_lsm6dsv.kicad_sch           — LSM6DSV on SPI1
├── eeprom_m24c64.kicad_sch         — M24C64 on I²C1
├── debug_leds.kicad_sch            — Debug LEDs (×4), buzzer, user button, transistor drivers
└── connector_usb.kicad_sch         — USB-C receptacle + USBLC6-2SC6 ESD + CC pulldowns

Servo, encoder, UART, I2C, RCVR, and SWD connectors are placed directly on the root sheet.

Status

  • Schematic hierarchy defined
  • Sub-schematics created and wired
  • PCB layout complete (KiCad 10)
  • Gerber / drill files generated (gerbers/)
  • ERC clean
  • DRC clean
  • BOM and pick-and-place outputs
  • First board assembled and tested

Getting Started

  1. Clone this repo
  2. Open integrated_motor_controller.kicad_pro in KiCad 10+
  3. Custom symbols are in libraries/symbols/ — resolved via the committed sym-lib-table
  4. Custom footprints are in libraries/footprints/ — resolved via fp-lib-table

Repo Structure

text
integrated_motor_controller-pcb/
├── integrated_motor_controller.kicad_pro              # KiCad project file — open this
├── integrated_motor_controller.kicad_sch              # Root schematic
├── integrated_motor_controller.kicad_pcb              # PCB layout
├── power_regulator_2s_3s.kicad_sch
├── mcu_h563r.kicad_sch
├── motor_driver_drv8874.kicad_sch
├── imu_lsm6dsv.kicad_sch
├── eeprom_m24c64.kicad_sch
├── debug_leds.kicad_sch
├── connector_usb.kicad_sch
├── gerbers/                       # Gerber + drill files (ready for fab)
├── output/
│   ├── integrated_motor_controller.csv                # BOM export
│   └── integrated_motor_controller.net                # Netlist export
├── libraries/
│   ├── symbols/                   # Custom KiCad symbol libraries (.kicad_sym)
│   ├── footprints/                # Custom KiCad footprint libraries (.kicad_mod)
│   └── 3d_models/                 # STEP/WRL 3D models
├── sym-lib-table                  # Symbol library table (committed — paths are relative)
└── fp-lib-table                   # Footprint library table (committed — paths are relative)

License

CERN Open Hardware Licence Version 2 - Strongly Reciprocal (CERN-OHL-S-2.0) © 2026 Kyle Gieselman

Parts

150
QtyValueFootprintReferences
20100nFCapacitor_SMD:C_0603_1608MetricC2, C3, C11, C12, C14, C20, C21, C22, C23, C24, C26, C27, C31, C32, C36, C37 +4
1422uFCapacitor_SMD:C_1206_3216MetricC6, C7, C8, C10, C13, C15, C16, C18, C33, C34, C35, C39, C40, C41
910kResistor_SMD:R_0603_1608MetricR11, R13, R14, R16, R17, R18, R22, R23, R31
4220Resistor_SMD:R_0603_1608MetricR27, R28, R29, R30
42N7002Package_TO_SOT_SMD:SOT-23Q2, Q3, Q4, Q5
43.3kResistor_SMD:R_0603_1608MetricR2, R3, R32, R33
4M2 MountMountingHole:MountingHole_2.2mm_M2_Pad_ViaH1, H2, H3, H4
3100kResistor_SMD:R_0603_1608MetricR7, R9, R10
3GNDTestPoint:TestPoint_Pad_D1.0mmTP1, TP2, TP3
20Resistor_SMD:R_0805_2012MetricR19, R24
21.5kResistor_SMD:R_0805_2012MetricR20, R25
2100Resistor_SMD:R_0805_2012MetricR21, R26
22.2uFCapacitor_SMD:C_0603_1608MetricC28, C29
222nFCapacitor_SMD:C_0603_1608MetricC38, C44
24.7uHInductor_SMD:L_Sunlord_MWSA0503SL1, L2
25.1kResistor_SMD:R_0603_1608MetricR5, R6
2>=100uFCapacitor_THT:CP_Radial_D5.0mm_P2.00mmC1, C9
2AP63205WUPackage_TO_SOT_SMD:TSOT-23-6U2, U4
2DRV8874PWPRDRV8874PWPR:PWP0016J_NU7, U8
2FiducialMountingHole:ToolingHole_1.152mmFID1, FID2
2I2CConnector_JST:JST_SH_BM04B-SRSS-TB_1x04-1MP_P1.00mm_VerticalJ7, J9
2MOTConnector_Molex:Molex_Micro-Fit_3.0_43650-0215_1x02_P3.00mm_VerticalJ14, J15
2SchottkyDiode_SMD:D_SOD-123D5, D10
2SolderJumper_2_BridgedJumper:SolderJumper-2_P1.3mm_Bridged_Pad1.0x1.5mmJP1, JP2
1100Resistor_SMD:R_0603_1608MetricR1
1100pFCapacitor_SMD:C_0603_1608MetricC4
110nFCapacitor_SMD:C_0603_1608MetricC30
110uFCapacitor_SMD:C_0603_1608MetricC17
11812L200THPRFuse:Fuse_1812_4532MetricF1
11MResistor_SMD:R_0603_1608MetricR8
11uFCapacitor_SMD:C_0603_1608MetricC25
130kResistor_SMD:R_0603_1608MetricR12
133Resistor_SMD:R_0603_1608MetricR15
13V3TestPoint:TestPoint_Pad_D1.0mmTP8
14.7uFCapacitor_SMD:C_0603_1608MetricC19
15VTestPoint:TestPoint_Pad_D1.0mmTP9
15V_AUXTestPoint:TestPoint_Pad_D1.0mmTP6
168kResistor_SMD:R_0603_1608MetricR4
1AP1117-33Package_TO_SOT_SMD:SOT-223-3_TabPin2U3
1ASE-25.000MHZOscillator:Oscillator_SMD_Abracon_ASE-4Pin_3.2x2.5mmY1
1BATT_DIVTestPoint:TestPoint_Pad_D1.0mmTP7
1BATT_INConnector_AMASS:AMASS_XT60-M_1x02_P7.20mm_VerticalJ13
1BOOTButton_Switch_SMD:SW_SPST_TS-1088-xR020SW3
1BZT52C3V3Diode_SMD:D_SOD-123D3
1BuzzerBuzzer_Beeper:MagneticBuzzer_PUI_AT-0927-TT-6-RBZ1
1CH0Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ6
1CH1Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ8
1CH2Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ10
1ENC 0Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ3
1ENC 1Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ4
1FerriteInductor_SMD:L_0805_2012MetricFB1
1LED0LED_SMD:LED_0603_1608MetricD7
1LED1LED_SMD:LED_0603_1608MetricD8
1LED2LED_SMD:LED_0603_1608MetricD9
1LSM6DSVPackage_LGA:LGA-14_3x2.5mm_P0.5mm_LayoutBorder3x4yU6
1Logo_Open_Hardware_SmallSymbol:KiCad-Logo2_6mm_SilkScreenSYM2
1M24C64-RMN6TPPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU9
1MM3Z10VT1GDiode_SMD:D_SOD-323D1
1PA10TestPoint:TestPoint_Pad_D1.0mmTP10
1PB12TestPoint:TestPoint_Pad_D1.0mmTP12
1PB13TestPoint:TestPoint_Pad_D1.0mmTP13
1PC8TestPoint:TestPoint_Pad_D1.0mmTP11
1PMEG3010EJDiode_SMD:D_SOD-323FD4
1PWRLED_SMD:LED_0603_1608MetricD6
1RCVRConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1
1SI7157DPPackage_SO:PowerPAK_SO-8_SingleQ1
1SMAJ16ADiode_SMD:D_SMAD2
1STM32H563RITxPackage_QFP:LQFP-64_10x10mm_P0.5mmU5
1SWDConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ2
1SW_PWRConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalSW1
1SYM_ESD_LargeSymbol:ESD-Logo_6.6x6mm_SilkScreenSYM1
1UARTConnector_JST:JST_GH_BM03B-GHS-TBT_1x03-1MP_P1.25mm_VerticalJ5
1USB C 2.0Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J11
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U1
1USB_DETTestPoint:TestPoint_Pad_D1.0mmTP5
1USRButton_Switch_SMD:SW_SPST_TS-1088-xR020SW4
1VBUSTestPoint:TestPoint_Pad_D1.0mmTP4
1VMeterConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ12
1~{RST}Button_Switch_SMD:SW_SPST_TS-1088-xR020SW2

Similar boards

  • 6 layers50 × 50 mmRepeat hw, the printed circuit board in 3D

    Repeat hw

    WojtaCZ/repeat-hw

    A repository containing hardware files (KiCad project) for the REPEAT board

    158 parts
  • 4 layers42 × 100 mmChickensticks, the printed circuit board in 3D

    Chickensticks

    npgo22/chickensticks

    102 parts
  • 4 layers97 × 97.1 mmThermoBoard, the printed circuit board in 3D

    ThermoBoard

    npgo22/ALI2Proposal

    139 parts
  • 2 layers122 × 68 mmNiceRAMPS, the printed circuit board in 3D

    NiceRAMPS

    NiceCircuits/NiceRAMPS

    Improved version of RAMPS board with ribbon cable connecors and more.

    135 parts4GPL-2.0
  • 2 layers235 × 68 mmN2-etoile-0v, the printed circuit board in 3D

    N2-etoile-0v

    essensys-hub/essensys-i2c-etoile-0v

    Carte qui relie le boîtier principal (BP, carte SC944D) aux boîtiers auxiliaires (BA1 SC940D, BA2 SC941C, BA3 SC942C) d'une installation Essensys en étoile autour d'un plan 0 V commun, à la place du chaînage d'origine.

    181 partsMIT
  • 4 layers22.9 × 22.9 mmTornado, the printed circuit board in 3D

    Tornado

    2crabs/Tornado-Board

    45 parts1CERN-OHL-S-2.0

Questions

How big is the Integrated motor controller PCB?

It measures 85 × 54 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Integrated motor controller use?

150 parts, built around the AP63205WU, LSM6DSV, M24C64-RMN6TP and USBLC6-2SC6. 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 Integrated motor controller KiCad files?

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

Can I use the Integrated motor controller design in my own project?

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