Mesh Bed Compensation Screwy
-
And we can even do better by using bicubic interpolation:
Since Z is often the slowest axis, smoothing it out will mean smoother movement for the other axes.But there still remain two last issues: unprobed points with a 0 csv are being clamped to zero, this can easily be fixed
Second: points outside the probing area remain constant. These should be extrapolated, maybe something like linear regression.
Thoughts?
-
@CHP, many thanks for diagnosing and fixing these issues. I have accepted your pull request, and I will release a new 1.18 beta soon incorporating these changes.
-
Hi CHP, can I just say thank you for identifying this and fixing, very very much appreciated.
DC42, have you any idea what going on re my comment about 4 pont adjustment above?
thanks
-
@CHP although I only understand have of what you said(the hampster wheel in my head is seizing up), the pictures you put up show that you've found a way to wrangle the angry pixies flowing to my motors, and I thank you for it.
-
Hi CHP, can I just say thank you for identifying this and fixing, very very much appreciated.
DC42, have you any idea what going on re my comment about 4 pont adjustment above?
thanks
You need to probe clockwise round the bed, not anticlockwise. One of these days I'll get round to either re-ordering the points or generating an error message if they are in the wrong order.
-
Hi, tried this which is clockwise
G30 P0 X151 Y151 H0 Z-99999
G30 P1 X151 Y49 H0 Z-99999
G30 P2 X49 Y49 H0 Z-99999
G30 P3 X49 Y151 H0 Z-99999 S4but same result, just gives a small judder on first move after running the bed level and then wont move anymore. (Sorry)
-
Update, maybe its just my misunderstanding of how this works, but commented out last line and moved S to third line as
G30 P0 X100 Y151 H0 Z-99999
G30 P1 X151 Y151 H0 Z-99999
G30 P2 X151 Y49 H0 Z-99999 Sworks and I can then see compensation movement through moves, yet to try with a print though
-
Hi, tried this which is clockwise
G30 P0 X151 Y151 H0 Z-99999
G30 P1 X151 Y49 H0 Z-99999
G30 P2 X49 Y49 H0 Z-99999
G30 P3 X49 Y151 H0 Z-99999 S4but same result, just gives a small judder on first move after running the bed level and then wont move anymore. (Sorry)
Start with your X49 Y49 point as P0 and go clockwise from there.
-
Further Update, changed the coords so that there were four but not in a perfect square. And now it works with 4, but following running the bed compensation, Z is set to an insane neagtive number of -199.91
G30 P0 X49 Y151 H0 Z-99999
G30 P1 X150 Y150 H0 Z-99999
G30 P2 X149 Y50 H0 Z-99999
G30 P3 X51 Y50 H0 Z-99999 SGo back to 3points as
G30 P0 X100 Y151 H0 Z-99999
G30 P1 X149 Y50 H0 Z-99999
G30 P2 X51 Y50 H0 Z-99999 Sand Z after shows 5.73 and z compensation across the bed seems to work, again need to wait till tonight to try a print
-
Great work, thanks.
Just tell me when a beta is available and I test with that.
It would be interesting to see the result. I'll switch back to 16 mm square instead of the 32 mm I used for this test.
I'll still wonder if there is something hidden in the fact that the measurement clearly shows that the bed is high at the back right off the plate but the print is pressed hard against the plate on precisely that spot… Strange if you ask me...
Then I kind of wonder how the compensation is done when printing with dual head. I set the distance between the first tool and the Z-probe. But I do not enter the distant from the second... So is automatically compensated or should I refer to a point in the middle?
G31 X-25.19 Y7 Z2.67 P500 ; Set the probe height and threshold; increase Z to decrease bed probe distance X11.0 Y0.5
This is relative the tool 1 nozzle... the nozzles are approx. 38 mm apart. So to place the compensation in the middle should I use:
G31 X-44.19 Y7 Z2.67 P500
Or is the 38mm added due to
G10 P1 X38.3 Y0.0 Z0.0 S0 R0So that exact bed leveling is done for the extruding nozzle?
-
Update on G30 four point probing. Now I have actually read DC42's comment (sorry must have overlapped) I have set the four poits clockwise from minor XY as per
G30 P0 X49 Y49 H0 Z-99999
G30 P1 X49 Y149 H0 Z-99999
G30 P2 X149 Y149 H0 Z-99999
G30 P3 X149 Y49 H0 Z-99999 Sit looks like the four pointer is working, the results are
G32
Bed equation fits points [49.0, 49.0, -0.118] [49.0, 149.0, -0.156] [149.0, 149.0, 0.162] [149.0, 49.0, -0.093]So my final bed.g looks like
; bed.g
; called to perform automatic bed compensation via G32
;
; generated by RepRapFirmware Configuration Tool on Sun Feb 26 2017 13:25:00 GMT+0000 (GMT Standard Time)
G90
; Clear any bed transform
M561; Probe the bed at 4 points CLOCKWISE!
G28
G30 P0 X49 Y49 H0 Z-99999
G30 P1 X49 Y149 H0 Z-99999
G30 P2 X149 Y149 H0 Z-99999
G30 P3 X149 Y49 H0 Z-99999 S
G1 X0 Y0Also my Home Z and Home All now have
G1 X1 Y21 F6000
G30becuase my X offset of the probe from the extruder is 48 and Y offset is 28 and G30 instructions account for the offset in the instructed points.
Hope this helps anyone else who is suffering.
-
Hi All, can I now confirm that I amprinting the four squares test succesfully. thanks for your help.
DC42 as a suggestion, might it be worthwhile adding the above fledged out with a little explanation to the Wiki, at least for those of us that are using Glass Beds on a Cartesian?
-
@pcsentinel. Glad you got it sorted. A couple of points. You seem to only be doing the bed compensation for 100mm x 100mm of the bed area. It's usually best to probe close to the 4 extreme corners of the axes movements so that you cover the entire printable area. Also, your Z homing example seems to indicate that you are homing Z at one corner of the bed and it's usually better to do the Z homing at the centre of the bed, because that is where the majority of your printing will take place and therefore where you need the most accuracy. HTH
Ian -
Ok, thanks I tried that, but because of my offset when I go to postion 2 on the grid with
G30 P1 X49 Y189 H0 Z-99999
the nozzle is hitting the bed and compressing the carriage before te sensor is activated therefor throwing off the reading -
Ok, thanks I tried that, but because of my offset when I go to postion 2 on the grid with
G30 P1 X49 Y189 H0 Z-99999
the nozzle is hitting the bed and compressing the carriage before te sensor is activated therefor throwing off the readingI think you must have a severely tilted bed. You can increase the Z probe dive height - it's the H parameter in the M558 command. But it's better to get the bed more level than to rely on a lot of compensation.
-
Is it possible for me to test before a firmware is released?
-
Further unknown with 4 point plane. Sorry I know this is under Mesh, but its where all the previous comments are.
I extended my four points to be wider but obviously still keep the probe over the bed.
I then thought I would check each four points without any compensation, i.e. drop nozzle to just hold paper, set z to 0, raise head by 5mm and do G30 S-1. and then check repeatability. the result are below that seem to indicate that the points all have different trigger heights but repeatability at each point is good.
Nozzle X Nozzle Y Probe X Probe Y G30 S-1 G30 S-1 G30 S-1 Average Offset from P1
Point 1 1 1 49 29 0.385 0.382 0.38 0.382333333 0
Point 2 1 161 49 189 0.298 0.298 0.303 0.299666667 -0.082666667
Point 3 131 161 179 189 0.157 0.153 0.155 0.155 -0.227333333
Point 4 131 161 179 189 0.185 0.185 0.188 0.186 -0.196333333My settings in coonfig.g are
M558 P1 X0 Y0 Z1 H5 F120 T6000 ; Set Z probe type to unmodulated, the axes for which it is used and the probe + travel speeds
G31 P500 X48 Y28 Z0.382333333 ; Set Z probe trigger value, offset and trigger heightI therefor mofidied my bed.g to
; bed.g
; called to perform automatic bed compensation via G32
;
; generated by RepRapFirmware Configuration Tool on Sun Feb 26 2017 13:25:00 GMT+0000 (GMT Standard Time)
G90
; Clear any bed transform
M561; Probe the bed at 4 points CLOCKWISE!
G28
G30 P0 X49 Y29 H0 Z-99999
G30 P1 X49 Y189 H-0.082666667 Z-99999
G30 P2 X179 Y189 H-0.227333333 Z-99999
G30 P3 X179 Y29 H-0.196333333 Z-99999 S
G1 Z5
G1 X0 Y0But after I ran the bed compensation I then went back to each probe point and dropped the Z to 0 over the piece of paper, at all points the paper was trapped until I lifted the nozzle 0.3mm. So I added:
G1 Z0.25
G92 Z0
into the bed.g before the G1 Z5 and now everything seems to be working, but I am really mystified why I have to push the the height up by 0.25 does anyone know? -
Hi, re previous post, can anyone enlighten me as really confused?
-
Hi
Would like to help but I think I asked the same or related question above… I suspect there is some thing weird in how the compensation is used...
Could be the interpolation issue now look at and hopefully corrected.
That is why I offered to test... As soon a beta is available that has the fix for interpolation I will try it... Since interpolation is probably used in the application of the correction also... My guess after 17 years in embedded software development...
-
I've just released firmware 1.18beta2 which includes fixes for mesh bed compensation when the head is outside the points actually probed. My thanks to ChristophPech for the fixes.