Close

​Its alive! first movement sequence.

A project log for PR3 SCARA

a highly functional, highly affordable robotic arm, made entirely of 3d printed parts and off-the-shelf components.

omer-inbarOmer Inbar 12/22/2025 at 17:360 Comments

I finally got all the pieces into a good enough shape to get the arm wired and running. I made some great progress on the end-of-arm assembly that I will share soon, but for now I am focused on figuring out the motion so i put a little pointer on the wrist.


The wiring is pretty straight forward, my controller has 4 integrated TMC2209 drivers so i got a 4-wire braid going from the base to each motor. Since the wires are quite long, going all the way to the end of the arm, I got pretty concerned about EMI interfering with the signal lines that go to the tool and tool changer etc. To mitigate it, I got twisted pair shielded wires for each motor and I ran the power wires and signal wires on opposite sides of the arm.
other then that, the cables need to have some slack to allow for the axes rotations (Tower-first link, first link-second link, second link-Z comp) so it did get a little cluttered and needs some tidying up later on.



A little about the firmware. After I made some progress on the design I started looking into what open source tools are out there to allow me to program as little as possible and achieve the functionality I wanted (esp32 controller, automatic tool-changer, integrated camera, web UI, teach pendant). After a while I ran into Barton Dring's video demo where he does a square sequence on a little coaxial SCARA he made to showcase the experimental SignleArmScara branch of FluidNC.


FluidNC is an open source CNC control firmware for the esp32 controller based on the older Grbl firmware that run on Arduino. It's robust, very feature rich and enables reconfiguration without recompilation (hence Fluid). As I dove into it, It almost felt like it was designed specifically for my project, It had a tremendous amount of what I wanted to achieve already built and demonstrated, including SCARA kinematics.


The existing kinematics code does most of the heavy lifting of properly translating cartesian coordinates to shoulder+elbow rotations but since my arm is 4DOF I had to add a Z axis and wrist motors. for now I handle them separately in the config file but I will eventually need to incorporate them into the main motion planner to get synchronized movements that allows real (x,y,z,th) control of the tool.

It's such a great feeling to finally see this thing move, although I hope to find a way to get the z axis a bit quitter and reduce the shaking at end of the motions.
would appreciate any advice either mechanical or in code.

Discussions