Can Smoothieware do this? Rough homing Z to Z-max AND precize Z-probing for Z-min?

Hello everyone,

I’m currently pondering about switching to Smoothieware. At the moment I’m using Klipper but I would like to get rid of the requirement to have two devices (a Raspi and a controller board).

Now one thing that I’m doing with Klipper is gantry levelling before a print. That works as follows: my printer’s Z-axis gantry is driven by two lead screws, each with its own stepper. Because they aren’t machanically connected by a common belt or something, they can get misaligned when the Z motors are off. In order to fix a misalignment between the two sides of the Z gantry I have two endstop switches at the Z-max position. G28 drives both motors until both endstop switches trigger and the gantry is level. The exact position of the two switches is irrelevant as long as they are both roughly at the same height (i.e. the gantry comes out more or less horizontal). They are not calibrated, but that’s okay.

However, what is calibrated is my additional Z-probe (capacitive sensor) that I use to get the exact Z position by probing on the print bed.

So before a print starts, two things happen to the Z gantry. Firstly, it is levelled by G28 homing to the two uncalibrated Z-max endstops. Secondly, the gantry moves towards Z-min to about what is considered Z{some-fixed-value} from the endstops. That position is still a couple millimeters from the print bed. Then a probe run is triggered which slowly probes the print bed. As soon as the probe triggers, the actual Z position is set so that Z0 is exactly nozzle on the print bed (paper test, you know the drill).

This sounds rather complicating, but actually isn’t. It’s just an additional step and some sort of abuse of the G28 homing to level the gantry.

Now to my question, which is probably already quite obvious: is this whole… process… thing… also possible with Smoothieware? What would have to be done to achieve it?

Thank you very much!

You could put the two Z-Axis limit switches in parallel (if Normally-Open) or in series (if Normally-Closed) and then use the G31 command etc to create a grid compensation; check out

This does what you want :