Skip to the content
4 layers100 × 100 mmSCARA V1, the printed circuit board in 3D

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

5

README

README.md

Sensor-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.

20251024_134345

📘 STM32F103C8 Stepper Motor Controller

Carrier Board + Small Pill Architecture & Debug Report


📑 Table of Contents


🔍 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 PinFunction
PA05_DIR
PA15_STP
PA2TX
PA3RX
PA41_DIR
PA5SCK
PA6MISO
PA7MOSI
PA8SERVO_1_3V3
PA9SERVO_2_3V3
PA10SERVO_3_3V3
PA11USB-
PA12USB+
PA15SERVO_4_3V3
STM32 PinFunction
PB04_STP
PB14_DIR
PB2BOOT
PB33_STP
PB4SERVO_6_3V3
PB5SW9
PB6SCL
PB7SDA
PB86_DIR
PB9SW10
PB103_DIR
PB116_STP
PB12LED
PB13GPIO
PB14GPIO
PB15GPIO
STM32 PinFunction
PC132_DIR
PC142_STP
PC151_STP
Debug PinsFunction
PA13SWDIO
PA14SWCLK
NRSTReset

🔗 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

ConditionObservation
Motors connected3.3V ~3.0V
PB12~0.12V
After disconnecting 12VPB12 still ~0.12V
Reset held3.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
QtyValueFootprintReferences
1310KResistor_SMD:R_0805_2012MetricR6, R8, R10, R11, R12, R13, R14, R15, R16, R17, R22, R23, R25
10SW_PushConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalSW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9, SW10
8100ufCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC1, C2, C3, C4, C5, C6, C22, C23
6100nFCapacitor_SMD:C_0805_2012MetricC14, C31, C32, C34, C35, C36
61KResistor_SMD:R_0805_2012MetricR2, R3, R4, R5, R7, R20
6A4988_STEPPER_MOTOR_DRIVER_CARRIERA4988_STEPPER_MOTOR_DRIVER_CARRIER:MODULE_A4988_STEPPER_MOTOR_DRIVER_CARRIERU1, U2, U3, U4, U5, U6
50RResistor_SMD:R_0805_2012MetricR18, R19, R21, R26, R27
5Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical5V1, 12V1, J11, J12, J13
4100nFCapacitor_SMD:C_0402_1005MetricC7, C8, C9, C10
41uFCapacitor_SMD:C_0805_2012MetricC24, C28, C29, C30
2100RResistor_SMD:R_0805_2012MetricR1, R9
210uFCapacitor_SMD:C_0805_2012MetricC25, C26
2LEDLED_SMD:LED_0805_2012MetricD1, D2
2MountingHoleMountingHole:MountingHole_3.5mmH1, H2
2PI4IOE5V6416LEXPackage_SO:TSSOP-24_4.4x7.8mm_P0.65mmU8, U14
2PWRConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalPWR1, PWR2
2S5Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalS5, S6
2SW_MEC_5EPTS830GM140 SMTR LFS:PTS830GM140SMTRLFSSW11, SW12
10.1uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC21
10.33uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC20
10685H9100-013.2x1:3.2x1.58F2
10685H9150-013.2x1:3.2x1.58F1
174LVC4245APW,11874LVC4245APW_118:SOP65P640X110-24NU11
1AP2112K-3.3TRG1AP2112K-3:SOT95P285X140-5NU13
1Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalSWD1
1ESP_IOConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ10
1L78L00Package_TO_SOT_SMD:SOT-89-3U12
1M1Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalM1
1M2Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalM2
1M3Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalM3
1M4Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalM4
1M5Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalM5
1M6Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalM6
1PILLej2:PILLJ2
1S1Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalS1
1S2Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalS2
1S3Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalS3
1S4Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalS4
1ST_IOConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1
1USB_B_MicroConnector_USB:USB_Micro-B_Molex-105017-0001J7
1WeMos_D1_miniModule:WEMOS_D1_mini_lightU10

Similar boards

  • 4 layersACS PCB, the printed circuit board in 3D

    ACS PCB

    margaret-mei/acsPCB27

    ACS Fullscale/Subscale PCB 2026-2027

    72 parts1
  • 4 layers58.9 × 58.9 mmNavPoTS South, the printed circuit board in 3D

    NavPoTS South

    RuberDuck9/NavPoTS

    122 partsAGPL-3.0
  • 4 layersUsbc car module, the printed circuit board in 3D

    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 mmReflow, the printed circuit board in 3D

    Reflow

    mickdassive/reflowow-oven-controler

    firmware for a reflow controller

    117 parts2GPL-3.0
  • 2 layers189 × 92.3 mmThe Macruwu 2.0, the printed circuit board in 3D

    The Macruwu 2.0

    SirBramble/The-Macruwu-2.0

    The Macro universal word-typing unit

    91 parts1
  • 4 layers150.3 × 47.5 mmBoluder clock replacement, the printed circuit board in 3D

    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
  • 2 layers137 × 105 mmLijnsensor V3 met IO expander, the printed circuit board in 3D

    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.