Smoothieware CNC / Grbl Mode on Panucatt X5 GT

I have my R7 CNC running on a Panucatt X5 GT. I have been running it for years now on a fairly outdated firmware and config (config from a 3d printer, I control my spindle entirely manually). I use Cncjs as my gcode sender from a Intel Nuc running windows. I would like to do some updating to the newer versions of smoothieware firmware… But I am running into a few problems both new and old.

1.) If I run smoothieware in the Grbl mode (CNC version) G28 has changed. Now it uses $H to home, but that is for all axis. You cannot $H for a single axis. My limit switches are in the back right corner of the CNC, with Z homing the spindle in the up position. Often in Cncjs I like to home just one axis, for example I used to use G28 Z to move my spindle up to the endstop at a known position for changing endmills. What would I use now when I first start my CNC, then home to the endstops so it knows it’s position in space. Then what commands would I use for single axis homing from then on. Cncjs lets me build macros of codes as scripts/buttons. I would like to get them setup according.

2.) Do I need a different Smoothie post processor for running smoothieware in CNC/Grbl mode? I have a very old fusion post processor that I edited years ago because rapids were not handled correctly at the time. What is the best post processor to use in fusion/hsmworks currently for smoothieware on a CNC router.

3.) When running a program I sometimes like to have the program pause, move out of the way, then continue after I perform some manual action. For example my gcode might do all holes first, then I want the machine to move out of the way and pause (perhaps go to home at the endstops). For example then I can screw the part down into the wasteboard, or do a tool change. Fusion lets you insert custom commands directly into the operations tree. In the past I have tried to use M0 to pause, Cncjs respects this command and waits for my input, and I can then jog around. But if I do this when I resume the machine does not go back to the correct location before continuing. It just starts cutting as if it was where I left off. What I would like is for the machine to go back to where I left off (X and Y first, then Z second) before continuing. Is there a way to accomplish this? If so what are the correct order of command U should send?

4.) Last item is canned cycles, for example pecking drilling cycles. I have not tried them in years on my Fusion + Smoothieware setup because I could never get them to work. The controller would just plunge the bit to full depth never pecking. Is there something I am doing wrong in fusion, can smoothie not handle the codes fusion generated, or need to enable something for this to work?

Thank you to anyone who can help on any of the items I have listed above. I have put this off for years because I have my machine working, so I stuck with what I knew did the job even if I couldn’t do some things. But I want to improve my current setup, and my knowledge about it so I can leverage more capabilities.

  1. Home with $H at boot time, then if you want to go to the origin of any axis, just do G53 G0 X0, that’s the correct/normal way of going about this, we removed the “incorrect”/reprap way of doing this which was an improvement. I understand it’s annoying if you used to use the incorrect way, but overall it’s a good thing.

  2. Fusion post-processor should be mostly fine. Maybe need to change one of the gcodes at the beginning but I doubt it. If you run into any trouble just tell us here. You should just test it and see.

  3. Returning to the correct position is something cncjs should be doing, you should ask them to implement the feature, M0 is really a host command, not a smoothie command. Alternatively you can use a G0 after the M0 in the “custom gcode” in fusion but you have to do that by hand. If you know javascript you can definitely make the post-processor do this automatically too.

  4. Canned cycles are only meant for manual usage, not for post-processors, and the subset supported by smoothie is very small. They are not useful for post-processors, the Smoothie post-processor should not output canning cycle commands, but just decompose them into many G0 commands pretty much. If you have trouble, show us what gcodes fusion is generating for these.


For single axis homing (if I consider home the back right) it would not be G53 G0 X0 correct? It would be something like G53 G0 X792 (my X travel max)? Because I still want machine Zero to be thought of as the front left corner, but home to be at X Max and Y Max since its out of the way. Does the old “home to max” style setup still work with a H$ the Grbl mode?

Thank you for the input. I truly appreciate it.

Sure, I assumed your home was at 0, but if it’s somewhere else that’s where you are going to set the value to. You are pretty much just asking the machine to move to a given position, which is like the most basic thing you can ask it to do :slight_smile: You can home to max with the cnc mode for sure, actually very little changes from cnc mode to 3D printer mode, it’s mostly just G28 and some details related to G10. The rest is extremely small changes/details that 99% of users do not notice/are not concerned by. The documentation is completely valid for both cnc and 3D printer builds.

I am setting up a new CNC mechanical platform and plan to reuse my VFD, smoothie controller, etc. This time I would like to get more running from Gcode, and use less manual switches/adjustment . My VFD doesn’t have RS485, so I am planning to use a PWM to 0-10V board for speed control, and I understand the Wiki on getting the pins setup for the start signal, and PWM signal. I was wondering if there is provisioning for spindle reversing, and stop? I know I can just set the VFD speed to zero to stop, but I would like to actually have it issue the reverse and stop outputs to VFD’s remote inputs.

Basically I want to be able to send Gcode to set the rotation direction, set the speed via the PWM, and then send the spindle start. Then once complete I want to be able to send the spindle stop. I don’t see any documentation on the wiki or on forum searches on how to deal with spindle reverse or stop. Is this possible?