Mesh bed leveling on 1.18 (and 1.20+1)
-
Guess who's duet board decided that it was a briliant idea to test with the probe outside the bed:
Now I must tram the bed AGAIN…
Yes the bed is now this off...
This is why I would like to have the probe test.
but in this case it would not have helped... since the SAME macro was run again and that time it did NOT place the probe outside...
Other feature is that now I have 3 rows of zeros...
RepRapFirmware height map file v1, mean error -0.12, deviation 0.40
xmin,xmax,ymin,ymax,radius,spacing,xnum,ynum
0.00,300.00,12.00,188.00,-1.00,20.00,16,9
-0.933, -0.705, -0.695, -0.598, -0.475, -0.353, -0.233, -0.112, -0.005, 0.045, 0.148, 0.250, 0.352, 0, 0, 0
-0.858, -0.753, -0.638, -0.555, -0.398, -0.340, -0.218, -0.130, 0.023, 0.160, 0.205, 0.295, 0.398, 0, 0, 0
-0.878, -0.745, -0.633, -0.508, -0.408, -0.235, -0.130, -0.070, 0.082, 0.168, 0.237, 0.325, 0.430, 0, 0, 0
-0.773, -0.670, -0.543, -0.383, -0.273, -0.163, -0.035, 0.045, 0.172, 0.225, 0.285, 0.375, 0.435, 0, 0, 0
-0.735, -0.603, -0.475, -0.360, -0.263, -0.170, -0.045, 0.045, 0.165, 0.225, 0.365, 0.432, 0.510, 0, 0, 0
-0.695, -0.572, -0.425, -0.293, -0.213, -0.120, 0.005, 0.040, 0.180, 0.255, 0.388, 0.445, 0.530, 0, 0, 0
-0.665, -0.558, -0.430, -0.317, -0.235, -0.135, -0.007, 0.053, 0.145, 0.273, 0.395, 0.493, 0.543, 0, 0, 0
-0.748, -0.635, -0.488, -0.335, -0.208, -0.102, -0.040, 0.067, 0.190, 0.307, 0.370, 0.452, 0.520, 0, 0, 0
-0.803, -0.643, -0.540, -0.425, -0.268, -0.208, -0.090, 0.003, 0.080, 0.170, 0.290, 0.370, 0.445, 0, 0, 0 -
If you want me to explain in more detail why you are getting columns of zeros, you will need to share your config.g file.
-
My Config.g:
[[G-code]] ; Configuration file for BigBox v1.1 3D printer Dual hybrid Titan ;*** Communication and general ------------------------------------------------------------------------------------------------------------------------------- M111 S0 ; Debug off M550 BigBoxDuet ; Machine name (can be anything you like) M551 BlaBla ; Machine password (used for FTP connections) ;*** If you have more than one Duet on your network, they must all have different MAC addresses, so change the last digits M540 P0xBE:0xEF:0xDE:0xAD:0xFE:0xED ; MAC Address ;*** Wifi Networking ----------------------------------------------------------------------------------------------------------------------------------------- M552 S1 ; Enable WiFi M555 P2 ; Set output to look like Marlin M575 P1 B57600 S1 ; Comms parameters for PanelDue ; Machine configuration -------------------------------------------------------------------------------------------------------------------------------------- M569 P0 S1 ; X Drive 0 goes forwards (change to S0 to reverse it) M569 P1 S0 ; Y Drive 1 goes backwards M569 P2 S0 ; Z Drive 2 goes forwards M569 P3 S1 ; E0 Drive 3 goes forwards M569 P4 S0 ; E1 Drive 4 goes forwards ; endstop configuration ------------------------------------------------------------------------------------------------------------------------------------ M574 X1 Y1 S1 ; set endstop configuration (X and Y and endstops only, at low end, active high) M350 X16 Y16 E16 I1 ; Set 16x microstepping with interpolation M906 X800 Y700 Z1000 E1000:1000 ; Set motor currents (mA) and increase idle current to 60% M201 X800 Y800 Z15 E1000 ; Accelerations (mm/s^2) M203 X15000 Y15000 Z100 E3600 ; Maximum speeds (mm/min) M566 X600 Y600 Z30 E20 ; Minimum speeds mm/minute M208 X300 Y240 Z295 ; set axis maxima (adjust to suit your machine) M208 X-38 Y0 Z-0.1 S1 ; set axis minimum (adjust to make X=0 and Y=0 the edge of the bed) --M208 X0 Y0 Z-0.2 S1 M92 X160 Y360 Z400 ; Set axis steps/mm ; current steps-per-mm * 100 / measured value in mm M92 E417.5:407.0 ; Set extruder steps per mm G21 ; Work in millimetres G90 ; Send absolute coordinates... M83 ; ...but relative extruder moves ; Z probe------------------------------------------------------------------------------------------------------------------------------------------------------- M558 P1 X0 Y0 Z1 H3 F200 T4000 ; Smart IR Z probe, used for homing Z axis, dive height 3mm, probe speed 200mm/min, travel speed 5000mm/min ;G31 X-25.19 Y7 Z2.94 P500 ; Set the probe height and threshold; increase Z to decrease bed probe distance X11.0 Y0.5 ; Thermistors and heaters --------------------------------------------------------------------------------------------------------------------------------------- M305 P0 T100000 B4388 R4700 H0 L0 ; Put your own H and/or L values here to set the bed thermistor ADC correction M305 P1 X200 ; Put your own H and/or L values here to set the first nozzle thermistor ADC correction M305 P2 X201 ; Put your own H and/or L values here to set the second nozzle thermistor ADC correction M143 H1 S130 ; Bed max temp to 130 ;***Fans------------------------------------------------------------------------------------------------------------------------------------------------ M106 P0 F10 ; Fix for Bigbox Blower M106 P1 T45 H1 ; Set temp for H1 fan start M106 P2 T45 H2 ; Set temp for H2 fan start ; Tool definition-------------------------------------------------------------------------------------------------------------------------------------------------- M563 P0 D0 H1 ; Define tool 0 G10 P0 X0.0 Y0.0 Z0.0 S0 R0 ; Set tool 0 operating and standby temperatures M572 D0 S0.1 M143 H1 S287 ; Tool max temp to 287 M563 P1 D1 H2 ; Define tool 1 G10 P1 X38.3 Y0.0 Z0.0 S0 R0 ; Set tool 1 operating and standby temperatures M572 D1 S0.05 M143 H2 S287 ; Tool max temp to 287 ;M556 S78 X0 Y0 Z0 ; Axis compensation here M140 S0 ; Set bed temp to 0 G29 S1 ; Read bed level data M501 ; Run config-override.g T0 ; select first hot end
-
And I just bought a new Z probe hoping that it might be that… Ten pounds for shipping... For a circuit that cost 20... And Then 6 more in tax. That makes it hard for European firms to compete with China...
-
You've defined the head reference point as the position of the first nozzle, because you have zero X and Y offsets in the G10 P0 command. Your M208 commands say that the head reference point can move along the X axis from -38 to +300mm. Your second nozzle is offset from the head reference point by +38.3mm in the X direction.
You don't have an active G31 command in config.g, but earlier you said you were using G31 T1 P500 X-44.2 Y0.0 Z2.20 in config-override,g.
Therefore, assuming the X axis goes from left to right on your printer, the sensor is at the left hand end of the print head, then the T0 nozzle, then the T1 nozzle. Correct?
If the head reference point (first nozzle) can move from -38 to +300mm, then the probe with its -44.2mm offset can move from -76 to +235.8mm.
You don't have the M557 command in config.g so I will assume you are still using M557 X0:300 Y12:188 S20 as you stated in a previous post. This means that you want to probe the bed from 0 to 300mm at intervals of 20mm., which should give 16 columns. However, the columns at +260, +280 and +300mm are not reachable by the probe because it is limited to +235mm. So I would expect to see three columns of zeros.
HTH David
-
Ah I see… But there is something wrong here then... The probe can reach to x=288...
I need to think about this...
The probe can definitely not reach -76mm...
-
So… this sound VERY much like I back to my original set-up...
T0 is the center of the world... and all the rest should reference from that...
So the probe is approximately 28 to the left of T0 (yes you have the correct assumptions in your post).
and the other end:
This means that the probe needs to have T0@X28Y12 for the first measuring point and T0@X300Y12 for the last…
Shall I use that in the M557 (tool 0 centric)? or as it is (probe centric and the last cannot be reached... (so I change it from 300 to 272)):[[GCode]] M557 X0:300 Y12:188 S20 ; Bed level from X0Y12 to X275Y188 in ?mm increments ```And change the
[[GCode]]
G31 T1 P500 X-44.2 Y0.0 Z2.20[[GCode]]
G31 T1 P500 X-25.2 Y0.0 Z2.20Or shall I change something more fundamental in my set-up? There is also some bad behavior that I see sometimes… it uses X0Y0 for the first nozzles instead of the compensated one that puts the probe in the bed. Hit the power off and next time I run the script directly after boot and all is OK. Do not like that at all.
-
The M557 command says where you want the probe to be. So choose the starting and ending positions to be places that the probe can reach and are over the bed and not right at the edge. Something like X10:265 should be about right. Also change the X offset in the G31 command to -25.2 or whatever you have measured.
-
Seem like the severe faults was due to the old sensor… just needed to spend more money on my printer...
Have not checked all but decided to just mesh level and print after changing and it worked... does not look like the mirroring feature is still there.
I'm investigating further... SO weirdness is less... and now I "only" have to understand the coordinates...
Thanks for the help so far. Seems like the SMD version is a real big step in getting more reliable results.
-
I FOUND THE FAULT…
Finally I have now gotten to the point where I now understand why the Duet seem totally weird.
Here is my script that seems to work:
[[GCode]] M561 ; clear any bed transform, otherwise homing may be at the wrong height G31 X0 Y0 ; don't want any probe offset for this T0 ; select first hot end G91 ; Relative coordinates G1 Z4 F6000 ; Lower bed to avoid hot end 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 ; Absolute coordinates G1 X150 Y100 F3000 ; Go to bed center and home the Z axis G30 ; Home Z-axis M557 X25:300 Y12:188 S25 ; Bed level from X25Y12 to X300Y188 in ?mm increments G29 S0 ; Auto Bed Level and create report ; Z probe parameters G31 T1 P500 X-25.2 Y0.0 Z1.78 G1 X70 Y200 F3000 ; Dock after bed level. Move first in front of docking notch G1 X70 Y235 F3000 ; Dock after bed level
The reason for my problem was simply that the G31 that was run in config-override palaces the probe outside T0 print range… Now I begin with removing that... (G31 X0 Y0) and suddenly it works...
But still does not probe X300 column wonder why? Last is X285 which nicely adds with 25 to X300...Anybody who can explain that?
-
Found that to… Wow sometimes 18 years in software development helps...
This line
[[GCode]] M557 X25:300 Y12:188 S25 ; Bed level from X25Y12 to X300Y188 in ?mm increments ```Need to be:
[[GCode]]
M557 X25:301 Y12:188 S25 ; Bed level from X25Y12 to X300Y188 in ?mm incrementsOne more that allowed then the mesh leveling works as I want… Maybe some future improvement in the firmware? or is this wrong? Also run the repeat-ability test of the probe: M98 P0:/macros/ProbeRepeatability G32 bed probe heights: 0.054 0.055 0.054 0.054 0.053 0.053 0.054 0.054 0.054 0.054 0.050 0.053 0.053 0.054 0.052 0.051 0.053 0.053 0.052 0.052 0.053 0.052 0.052 0.054 0.051 0.051 0.052 0.052 0.053 0.053 0.053 0.054, mean 0.053, deviation from mean 0.001 The IR probe that is sold on the Duet site is clearly repeatable... Really nice to have this run. Now I most likely never need to run it again... Only problem with this is that the map is 25mm offsetted... That is that when the T0 is on X25 the probe is at X0... realy wish that I could get this result using the probe coordinates instead... or I manually shift the height map... that is
[[ height map.]]
RepRapFirmware height map file v2 generated at 2018-00-07 21:10, mean error -0.083, deviation 0.100
xmin,xmax,ymin,ymax,radius,xspacing,yspacing,xnum,ynum
25.00,301.00,12.00,188.00,-1.00,25.00,25.00,12,8
-0.259, -0.271, -0.277, -0.247, -0.212, -0.109, -0.104, -0.103, -0.149, -0.199, -0.314, -0.343
...to
[[ height map.]]
RepRapFirmware height map file v2 generated at 2018-00-07 21:10, mean error -0.083, deviation 0.100
xmin,xmax,ymin,ymax,radius,xspacing,yspacing,xnum,ynum
0.00,276.00,12.00,188.00,-1.00,25.00,25.00,12,8
-0.259, -0.271, -0.277, -0.247, -0.212, -0.109, -0.104, -0.103, -0.149, -0.199, -0.314, -0.343
... -
The question is, what do you most need to correct for: the bed being uneven, or the height of the print head not being constant e.g. because the rods that it travels on sag under the weight?
If the rods don't sag at all but the bed is uneven, then the height map is correct as it is, because it is the probe that gets positioned at the probe points, not the nozzle.
If the bed is perfectly flat but the rods sag or are bent, then you are right, the height map is offset. But you can fix it by setting the XY offset of the probe to zero in G31 and adjusting the M557 grid definition to avoid probing off the edge of the bed.
If part of the problem is the bed and part is the rods, then the only solution I know of is to use the nozzle itself as the Z probe.
-
Everything looks like rod sag.
If you look at the code above I do remove any probe offset to get the probe to probe the two last columns.
Of this only the X=300 cannot be reached….
Also I needed to go beyond max to get it to use max... (301 instead of 300 for X)
So by removing the probe position with G31 I got one more probe column.
This gives me the questions
1. Why 301?
2. What does the duet do when printing in the columns that is not probed?
3. Is it ok to just change the start and end for X in the height map file to shift the file 25mm towards origo? -
1. Because your X offset is 25.2 and 275+25.2 = 300.2 which is greater than 300.
2. It extrapolates the average tilt of the bed.
3. Yes.
-
Ok… Then I understand.
Why not truncate? Seems like wasteful of data just for 0.2 mm...
Need to check but I'm quite sure it did not use 300 even if G31 x0 y0... Is this not removing the 25.2 offset?
As stated in https://www.duet3d.com/forum/thread.php?pid=34951#p34951 the last column is not used… Then in then next I got it probe at X=300 buy using 301...
Will check again.
Extrapolation, is that using the neighboring measure points or the complete bed?
Makes more and more sense now... One day I understand this to...
Thanks
-
Got the dual z motor working.
Sag problem of course is still there but wow… What a test print I got, seems like the printer just got to a new level.Get the best coverage of measure points if I clear the probe offset and navigate using the nozzle. And then move the table accordingly manually.
That's a minor issues that I now can handle..
But suddenly using the LCD to move the z axis 50 mm the bed moved very fast (really scary since I never seen it before) but worked super fine...
Wonder why I never seen this before. But thanks for a nice function.
So to wrap this up,
-
if you do not have the IR with surface mounted transmitter/receiver I strongly recommend that.
-
if you have more than one z axis motor and a driver to use I strongly recommend that to.
- An update to the wiki how to set up the z axis where it is clear that most of the z axis setup is copied automatically and that you do not need Z10:10 to set the speed
-
As recommended at E3D's forum I run the calibration multiple times and four seem like the magic number. Duet report 0.000 deviation and regardless how exact that is I don't expect better than that.
-
-
The speed at which the jog controls move the bed will be limited to the value you specify in the Z parameter of your M203 command in config.g. So if you are uncomfortable with it moving that fast, you can reduce it.
If it is moving faster than before, check that you haven't inadvertently increased the Z steps/mm.
-
Was just scary since I have not experienced it. Honestly it's super.
Yes, it might be a zero that was not there before… But I keep it since it seems like the bed compensation like a fast bed and with the duex it seems like it has no repeatability problems at that speed.