Skip to the content
PCBKitNew board
4 layers45 × 40 mmCogless, the printed circuit board in 3D

Open-source single-chip FOC ESC. One RISC-V MCU (CH32M007) with integrated gate driver, current-sense PGA and regulators drives a 4S / 30V power stage on a 45×40mm 4-layer board. KiCad sources under CERN-OHL-P v2.

Size
45 × 40 mm
Copper layers
4
Thickness
1.6 mm
Parts
55
Nets
35
Pads
139
Tracks, vias
432, 283
Pours
12
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
14 Aug 2026
Updated
4 Oct 2026

Overview

Cogless is an open-source printed circuit board by rmingon, from the rmingon/Cogless repository on GitHub. It is a 4-layer board of 45 × 40 mm with 55 parts on 35 nets, routed with 432 tracks and 283 vias.

It is built around the CH32M007G8R6 and AOD514. Its parts include 24 resistors, 15 capacitors, 6 transistors, 2 connectors and 1 IC. It belongs with the robots and motor control boards of this library.

Main components

2

README

README.md

Cogless

A single-chip, open-source brushless ESC built around the WCH CH32M007.
One RISC-V motor-control SoC, six MOSFETs, a handful of passives. Every design file public.

RISC-V 2S to 4S PCB KiCad 10 CERN-OHL-S v2 GPL-3.0 Prototype

Cogless 3D render


Overview

Most hobby ESCs are black boxes: closed firmware, undocumented hardware, and a microcontroller, gate driver and op-amps spread over a dozen chips. Cogless takes the opposite approach.

The WCH CH32M007G8R6 integrates on a single die everything the brain of an ESC needs: a RISC-V core, a three-phase 48 V N+N gate pre-driver with bootstrap diodes, the high-voltage and logic regulators, a programmable-gain current amplifier, comparators wired to the PWM timer's emergency brake, and a 3 Msps ADC. The result is a complete motor controller with one IC, six MOSFETs and a few passives on a 45 × 40 mm board.

ControlSensorless six-step (trapezoidal) commutation, back-EMF sensing
Start-upAutomatic motor detection and tuning, stored in flash
ProtectionHardware over-current break, cycle-by-cycle current limit, voltage and thermal derating
OpennessKiCad sources, fabrication outputs and firmware, dual-licensed

Hardware

Specifications

ParameterValue
ControllerWCH CH32M007G8R6, QingKe RISC-V, 48 MHz, 62 KB flash, 8 KB RAM, SSOP-28
Gate driverIntegrated three-phase N+N pre-driver, bootstrap diodes, up to 48 V
Power stage6 × AOD514 (30 V, 46 A, 5.9 mΩ), DPAK, thermal via arrays
Supply2S to 4S LiPo (6 V to 16.8 V), XT30 connector
RegulationInternal high-voltage LDO and 5 V logic LDO, no external regulator
Current sense2 mΩ 2512 shunt, Kelvin-routed differential pair, internal PGA (× 16)
Voltage senseThree phase back-EMF dividers and one battery divider, 33 kΩ / 8.2 kΩ (≈ 25 V full scale)
Temperature10 kΩ B3500 NTC (Cantherm CMFA103J3500HANT) against the low-side MOSFETs
Control input3-pin header (5 V, GND, signal)
DebugWCH 1-wire SDI (SWIO pad), WCH-LinkE
IndicatorStatus LED
Board4 layers, 45 × 40 mm, KiCad 10

PCB layout

Design notes

TopicChoice
Current sensingThe shunt is read differentially: both PGA inputs run as a Kelvin pair straight from the shunt pads, so gate-drive noise and power-trace drops stay out of the measurement.
Hardware over-currentThe PGA output feeds an internal comparator wired to the timer's break input: the bridge shuts down without any software involvement.
Gate safetyAll six MOSFETs have 100 kΩ gate pull-downs, the high sides referenced to their own phase node, so the bridge stays off while the driver powers up.
Sensorless and encoder-readyThe three phase dividers feed the ADC for back-EMF detection. The control header lands on an ADC and timer-capable pin, ready for an AS5600 or MT6701 encoder.
Supply jumper JP1Shorts VHV to VCC12V and bypasses the internal high-voltage regulator, which needs more than 18 V. JP1 must stay closed for every supported pack, 2S to 4S. It is bridged by default.

Schematic

Schematic

The full KiCad project (schematic, routed board) and the fabrication outputs (BOM, placement, netlist, Gerber archive) are in hardware/.

Firmware

The firmware lives in firmware_DShot/ as a MounRiver Studio 2 project, with its own README covering the internals, the test modes and the bring-up notes.

Features

FeatureDescriptionStatus
Six-step sensorless control48 kHz centre-aligned PWM, 400 ns dead time, closed loop on back-EMF zero crossingsValidated at 24 kHz, 48 kHz bench pending
Back-EMF sensingFloating phase sampled in the PWM off-time, against groundValidated
Current sensingSingle shunt, differential PGA, sampled inside the high-side pulseValidated
Motor auto-tuneStart current, noise floor, open-loop acceleration, hand-off speed, closed-loop accelerationValidated
Start-up and arming tonesThe motor itself is used as a speakerValidated
Servo PWM input1000 to 2000 µs on the control headerImplemented, bench validation pending
Load testPower stage under a real propeller or vehicle loadIn progress
DShot input, telemetryDigital throttle protocolPlanned
Field-oriented controlSinusoidal drive from the same hardwarePlanned

Protections

ProtectionBehaviour
Hardware over-currentComparator to timer break, outputs off immediately
Software over-currentFault after three consecutive samples above the limit
Current limitingCycle-by-cycle peak limit and slow fold-back
Speed ceilingDuty backed off at the highest speed the sampling can follow
Under-voltageCell count detected at arming, fold-back then cut-off per cell
Over-temperatureBoard temperature read every 100 ms, derating from 80 °C, cut-off at 100 °C
Loss of signalThrottle failsafe after 100 ms without a valid pulse
Desynchronisation and stallOutputs off, automatic restart at zero throttle
WatchdogIndependent watchdog, 100 ms

Current limitations

LimitationDetail
Speed ceilingAbout 80 000 eRPM at 48 kHz (≈ 11 400 rpm on a 14-pole motor), duty limited to about 83 %
Load validationFull-power behaviour under a propeller is still being characterised

Getting started

StepAction
1Order the board from the files in hardware/production/, or build it from the KiCad sources.
2Check that JP1 is closed.
3Open firmware_DShot/ in MounRiver Studio 2, build, and flash through a WCH-LinkE on SWIO, GND and 5 V.
4First power-up on a current-limited supply, motor fixed, no propeller. The ESC beeps, then tunes itself to the motor.
5Set the throttle source and limits in motor_config.h.

Repository layout

PathContent
hardware/KiCad 10 project: schematic, PCB
hardware/production/Fabrication outputs: BOM, placement, netlist, Gerber archive
firmware_DShot/Firmware, MounRiver Studio 2 project
firmware_DShot/User/Cogless firmware sources
LICENSE-HARDWARECERN-OHL-S v2
LICENSE-FIRMWAREGPL-3.0
LICENSE-COMMERCIAL.mdCommercial licensing

The CH32M007 datasheet and reference manual are available from WCH.

Safety

Warning. This is a power-electronics project. LiPo batteries and spinning motors can cause fire and serious injury. Always start on a current-limited supply, keep propellers off during bring-up and auto-tune, and never leave a first power-up unattended. You build and use this design at your own risk.

Contributing

Issues and pull requests are welcome: layout review, firmware improvements, bring-up reports, or photos of your build. If you spin a variant (higher-voltage MOSFETs, other connectors), open a discussion first: the goal is a family of small, hackable ESCs.

Because Cogless is dual-licensed, a contribution can only be merged if you agree that it may also be distributed under the commercial licence. You keep the copyright of your contribution.

License

Cogless is dual-licensed: open source under strong copyleft licences, or under a commercial licence.

PartOpen-source licence
Hardware: everything under hardware/CERN-OHL-S v2
Firmware: the files written for Cogless, marked with the Cogless SPDX headerGPL-3.0-only
You want toLicence
Use, study, modify, build or sell Cogless, and publish your modified design files and firmware under the same licencesOpen source, free of charge
Ship a product based on Cogless without publishing your changes, or combine the firmware with proprietary codeCommercial licence

Third-party files. The WCH SDK files in firmware_DShot/Core/, Peripheral/, Startup/, Debug/, and the system_ch32v00X.*, ch32v00X_it.* and ch32v00X_conf.h files in User/, are copyright Nanjing Qinheng Microelectronics (WCH) and remain under WCH's own terms. They are not covered by the Cogless licences.

Copyright © 2026 Ronan Mingon

Parts

55
QtyValueFootprintReferences
6100kResistor_SMD:R_0603_1608MetricR15, R16, R17, R18, R19, R20
6AOD514AOD514:TRANS_AOD514Q7, Q8, Q9, Q10, Q11, Q12
4100nCapacitor_SMD:C_1206_3216MetricC2, C11, C14, C15
433kResistor_SMD:R_0603_1608MetricR8, R9, R10, R21
48,2kResistor_SMD:R_0603_1608MetricR11, R12, R13, R22
3100nFCapacitor_SMD:C_1206_3216MetricC1, C3, C5
315Resistor_SMD:R_0603_1608MetricR2, R4, R6
32.2µFCapacitor_SMD:C_1206_3216MetricC9, C10, C12
322Resistor_SMD:R_0603_1608MetricR1, R3, R5
3TestPoint_AltTestPoint:TestPoint_Pad_3.0x3.0mmVSU1, VSV1, VSW1
210kResistor_SMD:R_0603_1608MetricR14, R24
210µFCapacitor_SMD:C_1206_3216MetricC7, C8
10.002Resistor_SMD:R_2512_6332MetricR7
11.1kResistor_SMD:R_0603_1608MetricR25
1100nCapacitor_SMD:C_0805_2012MetricC13
110uCapacitor_SMD:C_0805_2012MetricC6
14.7uCapacitor_SMD:C_0805_2012MetricC4
1AMASSConnector_AMASS:AMASS_XT30U-F_1x02_P5.0mm_VerticalJ1
1BLUELED_SMD:LED_0603_1608MetricD1
1CH32M007G8R6Package_SO:SSOP-28_3.9x9.9mm_P0.635mmU1
1Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ2
1Jumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP1
1NTC 10k B3950Capacitor_SMD:C_0603_1608MetricTH1
1TestPoint_AltTestPoint:TestPoint_Pad_1.5x1.5mmSWIO1

Questions

How big is the Cogless PCB?

It measures 45 × 40 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Cogless use?

55 parts, built around the CH32M007G8R6 and AOD514. 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 Cogless KiCad files?

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

Can I use the Cogless design in my own project?

Its repository states no licence, so its author keeps all rights: ask rmingon before reusing the design.

Similar boards

  • 6 layers200 × 200 mmMotherboard, the printed circuit board in 3D

    Motherboard

    c4puter/motherboard

    609 parts22CC0-1.0
  • 4 layers50 × 30 mmPicodvi, the printed circuit board in 3D

    Picodvi

    Fr4nkFletcher/ESP32-Marauder-Cheap-Yellow-Display

    ESP32Marauder Cheap Yellow Display

    55 parts1.8kMIT
  • 4 layers43 × 49 mmEsppdp, the printed circuit board in 3D

    Esppdp

    Spritetm/esppdp

    ESP32-based PDP11 simulator, based onSimH

    55 parts141
  • 4 layers37 × 34.3 mmReadout 60pin, the printed circuit board in 3D

    Readout 60pin

    opentac/opentac

    OpenTac: open tools to design, fabricate, read and simulate flex-PCB tactile skins that sense normal and shear force, for any robot surface.

    55 parts92MIT
  • 4 layers13 × 9.4 mmTomu fpga, the printed circuit board in 3D

    Tomu fpga

    AlexeyInwerp/BoardRipper

    Web-based PCB boardview viewer for board-level repair. 14 formats: BVR1/3, BRD, BDV, BDV ASC, FZ, GenCAD, Mentor Neutral, XZZ, TVW, Allegro v15-v18, Altium, KiCad, EAGLE.

    55 parts48AGPL-3.0
  • 4 layers119 × 73.9 mmFw16 oculink8i, the printed circuit board in 3D

    Fw16 oculink8i

    Terrails/FW16-OCuLink

    The schematic in itself is pretty simple. You only need to connect the TX and RX PCIe lanes to the correct pins of the OCuLink connector.

    55 parts43MIT