

SmallSpeedController
MiniSpeedController is a dual DC motor controller based on a WCH CH32V003F RISC-V Microcontroller and two TI DRV8837DSGR. It consumes two encoder inputs and is controllable using an USART via simple TLV commands. Sensors can be attached using I2C.
- Size
- 30.7 × 51.7 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 37
- Nets
- 32
- Pads
- 124
- Tracks, vias
- 213, 195
- Pours
- 6
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 1 Apr 2025
- Updated
- 5 Oct 2025
Overview
SmallSpeedController is an open-source printed circuit board by h0lad, from the h0lad/MiniSpeedController repository on GitHub, published under the CERN-OHL-S-2.0 licence. It is a 4-layer board of 30.7 × 51.7 mm with 37 parts on 32 nets, routed with 213 tracks and 195 vias.
It is built around the DRV8837DSGR-MS, AP62300TWU and AMS1117-3.3, with the TS-1088-AR02016 among its other parts. Its parts include 13 capacitors, 8 connectors, 7 resistors, 5 ICs and 2 diodes. It belongs with the robots and motor control boards and the RISC-V boards of this library.
Main components
4DRV8837DSGR-MS
WSON-8-EP(2x2)-40℃~+125℃ 1.5A 1.8V~7V 17nA 650mΩ Yes WSON-8-EP(2x2) Brushed DC Motor Drivers ROHSMSKSEMIBrushed DC Motor DriversAP62300TWU
TSOT-26-40℃~+125℃ 1 155uA 3A 4.2V~18V 750kHz 763mV~7V Adjustable Buck Buck Built-in Yes TSOT-26 DC-DC Converters ROHSDiodes IncorporatedDC-DC ConvertersAMS1117-3.3
SOT-223-40℃~+125℃ 0.003%Vout 1 1.1V@(800mA) 15V 1A 3.3V 5mA 72dB@(120Hz) Fixed Over Current Protection、Short Circuit Protection、Thermal shutdown Positive SOT-223 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSAdvanced Monolithic SystemsVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsTS-1088-AR02016
SMD,4x3mm-30℃~+80℃ 1.6N 100,000 cycles 12V 2mm 3.9mm 3mm 50mA Black Round Button SMD(SMT) Tab SPST Surface Mount,Vertical Without Bracket SMD,4x3mm Tactile Switches ROHSXUNPUTactile Switches
README
README.md
Mini (RISC-V DC-Motor) Speed Controller
This project implements a compact DC motor speed controller using a RISC-V microcontroller.
It is designed for speed control via pulse feedback from a light barrier and communicates through a serial interface. Additional sensors can be attached using I2C.
Beware that the entire PCB isn't a masterpiece as this is just for technology evaluation.
Why this thing?
Mostly for playing around with very cheap RISC-V microcontrollers and an execise for C/Rust with very limited resources. It can be used for controlling simple toy robot chassis that usually have two DC motors with light barriers which can be used as feedback loop for a speed control algorithm.

System Overview
Power Supply
- AP62300 (3A Buck Converter) → 7V rail (for DC motors)
- AMS1117-3.3 (LDO Regulator) → 3.3V rail (for microcontroller and motor driver logic)
WCH CH32V003 Microcontroller
- 48 MHz RISC-V core
- 16 KB Flash / 2 KB SRAM
- Powered from 3.3V rail
Texas Instruments DRV8837GSGR
- Brushed DC motor driver
- 1.8A continuous current capability
- Logic powered from 3.3V rail
- DC motors powered from 7V rail
Pin Configuration
Motor Controller 1
| Pin | Meaning |
|---|---|
| PC5 | motcon1_sleep |
| PC6 | motcon1_in2 |
| PD2 | motcon1_pwm_in1 |
Motor Controller 2
| Pin | Meaning |
|---|---|
| PC3 | motcon2_sleep |
| PC4 | motcon2_in2 |
| PA1 | motcon2_pwm_in1 |
PWM Speed Inputs
| Pin | Meaning |
|---|---|
| PC0 | pwm_speed_input1 |
| PD3 | pwm_speed_input2 |
Communication Interfaces
| Pin | Meaning |
|---|---|
| PC1 | i2c_sda |
| PC2 | i2c_scl |
| PD5 | usart_tx |
| PD6 | usart_rx |
Debug & Reset
| Pin | Meaning |
|---|---|
| PD1 | SWDIO |
| PD7 | nRST |
Indicators
| Pin | Meaning |
|---|---|
| PA2 | status_led |
Unused / Spare
| Pin | Meaning |
|---|---|
| PC7 | X |
| PD0 | X |
| PD4 | X |
Verification
License
CERN OHL v2 – Strongly Reciprocal (S)
Parts
37| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | 100nF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C5, C6, C7, C8, C9, C11 |
| 4 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R2, R4, R5, R7 |
| 4 | 10uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C1, C3, C4, C10 |
| 3 | Conn_01x02_Socket | Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical | J1, J2, J4 |
| 3 | Conn_01x03_Socket | Connector_JST:JST_PH_B3B-PH-K_1x03_P2.00mm_Vertical | J9, J10, J11 |
| 2 | 22uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C12, C13 |
| 2 | 330 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R3, R6 |
| 2 | Conn_01x04_Socket | Connector_JST:JST_PH_B4B-PH-K_1x04_P2.00mm_Vertical | J5, J6 |
| 2 | DRV8837DSGR | libs:WSON-8_L2.0-W2.0-P0.50-TL-EP | U3, U4 |
| 2 | LED | LED_SMD:LED_0805_2012Metric | D1, D3 |
| 1 | 220nF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C2 |
| 1 | 3.3uH | libs:CPX0420 | L1 |
| 1 | 82k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U2 |
| 1 | AP62300TWU | Package_TO_SOT_SMD:TSOT-23-6_HandSoldering | U1 |
| 1 | CH32V003FxUx | Package_DFN_QFN:QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mm | U5 |
| 1 | TS-1088-AR02016 | libs:SW-SMD_L3.9-W3.0-P4.45 | SW2 |
Questions
How big is the SmallSpeedController PCB?
It measures 30.7 × 51.7 mm and has 4 copper layers, 1.6 mm thick.
What parts does the SmallSpeedController use?
37 parts, built around the DRV8837DSGR-MS, AP62300TWU, AMS1117-3.3 and TS-1088-AR02016. 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 SmallSpeedController KiCad files?
From the h0lad/MiniSpeedController repository on GitHub, at the commit this page was made from: the board is pcb/SmallSpeedController.kicad_pcb and its schematic pcb/SmallSpeedController.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the SmallSpeedController 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).
Similar boards
- 2 layers52.5 × 62.6 mm

- 6 layers84.5 × 56 mm

VLF4 PCB
McMaster-Rocketry-Team/VLF4r2
PCB schematics and layout for Void Lake Fusion 4 Avionics
156 parts3 - 4 layers100 × 100 mm

- 2 layers80 × 52 mm

- 2 layers

Pcbgolf
chilly23/PCBGolf-master-Comma.ai
Compact PCB studies for the comma.ai PCBGolf challenge, including KiCad and EasyEDA designs, BOMs, STEP models, and routing-status reports.
245 partsMIT - 4 layers50 × 100 mm

- 4 layers99.9 × 50.7 mm

- 4 layers98.2 × 122 mm

Project Roll
kevleep/Project-Roll
Project Roll Project Roll is a spherical robot that achieves omni-directional movement using omni-wheels and a hamster ball drive mechanism.
75 parts