ZenXY morphing to SCARA

I currently have a ZenXY2 (CoreXY) machine that uses BDring’s TMC2209 Pen Laser V2.0 controller board and Grbl ESP32 firmware. If my memory is correct, I just selected the “tmc2209_pen_laser.h” machine when compiling the firmware and I was pretty much good to go. I would now like to use that same controller board in a SCARA polar arrangement using the gcode output by Sandify (polar machine). Can anyone offer any guidance on how to configure GRBL to make this work?

1 Like

The SCARA output from sandify assumes all the responsibility for kinematics. The firmware doesn’t know it is a SCARA. You would configure grbl as a regular XY machine, with the shoulder as X and the elbow as Y.

There are some assumptions. Not every SCARA set up will work. Check out the wiki:

Got it. I used the same “tmc2209_pen_laser.h” machine and just commented out the “CoreXY.cpp” custom code file name. It seems to be working on the benchtop. I hope to have the SCARA mechanics assembled later this week.

1 Like

I completed my SCARA arm and I now have everything working as intended. I designed a slightly smaller version of @woobag 's arm using his Thingiverse STEP file as a reference. I wanted to make a table top machine so for me smaller is better. I did make a few rookie mistakes that may help others. I was not aware that some settings in GRBL require a power cycle to take affect. I needed to change a stepper motor direction and I couldn’t get it done using the settings. I ultimately physically switched one pair of motor wires to change the direction. I then discovered the need to perform a power cycle and that solved that. I also incorrectly assumed that just by selecting the polar machine type in sandify that I would get the desired SCARA output. I completely missed the “export as” drop down selector. Once I got that sorted out all was good. Now I need to design a circular enclosure. That should be easier for me. I’ll post the finished product at some point in the “Your Builds” area of the forum.


Hello, I’ve been struggling to get anything working at all software wise. My 3d model works pretty well when just spinning the motors but I cant get anything to work right with fluidNC firmware. Could you send some tips with what configuration file I should use?

It’s been over a year since I worked with this firmware. GRBL and using Visual Studio Code was all new to me. I have not used FluidNC so I don’t know how it differs from GRBL. I know that FluidNC has a Discord channel where you can interface with the authors. They also have a section devoted to Art-Bots where SCARA devices are discussed.

I believe that I downloaded the source code for Grbl_ESP32 from here: GitHub - bdring/Grbl_Esp32: A port of Grbl CNC Firmware for ESP32 and the machine definition from here: TMC2209_Pen_Laser/firmware at main · bdring/TMC2209_Pen_Laser · GitHub

I think that I just added tmc2209_Pen_Laser.h to Machines and edited Machine.h to include “Machines/tmc2209_Pen_Laser.h”

Sandify creates the SCARA motion using standard X-Y gcode. Shoulder is X and Elbow is Y.

I wish that I could help more but I am coding illiterate. I just beat it into submission!

1 Like

Thanks a ton! Could you share your wiring for the tmc2209? I have the en pin currently on a io pin on the esp32 but I dont think the firmware is pulling it to ground to turn on the motor. I get " ERROR:8 Grbl ‘$’ command cannot be used unless Grbl is IDLE. Ensures smooth operation during a job." error when i try to move the motor. I am also using STALLGUARD_LIMITS if that changes anything

I did not have to wire the drivers as they are integrated into the controller that I used. This schematic of the controller may help: TMC2209_Pen_Laser/TMC2209_Pen_Laser_V2_Schm.pdf at main · bdring/TMC2209_Pen_Laser · GitHub
You can also check out this Wiki: Home · bdring/Grbl_Esp32 Wiki · GitHub
I used ESP3D. It always starts in the Alarm state. You have to reset the alarm before the motors will move. I am sure that there is a GRBL command for that…I just don’t know what it is.

The machine locks itself out until it gets a
Command to bring it out of “locked” and into “idle”
You can also do this by clicking the locked button on the webui