Imported from GitHub: el-bart/yals · commit d1c3f1d · license BSD-3-Clause
Description
Yet Another Linear Servo
README
YALS: Yet Another Linear Servo

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
- all in:
- electronics (HW):
- gerber files for PCB:
board/hw/build/gerber.zip - PCB assembly:
board/hw/build/graphics/ - BOM:
board/hw/build/bom.csv
- gerber files for PCB:
- software (SW):
- to flash use
./rp2020_sdk rp2040_flash <name_of_binary.elf>fromboard/swdirectory - 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.elfboard/sw/build/rp2040/Utils/*.mtest.elf
- controller to flash (production):
- to flash use
assembly
BOM
- 1x PCB assembly (see
baord/hw- build it to getboard/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.
No comments yet. Be the first to ask about this board.