MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.26k stars 19.23k forks source link

[FR] Z offset not same on all bed using Bilinear #9187

Closed VincentWiz closed 6 years ago

VincentWiz commented 6 years ago

Bug Report

With capacitive sensor 26229987_10212268008949540_3942964468883018005_n

With BLTouch 26240188_10215077444199191_4501844852091863261_o

vincentpfarr commented 6 years ago

Marlin.zip

Here are the files :)

vincentpfarr commented 6 years ago

My bed is almost flat, here is the G29 T : SENDING:G29 T Bilinear Leveling Grid: 0 1 2 0 +0.024 -0.089 -0.234 1 +0.091 -0.093 -0.385 2 +0.172 -0.105 -0.521

This is VERY weird to get those values. Left side is going up, but right side is going down.

vincentpfarr commented 6 years ago

The G29 T from another guy :

Bilinear Leveling Grid: 0 1 2 0 +0.614 +0.103 -0.456 1 +0.467 +0.041 -0.383 2 +0.367 -0.101 -0.461

benlye commented 6 years ago

Are you sure that there is nothing affecting the geometry of your printer as the probe goes to the back corner? Cable tension pulling the print head up? X or Y rods not straight? Z lead screws out of sync?

What kind of printer is it?

VincentWiz commented 6 years ago

Hello, It's a Anet 18 (Prusa I3). I checked all cables, all rods are straight (was my first idea). Z are at the same level (measured with a sliding caliper. My bed is new, and i tested with a Anycubic glass, same issue.

benlye commented 6 years ago

Cool, I have an Anet A8 as well. Bi-linear leveling works well for me.

You should probably try probing more points - I'd try at least 5x5. On my printer I use 7x7.

VincentWiz commented 6 years ago

I also tried the 5x5, had the same issue (and is very long when you have 3 check per point xD)

I can try the 7x7 this evening. Do you have triple check ? Is there a way to not G29 at each print?

Thanks

benlye commented 6 years ago

There are a couple of things you can do to speed it up:

I would also check these two values:

#define X_PROBE_OFFSET_FROM_EXTRUDER -26
#define Y_PROBE_OFFSET_FROM_EXTRUDER -40

Did you measure those yourself, or were you given them by someone else? It is extremely important that they are accurate. Being out by 1-2mm is known to cause the phenomenon you're seeing.

And finally, yes, there is a way to store the G29 grid so you don't have to do it at the start of each print - run G29 once then M500 to save the settings to the EEPROM. Then at the start of each print instead of G29, run M420 S1 to activate the saved grid. I personally don't do this, just in case I've upset my bed when removing a print or replacing the tape. With the tweaks above my 7x7 probing doesn't take long at all.

EDIT: Not sure what probe you're using, but if it's inductive or capacitive the Z_CLEARANCE_BETWEEN_PROBES 2 should be OK.

VincentWiz commented 6 years ago

I will test changes you proposed this evening.

I didn't measure those values, these were given by the one who designed the probe support (Thingiverse). How does this affect the Z-Offset as they are X/Y offset?

Thanks for the bed levelling. You are right, each time i try to remove the print, the bed would move.

Thanks very much

benlye commented 6 years ago

I didn't measure those values, these were given by the one who designed the probe support (Thingiverse). How does this affect the Z-Offset as they are X/Y offset?

When the printer measures the bed it needs to know where it took that measurement so that when the nozzle is at that point it knows how much correction to apply. If the X/Y offsets are incorrect then the correction is applied in the wrong place. I had the exact same problem you have, and it was caused by my Y offset being out by 2mm, because I was using the measurements given by the support designer on Thingiverse (looking at your offsets, I suspect we might be using the same one).

For an Anet with a 220mm x 220mm bed you can use these instructions to find your offsets:

  1. Measure the bed and make a mark in the center (X110 Y110)
  2. Home the printer then move the nozzle to X110 Y110 Z0
  3. If the nozzle is not on the mark you will need to make small movements to get it exactly on the mark
  4. With the nozzle on the mark in the center of the bed, measure the X and Y distance from the edge of the bed to the side of the probe
  5. Measure the diameter of the probe
  6. The probe offset values are 110 - [the distance from the bed edge to the probe] + ([probe diameter / 2])

The offset parameters are integers, so round your results to whole numbers before updating configuration.h

For example, if you measure 85mm from the edge of the bed to the edge of the probe, and your probe diameter is 18mm, the equation is 110 - 85 + (18/2) = 34

VincentWiz commented 6 years ago

Ok I understand. Thanks for explanations

I will check all these parameters this evening, I will recalibrate will send results here.

will5517 commented 6 years ago

Hello, I'm sorry for my bad English but I use a translator.

once i have calculated with your method the parameters of decalage X and Y, how to insert them in marlin in the file configuration.H at which place ??? thank you in advance

benlye commented 6 years ago

In Configuration.h you need to modify these two lines:

#define X_PROBE_OFFSET_FROM_EXTRUDER -25  // X offset: -left  +right  [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -41  // Y offset: -front +behind [the nozzle]

Pay attention to the comments, which tell you whether the number should be positive or negative.

will5517 commented 6 years ago

not for the probe but for the nozzle to be in the center of the bed after a y110 and x110 ... actually after my G28 I do g1 y110 x110 z0 but my nozzle is not completely on the center ... so I have calculate the X and Y offset with your method and get X: 110-98 + 9.5: 2 = 17 (16.75) Y: 110-97 + 9.5: 2 = 18 (17.75). I do not know or entered his values.

benlye commented 6 years ago

If those are the values you measured, then this is what you need to set (assuming that the probe is to the left of the nozzle and in front of it):

#define X_PROBE_OFFSET_FROM_EXTRUDER -17  // X offset: -left  +right  [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -18  // Y offset: -front +behind [the nozzle]

If your nozzle isn't exactly on the bed center when you go to X110 Y110, you can modify these lines (these are my values, yours will be different):

#define X_MIN_POS -35
#define Y_MIN_POS -8

They tell the printer the relative position of the end stop compared to the bed. For example, if your nozzle is 1mm to the right of center at Y=110, subtract 1 from the current Y_MIN_POS value.

vincentpfarr commented 6 years ago

Hey,

After : Disable #define MULTIPLE_PROBING 2 Change #define Z_CLEARANCE_BETWEEN_PROBES 5 to #define Z_CLEARANCE_BETWEEN_PROBES 2 Change #define XY_PROBE_SPEED 6000 to #define XY_PROBE_SPEED 8000 Change probe points from 3 to 7

Exactly the same, right side could not be printed because the noozle was too close to the bed 20180116_180441

I'll check the center

will5517 commented 6 years ago

OK BENLYE

it is the X and Y min_post that I have to change thank you very much

will5517 commented 6 years ago

for me too after all these changes (same as Vincent), my problem remains the same.

benlye commented 6 years ago

OK, next question. How long do you preheat the nozzle for before printing?

In my experience it takes a good 5-6 minutes for everything to finish expanding. If you start the print as soon as your nozzle is at temperature, it will be nearer to the bed for the later parts of the print.

will5517 commented 6 years ago

For my part the impression starts as soon as the nozzle reaches 210 ° and the bed has 60 °

benlye commented 6 years ago

For my part the impression starts as soon as the nozzle reaches 210 ° and the bed has 60 °

Then you should definitely wait a little while. Try waiting 5 minutes from the time the nozzle is at 210 before you start printing.

will5517 commented 6 years ago

ok i'm testing this right away

benlye commented 6 years ago

And just to prove that this really does work, this is a single 0.15mm layer test pattern I just printed. img_20180116_184427

will5517 commented 6 years ago

here is my print lol not very successful no way to solve this problem img_20180116_194942 img_20180116_195000 img_20180116_195017 img_20180116_195006 img_20180116_194950 img_20180116_194955

Roxy-3D commented 6 years ago

here is my print lol not very successful no way to solve this problem.

You solve this by getting the mesh point values defined better. For what ever reason, the auto probed values are not good enough. Try using M421's to shift those values so it can print.

will5517 commented 6 years ago

ok Roxy-3D
but i do not know how to do it ... can you explain me please

Roxy-3D commented 6 years ago

It would be easier if you had UBL enabled. It has an interactive mesh editor built in. And the auto probing works pretty well in UBL so most likely this issue would not come up for you.

It looks like the nozzle is too close to the bed in the lower left corner. Assuming that is the origin, you would issue M421 I0 J0 Z1.0 to raise that mesh point to a height of 1.0 mm.

I think it would be wise to get a G26 Mesh Validation pattern printed. It will be much clearer from that what needs to be done.

will5517 commented 6 years ago

config H et adv.zip ok but I can not activate the UBL on my card anet v1 more space than I could remove in the files configuration.H and adv .H so that it can fit in the eeprom ??? for the rest and adjustment of the ubl there is no tutorial ??? because I am a beginner and do not understand all that you explain to me. PS: I added my configuration.H and configuration_adv.H files

thanks in advance

Roxy-3D commented 6 years ago

There is good documentation at: https://github.com/MarlinFirmware/MarlinDocumentation/blob/master/_features/unified_bed_leveling.md

But if you have a 128 KB processor... You probably can't run it. You can still turn on the G26 and print a mesh validation pattern. That will be very helpful in editing your mesh points.

will5517 commented 6 years ago

Thank you Roxy-3D, but you're right it is not possible to activate the UBL with the anet card. By cons I managed to activate the G26 and the result is in the photo. Is there no way through another way to solve my problem ??? thank you in advance

img_20180117_113955 img_20180117_113940

I also wonder why the grid does not print on the front of the bed

VincentWiz commented 6 years ago

This is weird that both of people who have this issue has the right part of the bed too close of the noozle, and not the left for example.

will5517 commented 6 years ago

on my other AM8 is the opposite the left side is too tight

will5517 commented 6 years ago

good evening, after setting the ubl and have saved the map in the firm with the command G29 S1, what command gcode should we put in the script of the slicer, to load and activated the compensation with UBL ??? I tried the command G29 L1 or the command M420 L1 and removed the command G29, but after very short time, the printer goes up bottom Z stop I do not understand why!

Roxy-3D commented 6 years ago

I also wonder why the grid does not print on the front of the bed

It looks like the G26 command is printing a 'border' on all sides. You can tell because it is printing the half circles and at the corners printing the 1/4 circle.

It kind of looks like you don't have the mesh dimension set to cover the whole bed. And really... You should be using a bigger mesh than 4 x 4. Go 8 x 8 or 10 x 10.

Roxy-3D commented 6 years ago

good evening, after setting the ubl and have saved the map in the firm with the command G29 S1, what command gcode should we put in the script of the slicer, to load and activated the compensation with UBL ???

I choose to have UBL active when the power powers up or resets. You do that by doing

Until you change things... UBL will be active at power up and you don't need any G29's in your Slicer's start up GCode.

I tried the command G29 L1 or the command M420 L1 and removed the command G29, but after very short time, the printer goes up bottom Z stop I do not understand why!

Are you moving the nozzle off the mesh? That is what it sounds like.

thinkyhead commented 6 years ago

@VincentWiz If you have a chance, also test with PROBE_MANUALLY (in place of the FIX_MOUNTED_PROBE) and compare the mesh result. Does the mesh differ in any unusual way from the mesh produced by using the probe? Do you get a better or worse result from the G26 mesh pattern?

will5517 commented 6 years ago

I have a problem when I run a print, how to explain ... I put the video ...

http://ul.to/u7gc50s5

after I am obliged to make a stop print or the Z goes up to the stop !!

will5517 commented 6 years ago

I do not know why the calibration grid does not print on the front of the bed but it is already much better to print the calibration grid after the G29 P4 T controls and fine tuning img_20180120_213700

will5517 commented 6 years ago

yes you're right the print came out of the mesh

Now I wonder how to adjust the mesh so that it squares all the bed !! do you have an idea ?? thank you in advance

will5517 commented 6 years ago

when I stay in the mesh everything goes well !!!!

I will try to solve the problem of the G26 that does not print on the front of the bed and then go to 8X8 point ... img_20180120_221258_1

Roxy-3D commented 6 years ago

If you do a G29 T do you see dots along one or two sides? If so, those are mesh points that never got measured. You can fill those in with G29 P3 T The firmware will put in 'reasonable' values that are good enough to do a G26 so you can edit those mesh points and get them correct.

will5517 commented 6 years ago

OK thank you very much here is the result

img_20180120_232408 img_20180120_233949

Perfect

but setting up for a novice like me is not easy

Roxy-3D commented 6 years ago

Very good! One problem you are fighting is the tape never goes down the same. If you turn on the Z-Babystepping.... (DOUBLE_CLICK!!!) You won't have a problem even with a big print that takes the whole bed. You can just tweak the height while it is printing the first layer. And once that is down, You are going to be golden.

will5517 commented 6 years ago

Hello Roxy-3D and HELP , I still have a problem with the establishment of the UBL. I explain to you my procedure and the problem:

1 / I initialize the eeprom with this command: M502 M500 M501 then enter 2 / I'm doing a G28 3 / I do G29 P T 4 / I'm doing G29 P2 B T and I'm the procedure, or I'm also trying a G29 P3 T and the result is the same. 5 / I make a G29 S1 6 / I do G26 B60 H210 F1.75 L0.2 S0.4 the printing of the mesh starts and when the print arrives on the front corner of the printer and quite to the right, the printing stops because the Z go up to infinity I am obliged to kill the impression.

I have started ten times from my pc and even directly with the printer screen via the ulb step-by-step option.

do you have a solution to my problem because I am completely lost.

thank you in advance img_20180124_125954

G29 P3 T SENDING:G29 P3 T Bed Topography Report: (0,7) (7,7) (10,210) (210,210) 0.099 0.192 0.177 0.078 0.005 -0.102 -0.176 -0.263

0.140 0.151 0.151 0.093 -0.025 -0.095 -0.173 -0.360

0.111 0.132 0.114 0.062 -0.044 -0.118 -0.260 -0.446

0.121 0.137 0.102 0.041 -0.070 -0.158 -0.290 -0.407

0.184 0.159 0.129 0.046 -0.076 -0.167 -0.332 -0.442

0.257 0.274 0.221 0.114 -0.035 -0.191 -0.263 -0.448

0.331 0.389 0.313 [ 0.181] 0.005 -0.191 -0.195 -0.448

0.404 0.504 0.405 0.249 0.046 -0.191 -0.126 -0.448 (10,10) (210,10) (0,0) (7,0)

G29 S1 SENDING:G29 S1 Mesh saved in slot 1 Done. G26 B60 H210 F1.75 L0.2 S0.4 SENDING:G26 B60 H210 F1.75 L0.2 S0.4 G26 command started. Waiting for heater(s). Error:KILL caused by KILL button/pin [ERROR] Error:KILL caused by KILL button/pin

Error:Printer halted. kill() called! [ERROR] Error:Printer halted. kill() called!

thinkyhead commented 6 years ago

Please test with the latest bugfix-1.1.x (and/or bugfix-2.0.x) branch to see if we fixed this issue. If the problem has been solved then we can close it. If you still see the bad behavior we should investigate further.

vincentpfarr commented 6 years ago

@thinkyhead is this bugfix for bilinear or UBL ? Because i had no fix for Bilinear, and the issue is still the same...

Roxy-3D commented 6 years ago

is this bugfix for bilinear or UBL ? Because i had no fix for Bilinear, and the issue is still the same...

I think we have determined that a large number of the problems being seen are caused by twisted X-Axis guide rails. There is no software fix for that. UBL was just suggested as a 'work around' until we figured out what was causing the problem.

The other thread has good information to understand the problem: https://github.com/MarlinFirmware/Marlin/issues/9529#issuecomment-366497815

VincentWiz commented 6 years ago

Hey,

Nice, Houseofbugs proposed something: " Everyone!!! I have the fix!

One of my customers was messing with his machine and noticed the Y belt tension was too much. He loosened it a bit and it fixed the issue. I just tested this on my 2 machines having the issue and IT WORKED ON THE FIRST TRY.

Loosen your Y belt tension. The belt was pulling on the carriage during printing causing the bed to skew."

And ofc, i just installed the Y belt tensionner so.. Maybe this issue is comming from there. I'll check this evening.

filipgoc commented 6 years ago

twisted X-Axis guide rails. There is no software fix for that.

Haha :-D No kidding.

VincentWiz commented 6 years ago

I don't understand why, even is the rail is twisted, the sensor would take the distance, and will be closer to the bed where the rail is twisted, but the software will compense the twist no?

Thanks