

STM32F103C8 carrier board controlling 6 stepper motors, servos, limit switches, and IO expanders with UART, SPI, and I2C interfaces. Includes full pin mapping, dual-regulator power design, and detailed failure analysis with debugging insights and hardware lessons learned.
- Size
- 100 × 100 mm
- Copper layers
- 4
- Thickness
- 4.69 mm
- Parts
- 106
- Nets
- 137
- Pads
- 467
- Tracks, vias
- 832, 200
- Pours
- 12
- Routed
- Yes
- KiCad
- KiCad 6 (file 20211014)
- Created
- 28 May 2026
- Updated
- 28 May 2026
Overview
SCARA V1 is an open-source printed circuit board by ejaduwari, from the ejaduwari/Sensor-Actuator-Control-PCB repository on GitHub. It is a 4-layer board of 100 × 100 mm with 106 parts on 137 nets, routed with 832 tracks and 200 vias.
It is built around the WEMOS D1 MINI, PI4IOE5V6416LEX and AP2112K-3.3TRG1, with the 0685H9100-01 and 0685H9150-01 among its other parts. Its parts include 26 capacitors, 26 resistors, 18 switches, 12 ICs and 4 connectors. It belongs with the robots and motor control and interfaces and adapters boards and the ESP8266 boards of this library.
Main components
5WEMOS D1 MINI
A mini wifi board with 4MB flash based on ESP-8266EX, hardware version 4.0.0.LolinUncategorisedPI4IOE5V6416LEX
TSSOP-24-40℃~+85℃ 1.5uA 1.65V~5.5V 10mA 16 25mA 400kHz I2C Interrupt Output Push-Pull、Open-drain Reset function、Cascading and address extension、IO level configurable TSSOP-24 I/O Expanders ROHSDiodes IncorporatedI/O ExpandersAP2112K-3.3TRG1
SOT-25-5-40℃~+85℃@(Ta) 1 250mV@(600mA) 3.3V 50uVrms 55uA 600mA 65dB@(1kHz) 6V Fixed Over Current Protection、Thermal Shutdown、Enable control Positive SOT-25-5 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSDiodes IncorporatedVoltage Regulators - Linear, Low Drop Out (LDO) Regulators0685H9100-01
1206-55℃~+125℃ 1.6mm 10A 125V 150A 3.2mm 32V 5.9 Surface Mount Fuse 1206 Disposable fuses ROHSBel FuseDisposable Fuses0685H9150-01
1206-55℃~+125℃ 1.6mm 125V 13.5 150A 15A 3.2mm 32V Surface Mount Fuse 1206 Disposable fuses ROHSBel FuseDisposable Fuses
README
README.mdSensor-Actuator-Control-PCB
STM32F103C8 carrier board controlling 6 stepper motors, servos, limit switches, and IO expanders with UART, SPI, and I2C interfaces. Includes full pin mapping, dual-regulator power design, and detailed failure analysis with debugging insights and hardware lessons learned.
📘 STM32F103C8 Stepper Motor Controller
Carrier Board + Small Pill Architecture & Debug Report
📑 Table of Contents
- Overview
- Hardware Architecture
- Pin Mapping (STM32 ↔ Carrier Board)
- Peripheral Interfaces
- Clock & Crystal
- Power System Design
- IO Expanders
- Failure Report & Debugging
- Root Cause Analysis
- Current Status
- Design Lessons & Prevention
🔍 Overview
This project is a custom STM32F103C8-based PCB designed to control:
- Multiple A4988 stepper drivers
- Several servo outputs
- External IO via expanders
The board uses a Small Pill (STM32F103C8T6) mounted on a carrier board, providing structured routing for motion control and expansion.
🧩 Hardware Architecture
- MCU: STM32F103C8T6 (Small Pill)
- Motor Drivers: A4988 (external)
- IO Expansion: PI4IOE5V6416
- Power Inputs:
- USB (via L78L00 regulator)
- External 5V (via AP2112K-3.3)
- Control Signals:
- STEP / DIR for 6 axes
- Servo PWM outputs
- Debug Interface:
- SWD (SWCLK, SWDIO)
🔌 Pin Mapping (STM32 ↔ Carrier Board)
| STM32 Pin | Function |
|---|---|
| PA0 | 5_DIR |
| PA1 | 5_STP |
| PA2 | TX |
| PA3 | RX |
| PA4 | 1_DIR |
| PA5 | SCK |
| PA6 | MISO |
| PA7 | MOSI |
| PA8 | SERVO_1_3V3 |
| PA9 | SERVO_2_3V3 |
| PA10 | SERVO_3_3V3 |
| PA11 | USB- |
| PA12 | USB+ |
| PA15 | SERVO_4_3V3 |
| STM32 Pin | Function |
|---|---|
| PB0 | 4_STP |
| PB1 | 4_DIR |
| PB2 | BOOT |
| PB3 | 3_STP |
| PB4 | SERVO_6_3V3 |
| PB5 | SW9 |
| PB6 | SCL |
| PB7 | SDA |
| PB8 | 6_DIR |
| PB9 | SW10 |
| PB10 | 3_DIR |
| PB11 | 6_STP |
| PB12 | LED |
| PB13 | GPIO |
| PB14 | GPIO |
| PB15 | GPIO |
| STM32 Pin | Function |
|---|---|
| PC13 | 2_DIR |
| PC14 | 2_STP |
| PC15 | 1_STP |
| Debug Pins | Function |
|---|---|
| PA13 | SWDIO |
| PA14 | SWCLK |
| NRST | Reset |
🔗 Peripheral Interfaces
UART
- TX: PA2
- RX: PA3
SPI
- SCK: PA5
- MISO: PA6
- MOSI: PA7
I2C
- SCL: PB6
- SDA: PB7
⏱ Clock & Crystal
-
Component: 25 MHz SMD Crystal
-
Capacitance: 20pF
-
Package: 3.2mm × 2.5mm
-
DigiKey Part #: 3155-25M20P2/XT324-10/10CT-ND
-
Manufacturer #: 25M20P2/XT324-10/10
⚡ Power System Design
Regulators
1. L78L00
- Input: USB (~5V)
- Output: 3.3V (intended)
- Status: ❌ Damaged / unstable
2. AP2112K-3.3
- Input: External 5V
- Output: 3.3V
- Status: ✅ Functional
Observed Behavior
- With motors connected:
- 3.3V rail dropped to ~3.0V
- With L78L00 removed:
- Stable 3.29V from AP2112K
- Backfeeding observed across regulators
🔌 IO Expanders
- Model: PI4IOE5V6416
- Used for:
- Microstepping control
- Enable signals
⚠️ These lines interface with high-current drivers → risk area
🧪 Failure Report & Debugging
Initial Symptoms
- PB12 LED stopped working
- MCU still flashable (initially)
- Reset did not recover functionality
Voltage Measurements
| Condition | Observation |
|---|---|
| Motors connected | 3.3V ~3.0V |
| PB12 | ~0.12V |
| After disconnecting 12V | PB12 still ~0.12V |
| Reset held | 3.3V rises slightly |
GPIO Testing
- PB12–PB15 stuck at ~0.12V
- PB15 toggle test failed
- Same issue after MCU replacement
Regulator Testing
- L78L00:
- Input ~4.8V
- Output unstable / low
- AP2112K:
- Output stable at ~3.29V
Fuse
- 0685H9100-01 → OK (~0Ω)
After L78L00 Removal
- System powered via AP2112K
- 3.3V stable
- ❌ Flashing failed:
- Error in final launch sequence
- Failed to start GDB server
🔎 Root Cause Analysis
1. GPIO Damage
- PB12–PB15 permanently stuck low
- Cause: Backfeed / overvoltage from stepper drivers
- Likely triggered by:
- Swapping motor wires while powered
2. Power Rail Instability
- L78L00 regulator damaged
- Caused rail drops under load
3. Regulator Conflict
- Backfeeding between regulators
- L78L00 became ineffective
4. Flashing Failure
- Likely due to:
- Unstable VDD reference
- Improper SWD voltage levels
📉 Current Status
- ❌ Original MCU damaged (GPIO bank failure)
- ⚠️ Replacement MCU still showing abnormal GPIO behavior
- ✅ AP2112K regulator working
- ❌ Board cannot be flashed
- ❌ System non-functional
🛠 Design Lessons & Prevention
Critical Rules
- ❌ Never swap stepper wires under power
- ❌ Avoid direct MCU exposure to driver signals
Recommended Fixes
- Add series resistors on control lines
- Use optocouplers or buffers
- Isolate high-current paths
- Ensure single clean 3.3V source
- Avoid regulator backfeeding
Debug Best Practices
- Verify rails before applying load
- Test MCU pins before connecting drivers
- Use current limiting during bring-up
🚧 Final Note
This failure highlights a critical embedded design principle:
Power integrity and signal protection are just as important as logic design.
Future revisions should prioritize:
- Electrical isolation
- Robust power architecture
- Safer bring-up procedures
Parts
106| Qty | Value | Footprint | References |
|---|---|---|---|
| 13 | 10K | Resistor_SMD:R_0805_2012Metric | R6, R8, R10, R11, R12, R13, R14, R15, R16, R17, R22, R23, R25 |
| 10 | SW_Push | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | SW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9, SW10 |
| 8 | 100uf | Capacitor_THT:CP_Radial_D6.3mm_P2.50mm | C1, C2, C3, C4, C5, C6, C22, C23 |
| 6 | 100nF | Capacitor_SMD:C_0805_2012Metric | C14, C31, C32, C34, C35, C36 |
| 6 | 1K | Resistor_SMD:R_0805_2012Metric | R2, R3, R4, R5, R7, R20 |
| 6 | A4988_STEPPER_MOTOR_DRIVER_CARRIER | A4988_STEPPER_MOTOR_DRIVER_CARRIER:MODULE_A4988_STEPPER_MOTOR_DRIVER_CARRIER | U1, U2, U3, U4, U5, U6 |
| 5 | 0R | Resistor_SMD:R_0805_2012Metric | R18, R19, R21, R26, R27 |
| 5 | Conn_01x02 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | 5V1, 12V1, J11, J12, J13 |
| 4 | 100nF | Capacitor_SMD:C_0402_1005Metric | C7, C8, C9, C10 |
| 4 | 1uF | Capacitor_SMD:C_0805_2012Metric | C24, C28, C29, C30 |
| 2 | 100R | Resistor_SMD:R_0805_2012Metric | R1, R9 |
| 2 | 10uF | Capacitor_SMD:C_0805_2012Metric | C25, C26 |
| 2 | LED | LED_SMD:LED_0805_2012Metric | D1, D2 |
| 2 | MountingHole | MountingHole:MountingHole_3.5mm | H1, H2 |
| 2 | PI4IOE5V6416LEX | Package_SO:TSSOP-24_4.4x7.8mm_P0.65mm | U8, U14 |
| 2 | PWR | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | PWR1, PWR2 |
| 2 | S5 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | S5, S6 |
| 2 | SW_MEC_5E | PTS830GM140 SMTR LFS:PTS830GM140SMTRLFS | SW11, SW12 |
| 1 | 0.1uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C21 |
| 1 | 0.33uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C20 |
| 1 | 0685H9100-01 | 3.2x1:3.2x1.58 | F2 |
| 1 | 0685H9150-01 | 3.2x1:3.2x1.58 | F1 |
| 1 | 74LVC4245APW,118 | 74LVC4245APW_118:SOP65P640X110-24N | U11 |
| 1 | AP2112K-3.3TRG1 | AP2112K-3:SOT95P285X140-5N | U13 |
| 1 | Conn_01x03 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | SWD1 |
| 1 | ESP_IO | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J10 |
| 1 | L78L00 | Package_TO_SOT_SMD:SOT-89-3 | U12 |
| 1 | M1 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | M1 |
| 1 | M2 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | M2 |
| 1 | M3 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | M3 |
| 1 | M4 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | M4 |
| 1 | M5 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | M5 |
| 1 | M6 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | M6 |
| 1 | PILL | ej2:PILL | J2 |
| 1 | S1 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | S1 |
| 1 | S2 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | S2 |
| 1 | S3 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | S3 |
| 1 | S4 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | S4 |
| 1 | ST_IO | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J1 |
| 1 | USB_B_Micro | Connector_USB:USB_Micro-B_Molex-105017-0001 | J7 |
| 1 | WeMos_D1_mini | Module:WEMOS_D1_mini_light | U10 |
Similar boards
- 4 layers

- 4 layers58.9 × 58.9 mm

- 4 layers

Usbc car module
mickdassive/usbc_car_module
This project is a USB 3.1x1 hub designed with KiCad 8.0 and developed with PlatformIO. It features two USB-C ports (one downstream and one upstream) capable of delivering up to 100W power, along with four regular…
408 parts3GPL-3.0 - 2 layers305.2 × 234.8 mm

- 2 layers189 × 92.3 mm

- 4 layers150.3 × 47.5 mm

Boluder clock replacement
mickdassive/boulder_clock_replacent_bord
This project provides the source code and design files for the Boulder Clock Replacement Board, designed as a direct drop-in replacement for the original Boulder Clock hardware.
225 parts - 4 layers246 × 110 mm

- 2 layers137 × 105 mm

Lijnsensor V3 met IO expander
Stan-debakker/grap-6TWEA
Daarnaast moest ik ervoor zorgen dat de nieuwe sensoren correct werken. Ik ben gestart met experimenteren via Arduino IDE, zie "codearduinoIDE".
38 parts
Questions
How big is the SCARA V1 PCB?
It measures 100 × 100 mm and has 4 copper layers, 4.69 mm thick.
What parts does the SCARA V1 use?
106 parts, built around the WEMOS D1 MINI, PI4IOE5V6416LEX, AP2112K-3.3TRG1 and 0685H9100-01. 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 SCARA V1 KiCad files?
From the ejaduwari/Sensor-Actuator-Control-PCB repository on GitHub, at the commit this page was made from: the board is SCARA_V1.kicad_pcb and its schematic SCARA_V1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the SCARA V1 design in my own project?
Its repository states no licence, so its author keeps all rights: ask ejaduwari before reusing the design.