High School ZenXY Project in Maryland

Hey folks!

Thought I’d share a project my high school students and I are working on. We got the 2 tables for $50 off Facebook and my Construction classes are painting them up and my Engineering class is primarily responsible for the build. They’re having some fun with it and we got it running yesterday.

Right now we have a miniRambo from one of my MP3DPs controlling it but we want to switch to an MKS for the touchscreen and quieter drivers…we saw this on a build here.

We tried using an Uno/CNC Shield first but are having a heck of a time finding a GRBL config for CoreXY.
We downloaded Grbl 1.1h and the config.h file from TimO.'s build and flashed everything. Both axis move when just jogging 1. The steppers slowly ramp up to speed. I’m more familiar with Marlin than GRBL so any help would be appreciated.



Man! It sure seems like high school has gotten a whole bunch funner since I was there a lifetime ago! Well done! :+1:


Core XY kinematics is an option if you edit the config.h file and recompile. You can’t do it just by tweaking the $ configuration settings. Haven’t used it myself, so can’t vouch for whether or how well it works.

If the motors ramp up to speed too slowly, increase the acceleration, which is $120,$121,$123 for X, Y , and Z respectively in “standard” mode, but I don’t know if these change for coreXY.

I’ve had the best luck experimentally tuning velocity and acceleration by picking a known achievable but pretty slow velocity max rate ($110, $111, $112 for X, Y, Z respectively) then slowly increasing acceleration for each axis ($120,$121,$122 ) until skipping steps, then backing it off 5-10% or so for a reliable setting. Then you can increase max rate settings until skipping steps and backing it off 5-10% already knowing that acceleration isn’t too high.

1 Like

I am not using the uno version of grbl, I am using grbl_esp32, but the corexy in the config.h does in fact work. I would share what I have, but I am pretty sure the config file is completely changed.

But… I am very impressed with the work on those tables. I am curious to see what they looked like when they started. But they look awesome now. I hope they end up in a place where they can have a long life making temporary art, and being watched for hours.

This is a much better use of project time than making an ash tray for my dad (who never smoked) :slight_smile:.

Chris, Here are my current GRBL settings on my ZenXY table.

$0 = 10 (Step pulse time, microseconds)
$1 = 25 (Step idle delay, milliseconds)
$2 = 0 (Step pulse invert, mask)
$3 = 0 (Step direction invert, mask)
$4 = 0 (Invert step enable pin, boolean)
$5 = 0 (Invert limit pins, boolean)
$6 = 0 (Invert probe pin, boolean)
$10 = 0 (Status report options, mask)
$11 = 0.010 (Junction deviation, millimeters)
$12 = 0.002 (Arc tolerance, millimeters)
$13 = 0 (Report in inches, boolean)
$20 = 0 (Soft limits enable, boolean)
$21 = 0 (Hard limits enable, boolean)
$22 = 1 (Homing cycle enable, boolean)
$23 = 3 (Homing direction invert, mask)
$24 = 100.000 (Homing locate feed rate, mm/min)
$25 = 2000.000 (Homing search seek rate, mm/min)
$26 = 250 (Homing switch debounce delay, milliseconds)
$27 = 2.000 (Homing switch pull-off distance, millimeters)
$30 = 1000 (Maximum spindle speed, RPM)
$31 = 0 (Minimum spindle speed, RPM)
$32 = 1 (Laser-mode enable, boolean)
$100 = 100.000 (X-axis travel resolution, step/mm)
$101 = 100.000 (Y-axis travel resolution, step/mm)
$102 = 100.000 (Z-axis travel resolution, step/mm)
$110 = 4000.000 (X-axis maximum rate, mm/min)
$111 = 4000.000 (Y-axis maximum rate, mm/min)
$112 = 500.000 (Z-axis maximum rate, mm/min)
$120 = 2000.000 (X-axis acceleration, mm/sec^2)
$121 = 2000.000 (Y-axis acceleration, mm/sec^2)
$122 = 800.000 (Z-axis acceleration, mm/sec^2)
$130 = 280.000 (X-axis maximum travel, millimeters)
$131 = 620.000 (Y-axis maximum travel, millimeters)
$132 = 200.000 (Z-axis maximum travel, millimeters)

I am using TMC2208 drivers in standalone/legacy mode using 16 micro-stepping.

You will want to change the $130 and $131 to reflect your table’s work area. You might also want to change the $110 and $111 to something slower. I only have those high for testing. If I’m not mistaken, when doing jogs, it will use the max feed-rate. But then again, I have puny 39oz/in motors on mine. :astonished:

Also, when you jog the axis, do both motors move, or just one? If only one is moving it would seem like the COREXY Kinematics aren’t enabled. I know I’ve run into issues where I’m changing the config.h file in the wrong folder because when I added the library or project to the Arduino IDE, it makes a copy in a different folder and that’s the one you need to change. I thought I was going crazy a few times. You can make sure you are in the right folder by going to Sketch>Show Sketch Folder.

Then you will have to go “up” a couple directories to get to the containing grbl folder with the config.h.


The tables are beautiful. If they are to be used in a techEd teaching setting, you might consider looking for a way to mount a mirror under them (maybe at a 45* angle) so that the mechanism’s movement could be watched at the same time as the art is formed on top.