Organizing my thoughts on what I’ve learned on tool controls and axis implementation.
- Autospin T1 on X axis, Tool 0
- LT 60W on A axis, Tool 10
- Custom startup Gcode in Lightburn needs to first park Tool 0 at X axis machine home and turn off spindle before moving A axis and starting laser
M6 ; M5 ; $HX ; M3 S0 ; T10 M6
- Custom finishing Gcode after laser cutting/engraving
M5 ; $HAZ ; G0 Y1500 ; M2
- Lightburn cannot remap X axis to A, need workaround
- Text edit, X → A (tedious, not my style)
Make custom GRBL device profile (preferred, not sure if possible?)
- See below for process
- Use multiple configs (easier to implement, design limiting)
- MillMage will need inverse startup/finish commands
- T10 M6 ; M5 ; $HAZ ; T0 M6
- M5 ; $HXZ ; G0 Y1500 ; M2
- Need to design custom macros for aligning X and A axis
- Set bit and laser to same Z cutting point
Define Y offset between laser crosshatch/laser point/spindle bit point (38mm per manufacturer)- T0 M6 ; G0 X500 → Z down tap spoil board → Z up to G0 X0
- T10 M6 ; G0 A500 → Z down laser pulse → Z up to G0 A1376
- Park X button, Park A button
- Probe spindle and pause to set laser depth
- Set bit and laser to same Z cutting point
- Items to consider
- Bit and laser alignment in Z may not always be set, need to ensure bit doesn’t crash when moving for laser
- A axis is never confused with X axis in gcode
- Laser safety, maintain cleanliness of lens/unit
- Would it be easier to just build another table?
- Would it be as fun?
Edit (Misc):
- Need to add the following to enable/disable laser mode for M3/M4 to act properly in GRBL:
- To Enable: Send Grbl a
$32=1command. - To Disable: Send Grbl a
$32=0command
- To Enable: Send Grbl a
Edit 2 (Lightburn custom Gcode device):
- Create custom G-Code device in Lightburn
- Create new device → Create Manually → Custom GCode
- Setup CNC as normal, rename with A Axis and Save
- Edit Gcode commands
- Open Device settings
- Enable DTR mode per FluidNC
- Edit startup and shutdown scripts from above and test
- Edit Rapid Move and Cut Move, replace G0 [X]{x} → G0 [A]{x} ; [A]{rot} → [B]{rot} (to prevent code confusion)