Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] bugfix-2.0.x - Auto Bed Leveling not working as expected #13512

Closed
guestisp opened this issue Mar 27, 2019 · 87 comments
Closed

[BUG] bugfix-2.0.x - Auto Bed Leveling not working as expected #13512

guestisp opened this issue Mar 27, 2019 · 87 comments

Comments

@guestisp
Copy link
Contributor

Hi to all.
I'm trying to use a genuine BLTouch sensor (I think v2.1) but without luck
The mesh is build properly, auto-home is working as expected, but when running a print, the nozzle is lifter too much even where there is no need to lift it and nothing stick to th bed.

If I disable the mesh and the autolevelling, with the same glass and the same manual leveling, i'm able to print properly. So, there is something strange with the UBL or with the auto bed levelling, because enabling it make more issues than without.

Any idea ? I've tried 2 different bltouch (both genuine) on 2 different printers, same behaviour, the nozzle is lifted and lowered with no apparent reason and for too much distance (even 1-2mm)

A glass can't have a 1mm "hole" in a couple of centimeters, it's physically impossible and that would be visible by eyes.

@Bob-the-Kuhn
Copy link
Contributor

If you have a system that works well then stick with it.

If it has problems then take a look at the following. I prefer the UBL system myself.

UBL

Mesh leveling

@guestisp
Copy link
Contributor Author

The working system is the manual bed levelling, that doesnt produce good first layers, obviously, as it doesnt level in the center but only in the corners

Already saw these guide, they are what i've followed to enable the UBL

@reloxx13
Copy link
Contributor

reloxx13 commented Mar 28, 2019

upload configuration.h and configuration_adv.h
which marlin version u use?
post ur startcode.
describe ur leveling procedure.

and fix the title of this issue.

@guestisp
Copy link
Contributor Author

guestisp commented Mar 28, 2019

upload configuration.h and configuration_adv.h

As soon as I go to office, give me 30 minutes or less

which marlin version u use?

bugfix-2.0.x

post ur startcode.

M190 S60 ; set bed temperature and wait for it to be reached
M104 S205 ; set temperature
M412 S0;
G28 ; Home extruder
G29 L1 ; Load the mesh stored in slot 1 (from G29 S1)
G29 J   ; No size specified on the J option tells G29 to probe the specified 3 points and tilt the mesh according to what it finds.
; Filament gcode
M109 S205 ; set temperature and wait for it to be reached
G21 ; set units to millimeters
G90 ; use absolute coordinates
M82 ; use absolute distances for extrusion
G92 E0
;LAYER:0
G1 Z0.300 F7800.000

describe ur leveling procedure.

z-offset set as 0
G28
Z is set to 10
I move Z axis down until touching the paper sheet
Read the Z value from the info screen (ie: -2.3)
Set z-offset to -2.3
Store settings
G28
Z is set to 12.3
Move Z to 0
The nozzle touch the paper sheet as expected

and fix the title of this issue.

Sorry for the title, i didn't see that the title was wrote properly, I was on mobile. Fixed

@guestisp guestisp changed the title [question] [question] 2.0.0-bugfix - Auto Bed Leveling not working as expected Mar 28, 2019
@guestisp guestisp changed the title [question] 2.0.0-bugfix - Auto Bed Leveling not working as expected [question] bugfix-2.0.x - Auto Bed Leveling not working as expected Mar 28, 2019
@guestisp
Copy link
Contributor Author

guestisp commented Mar 28, 2019

I've checked the config files and I'm using the one provided with Marlin, for Geeetech A20M except enabling the BLTouch and setting the probe offset. No other differences as I'm trying to fix the bed levelling, everything else will be addresses after all

#define BLTOUCH
#if ENABLED(BLTOUCH)
  //#define BLTOUCH_DELAY 375   // (ms) Enable and increase if needed
  #define Z_MIN_PROBE_REPEATABILITY_TEST
  /**
   * BLTouch V3.0 and newer smart series
   * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
   * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
   */
  //#define BLTOUCH_V3
  #if ENABLED(BLTOUCH_V3)
    //#define BLTOUCH_FORCE_5V_MODE
    //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
  #endif
#endif

#define X_PROBE_OFFSET_FROM_EXTRUDER -20    // X offset: -left  +right  [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER  -15   // Y offset: -front +behind [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER  0  // Z offset: -below +above  [the nozzle]

@Bob-the-Kuhn
Copy link
Contributor

When I enabled UBL my first matix was terrible. I did the G29 P1 to get the initial matrix but after that I kept repeating the "G26 , G29 P4" loop until I was getting good first layer adhesion everywhere.. After that I used G29 P6 to shift everything up/down based on test prints.

@guestisp
Copy link
Contributor Author

I can try
What seems strange to me is that even by setting a z-offset much lower than needed, in example -3.50 when the proper one is -2.50, the nozzle is still too high

Is zoffset ignored when using the ubl mesh? I have to rebuild the mesh every time i change the Z offset?

@guestisp
Copy link
Contributor Author

Side question: with UBL enabled, can I temporary disable the mesh and just use a plain simple 3Point level or a LINEAR leveling with 4 or more points, without the mesh correction ?

@Roxy-3D
Copy link
Member

Roxy-3D commented Mar 29, 2019

I can try
What seems strange to me is that even by setting a z-offset much lower than needed, in example -3.50 when the proper one is -2.50, the nozzle is still too high

Is zoffset ignored when using the ubl mesh? I have to rebuild the mesh every time i change the Z offset?

Usually... This behavior is because a person is changing the Z-Offset in the firmware (configuration.h) and not in the EEPROM. Are you doing a M502 & M500 after changing the firmware?

Side question: with UBL enabled, can I temporary disable the mesh and just use a plain simple 3Point level or a LINEAR leveling with 4 or more points, without the mesh correction ?

Yes. You can do a G29 P0 to zero the mesh. And then a G29 J to do a 3-point leveling. You can do a G29 J 2 for a 2 x 2 grid of probe points.

@guestisp
Copy link
Contributor Author

guestisp commented Mar 29, 2019

Usually... This behavior is because a person is changing the Z-Offset in the firmware (configuration.h) and not in the EEPROM. Are you doing a M502 & M500 after changing the firmware?

Yes. But when I'm talking about changing the z-offset, i'm referring to changing it from the LCD and the save (still from LCD)

Yes. You can do a G29 P0 to zero the mesh. And then a G29 J to do a 3-point leveling. You can do a G29 J 2 for a 2 x 2 grid of probe points.

Thank you. This should disable the mesh and activate the 3Point or the Linear. What if I would like to try the BILINER? Just add a number of points greated than 2 to "G29 J" will enable BILINEAR or still LINEAR with multiple points ?

Zero-ing the mesh is mandatory ? Isn't possible to temporary disable it for a single print ?

@Vertabreak
Copy link
Contributor

Vertabreak commented Mar 29, 2019

if you did not remove the original z end stop you will get false triggers from it as the probe and the end stop run on the same z min pin, if the original z end stop is removed it will allow the probe to function without being false triggered and blocked by the original z end stop. this is the only thing i can think of that would result in what you describe and has also been documented in another post here on GitHub.
G29 J is used to tilt a existing mesh, zeroing the mesh would result in a flat tilted plane with UBL to use bi-linear you have to disable UBL and enable bi linear and re-flash there totally different solutions to bed leveling.

@guestisp
Copy link
Contributor Author

I don't have the endstop.

Currently, I'm able to print a decent first layer, just trying to figure out the source of some strangeness. In example, does make sense, with chinese printers, to have z-offset with 2 decimal? The printer is able to move Z to 0.10 and 0.15 differently ? Asking this because from the motion menu I can move just up to 1 decimal place, but the z-offset has 2 decimal places.

@Vertabreak
Copy link
Contributor

Vertabreak commented Mar 29, 2019

the lcd menu motion moves are limited if you where to issue the gcode move command manually from a terminal you could type in a more exact number.
as users above noted i also prefer UBL over the other bed leveling options works perfectly on all 5 of my printers.

@guestisp
Copy link
Contributor Author

Sure, but does it make sense to adjust zoffset at 2 decimal place precision ? I don't think any FDM printer would be able to reach a 10 micron resolution on Z. Maybe i'm wrong

@Vertabreak
Copy link
Contributor

Vertabreak commented Mar 29, 2019

i have never used more then 1 decimal place setting my z offset personally but others claim they must.
i have also used the .06 layer height option in cura with no issue it just takes forever to print.

@guestisp
Copy link
Contributor Author

guestisp commented Mar 29, 2019

So, if you can print at .06, some printers are able to print at that resolution.

My correct z-offset is -2.40, if I set -2.40 first layer seems to be too hight, if I set -2.50 seems to be too low. It seems that Marlin is correcting too much. The paper sheet at -2.50 offset is totally fixed, doesn't move at all, this usually means a too low nozzle.

This is what I'm trying to figure out. Why setting a -2.40 offset (that is correct) Marlin doesn't stay too hight and with -2.50 is too low? The mesh seems correct

@Vertabreak
Copy link
Contributor

the offset moves the entire mesh up or down if your trying to correct 1 spot on the bed the offset will not do that.

@guestisp
Copy link
Contributor Author

Is not one spot. I have one spot a correct and one spot (a couple of centimeter on the right) too low.
Adjusting the zoffset a little bit should solve, the correct post would be a little bit higher with not apparent drawback and the too-low spot will be corrected. But doesn't seem to work. Currently I get a good, but not perfect, first layer in the center of the bed.

I'll try to print near the edge, if i'm able to print properly even there, everything would be ok. Not perfect but still good is something acceptable for my prints. When I have more spare time i'll do a mesh edit point by point

I'll keep you updated in about 30 minutes

@Bob-the-Kuhn
Copy link
Contributor

There's a better explanation of the G29 options/function in the file ubl_G29.cpp

I use G29 P4 to edit individual points in the mesh. That should help with your "point X is OK but point Y isn't" problem.

I have a glass bed so I just circle the problem area with a dry erase marker, use G29 P4 and make an adjustment when the nozzle is over the problem area.

One possible cause of the "point X is OK but point Y isn't" problem is too few points in the matrix. On my machine a 5x5 matrix is OK but I see others that use 7x7 or even 9x9.

@guestisp
Copy link
Contributor Author

guestisp commented Mar 29, 2019

I have a 7 * 7 Matrix. I can try a 8 * 8 or 9 * 9
Isn't an issue for the available memory? I get some warnings during the compile

@Vertabreak
Copy link
Contributor

Can use all but the last 1kb ram it won't compile with less warnings don't mean much.
max ubl grid is 15x15 and takes hours to build a mesh.
Can disable other features to make space.

@guestisp
Copy link
Contributor Author

Build time is not an issue, i have to do this just one time . If the memory warning can be safely ignored, i could try with a 9 * 9 mesh. There will be 32 additional points

@Vertabreak
Copy link
Contributor

Vertabreak commented Mar 29, 2019

I tested all the way up to 15x15 then scaled back till it wasn't accurate enough. I can get away with 3x3 on my bed if I wanted. my builds usually have 7x7 due to community demand. Could even print on a 2x2 it wasn't as accurate but was useable.

@Bob-the-Kuhn
Copy link
Contributor

7x7 is probably OK.

Have you tried G29 P4?

@guestisp
Copy link
Contributor Author

7x7 is probably OK.

Already using 7x7

Have you tried G29 P4?

Not yet.

@guestisp
Copy link
Contributor Author

Could even print on a 2x2 it wasn't as accurate but was useable.

Well, yes, I'm able to print with a simple 3 points leveling, but as i have a sensor probe, i would like to get the first layer as accurate as possible.

@Bob-the-Kuhn
Copy link
Contributor

Bob-the-Kuhn commented Mar 29, 2019

G29 P1 with my BLTouch has never produced a useable matrix for me. Here's how I tune my matrix:

  1. Move the head over the print bed & Issue G29 A and the G29 P1
  2. Issue G29 S2 to save the matrix
  3. Move the head over the print bed & Issue G26 command to print out a test pattern,
  4. Using a dry erase marker, circle the problem areas
  5. Move the head near a problem area and the issue G29 P4 R10
  6. The head moves to the nearest point in the matrix. If that isn't a problem point then just press the knob (without turning it). The head will move to the next point in the matrix (it goes in a circle around the original point). Once you're at a problem point turn the knob. I usually do 0.050 or 0.025 changes.
  7. Repeat 5 and 6 until all problem areas have been adjusted
  8. Issue G29 Sx where x is a new slot or one you don't mind writing over.
  9. Clean off the print bed
  10. Repeat 3-9 until happy
  11. Try a real print
  12. If there's problems with the first layer issue G29 P6 Hxxx where xxx is the amount you want to move the head up or down.
  13. Issue G29 Sx where x is a new slot or one you don't mind writing over.
  14. Repeat 11-13 until happy
  15. Issue M500 to make the last saved matrix the default.

The reason why I put the head over the bed before issuing a command is my head can go beyond the bed and some settings of the matrix result in the head being too low and hitting the edge.

@Bob-the-Kuhn
Copy link
Contributor

Rather than doing 12 & 13 you can use babystepping to adjust the head height during a real print.

For me babystepping doesn't work about half the time. Wonderful when it works.

@guestisp
Copy link
Contributor Author

guestisp commented Sep 30, 2019

Any update on this ?
What i'm trying to get is very simple: 3POINT levelling to find the bed tilt, than, during prints, I would expect that marlin will correct the Z position automatically.

In example, if the lower right corner is at -0.10 and the upper left corner is at +0.10, I have a 0.20mm tilted bed. When moving from the lower right to the upper left, the firmware should raise the nozzle automatically. This doesn't happen.

@boelle
Copy link
Contributor

boelle commented Oct 24, 2019

works for me...

i do M502, then M500 to clear eeprom where tilt data is also stored
then i do G28 followed by G29
after G29 i do M500 to save the tilt data

then on lcd i make sure that bed leveing is set to ON under motion menu

@boelle
Copy link
Contributor

boelle commented Oct 24, 2019

@Virtualight how did you solve it?

@spilz87
Copy link

spilz87 commented Oct 24, 2019

I had issue too,
The problem was after leveling in my start gcode I did move up and travel then move down to clean the nozzle, so during this travel Z was not compensate and as I didn’t came back to the same position when I move down, I got an offset.
Not sure to be clair but check if you move up after your g29 in start gcode

@boelle
Copy link
Contributor

boelle commented Oct 30, 2019

@guestisp did you solve this one?

@boelle
Copy link
Contributor

boelle commented Nov 3, 2019

Lack of Activity
This issue is being closed due to lack of activity. If you have solved the
issue, please let us know how you solved it. If you haven't, please tell us
what else you've tried in the meantime, and possibly this issue will be
reopened.

@boelle boelle closed this as completed Nov 3, 2019
@stratodream
Copy link

Hi, I have this issue too.
It is like Marlin is not compensating the error.
On my Endert 3 Pro Printer, SKR e3 mini, commit b258cc8
I do the following:

M502 factory reset
tune the Z Offset than M500, M501, M503
G28
G29 (5x5 matrix) than M500, M501, M503

here my startup code:
; Ender 3 Custom Start G-code
G28 ; Home all axes
M420 S1; recall BLTOUCH
G92 E0 ; Reset Extruder
G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed
G1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position
G1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line
G1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little
G1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line
G92 E0 ; Reset Extruder
G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed

executing a printing to test the first layer, i see that printing is not compensated uniformly on the bed.

@p4PpS
Copy link

p4PpS commented Dec 14, 2019

Hi, I have this too.

I did the setup as described here
My printer is an Ender 3 Pro, SKR e3 mini, commit 6a514a1

G26 works and the printed mesh looks very good but all other prints are not compensated.

@tatusah
Copy link

tatusah commented Dec 14, 2019

There has been problems with the EEPROM that cause issues which includes problems saving the UBL meshes. This was fixed in a commit December 6th. It was good that you told about the Marlin versions you are running. Try compiling new firmware version using Marlin bugfix-2.0.x branch and see if solves the issue. @p4PpS @stratodream

Personally also using SKR e3 mini v1.2 and similar problems with bed leveling was fixed with updating the firmware.

@stratodream
Copy link

Ok, I check and provide a feedback asap.

@stratodream
Copy link

I checked and unfortunately issue is still present.

@gokulvenkat
Copy link

I To have this issue,does inductive sensor get distracted by magnets which is been placed under the bed

@gokulvenkat
Copy link

Or is that really due to firmware

@stratodream
Copy link

stratodream commented Dec 20, 2019 via email

@Q-Diddy
Copy link

Q-Diddy commented Dec 30, 2019

I am having this same issue also. Ender 3 and SKR mini E3. Seems like there is no compensation when moving from point to point.

@gokulvenkat
Copy link

then there are 4 reasons for this issue according to me:-)
1.improper offset distance between nozzle and probe might be entered in marlin
2.unwanted play of probe mount during probing
3.or firmware issue(bug or improper bed leveling settings
4.there can be a noise in the probing signal due to any ac voltage near the signal wire which can be the reason for wrong triggering values

@stratodream
Copy link

stratodream commented Dec 31, 2019 via email

@gokulvenkat
Copy link

Okay cool I told only the possibility of the issue and i am confident on the option 3 which is a firmware issue

@gokulvenkat
Copy link

I am still facing the bed leveling issue

@stratodream
Copy link

stratodream commented Dec 31, 2019 via email

@gokulvenkat
Copy link

yep sure

@gokulvenkat
Copy link

auto bed leveling issue #16397 opened

@gokulvenkat
Copy link

comment there about your issues bro

@MTrab
Copy link

MTrab commented Mar 14, 2020

Too bad this have been closed, as the bug are indeed still there!

@ArkadiuszKubiak
Copy link

ArkadiuszKubiak commented Jun 29, 2020

I have similar problem.
Probe: 3dTouch
Printer geeetech i3 prusa b gt2560 A lcd 2004
Firmware: Marlin bugfix-2.0.x
When I have damaged wire which is responsible for SD CARD, auto bed leveling bilineral works. When I fixed the wire, auto bed leveling does not work.

pins_ULTIMAKER.txt
Configuration_adv.txt
Configuration.txt

@AnHardt
Copy link
Member

AnHardt commented Jun 29, 2020

Sometimes simply the expectations, what Auto Bed Leveling can do and what not, are wrong - not what ABL does.
Sometimes two events occur seemingly at the same time but are not correlated.

@github-actions
Copy link

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked and limited conversation to collaborators Aug 29, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests