Bilinear Bed Leveling will not raise Z between probe points

Close to completing my 1220x2440 Lowrider build :smiley: One last part to set up: bed leveling!

So far it almost works, but the machine doesn’t raise the Z when it’s probing. It just drags the probe around. With verbose output you can see the readings at each probe location, and at the end it shows me the data… it just doesn’t lift the z-axis up in between points. It does move the Z down if a dip in the bed causes the sensor to open. I put up a short video of it running G29 command in an area with a 10x10 grid, here:

https:// youtu.be/ iWDpMQPbqmk <— just take the spaces out, forum won’t let me post links

Feels like I’m so close but I just can’t figure this last part out - does anyone have an idea or know what might be causing this issue?

The Build
Rambo 1.4 Board (from V1)
Dual Endstop Firmware
Dual Z endstops (plugged in z-min, x-max), Dual Y (y-min, y-max), and Single X (x-min) endstops
“probe” from a spare endstop (plugged in z-max)

My probe is defined as a “FIX_MOUNTED_PROBE” (but I have tried nozzle as probe with same result) and I’m trying to use “AUTO_BED_LEVELING_BILINEAR” - the settings I found that seemed relevant were the following:
#define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow
#define Z_CLEARANCE_BETWEEN_PROBES 10 // Z Clearance between probe points
#define Z_CLEARANCE_MULTI_PROBE 10 // Z Clearance between multiple probes
#define Z_AFTER_PROBING 10 // Z position after probing is done
This is what I have set, but these don’t seem to have any effect. At least not on raising the z-axis between probe points. Is there something else they depend on?

This is a pic of the probe I’m using. It’s currently plugged into the Z Max spot on my Rambo 1.4 - I thought maybe using Z Max could be the reason it didn’t want to raise (z max is triggered, so it it thinks it’s already at the top & won’t go further?) but I changed configuration to use z min pin for probe and got same result. Haven’t ruled this out - but I think it’s likely just a configuration thing.
2020-06-11 19.35.51

There is a “safe z” parameter too. But the examples you’ve already mentioned seem like they should have done it.

Is it trying to lift z too fast and losing steps?

I have “Z_SAFE_HOMING” defined as well. Currently the machine homes great, and seems to respect other variables such as how high to raise the Z before moving to home X and Y. It even raises before moving to where it should start the bed leveling - but thats where it ends.

Once I’m no longer a “new” member I will post my configuration.h and configuration_adv.h - too bad time spent lurking in these forums doesn’t count :sweat_smile: for the last month I’ve been a regular.

Thanks for the assist. It might just be moving too fast! I don’t hear anything from the Z motors (if it’s attempting and just not able) or see anything (no slight jump or lift as it’s moving between points) though. In the video it’s probing a small area - a 300mm square, but I’ve tried to probe the whole bed and gotten the same result. It does seem to be moving quite fast between points though - faster than it moves when being issued a normal G0 commands. These are the settings I think would control this - do these look ‘ok’? what values are others using? Are there different settings that affect ABL?

// X and Y axis travel speed (mm/m) between probes
#define XY_PROBE_SPEED 4000
// Feedrate (mm/m) for the first approach when double-probing (MULTIPLE_PROBING == 2)
#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
// Feedrate (mm/m) for the "accurate" probe of each point
#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)

Also, I have MULTIPLE_PROBING probing set to “2” - have tried commenting this out as well and saw no change though, so not sure. Would this affect anything?

What is HOMING_FEEDRATE_Z set to?

These are my homing speeds - could they be too fast for probing? The machine homes nicely, and the dual endstop auto-squaring works like a charm. The endstops I’m using to home Z are plugged into in Z-Min and X-Max, so during normal homing the probe (plugged in to Z-Max) never gets triggered.

// Homing speeds (mm/m)
#define HOMING_FEEDRATE_XY (30*60)
#define HOMING_FEEDRATE_Z  (3*60)

I also wonder if using the Z-Max plug for my probe is effecting things (like the z being able to raise)? Is there a way to tell the machine that this plug isn’t actually for Z-Max limit? or to tell the machine to disregard that while bed leveling? All other functions seem to work as they should.

3mm/s should be fine. Why are you even using the zmax plug? Why not turn it off and use zmin?

Holy crap. Switching back to Z Min WORKED! I was using Z Max because it was open. I had tried using Z Min earlier and it didn’t work - however the first time I had it wired that way I had not implemented the fix to probe.cpp found here: https://github.com/MarlinFirmware/Marlin/issues/17417 and so it failed immediately (same as when I had it wired to Z Max - seeing no difference, I switched back to Z Max). This time I had commented out that sanity check. works perfect now

Cannot wait until I have time to get out the dial indicator and really test this. Fingers crossed to start cutting this weekend. Thanks for the assist!

Anyone else with Rambo board who runs into this issue - don’t use Z Max for a downward probe because you may get unexpected results - also you have to edit probe.cpp or Marlin will fail G29 after first probe, no matter how it’s wired.

So, are you running G29 with the L, R, F, B parameters to just probe the surface of the workpiece? I think that would be a very useful tool in the toolkit. Especially if you could load a gcode file and then press a button and it would automatically determine the right points to probe.

That’s my plan! I use CNCjs and I want to have a macro to do it automatically. Something like this:

G90
G0 Z10 ; go to z-safe
G29 L[xmin] R[xmax] F[ymin] B[ymax] ; probe grid over work area

If a gcode file is loaded, that should automatically probe around the work area. I’ll try it out tonight!

1 Like

I’d recommend specifying a feedrate on that G0 Z10 because you don’t know what you did last and it might have been fast.

Not that this has ever happened to me, no, I would never make a mistake like that.

3 Likes

Just wanted to follow up: bed leveling is a GAME CHANGER for this type of DIY cnc. Did a few test cuts - carving a 2mm recess into MDF for some threaded inserts and just had awful consistency (± .5mm on holes that were right next to each other - the difference between being flush and sticking out) until I was able to get ABL working. Marlin already supports this so it cost nothing extra to add to the machine, but has increased accuracy an incredible amount. Across the entire 4x8 sheet I had a difference in Z depth of ±.2mm. not bad! Can’t wait to get to cutting this weekend. Thanks everyone who responded.

4 Likes

:clap: :tada:

That is epic. How much distance between xy did you probe, and did you measure in between probe points?

I have G29 set to do 10x10 grid. The work surface is 1180x2100mm (roughy 4 by 7 ft.) which was used for those threaded inserts - but I’m also using that CNCjs macro to just probe the piece before each job. 100-point mesh on everything. Takes a couple minutes. So overkill. I love it.

3 Likes