I recently finished building a custom laser engraver with a dedicated rotary axis. The machine runs marlin, and I have the g-code version of LightBurn. After doing quite a few test burns, I’ve found that the Y axis (rotary) is moving slower than the X axis. This results in burns made on the X axis being much lighter than on the Y axis. The image below shows a simple test setup in LightBurn and how the burn comes out. The mode is set to Offset Fill. I’m struggling to find what settings I need to change in order to get a consistent speed and burn.
@NicholasL Thanks for the quick response. Yes, clicking the Test button causes the chuck to complete a full rotation then return to the starting point. The dimensions of the burns appear to be pretty accurate, it’s just the speed difference I have to sort out.
I don’t know the Marlin flavor exactly, but usually, you can set a maximum speed and acceleration per each axis. I guess your rotary axis has a very low acceleration and maybe also low maximum speed. In grbl, you have parameters $100-130 to define those settings for all axis.
If you find that the max speed and acceleration settings do not appear to be limited in anyway and you are still having issues, here are some additional troubleshooting suggestions:
How do the results change if you were to run at a slower speed(and lower power)?
Please run these speed tests, first with rotary mode off (and on the flat) to confirm that you are getting roughly the same speed from each axis:
-Home the machine
-Go to the ‘Move’ window and set the distance to 300mm, speed 3000mm/min, and then click the X+ arrow button;
Use a stopwatch, it should take between 6 and 7 seconds to run.
-Try the same in Y+ (and check the distance is correct)
-This time run the 300mm on the diagonal with both axis running at the same time, type into the console:
G1 X212 Y212 F3000 S0
Listen for any sound of stuttering, this should be a smooth operation like the others.
Note those results, then enable rotary and try all these tests again, but for the rotary axis ignore the actual surface distance travelled - just measure the time.
@NicholasL & @misken Thanks for taking the time to reply to my post, I appreciate the effort you guys put into helping the community.
I tried the things you suggested but, unfortunately, I just couldn’t get the machine to run properly. After hours of Googling and hair pulling, nothing seemed to be working, until I changed the DEFAULT_AXIS_STEPS_PER_UNIT in Marlin.
Because the Y axis on the machine is a dedicated rotary axis, I originally set the Y steps (in Marlin) to 22.2222 and the mm per rotation (in LightBurn) to 360. This made the travel distance spot on, but threw out the travel speeds.
The fix was to:
Change the Y steps in Marlin from 22.222 to 80, which is now the same as the X steps
Run G1 Y360 and measure the distance travelled, which was 3 full rotations plus 218 degrees - a total of 1298 degrees
Dividing 1298 by 360 indicated that the movement was 3.606 times the requested distance
The 360 mm per rotation (in LightBurn) was divided by 3.606 to give 99.831
After changing the mm per rotation to 99.831, and running some tests, everything is running as expected.