Ender 5 Pro/bltouch -- z-offset not used

Hi,
This the first time I’ve posted to an online forum, so if I put my foot wrong please correct me.
I have an Ender 5 pro that I have used successfully for two years. I added a bltouch about a year and a half ago which Jason talked me through installing which seems to work fine.
My current problems is that my printer does not seem to use the z-offset that I put in.
I set my z-offset using the following procedure;

BLTOUCH Z OFFSET LEVELING PROCEDURE					
(semi colons were left off when I copied text)					

ENTERED FROM PRONTERFACE CONSOLE
G28 AUTO HOME
M851 Z0 RESET Z OFFSET TO ZERO
M500 STORE SETTING TO EEPROM
M501 SET ACTIVE PARAMETERS
M503 DISPLAY ACTIVE PARAMETERS
G28 AUTO HOME
G1 F60 Z0 MOVE NOZZLE TO ZERO OFFSET
M211 S0 SWITCH OFF SOFT END STOPS

ENTERED FROM ENDER 5 PRO CONSOLE
PREPARE>MOVE AXIS>MOVE Z>MOVE 0.1MM
SLOWLY MOVE BUILD PLATE UP UNTIL NOZZLE IS
ONE PAPER THICKNESS FROM BUILD PLATE
MAKE NOTE OF Z ON DISPLAY THIS WILL BE
THE Z OFFSET (-x,xx)

ENTERED FROM PRONTERFACE CONSOLE
M851 Z -x.xx SET Z OFFSET TO VALUE FROM PREVIOUS STEP
M211 S1 ENABLE SOFT ENDSTOPS
M500 SAVE SETTINGS TO EEPORM
M501 SET ACTIVE PARAMETERS
M503 DISPLAY ACTIVE PARAMETERS
G28 AUTO HOME
G1 F60 Z0 MOVE NOZZLE TO TRUE OFFSET
TO SEE YOUR RESULT

When I enter the last command in this sequence G1 F60 z0) the bed does not rise to true zero on the z axis.
It stops at z-offset plus one paper thickness away from the nozzle. I have done this multiple times. This seems to me that the printer is not using the z-offset I enter. If I send the command M503 or M851 Z they both return the z-offset that I entered. If I enter both of these commands after turning off and restarting the printer they both display the expected value (the one I set) which tells me it is both in memory and is being saved to eeprom.
I really have hit a wall on this and was hoping someone could spot where I am going wrong and set me straight.
I just had another look at what I am posting I sorry it is so long but I wasn’t sure what to include.

Other information which may or not be relevant.
The problem started or started to get worse when I had occasion to reinstall the x-axis cable. Thinking that I may have disturbed the bltouch wireing I checked how it was installed at the board level. The three wire plug is installed to the pin 27 adapter board with yellow wire closest to the ‘sig’ pin. The two wire plug is installed in the z axis limit switch socket with the black wire closest to the other limit switch sockets.
I don’t level the bed for every print but run it from a macro in pronterface at the start of a print session. Since the G29 command in this macro and M420 V command displays the 3x3 leveling grid I presume that he bltouch is functioning correctly.

On connecting to pronterface it displays the following which tells you a little about my machine.

Pronterface display on connection to printer
Connecting…
start
Printer is now online.
echo: External Reset
Marlin 1.1.6.3BL_V3.1
echo: Last Updated: 2020-03-04 | Author: Ender-5 Pro BLTouch
echo:Compiled: Mar 4 2020
echo: Free Memory: 9981 PlannerBufferBytes: 1232
echo:TF card ok
Init power off infomation.
size:
585

The M503 command displays as follows

Pronterface display after m503 command (after a shutdown)
>>> m503
SENDING:M503
echo: G21 ; Units in mm
echo: M149 C ; Units in Celsius
echo:Filament settings: Disabled
echo: M200 D1.75
echo: M200 D0
echo:Steps per unit:
echo: M92 X80.00 Y80.00 Z800.00 E112.00
echo:Maximum feedrates (units/s):
echo: M203 X500.00 Y500.00 Z12.00 E120.00
echo:Maximum Acceleration (units/s2):
echo: M201 X500 Y500 Z500 E10000
echo:Acceleration (units/s2): P<print_accel> R<retract_accel> T<travel_accel>
echo: M204 P500.00 R1500.00 T500.00
echo:Advanced: S<min_feedrate> T<min_travel_feedrate> B<min_segment_time_ms> X<max_xy_jerk> Z<max_z_jerk> E<max_e_jerk>
echo: M205 S0.00 T0.00 B20000 X10.00 Y10.00 Z0.20 E2.50
echo:Auto Bed Leveling:
echo: M420 S0 Z0.00
echo:Material heatup parameters:
echo: M145 S0 H210 B60 F255
M145 S1 H240 B70 F255
echo:PID settings:
echo: M301 P23.81 I1.93 D73.64
echo:Z-Probe Offset (mm):
echo: M851 Z-2.60

HI, @TomP Glad to see you here.

so to clarify what I am seeing here, you are entering these commands through Pronterface one at a time?

From what I can follow in the commands you are typing I believe it’s doing what you are asking it to do.
The new Z 0 should in fact be a bed touching nozzle minus a piece of paper.

was it doing something other than this previously?

Because you have reenabled the soft end-stops (M211 S1) the printer will only go the max movement as presented with the Z-offset in the M851 command. In other words, it will move max (trigger point of BLtouch + (output of M851))= soft Z=0

If you want to test that the function is correct, Disable the Soft end-stops, G28 the printer, ( this will home it excluding the Offset) and then enter G1 F60 Z-x.xx. This should bring the bed to the nozzle minus the piece of paper as well. This to me should be expected behaviour unless I am missing something.

Hi Jason,
Thanks for getting back to me. Answering your question, I was entering the commands through Pronterface one at a time at least until I got tired of all the typeing and set it up as two macros with buttons for the first part and last part. The middle part was done from the Ender 5 console and the M851 zx.xx was entered alone.
As of right now I can now get to “true” zero. Disturbinly I don’t know how I got here. The only thing I can offer is when experimenting with the the M420 command thinking if it enabled ABL it might also enable Z offset. I entered M420 S0 followed by G1 F60 Z0 and the bed stopped short by the amount of the Z offset. I then sent M420 S1 followed by G1 F50 Z0 and the bed rose to true zero. I thought I had it solved. However I tried to replicate the behaviour to confirm that that was the problem but G1 F60 Z0 always rose to true zero regardless of the whether ABL (M420) was enabled or not. Another thing I did laterally was to reseat the Z motor cable at both ends.
I sent G1 F60 Z0 both with Soft end stops enable and disabled. In both cases the bed rose to true zero.
I guess I can call this one solved for now. I just don’t know how it got solved.
Thanks for your response

Hey Tom, No problem, I would hazard to guess as part of testing when you enable or disable the mesh levelling I would try the M500 and power cycle it in between the change just to verify you are at the same starting point each time. If you are leaving power on and switching it from enabled to disabled maybe the change is not always “taking” Cache on a small EEPROM does not always behave as we expect it to.

Once you enable or disable ABL there is no way to ask the printer to confirm if it’s on or off.
With the power cycle, you can at least confirm it’s starting at the same place.

Hi Jason,
Thank you for your additional input. I had always presumed that the G29 command in addition to producing the bed mesh that it would also enable bed leveling.
In the spirit of a belt and suspender approach I added M420 S1 to my leveling macro which now reads as follows. It may be over kill but it doesn’t cost anytlhing.
G 28 ;home all axis
G 29 ; bed leveling BL touch
M420 S1; ENABLE ABL FROM SAVED MESH (just in case)
M500 ; save settings to eeprom
M501 ;set active parameters
M503 ; display active parameters
m420 v ;display mesh from memory

I would remind you that I only level once at the start of a printing session through Pronterface and not at the beginning of every print.

As a matter of of interest it appears that my version of Marlin does display the status of ABL as part of the M503 command show in the following fragment of the M503 display,

echo:Auto Bed Leveling:
echo: M420 S1 Z2.00

I don’t know where the Z2.00 came from but I hope that two layers is enough to get started properly and doesn’t need to be changed.
M420 V will display both the bed mesh and the ABL status. well.

My current understanding of G28 is that it disables ABL so I’ve added M420 S1 to my Prusaslicer start code following the G28 command.
I hope that I have added enough redundancy to my Pronterface leveling macro and my start G-code with these steps.
Thank you so much for taking the time to straighen out an 80 year old man.
Regards

1 Like

Hey @TomP

All is good, I actually quite enjoy figuring out the little issues like this, Some days I am just too much of a nerd.