Team Lumon · Robotics

Cable-Driven Parallel Robot

Overview

Role
Team Lead and Motor Controller/Firmware Engineer. I led a team of five engineers, took primary responsibility for the motor-control electronics and firmware, and was a major contributor to the robot's system architecture.
Result
Developed an STM32G0-based closed-loop motor-control platform that receives synchronized motion commands over CAN, tracks absolute cable position, and drives a stepper motor through a dedicated TMC2209 stage.
Skills
Team LeadershipSystem ArchitectureAltium DesignerPCB DesignSTM32G0STM32 HALEmbedded CClassic CANClosed-Loop ControlHardware Debugging
github [#142] Created with Sketch. View Project on GitHub
Complete cable-driven parallel robot with its frame, cable winches, and central moving platform

System architecture

From coordinated motion to cable movement

I helped define a distributed architecture in which a central host coordinates independent motor-control nodes. This kept time-critical motor control local while allowing the robot to synchronize multiple cable axes over a shared CAN network.

  1. 01

    Motion commands

    The host prepares buffered position, velocity, and tension command data for each cable axis.

  2. 02

    CAN network

    Classic CAN distributes addressed commands and synchronized updates across the motor controllers.

  3. 03

    STM32 controller

    Each controller combines encoder feedback with feed-forward and PID correction at 1 kHz.

  4. 04

    Cable winch

    A TMC2209 receives STEP/DIR signals to move the winch while the AS5600 closes the position loop.

My contribution

Leading the team and driving the motor-control subsystem

1

Team leadership

Led a multidisciplinary team of five engineers, coordinated subsystem ownership, and kept the electrical, firmware, and mechanical work aligned around shared interfaces.

2

System architecture

Played a major role in shaping the distributed control architecture, including the boundaries between the host controller, CAN network, motor-control nodes, encoders, and cable winches.

3

Motor-controller PCB

Designed the custom motor-controller PCB in Altium Designer, translating the controller requirements into a board that integrated the STM32, motor-driver, encoder, communication, and debug interfaces.

4

STM32 firmware

Developed firmware around the STM32 HAL and CubeMX configuration, separating peripheral setup, communication, encoder acquisition, motion control, step generation, and diagnostics into focused modules.

5

Closed-loop motion

Implemented a 1 kHz position-control path using DMA-based AS5600 feedback, multi-turn position tracking, feed-forward plus PID correction, and acceleration and velocity limiting.

6

Communication and debugging

Built the addressed Classic CAN command flow, synchronized command buffering, controller telemetry, UART diagnostics, and fault handling needed to integrate and test the subsystem.

Controller stack

Hardware and firmware working as one system

MCU

STM32G0B1CBT6 · Arm Cortex-M0+ · 64 MHz

Motor stage

TMC2209 over UART with STEP/DIR control

Feedback

AS5600 12-bit magnetic encoder over I²C DMA

Network

Classic CAN · 500 kbit/s · addressed nodes

Control

1 kHz feed-forward and PID position loop

Toolchain

STM32CubeMX · HAL · CMake · Ninja · GNU Arm

Project media

Development footage and hardware close-ups from the complete cable-driven parallel robot.

Cable-driven parallel robot motion testOpen the original video
Team Lumon engineers during an on-site technical briefing in an industrial facility
Team Lumon during an on-site technical review
Close-up of the custom Team Lumon motor-controller PCB installed on the robot
Custom motor-controller PCB designed in Altium Designer
Team Lumon logo
Team Lumon

What I learned

This project strengthened my ability to move between system-level decisions and implementation details. I gained practical experience designing a PCB in Altium Designer, structuring embedded firmware, working with the STM32 HAL, integrating communication and sensing peripherals, and debugging the boundary between hardware and software. Leading the team also taught me how clear interfaces and shared architectural decisions make parallel engineering work more effective.