Closed Zuru1 closed 6 years ago
Yes bi-linear. Trying to turn of ABL fade to see if that has any bearing on this. Also flashed to 1.1.5 and while it wasn't as drastic of a difference there was still the end result of right being higher than the left. This bed is very level and the bed sheet is on with 0 bubbles.
I have an Anet A8 and have been fighting this exact same issue since I installed Marlin to enable ABL with a BLTouch. I have been having 1.1.4 since I started this and still have that version. No matter which system I switch to (linear, bilinear, etc) the nozzle is still too low on the left side and too high on the right.
Interesting that it's happening with the BL Touch. I am using capacitive sensors here with repeat-ability under 0.002mm. Bed heated and everything, heaters off during probing.
ABL fade has no affect enabled or disabled. Segmented moves also has no effect. Number of probes has no effect.
With ABL bilinear and DEBUG_LEVELING_FEATURE
enabled, you can use G29 Q
at any time to see how much compensation is being applied at the current XY position of the nozzle. Please give this a test with the bugfix-1.1.x
branch.
DEBUG_LEVELING_FEATURE
and re-flash the firmware.G29
procedure and enable bed leveling.M420 V
).G1
) to see if the Z height is misbehaving.M111 S247
to the machine to enable extra logging.G29 Q
to see how much Z is being adjusted.You can also enable M114_DETAIL
and then issue M114 D
at various points. This will show extra information about the stepper positions in terms of steps.
This data is absolutely vital and essential for us to see what's going on.
(@AnHardt also makes some important points above.)
If Marlin won't fit on your board with DEBUG_LEVELING_FEATURE
enabled, you may use the branch at https://github.com/thinkyhead/Marlin/tree/bf1_leveling_details_test which makes G29 Q
available without the need to enable DEBUG_LEVELING_FEATURE
.
The test I outlined above will only tell us whether the bilinear leveling code is doing the right thing at each point according to the recorded mesh.
To get a more meaningful result pertaining to your probe and the bed, you must enable PROBE_MANUALLY
and compare the mesh that comes from that procedure to the mesh produced by FIX_MOUNTED_PROBE
.
If the mesh that comes from PROBE_MANUALLY
differs from the mesh produced by FIX_MOUNTED_PROBE
it means that the probe is at some slight angle compared to the nozzle and carriage, and so physical adjustment of the probe, carriage, and/or gantry is needed.
@AnHardt just did the test and its level at each point. This machine has the issue as well. Always tilted.
Right side:
Left Side:
What can we conclude from your test? That the probe is at a consistent height, I suppose.
I believe there is a code issue. I don't know where it is yet. If not unequal - software is likely broken.
I don't think this is yet a foregone conclusion. We need to see the probed mesh compared to the manual mesh, and we need to see the output of G29 Q
.
Dozens of comments here with essentially useless data. No amount of theorizing will lead us any further.
We very much need the data I requested to narrow down the source of the error.
@thinkyhead I will try to get the manual mesh this weekend. I've burned a lot of time on this already.
If someone else gets to it before me thank you in advance.
@Zuru1
There are no stupid questions.....
Stupid question here. Lets say your bed is slightly tilted and you don't have springs (solid mounts). Do you want the X gantry level with the FRAME of the printer or the bed? I have dual Z on all machines so I can slightly skew the gantry level with the motors without affecting their movement.
I've always heard and done where you level the gantry with the printer frame and let ABL handle the bed tilt.
@Roxy-3D
Why could the pattern only print on the left side? Was the nozzle pressed against the bed too much on the right side? Or was it too high to get good adhesion? Lets manually adjust your mesh numbers on the right side and see if we can get better results.
The nozzle was at the right height on the left side while on the right side it was too high (over the bed instead on the bed). I will first do a check of the X-axis using @Lord-Quake method and see what i have to work with. One strange thing a saw yesterday when printing a test cube in the centre of the bed is that the right z-motor wasn't doing any adjustments while the left one did during print.
I find this strange since the motors are connected in series on the ramps which is using the TMC2100 drivers.
@Zuru1 the motor issue is a machine problem, not firmware. I've replicated this issue on a single Z machine.
@houseofbugs I know that a motor issue may have nothing to do with the software. I'm just stating my finds on the hunt to resolve this issue. Maybe this could be a result of a bad coupler or something else. But until I have done the check of the axis alignment and maybe swap out the couplers I will know more on the matter.
I will run the tests stated above later but for now I just want to confirm I have this issue on 2 cr10s printers. Before finding this thread I spent 16 hours yesterday trying to troubleshoot the issue and have adjusted and aligned everything I can, including the x axis. Both printers are low on the left and high on the right, which by eye seems to be the same amount. I have tried both bilinear and linear with both 3 and 5 points.
@houseofbugs I am using fixed mounts for the bed, too and I level my X axis to the frame (AM8 aluminium extrusion or the both X axis). That makes sense for me because you don't want to get any mechanical tensions to the Z rods and carriages. The tilted bed should be compensated by the ABL system.
I am using this little helper: https://www.thingiverse.com/thing:2064012
@Lord-Quake s metod is ok for detecting the x-rotation. My test makes more visible the discrepancy between nozzle and probe and is applicable to the y-axis. You can't touch the bed with (for example) an inductive probe. But you can touch the stack of coins (what is supposed to have a constant height).
@bcsteeve Go back and reread the instructions
Make a paper-test at A by lowering Z with the "housing" of the switch/probe. Not the soft/invisible trigger point.
I really can't add anything to that. We want to detect a mechanical problem - for that - a mechanical test. If we do not trust in the software probing/leveling system it's not a good idea to use it. Different trigger distances on the right than on the left because of earth-rays and bed deformations caused by moons gravity are off my scope today. :-)
I agree. Doing the papertest needs some training. But once you got some experience it's simple, fast and reliable. You'll feel it.
with the "housing" of the switch/probe. Not the soft/invisible trigger point.
Paper on stack.
With the paper you have feeling.
Hi,
Today I was unable to do any diagnostics on the printer due to lack of time and hope to do it tomorrow.
@bcsteeve
My test is about detecting if the Z_PROBE_OFFSET_FROM_EXTRUDER
at the left is the same as on the right.
If you trust in the bed leveling systems it's already proved not to be the same. Because the levelling systems level the probe (they can't see the nozzle) and the nozzle has a different height at both sides.
If we don't trust the leveling systems we have to find a physical test.
Simplest and most direct is to level the bed for the nozzle and compare the probe-bed distance on both sides. How to do that exactly, is up to you, as long as you don't use the probing or levelling system we don't trust in. Because we can assume the probe/switch case - trigger point distance is constant we can measure the probe/switch housing - bed distance, what is much easier than to measure a invisible trigger point or to find where a mechanical switch actually triggers. If you use a wedge, a micrometer, calipers, the paper test or something else is up to you. You just have to find out if the Z_PROBE_OFFSET_FROM_EXTRUDER
on both sides is the same or not. And more important - if not - why?
How is a value of 0.146 assigned from that?
Weighted average. https://github.com/MarlinFirmware/Marlin/blob/bugfix-2.0.x/Marlin/src/module/probe.cpp#L583-L584
HELP: Bilinear bed leveling one side higherthan the other
If you can't find the relation between having different Z_PROBE_OFFSET_FROM_EXTRUDER
and the title i can't help you.
@bcsteeve SERIOUSLY!!! You need to try harder to not aggravate the contributors here.
Hey, you got it. I wasn't even here.
Hi, So from todays check up i found the following:
Here are my grids after coupler change with a heated bed and extruder
Recv: Bilinear Leveling Grid:
Recv: 0 1 2 3
Recv: 0 -0.127 -0.279 -0.241 -0.017
Recv: 1 -0.640 -1.055 -0.794 -0.139
Recv: 2 -0.634 -1.085 -0.709 -0.143
Recv: 3 -0.117 -0.293 -0.173 -0.010
Recv: Bilinear Leveling Grid:
Recv: 0 1 2 3
Recv: 0 -0.108 -0.255 -0.220 -0.025
Recv: 1 -0.626 -0.973 -0.750 -0.194
Recv: 2 -0.599 -1.022 -0.656 -0.168
Recv: 3 -0.107 -0.293 -0.167 -0.019
One question: If the X-axis is leveled to the bed and measuring the distance (z-height) from the hotend to the bed on both sides (x=0 and x = max) differs, what does that mean?
@Zuru1
Ok. 0.5/10mm in Y. How much difference in Z between nozzle and probe that is, is hard to guess. That depends on distances of nozzle and probe from the center of rotation. However.
Z_PROBE_OFFSET_FROM_EXTRUDER
is not the same at the both sides of the bed. That difference has to be as small as possible. At least less than 1/2 a layer height, better only 1/4, ideally 0. Otherwise bed leveling with a probe can't work. (Bed leveling does not level the bed. It tries to keep the distance of the probe at a constant height. It has only one information about the position of the nozzle. Z_PROBE_OFFSET_FROM_EXTRUDER
. That is supposed to be a constant. If that varies with xy-position the height of the nozzle will vary by exact that amount.)
You have to find the mechanical problem and to eliminate that.
There are workarounds.
If you have x-rotation a 0 Y_PROBE_OFFSET_FROM_EXTRUDER
will not correct the rotation but will make it invisible because nozzle and probe have the same distance from the center of rotation. (same for y-rotation and X_PROBE_OFFSET_FROM_EXTRUDER
. (If you have both it will become difficult.))
The other way is to use UBL an hand tune the mesh. (IMHO we always have one of these rotations, or a similar mechanical defect, when we have to manually adjust the UBL mesh..)
Replaced the z couplers in hopes that might help, still no change
How exactly, do you think, can that improve the squarenes off your printer?
One question: If the X-axis is leveled to the bed and measuring the distance (z-height) from the hotend to the bed on both sides (x=0 and x = max) differs, what does that mean?
If the nozzle-bed distance is equal at both sides of the bed (is level) and the probe measures different height and you believe in this results, that means the Z_PROBE_OFFSET_FROM_EXTRUDER
is not constant. (see above). Or the other way around. If you believe in the leveling system, different print height at the right and the left, indicates a mechanical problem what causes the Z_PROBE_OFFSET_FROM_EXTRUDER
to be not the same everywhere.
I personally am trusting the leveling systems. (But I test and compare them on my machines every now and then. And every now and then there are problems with the one or the other system. Usually they disagree a lot then.)
If the bed is level and flat you sometimes can see a pattern (systematic error) in the grid/mesh poins and conclude from that to the reason. In your case i don't see anything. :-(
@AnHardt I replaced the flexible couplers thinking that might have been the root of the problem, since the couplers flexing can cause the x axis to be un leveled. But since that is checked, I will move on to the next part and see were I end at.
What I also found out is that, if I print on the left side of the bed the Z_PROBE_OFFSET_FROM_EXTRUDER needs to be about -0.65mm while on the right needs to be -1.3mm. So something is causing this difference between these sections.
In my current configuration I have the probe on the right side of the extruder and my X_PROBE_OFFSET_FROM_EXTRUDER is = 0, so my that could be reason. Why I have it set up like this is due to that the when X is homed, the probe is already in position to do its first probe.
@AnHardt That animation just made it all "click" in my head. Brilliant. Sure enough my one machine with that issue has a tilted X gantry extrusion. Amazing.
Animation here: https://content.timothyhoogland.com/files/ShareXUpload/2018-02-15_17-32-03.gif
@Zuru1 Concentrate on potential parts/problems what could cause the x-rods to be not parallel.
@houseofbugs Nice gif-animation. May i use that in combination with my scad-script? I think for a deep understanding what goes on, you have to play with the parameters. But the gif is an excellent teaser to hopefully make curious enough to at least read the comments in the script.
To reiterate:
To get a more meaningful result pertaining to your probe and the bed, you must enable PROBE_MANUALLY
and compare the mesh that comes from that procedure to the mesh produced by FIX_MOUNTED_PROBE
.
If the mesh that comes from PROBE_MANUALLY
differs from the mesh produced by FIX_MOUNTED_PROBE
it means that the probe is at some slight angle compared to the nozzle and carriage, and so physical adjustment of the probe, carriage, and/or gantry is needed.
@AnHardt Well then, the only thing that I haven't check is the actual frame holding everything together. I will do that on the weekend and take the printer apart and check how straight the frame is.
@thinkyhead I agree, but. :-)
PROBE_MANUALLY
is only save when done with the nozzle (no xy-offsets!).FIX_MOUNTED_PROBE
is not the ideal word. There are fix mounted probes/switches around having no xy-offsets. Servo probes usually have a xy-offset, but you can build them to have not. Until now i have not seen a sled probe with no x-offset, but it's possible to build one. BLtouch always has offsets. Allen keys are rarely seen on cartesian machines, but i can't imagine how to build one without offsets. DELTAs can have a similar effect, where the effector is tilt when both diagonal rods going to the same tower, don't have the same length. When the rods are horizontal the effector is turned around the vertical z-axis (doesn't really matter). If the rods are vertical the effector is turned around an horizontal axis going from the tower to the center (what matters if the probe has offset to that axis).
Scara machines can have a xy(angle) dependent tilt of the effector. For example, when there is a little play in the barings above the effector and one or more bores in the arms are not vertical.
An incomplete list of what to check for a i3 type machine when searching for position dependent x-sled/carriage/effector tilt/rotation:
Are frame parts cracked, distorted, rectangular, with straight clean edges (grate, particle)? Do they have a tight fit? Are they mounted correctly to each other? Are there omitted or added washers? Are the correct washers, nuts, bolts being used? Are they tightened (too much)? Do upper and lower z-smooth-rod-holders belong together at both sides? (the lower one may be at the stepper mount) If printed - have they been printed at the same time using same material and same orientation from the same set of STLs? Are the models for that ok? Are z and x smooth-rods straight? Do they have the same distance to the frame everywhere? Do the z-sleds belong to the same set (see rod mounts)? Are the z-bearings mounted correctly into the z-sleds? Are the x-rods mounted correctly into the z-sleds? Are there cracks in any part? Is there any relevant wear on any of the parts? If - why? Is belt tension ok, or is the structure deformed by too much?
Don't believe in anything. Be exact - maybe we are looking for a 1/10 mm of difference (depends on where). Test, measure, look up, think!
Just updating here. I rebuilt my X gantry on the Ender 2 and the leveling is working correctly now. Going to to the same to my CR-10. This is definitely looking like a mechanical issue. I wish we could somehow set a tilt offset in the software if we know how far off its throwing off the readings. If we used XYZ skew correction would that stack with the ABL and compensate for that? I am going to play with it.
I fought with this for a week of pretty much full time work (yep, I got nothing productive done all week).
Best results always came with ABL disabled and the bed properly leveled. Any time I turned on ABL, I'd get this strange slant. If it is mechanical, then (in my case anyway), why am I able to print perfectly fine without ABL?
Honestly I don't know why I obsessed with this so much, considering I can print without ABL. I just wanted to justify my ABL purchase I guess. But this frustrating exercise all resolved itself when I simply disabled ABL and went back to good old fashioned mechanical leveling.
IF perfect mechanical performance is a requirement for ABL, then what is the purpose of ABL? And if performance is WORSE with ABL, well...
Finally, I would suggest we stop calling it ABL. Is that really what it is? Of course not. Something like VBF would make much more sense (Virtual bed flattening). "Automatic" isn't really the right term, and "leveling" is certainly misused.
I did the same thing. I disabled ABL, leveled the bed manually, and it prints fine.
If it is mechanical, then (in my case anyway), why am I able to print perfectly fine without ABL?
It's been explained very well above, but let me try to be succinct.
If the gantry is twisted, this may only introduce a small error at the nozzle, which is right down at the bed, but this will introduce a larger error in the probe result, because it is farther above the bed and aimed at a point away from the nozzle. If the gantry is twisted, the probe distance to the bed will vary as it moves left-right, while the nozzle's relative position is not greatly affected.
|\ When close up an angle translates to a small distance
| \
| \ When farther away an angle translates to a larger distance
Here's what a probe does on a twisted gantry:
/ | \
/ | \
/ | \
far near far
If perfect mechanical performance is a requirement for ABL, then what is the purpose of ABL? And if performance is WORSE with ABL, well...
It is only worse when your probe situation is such that it produces varying measurements. Of course we cannot compensate for nonsensical values. The probe needs to point straight downward consistently.
Try using PROBE_MANUALLY
and compare the mesh result, as I have repeatedly suggested. Apply the Scientific Method.
@AnHardt: PROBE_MANUALLY is only save when done with the nozzle (no xy-offsets!).
That's what PROBE_MANUALLY
requires. It's the paper-under-nozzle method.
@AnHardt: There are fix mounted probes/switches around having no xy-offsets.
The verbiage "FIX_MOUNTED
" in our case refers to the fact that the probe doesn't need to be deployed. So, inductive probes, probes that use the nozzle itself, and so on.
@bcsteeve: I would suggest we stop calling it ABL. Is that really what it is? Of course not.
If G29
probes all the points one after the other without need for human interaction, we refer to the procedure as "automatic." This is in contrast to the other form of bed leveling that was introduced early into Marlin, entitled "Manual (Mesh) Bed Leveling," which requires the user to move the Z axis, test with a feeler gauge at each point, and issue a command or click a button to move on to the next point.
The PROBE_MANUALLY
option was introduced more recently as a "type of probe" that can be used with ABL. And then Unified Bed Leveling is a mesh-based leveling system, but allows use of the planar matrix method to tilt the mesh data on a plane, and also includes the option to do manual probing of one or more points. It unifies the other forms in one glorious edifice.
@houseofbugs: If we used XYZ skew correction would that stack with the ABL and compensate for that?
Not bloody likely. We can't compensate for what is essentially a randomization of measurements.
@shonsu02: I did the same thing. I disabled ABL, leveled the bed manually, and it prints fine.
If you can print without any bed leveling compensation then of course you should skip it and allow the MCU to do less and run cooler.
Hi,
I have now completed the disassemble and reassembled of my printer, in order to check the frame. The frame had a little bend on the bottom right corner which I corrected as good as I could with a glass table and plywood piece.
G30 on all four corners:
Bed X: 0.00 Y: 0.00 Z: -0.03
Bed X: 160.00 Y: 0.00 Z: -0.04
Bed X: 0.00 Y: 190.00 Z: -0.02
Bed X: 160.00 Y: 190.00 Z: -0.02
Recv: Bilinear Leveling Grid:
Recv: 0 1 2 3
Recv: 0 -0.074 -0.166 -0.131 -0.069
Recv: 1 -0.507 -0.775 -0.634 -0.201
Recv: 2 -0.484 -0.828 -0.626 -0.201
Recv: 3 +0.005 -0.194 -0.085 -0.038
Even after all of this check up and control, the issue still exists. I also checked the suggested controls/check points in the thread, but still not getting any closer to resolving this.
This is kind of confusing since the nozzle is at the same height on both sides (left and right), it still prints in the air on the right side. Tomorrow I will try UBL and see if that is the solution to my problem.
Thank you and happy printing
Based on what @thinkyhead said recently, I wonder if it's the sensor mount that is just messing with everyone. If it's not in line with the nozzle, it's going to present itself as the twisted gantry maybe? Or a loose hotend that's allowing the nozzle to float? I'm not sure, just throwing it out there.
I went back to manually leveling since I have some stuff to get done.
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.
Now explain how that would only affect printing with ANAL?
Lol @ autocorrect. That should have been ABL, not ANAL
@houseofbugs is that on an Anet A8?
FYI:
Here are two grids bi-linear vs manual ABL
Recv: Bilinear Leveling Grid:
Recv: 0 1 2 3
Recv: 0 -0.217 -0.320 -0.403 -0.290
Recv: 1 -0.531 -0.767 -0.744 -0.541
Recv: 2 -0.527 -0.758 -0.672 -0.556
Recv: 3 -0.021 -0.315 -0.354 -0.426
Send: G29 TRecv: State: On
Recv: Num X,Y: 4,4
Recv: Z offset: 0.00000
Recv: Measured points:
Recv: 0 1 2 3
Recv: 0 +0.57500 +0.40000 +0.17500 -0.12500
Recv: 1 +0.30000 +0.30000 +0.27500 -0.22500
Recv: 2 +0.30000 +0.30000 +0.07500 -0.25000
Recv: 3 +0.35000 +0.27500 +0.15000 -0.20000
How come there are so far apart from each other?
I have always had trouble accurately doing manual probes with the nozzle touching the glass. It is very easy to have the nozzle touch the glass but not realize it and drive the nozzle harder into the glass (and get a lower Z value). It maybe that is happening here???
I will redo the manual probing tomorrrow and see if that helps. How is it activated for so that it can be used while printing?
Different people do things differently. But for me... If I can get the mesh 'reasonable' enough that G26 will print a pattern... That is what is important to me. The reason is, using that pattern I can edit any mesh point that needs to be adjusted. It doesn't have to be perfect as a result of the automatic probing. I just need it good enough the G26 command can run and then I use that to fine tune things.
Hi,
First of , good job on the firmware, it has come a long way since I started using it (about 2yrs ago.)
I have a prusa i3 clone 3D printer, which is running marlin v 1.1.8 and configured to use bilinear bed leveling. The issue is that no matter what I do, (level the bed, check and double the X axis, extruder, inductive sensor, rods etc.) I end up with the same results, unable to print due to part not sticking on bed on one side and smashed on the other side.
Here are two grids produced after adjusting the bed screws with on change in the results and are performed with the bed and hotend heated up to print temperatures:
Here are the configurations files with configuration used on the printer: Configuration_adv.zip
Any help or direction in solving this issue is greatly appreciated.
Thank you and happy printing