Piezo Z-probe with separate Z endstops - can't go bellow Z0

I have the following setup - large printer, so using two Zmin endstops with two Z stepper (MULTI_ZENDSTOP_HOMING) plus a Piezo probe (EXTRUDER_IS_Z_PROBE). Multi-Z homing works wonders. However, after Z homing, nozzle ends up few millimeters above bed and this is expected due to where the Z endstops are factory affixed to the chassis. This means that for the Z-probe to trigger,  being a piezo probe integrated into the hotend assembly,  we need to move Z bellow 0, in this case to around -4.3mm bellow. Mechanically this movement is possible - nothing is blocking, but I can not make the right settings to properly configure the firmware to do it (running on 1.04). G30 results in a short move in positive Z direction and a halt with a "Z probe failed" message.
Can you please guide me where to look and how is the right way to configure in this scenario? With Marlin I know how to do it, but I prefer Repetier all day, so would love to make it work with it. Thanks!


  • I guess the problem is not going below z=0 but that your 2 z min end stops will trigger first. That case is not covered. We expect to home with z probe or z max homing. So hope you can do a bit programming. In Endstops.cpp you need to modify

    void Endstops::update()
    What you actually want is that parts like
    newRead |= ENDSTOP_Z_MIN_ID;
    only trigger when Printer::isHoming() is true. Same for second z min pin. That you would succeed for z probing. That also solves the problem that you need to move lower and do not want z min tests on regular moves either.
  • Awesome, man - thanks ! Going to give it a try now and will paste a diff if I succeed .. I was thinking that maybe it will be an option to introduce a Z_ES_TO_NOZZLE_OFFSET maybe, which will be added /subtracted from Z position on Zmin home - Though it looks like a lot more work, that way after homing to Zmin the Z position will not be 0, but the value of Z_ES_TO_NOZZLE_OFFSET.. do you think this also can work ?   Thank you very much!

  • The problem is an end stop marks the end and you want to use it as past the end stop. So it will trigger before the end which is also why you must make them ignore them when not homing. Extra problem - if you home form below z min position might be wrong. You need to move back enough to untrigger  so z min triggers always at correct position. Actually you could completely remove the end stops for z since you have the piezo that could also act as z min. Only thing that would not happen is repairing rotation on homing. You would only correct current rotation by running G32 than.
Sign In or Register to comment.