Mesh Bed Compensation Screwy
-
If you are using mesh bed compensation and also using the Z probe to do Z homing, then you should Z home with the probe over a point that is on the grid. Otherwise the interpolated bed height at that point may not be exactly the same as the probed bed height, leading to a difference in the Z=0 position.
I guess it might help if there was a version of the G30 command that lets you specify an XY position to probe for Z homing, just like G29 does. Otherwise you will need to take account of the probe X and Y offset yourself.
Thanks for that.
I like your idea if I understand correctly: it would extending the G30 command to include XY motion AND take into account any already specified z-probe XY offset?
I've just had a play with 1.18beta2 and - unrelated to it - by chance discovered I have an issue with the reflectance of the window glass sitting on my heated bed PCB: The 'bunker' in the middle of the mesh in the image below is most probably the result of (unintentionally) z-probing over the center of the Prusa MKII-style PCB - exactly where the thermistor hole is located. This may explain my previously reported issue where I needed 0.3mm of baby stepping to correctly set z0.
Next, after performing G30 in a random location using the following macro (use with caution and best deleted when done to prevent inadvertently crashing tool or z-probe):
; Z-PROBE macro to check random locations: G91 ; relative mode G1 Z4 F200 ; raise head 4mm to ensure it is above the Z probe trigger height G90 ; back to absolute mode G30 ; lower head, stop when probe triggered and set Z to trigger height
I then tried moving the head away from that location and in some areas, within less than a millimeter of X or Y travel, observed the z-probe LED (trigger height indication) would extinguish. It seems the probe is being affected by the white screenprint on the PCB, and the darker area provided by the thermistor hole. Is this feasible? I thought I'd read that plain glass was capable of providing sufficient reflection for the IR z-probe? I'll try placing a piece of black paper under the glass when I get some, but it does make me wonder if the distinctly-patterned bed meshes other people are generating is the result of subtle changes in reflectance due to minute influences of the weave of a PCB material or machining marks on tooling plate, for example. Any thoughts?
I have probed the bed in the past with a digital 0.01mm indicator and the shape otherwise generally agrees with the generated bed mesh, except for the center divet or bunker:
-
Just started on my test work… Disassembled the z-probe... and low and behold:
That cannot be good if it is sensitive to not being square…
Will now re-assemble it and try again... after standing the part up.
And I also tested that the M500 stores the value.
I also moved the "center" to midpoint of print heads.
G31 T1 P500 X-44.2 Y7.0 Z2.53Is this correct?
The probe is -44.2mm to the left of the center of the tools... when printing I still do not understand HOW the compensation is done... T0 (left tool) is at -38 when right tool (T1) is at zero. X that is... So when T1 is printing the probe is -63.2 to the left of the printing area... But the compensation says -44.2...
But the config.g has the code above... but the G31 T1 seem not to be updated by that... so just running the G31 above seemed not to get the T1 entry updated in the override file.
But when adding the G31 manually to T1 and then a M500 it was stored...SOOOO close... but no cigar...
Hard to see when the depth of field is not so good but the duet is pressing hard against the bed in the front left and less to the right
This is the mesh level result:
Still bumpy but I assume better…
Why is this five point leveling UNDER the grid?
I have not printed between these mesh leveling…I give up for now... do not understand this...
-
Yep had this happen a few times after failed prints where a rats nest has caught them straighten them up and re-measure the Z Offset value and carry on printing.
-
@GrodanB
If your right tool is at zero then the sensor is relative to that:
G31 T1 P500 X-63.2 Y7.0 Z2.53From your picture it looks like the IR LED is bend (but I'm not sure, it could be just the odd angle of the photo)
By "adjusting the angle of the IR sensor board" I meant through the 2 screws at the top which are connected to the carriage. If you look at the plastic under the screws there might be some depressions from the screws in which case you can't change the angle anymore so the part needs to be reprinted.
-
Yes, fixed the IR sensor…
So the 90 degree is not in Y but in Z then...?
And 0,0 is different for each tool when looking from the sensors point of view...
T1
G1 X0 Y0 Z3Set the right tool at 0,0
T0
G1 X0 Y0 Z3Set the left at the same place...
Therefore my confusion...
When I use T1 the compensation is not relative that tool... but place in between...Today I have leveled (mechanically) the bed so that the same spacer was used between the print head and the bed corners, that should mean that the bed is parallell to the print head... But this is the duet view of that...
Same result as always… check the base relative the bottom. Same distans left and right...
Re adjusted the sensor so that it is parallell i Y with the bed... 90 as square as I can get it in Z.
OHH... Just had a thought... Could i be that I have to much of the left side so that the sensor is so close to the edge that it see the edge of the bed and therefor makes the left side lower...
First test: Put a tape so that I shield the sensor from the light that is from the left.... No change... just as "bad".
Second test: Move the outer limits of the test 25mm in on the bed... No change... just as "bad". But now it seem buggy... -
Is there a bug in mesh leveling?
I use this after homing all axis:
M557 X50:300 Y25:175 S25
And the mesh leveling start @ X == 113 not 50.
Testing the lates 1.18beta3 with the new web interface 1.15b2.But looking at the first point is seem to think it is @50,25…
Picture taken during mesh leveling changing Y position… this is X113 according to the display but the result file seem to think this is X50...
Here is my latest marco for meshleveling:
T0 ; select first hot end
G91 ; Relative coordinates
G1 Z4 F6000 ; Lower bed to avoid hotend dragging in bed.
G1 X-350 Y-240 F3000 S1 ; move up to 240mm in the -X and -Y directions until the homing switches are triggered
G1 X6 Y6 F600 ; move slowly 6mm in +X and +Y directions
G1 X-10 Y-10 S1 ; move up to 10mm in the -X and -Y directions until the homing switches are triggered
G90 ; Absoulte coordinates
G1 X150 Y100 F3000 ; Go to middle and probe the Z axis…
G30 ; Home Z-axis
M557 X50:300 Y25:175 S25 ; Bed level from X26Y12 to X299Y188 in 16mm increments 16x11 points (176)
G29 S0 ; Auto Bed Level and create report
M374 ; Save calibration grid
G1 X70 Y200 F3000 ; Dock after bedlevel. Move first in front of docking notch
G1 X70 Y235 F3000 ; Dock after bedlevel
M500Now testing mesh level with 1.18beta2 and see if it does the same thing...
-
It's because you have a large Z probe offset in the X direction. The grid points are where the probe is, not where the head is.
-
Ahh ok so I should remove this when probing? (nice, always like to find that it is my fault… makes the fix easier...)
or use T1 when mesh leveling...
Will test... setting to T1 seems much better....
Will use the Beta3 after this... if that is "recommended" (I'll use the beta2 otherwise.)
Thanks for the good work... One day I hope to understand this...
-
Last thought before I give up…
Looking at this there seem to be a constant that is NEVER removed regardless how much I try
(X0,Y0) is the closest corner (when controlling tools))One end is pressed too hard against the nozzels and the other is pressed to little. ALWAYS. Same side also.
This is the one constant thing I have. When it is at its best this is how it gets…
Looking at the height map:
RepRapFirmware height map file v1 generated at 2017-02-18 21:41, mean error -0.13, deviation 0.10
xmin,xmax,ymin,ymax,radius,spacing,xnum,ynum
50.00,300.00,25.00,175.00,-1.00,25.00,11,7
-0.385, -0.383, -0.290, -0.342, -0.288, -0.253, -0.247, -0.195, -0.200, -0.280, -0.263
-0.317, -0.263, -0.233, -0.120, -0.098, -0.088, -0.108, -0.130, -0.178, -0.240, -0.175
-0.245, -0.175, -0.160, -0.132, -0.135, -0.053, -0.080, -0.085, -0.043, -0.080, -0.035
-0.217, -0.178, -0.152, -0.070, -0.033, 0.000, 0.013, -0.020, -0.035, 0.037, -0.027
-0.168, -0.150, -0.110, -0.003, 0.003, 0.043, -0.003, 0.030, -0.037, -0.003, -0.040
-0.172, -0.175, -0.090, -0.108, -0.172, -0.045, -0.020, -0.057, -0.045, -0.043, 0.010
-0.273, -0.247, -0.205, -0.155, -0.158, -0.130, -0.085, -0.112, -0.145, -0.135, -0.105The side that has to much "compensation" is -0.385 and the side that has to little is -0.263. (assuming that the 0,0 point is the upper left...)
Now I do not print in the extreme parts of the bed... I print in the middle. And there it is more flat. BUT looking at the print (this is an old shown before but see little point in making the same picture today). It seems that the compensation is strange... the one that is close is not at all pressed (supposed to be 70% layer height) and the one that is far from the nozzle is pressed hard...
This makes me wonder if my printer has the same coordinates for X and Y when it comes to the Probe and tools...? Can I control that, or more precise can I have made a set-up mistake that causes the duet to switch on or more axis?
Because it makes little difference what I do... I always get the same result... (that is somehow good... consistency)
-
hmm… swapped the X axis... MUCH better... Now it more or less look like I need to print slower and press the first layer into the bed more...
This is very strange.
Unless there is a bug in the leveling.
RepRapFirmware height map file v1 generated at 2017-02-18 21:41, mean error -0.13, deviation 0.10
xmin,xmax,ymin,ymax,radius,spacing,xnum,ynum
50.00,300.00,25.00,175.00,-1.00,25.00,11,7
-0.263, -0.280, -0.200, -0.195, -0.247, -0.253, -0.288, -0.342, -0.290, -0.383, -0.385
-0.175, -0.240, -0.178, -0.130, -0.108, -0.088, -0.098, -0.120, -0.233, -0.263, -0.317
-0.035, -0.080, -0.043, -0.085, -0.080, -0.053, -0.135, -0.132, -0.160, -0.175, -0.245
-0.027, 0.037, -0.035, -0.020, 0.013, 0.000, -0.033, -0.070, -0.152, -0.178, -0.217
-0.040, -0.003, -0.037, 0.030, -0.003, 0.043, 0.003, -0.003, -0.110, -0.150, -0.168
0.010, -0.043, -0.045, -0.057, -0.020, -0.045, -0.172, -0.108, -0.090, -0.175, -0.172
-0.105, -0.135, -0.145, -0.112, -0.085, -0.130, -0.158, -0.155, -0.205, -0.247, -0.273 -
Please explain what you mean by "swapped the X axis"? What type of Z probe are you using?
-
I mirrored the measurements in x axis.
Look at the table in the post above yours latest post and the one above that. The difference is not in the numbers but in how they are applied. I look at the print and I suspect that I should mirror Y also.
Will test that later today.
Assuming four measurement point in total:
So I think that table(Xmin, Ymin) should be applied to bed(Xmax, Ymax).
So far I tested table(Xmin, Ymin) applied to bed(Xmax, Ymin). With much better results.
-
Hmm… that doesn't tie in with my testing. I test bed compensation by putting a second bed plate (e.g. glass sheet) on top of part of the bed. Then I probe. Then I apply bed compensation. When I move the head in the XY plane, I expect it to ride up over the additional plate - which it does.
-
Therefore my question:Can I cause this in the set-up file? (ie. is this possible to be my fault?)
Is the test plate you use leaning towards one corner?
Otherwise you have a hard time knowing if this is occurring.
Just preparing to test the latest mirror X and Y map:
-0.105, -0.135, -0.145, -0.112, -0.085, -0.130, -0.158, -0.155, -0.205, -0.247, -0.273
0.010, -0.043, -0.045, -0.057, -0.020, -0.045, -0.172, -0.108, -0.090, -0.175, -0.172
-0.040, -0.003, -0.037, 0.030, -0.003, 0.043, 0.003, -0.003, -0.110, -0.150, -0.168
-0.027, 0.037, -0.035, -0.020, 0.013, 0.000, -0.033, -0.070, -0.152, -0.178, -0.217
-0.035, -0.080, -0.043, -0.085, -0.080, -0.053, -0.135, -0.132, -0.160, -0.175, -0.245
-0.175, -0.240, -0.178, -0.130, -0.108, -0.088, -0.098, -0.120, -0.233, -0.263, -0.317
-0.263, -0.280, -0.200, -0.195, -0.247, -0.253, -0.288, -0.342, -0.290, -0.383, -0.385Is there a way of getting the firmware to display the height map that is in use? both in numeric form and in graphical? so I can verify that the map I constructed in libreoffice CALC is the one in use?
This testing is sketchy at best… But than again this is the best result I have had in since I started with duet... (just mirroring the X have not started with the map above)
Tested mirroring both, and just Y... X seems like the one that is best to swap... Need to re-slice at lower speed and possible hotter bed...
-
So the 90 degree is not in Y but in Z then…?
It's an axle which can rotate in X but also offsets the sensor 50mm to the right. It moves it nearer to the hotend since I have no hotend installed in the left slot of my carriage.Is there a way of getting the firmware to display the height map that is in use?
For that I made this simualtion branch so I can test it on a PC. But you need Visual Studio 2015 (free express version) to run it:
https://github.com/ChristophPech/RepRapFirmware/tree/simI ran two of your examples through it at 2mm resolution. The easiest way to visualize is opening it in Excel and insert the 3D-Surface chart of the whole table with default settings.
https://drive.google.com/file/d/0B-DBgmDdShYnQWlFS2V3SDJpS0U/view?usp=sharing
https://drive.google.com/file/d/0B-DBgmDdShYnUnp0X1NFdVFWN1U/view?usp=sharing
(filename dates are references to the comment's times) -
Thanks will check as soon as I get home.
Made a first layer yesterday and I raised one corner 1/8 of a turn and now the first layer is even with mirrored X axis compensation.
But using ABS and that suck big time when it comes to ABS not adhering to the bed… Most stick but one or more of the small squares will always fail...
-
I never tried ABS but for PLA and PETG I am using 90°C bed temperature otherwise it doesn't stick well without printing the first layer slower and squish it down.
I dislike squishing the first layer because it gives the print elephant feet also without serious slowdown stuff gets ripped off.
But at 90-100°C (surface temp on the bigbox is ~10° lower than the thermistor reports) the filament sticks well to the bed even at higher speeds and also if the nozzle is way to far from the bed. I could move the nozzle several mm above the bed, the first layer would still stick.
-
Do not like it either but this evil works with ABS. E3D edge there was no need.
Since I started using the mirror version I must say that the fist layer has never looked this good.