First MPCNC build, doing this for my neighbor. He wants a ZMAX home in case he accidentally tells the tool to home during recovery and doesn’t want the tool diving into the work. Makes sense. Also wants to use a contact probe for finding the work top surface. Still good, I’ve done similar things with 3D printers.
I’ve build multiple 3D printers using MEGA\RAMPS+Marlin, first CNC using that combo. Using the Rambo1.4 board and downloaded the firmware for dual endstops.
Made a part to attach to the Z axis to hit a switch when at the Z_MAX position.
Added:
USE_ZMAX_PLUG
Z_HOME_DIR 1
Z_MAX_POS 40
Z now homes to max and sets the Z position to +40. Awesome.
Added:
FIX_MOUNTED_PROBE
G38_PROBE_TARGET
Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
Left USE_ZMIN_PLUG enabled
Tried G38.2 z0, Z moves down to 0 and stops and never senses the probe. (I’m closing the probe circuit by hand)
M119 indicates the ZMIN probe is working correctly and changing states.
(insert a TON of undocumented changes adding and removing comments to try to get the ZMIN and ZMAX to work correctly (like disabling USE_ZMIN_PLUG, mostly resulting in compiler errors- none of them will work)
Decided to try using a different input for the probe besides ZMIN.
Having a hard time finding an open pin on the Rambo1.4 board, or at least anything that is documented about spare pins.
Using M43 W I, I verify that the ZMIN pin is PIN10.
(insert a TON MORE undocumented changes adding and removing comments to disable ZMIN so I can use the pin- nothing works)
In the end, the following changes DID work, but they shouldn’t have.
USE_ZMIN_PLUG
removed Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
Z_MIN_PROBE_PIN 10
Leaving the ZMIN pin enabled and trying to use its PIN10 input SHOULD have given me a compiler error for trying to use a protected pin. Somehow it did not, and this combination actually allows the Z axis to home to ZMAX and G38 to probe to ZMIN. Note that with this change, the ZMIN and Z_PROBE are triggered together using M119.
So is there a better way to do this? I kind of stumbled onto it because all the “normal” ways of doing this with Marlin (Which I have done on 3D printers just fine) didn’t work. Although I wasn’t using G38 to probe the bed, G29 was used for bed mapping. Maybe it’s a problem with the G38 routine?
Hope this makes sense and is answerable.
Thanks.
Sorry, it didn’t really help. The firmware is designed to work out of the box with just theZMIN endstop connected to the probe, so it should have worked for you and I’m glad it did! There is somehow some firmware confusion when the ZMAX is added to the mix and G38 is used. I am assuming that you are homing z down to the probe so when the home is done Z is the top of the work?

