Anyone got mesh leveling working with a z-probe on a servo like the bltouch? It looks like the code for a servo based z endstop is buried in the auto leveling code, and you can’t enable both auto level and mesh / manual leveling at the same time, or did I miss a setting?
Edit: what I’m looking for here is making the servo based z-probe work for homing without auto leveling enabled, not an automated mesh level process.
No, Mesh is “manual” only, meaning that you can use the LCD to run throught the points in sequence and then manually save them to EEPROM.
All of the concepts to have Mesh use a probe are present in the code, but there is no option to configure mesh/manual as of 1.1RC, latest I’ve looked at.
It could be done by rearranging some IFDEFs and adding or copying some code, but it’s not there. I would like to do it, but I’m having about my 3rd month of no-free-time.
(One professor in college told me that to estimate programming time, do a max estimate and multiply by 10 – 35 years later I see that he was wrong, one should only need 8 to 9 times the max estimate…)
@Alan_Whinery I worded that poorly, what I’m looking for is making the servo functionality work for z homing. When I turned off auto level the bltouch is no longer activated on z homing, which means if I either home or try to start mesh leveling the carriage just crashes in to the bed.
Not that poorly, I want both/all things too. I just connected my z-probe switch this morning, and I would like to just use the z-probe as a Z endstop. Because the Z probe min endstop code is inside the Auto-bed-leveling d
IFDEFs, what I said before still applies in a similar way. It looks lime you’d need to get auto-bed-leveling into your head, and the perhaps you could rearrange IFDEFs to have the z-probe homing work when ABL is not enabled.
In Marlin_main.cpp around line 1838 of RC3 (in the function for homing a single axis):
#if ENABLED(Z_PROBE_SLED)
// Get Probe
if (axis == Z_AXIS) {
if (axis_home_dir < 0) dock_sled(false);
} #endif
#if SERVO_LEVELING && DISABLED(Z_PROBE_SLED)
// Deploy a Z probe if there is one, and homing towards the bed
if (axis == Z_AXIS) {
if (axis_home_dir < 0) deploy_z_probe();
}
#endif
So I think the end result is if you are homing Z use the sled if there is one, but if its just a servo then don’t use it unless auto bed leveling is enabled… because “deploy_z_probe()” is part of the auto leveling code, rather than and independent thing.
It seems to me that the code to use servo endstops should exist outside of and independent of the auto leveling code. I’m going to open an issue on github and see if I can work out how to separate it…
I managed to get the servo working for plain homing. What I’ve done so far just deploys and retracts while homing, so you need to raise Z before homing if you are too close to the bed for the probe to extend, and you might want to raise it while heating so you aren’t right on top of the bed while heating. You can see the snippet I added here: