Skip to the content
PCBKitNew board
2 layers102.9 × 17.5 mmYals, the printed circuit board in 3D

Yet Another Linear Servo

Size
102.9 × 17.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
46
Nets
56
Pads
176
Tracks, vias
419, 55
Pours
1
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
13 Feb 2024
Updated
10 Oct 2025

Overview

Yals is an open-source printed circuit board by el-bart, from the el-bart/yals repository on GitHub, published under the BSD-3-Clause licence. It is a 2-layer board of 102.9 × 17.5 mm with 46 parts on 56 nets, routed with 419 tracks and 55 vias.

It is built around the RP2040, DRV8220DSG and LM321, with the W25Q32JVSSIQ and M24C02-FMN6P among its other parts. Its parts include 16 capacitors, 10 resistors, 6 ICs, 6 diodes and 4 connectors. It belongs with the robots and motor control boards and the RP2040 boards of this library.

Main components

5

README

README.md

YALS: Yet Another Linear Servo

YALS 1st prototype

project to build a linear servo for RC models.

key project assumptions

  • long move range
  • digital position control
  • digital feedback on current servo position
  • 12V power supply (directly from battery)
  • does not consume power when not moving, while still keeping position
  • possible magnetic coupling with element moved
  • programmable and persistent:
    • min / max positions
    • LED brightness

building

TL;DR just run make from project's root directory.

toolchain has been dockerized. to make usage more convenient, there's a top-level Makefile to run all the elements. it automatically keeps dependsncies in place.

generated stuff:

  • 3D models for printing:
    • all in: body/build/voron_24_revo/petg/strength/*.gcode
    • note that there can be >1 carriage to choose from
  • electronics (HW):
    • gerber files for PCB: board/hw/build/gerber.zip
    • PCB assembly: board/hw/build/graphics/
    • BOM: board/hw/build/bom.csv
  • software (SW):
    • to flash use ./rp2020_sdk rp2040_flash <name_of_binary.elf> from board/sw directory
    • binaries:
      • controller to flash (production): board/sw/build/rp2040/servo_ctrl.elf
      • manual tests (for validation of HW assembly):
        • board/sw/build/rp2040/Hal/rp2040/Hal_*.mtest.elf
        • board/sw/build/rp2040/Utils/*.mtest.elf

assembly

BOM

  • 1x PCB assembly (see baord/hw - build it to get board/hw/build/bom.csv)
  • 1x MT44 DC motor
  • 2x 3x7x3mm ball bearing
  • 1x 3mm-3mm universal joing (aka: Cardan joint)
  • 1x 3mm threaded rod (~12cm)
  • 3x 3mm threaded inset (1x for carriage and 2x for engine)
  • 2x M3x14 screws (engine mount)
  • 2x M3x10 screws (potentiometer mount)

tools

  • soldering iron
  • 3D printer for YALS' body
  • hex-key set
  • pico-probe or raspberry pi SBC to flash rp2040 µC

FAQ

why no position-watchdog?

µC has internal watchdog, that kicks in in case software gets stuck.

however there's no application-level watchdog (e.g. a dedicated command that'd require a new command reception in a given time) as servo does not go bonkers when signal is lost (as typical, cheap, analog do). instead it keeps current position effortlessly. on start, current position is retained as well. therefor there's no need to perform any special actions, when no new command is received.

Parts

46
QtyValueFootprintReferences
10100nFCapacitor_SMD:C_1206_3216MetricC3, C6, C7, C8, C9, C10, C11, C12, C13, C15
41N4007Diode_SMD:D_SOD-123FD2, D3, D4, D5
3100kResistor_SMD:R_0603_1608MetricR4, R7, R10
218pFCapacitor_SMD:C_0603_1608MetricC1, C2
24.7kResistor_SMD:R_0603_1608MetricR1, R2
10.1RResistor_SMD:R_1206_3216MetricR6
110nFCapacitor_SMD:C_1206_3216MetricC16
110uFCapacitor_SMD:CP_Elec_5x4.5C5
11kResistor_SMD:R_0603_1608MetricR3
11uFCapacitor_SMD:CP_Elec_5x4.5C14
122kResistor_SMD:R_0603_1608MetricR5
12N7002Package_TO_SOT_SMD:SOT-23Q1
13.3kResistor_SMD:R_0603_1608MetricR8
1330RResistor_SMD:R_0805_2012MetricR9
14.7uFCapacitor_SMD:CP_Elec_5x4.5C4
1BOOTSELConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP1
1CDE23N-60-B50Kst_passives_potentiometers:CDE23N-60-B50KRV1
1CrystalCrystal:Crystal_SMD_SeikoEpson_MA505-2Pin_12.7x5.1mmY1
1DRV8220Package_TO_SOT_SMD:SOT-563U5
1LED greenLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD6
1LM321Package_TO_SOT_SMD:SOT-23-5U6
1M24C02-FMNPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU2
1MCP1703Ax-330xxTTPackage_TO_SOT_SMD:SOT-23U3
1RP2040Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mmU1
1SWDConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1
1TS418CDiode_SMD:D_0603_1608MetricD1
1UARTConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ2
1W25Q32JVSSPackage_SO:SOIC-8_5.23x5.23mm_P1.27mmU4
1engConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ3
1powerConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ4

Questions

How big is the Yals PCB?

It measures 102.9 × 17.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Yals use?

46 parts, built around the RP2040, DRV8220DSG, LM321 and W25Q32JVSSIQ. 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 Yals KiCad files?

From the el-bart/yals repository on GitHub, at the commit this page was made from: the board is board/hw/yals.kicad_pcb and its schematic board/hw/engine_ctrl.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Yals design in my own project?

Its repository publishes it under the BSD-3-Clause 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 layers100.1 × 121.4 mmPanel, the printed circuit board in 3D

    Panel

    da-penguin-guy/Proteus

    The Proteus is a modular collection of PCBs that will be used to develop the Virgil sound Protocol

    137 parts3
  • 4 layers114.3 × 114 mmBaSe PWR V4 0, the printed circuit board in 3D

    BaSe PWR V4 0

    M-Welsch/backup-server

    Backup Server (BaSe)

    109 parts3Apache-2.0
  • 4 layers96.5 × 116 mmMR Core, the printed circuit board in 3D

    MR Core

    hansgaensbauer/MR-Core

    Open Source Magnetic Resonance Imaging Console

    360 parts2CERN-OHL-W-2.0
  • 2 layers84.3 × 39.4 mmShutdown manager mainboard, the printed circuit board in 3D

    Shutdown manager mainboard

    testudor/shutdown-manager-mainboard

    Power input module for 3D printers capable of performing safe shutdown procedures for SBCs like Raspberry PIs

    28 parts1CC-BY-SA-4.0
  • 2 layers50 × 14 mmEssen, the printed circuit board in 3D

    Essen

    machdyne/af

    Open-Source Pick and Place Autofeeder

    37 partsCERN-OHL-P-2.0
  • 4 layers74.1 × 130 mmBadge secsea V1 1, the printed circuit board in 3D

    Badge secsea V1 1

    cchaloin/HIP_SecSea

    Hack In Provence badge for SecSea

    132 parts
  • 4 layers95 × 113 mmUsb gpio, the printed circuit board in 3D

    Usb gpio

    petersn/usb-gpio

    222 parts
  • 2 layers96.7 × 66.4 mmStepper analyzer, the printed circuit board in 3D

    Stepper analyzer

    zapta/legacy_stepper_motor_analyzer

    A DYI minimalist hardware stepper motor analyzer with graphical touch screen.

    32 parts162CC0-1.0