-
-
Notifications
You must be signed in to change notification settings - Fork 19.2k
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
UBL issue with large probe offset #9919
Comments
First... You are doing SAFE_HOMING pretty much at the center of the bed, right? If so, that is good. We want to keep doing that. Next... Let's bump up your mesh size. Let's go at least 8x8 but 10x10 is the most used and tested. Then... Use G29 P1 U T to collect points (maybe 10 or 12 points) and use that to physically level your bed. It probably will take 3 or 4 iterations to get the bed pretty level. And depending on how much your bed is warped... It will be a judgment call on how to handle things. When you get that done... Do a normal G29 P1, save the mesh... And post it here... I'll try to be responsive and guide you through things and comment if I see any errors creep in... You should not be doing a G29 J until we have the mesh working correctly. And most likely, at that point, you won't have any reason to use the J option.
Save your mesh with G29 S 1 (that will put it in mesh slot 1)
You do not want to build a mesh prior to each print. Even with the auto probing... The mesh is not perfect. You want to build the mesh... And then fine tune it, and save it so you can keep using it until your machine's mechanics change. I typically get 2 or 3 months before a mesh needs to be adjusted (due to bearing wear or changing sheets of glass). Even if you find part of your mesh defective (after a few months), very often it is just one part of it and it is quicker to just edit that one section of the mesh rather than go through the whole mesh building process. |
How up to date is your copy of Marlin? There have been recent changes to the G29 J code, before these I think doing a G29 J would often make things worse. But as above unless you need a G29 J I'd avoid it, certainly until you have a working mesh. |
2018-03-04 First of all, I think you've set me on the right path. The results are much better than before. Thank you! @Roxy-3D, thank you for your support. @gloomyandy, Marlin is 3 days old. The latest commit is 63b1358. I'll keep a journal of what's going on and the steps I'm taking with hopes that we can all provide better documentation for other users in the future. With that said, I'd like to stay on this commit, in order to keep the variables to a minimum. SAFE_HOMING: yes, I'm doing safe homing (Z axis) on the center of the bed. My probe is offset from the nozzle. When z-homing, the probe is positioned on the bed center, as one would expect.
How do you suggest we proceed? PS: I'd like to clarify one more thing:
The bed on the printer is positioned on four screws with springs. So, when removing prints from the bed, the bed definitely moves and the bed is not tilted in the same way afterwards (I suppose, haven't measured, but since the carriage is not bullet-proof and the bed rests on simple springs with screws, I assume so). So, if my assumption is correct, I should "correct" the plane each time I start a new print, shouldn't I? |
If the bed tilts between prints... G29 J will help with that. But lets get the mesh fine tuned first. I'm responding using my phone so a more complete response will have to wait until this evening. But you should consider doing a G26 as a 'test' print. That will let us see what has to be change to perfectly describe the bed's topology. (and G29 P4 to edit those points) |
I did several G26, but none of them was OK. I'm guessing it has something to do with the way it moves around. Is there an STL file of G26 pattern so I can slice it and print it that way? Also note that the probe accuracy might be an issue:
What I've done:
Since the nozzle is expanding when heated, should we measure the distance to bed (the paper method) when the nozzle is hot? From what I can gather, I see there's manual leveling (corrections) to be done? What do you suggest? Thank you! I appreciate your help and the time you're putting into this. PS: you said that I should PPS: The G29 P1 takes about 25 minutes, so it is not really practical to execute it before every print (and I know, you said this shouldn't be necessary in the future). |
Those spider prints (or what ever they are) look like they are getting good first layer adhesion. How much does the bed's position shift when you release the print from the bed? (That is one nice thing about printing on glass. You just unclamp the glass, and after the print is release, you clamp it back down at the same location). |
@Roxy-3D, the spider legs are actually part of bed design. :P I'm printing with black PLA so the print is poorly visible on the photo (sorry about that -- I don't have a quality PLA in a different color). I drew (red) lines around it, to illustrate it, but the print design is actually the same STL file I referenced earlier image and The nozzle is either too high or too low, when traveling from one point to another.
Can't say exactly, but as you can expect it moves a lot when we're pulling off the print. Please help me with the following questions:
As I said, currently, the print results are worse with UBL enabled than without UBL (and just manual leveling). I attribute this to two factors (but I could be wrong): inaccurate sensor (and thus inaccurate mesh) and my lack of understanding what is going on. |
You are going to need some different colors anyway... Get some yellow.... G26 is the right way to tune the mesh. It doesn't matter if it doesn't print perfect the first time. We can iterate to a very well tuned mesh in a few times.
Yes. But if that isn't how you print... Do the same stuff to calibrate the machine as you are going to do when you print.
Let's not mess around with 'J' until we have some reasonable prints with a well tuned mesh.
Let's get G26 working... The whole reason for G26 is so no matter what mesh dimensions or bed size you have.... The validation pattern prints and is correct. Every mesh point's location is very clearly visible with the pattern in place.
The thing that is important is you get a well tuned mesh defined for your bed. You can start with a NULL mesh (G29 P0) and just edit (with no auto probing) if you want. |
@Roxy-3D, first of all, thank you for your support, quick answers and guidance.
Bought a yellow filament before work today :)
As you can see, the filament is "oozing" from the nozzle between moves (not sure how to correct this, but I suppose retraction multiplier could solve this? IMHO the front part of the bed is the worst. And then there are some points which need fixing. If I understand this procedure correctly, I should just position the nozzle in the vicinity of the correct X/Y coordinate and issue What are your thoughts? |
You have mesh values very close to 0.000 mm where the homing probe is done. That is good! Your Z_PROBE_OFFSET_FROM_EXTRUDER is set very accurately. And the numbers along the edge look very level. That is going to work out very well.
It looks like your mesh numbers are 'acceptable'. Good job. I wonder why the top right corner didn't print? The extra lines because of retraction and ooozing can be ignored. It would be nice if we could get rid of them easily. Probably that is going to require extra options to the G26 command.
Yes... Just position the nozzle in the middle of any area you want to tweak. And then do a G29 P4 R Please be sure to save your original mesh and your edited mesh in different slots so you can recover if you decide you don't like what the edits did. It looks like you should be able to do large prints that span the entire bed. You should get good adhesion everywhere for your first layer. |
@Roxy-3D, I'm having troubles editing the mesh. When I positioned the nozzle to the area I wanted to edit, issued Any ideas why that would be? It is not very useful to edit the the mesh 5mm above the bed, since I can measure it with the paper... |
Oh, and two more questions:
|
The height of the nozzle during a G29 P4 does not reflect any meaningful information. The nozzle is moved over the mesh point you are editing. But you should be using the LCD Display to determine how much you are changing the point. If you have any adhesion at all... You should not be changing the mesh point by more than +/- .25mm. That is a very small amount. Your eyes can not measure that accurately. You can manually enter the mesh coordinates two ways. You can do a G29 P4 R X100 Y90 and it will start editing as close to (X,Y) = (100,90) as possible. Alternatively, you can do a M421
M502 should not affect your mesh data. Even if the EEPROM data changes size or format... The mesh data is saved at the end of the EEPROM and is insulated from that. However, if you change mesh dimensions... You will lose your mesh data. |
Thanks! I assumed (wrongly) that the nozzle would be lowered to 0.0 and then I can correct it with the paper method... I'll edit the points, do a test print and report back. |
I'm having issues with point editing. I edited the points, and then issued Here are the results:
The problem is, on my second I have two questions now:
Is this the way to go? Thanks! |
If I was you I'd avoid G29 J until you have a working mesh. If you are then having issues with using G29 J because the probe does not work very well at some points on the bed (mine does not work well close to the edge), then remember that you can change the location of the three points used for G29 J (the co-ordinates are in the configuration.h file). Also worth remembering that you can use G29 S to save different versions of your mesh to different slots in the eprom (and then use G29 L to reload them). This makes it easy to try different edits if you wish. |
The honest truth is most people have no need for the 'J' mesh tilt. Mesh bed leveling is far superior to the original tilted plane version of bed leveling. (Hat tip to @epatel !!!) If you have your mesh well tuned, you are going to get a good first layer. It takes a bit of a contrived example to come with a place where you benefit from it. One example would be you have the mesh well defined for the piece of glass you print on. But you are careless and some times get a little piece of plastic under the glass when you put it back on the bed. In that case... Tilting the mesh is beneficial. Unified Bed Leveling is supposed to make all the previous bed leveling system features available to be used together. That is why it is in UBL. But the truth is... You probably don't need it. |
One reason J mesh tilt might be useful is for i3-style machines with two Z-motors - on those when the motors are disabled it's easy to get the X axis skewed a bit when pressing on the carriage such as when changing filament. Unless you remember to use your handy-dandy realignment jig to make the X-axis even before you start printing you might need a bit of compensation left-to-right to get a good print. |
OK! I stand corrected! I guess I never saw this reason because I always leave the steppers configured to never disengage. But "Yes!" That is exactly the type of scenario where you might want to do a 'J' mesh tilt. |
Also, too much tilt tends to mess with Z fade behavior. So it's best to avoid the use of Z fade if the deviation between the lowest and highest point is large. For a tilted bed this makes sense. And if the bed is very tilted, it's better to use |
It is quite challenging to fine tune the mesh. I'm tuning with I.e.:
On the other hand, when I tested this in the middle of the mesh, it was reflected. The reason I tried such a drastic value is that I was trying to lower the top right corner, but the nozzle did not go lower even after several
|
They shouldn't be. Perhaps you've discovered a bug. Try changing all the points along the right edge. Then try the top edge. |
For instance, position is
When I move X 20mm to the right, to position It is so strange, that I'm sharing a recording with you. I'm focusing on the Z rod, so you can clearly see what happens when X axis reaches the Position I then loaded the first grid that was done with auto leveling (
I edited the the point (9, 5) with
I suppose the transition to |
BTW, the the Marlin version I'm using is now 10 days old (latest commit is 63b1358 and I'm using @JimBrown's branch for Tevo compatibility). |
Well, there's an interesting difference in UBL versus ABL when it comes to points outside of the mesh. With ABL (bilinear) the height of the nearest edge is used beyond the mesh bounds, so you can think of it as "flattening out" when you move outside. If the In contrast to that, the current UBL implementation simply ceases outside of the mesh area, suddenly jumping to a fixed Z offset value. Normally this offset is 0, but that can be changed using the Anyway, are you able to see that sudden transition (to
If you saw strange behavior in that region 171<=X<=190 or 171<=Y<=190 that would tend to indicate that the compensation is cutting out early — stopping one grid line too soon. But it sounds like your sudden lift is at 190, which is consistent with my explanation above. |
I can't test with I'm really eager to get this UBL working, but I'm having so many issues and I can still print better without any leveling (but I'd like to avoid tuning the bed before every print). As I've mentioned, Tevo Tarantula's bed mount is not very sturdy, so the tilt definitely changes when I take of the print (or scrub the bed when cleaning G26 prints, etc.... Also, I didn't mention before (and I didn't record it either, since I was in a hurry), but the "weird z movements" are happening in some instances when traveling along X190 while moving Y (i.e. between Y140 and Y150). It would happen that when the nozzle would come to Y150, it would lift and lower on the same spot (it seems). Very strange. |
My eyes are bleeding from scrutinizing the UBL motion code. I couldn't discern anything that would obviously lead to jumping while following close to an edge. But since the mesh bound is ~189.99999, and at ~190.00001 there's a hard transition, it's a bad idea in-general to go anywhere near the mesh boundary. I did fix one typo that would cause problems for a non-square mesh, but it's not one that would have any effect on your situation. |
I'll try with a bigger mesh (one that covers the whole bed (200x200). I suppose I should set the |
Correct. The UBL auto-probing will only move the probe where it will be within the bed, and it won't try to probe where the carriage can't reach at all. |
@skyflyer You might want to try a G29 Q 2 T to put a diagonal test line across the bed in the mesh data. I think you will see the nozzle do the right thing as you move across the bed. One of the things on my list to do is add an option to extrapolate off the mesh. Right now, there is an option to add some corrective height if the nozzle goes off the mesh. Personally, I think the mesh should be defined for the area the nozzle can go... But so many people want it to extrapolate... I'm going to do that when I get a chance. |
Sorry for the radio silence: received BLTouch. Will mount it this week; Set the mesh inset to 0, so it covers all of the bed, and will re-calibrate the whole bed, print the G26 test print, etc... Stay tuned :) |
@Roxy-3D, @thinkyhead and others, I'm grateful for your help in this matter. The 3D touch sensor I received turned out to be faulty, so I can't really test UBL. I'm closing this one. Once I receive a replacement, I'll definitely give it another go and report back. I appreciate all the help and pointers you've all provided. And of course, the work you all do on this amazing piece of software. |
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. |
Bug Report / Question
Description: I've been using Marlin with Tevo Tarantula printer. The branch I'm using is
bugfix-1.1.x
with @JimBrown's configuration enhancements from https://github.com/JimBrown/MarlinTarantula/ (and I have my own changes in the config as well -- bed size, probe offsets, bed leveling). The configuration file is here: config.zipAt first, I had the probe mounted on the heatsink and it was offset from nozzle by 20mm. After a while, I've added LPA fan duct (and also upgraded the firmware version) and the probe is now a long way from the nozzle. It's offset is now 39mm right of the nozzle and 44mm in front of the nozzle (so that's 58.8mm away from the nozzle diagonally). The latest commit that was merged to this firmware from MarlinFirmware/Marlin is 63b1358.
The problem is that the bed leveling does not seem to work -- it is worse than no bed leveling at all (if I just level the bed manually on four corners and print). I'm afraid that probing and offset calculation has something to do with how far the probe is from the nozzle and that it is not taking into account that offset (wild guess).
The printer uses SN04 sensor. Probe Z offset is set to -0.45 (
M851 Z-0.45
).Expected behaviour: once the bed is probed and leveled, the Z spacing from the bed would be (more) consistent across different points on the bed than without bed leveling (measured with the paper)
Actual behaviour: once the bed is leveled, the Z spacing from the bed is not consisent across different points on the bed. It is actually better if the bed leveling is not activated.
Steps to reproduce:
G28
G29 P1
G29 P3 T
- after that, mesh is validG29 T
G29 S1
G29 A
M500
Perhaps I'm doing something wrong? I've read through (some) related posts (#9601, #9823, #9622, #9529) and saw that I should perhaps increase the size of the grid (probe more points)?
I tested with the mesh intentionally higher on the right side, so that I could see how the Z offsets would be applied, and there were large gaps. When I tested with manually leveled bed (as best as I could), the Z offsets were far worse with leveling enabled than without it.
The whole leveling.txt procedure.
I tried to print the mesh, but the results were awful (didn't even stick to bed on most places).
From what I understand, the coordinates of the mesh look right to me:
(10,10)
is one corner and(190,190)
is the corner diagonal to this one). And the location of the probe when probing seemed right. What I don't understand, though, is why are the results worse with UBL than bed leveling at all? And I would really like to use bed leveling, since it is quite time consuming to level the bed by hand each time.I suspect that the problem might be related to probe offset from the nozzle (not being taken into account correctly). The reason for this suspicion is this: when I tilted the bed even more, the distance between the nozzle and bed (when Z was set to 0) was even bigger.
Should I try to use more points?
Is there anything else I could do to debug this issue?
If I'm reading the docs correctly, I should just
G28
andG29 J
before new prints (once the bed leveling has been performed and saved)? The leveling info should be stored byM500
and thus loaded from the EEPROM by default? Or do I need toG29 L1
? So far, I've made G29 before each print that I've tested bed leveling with.Thank you.
The text was updated successfully, but these errors were encountered: