Mesh bed leveling on 1.18 (and 1.20+1)
-
Hm whats this:
RepRapFirmware height map file v1, mean error -0.15, deviation 0.07
xmin,xmax,ymin,ymax,radius,spacing,xnum,ynum
50.00,300.00,25.00,175.00,-1.00,25.00,11,7
-0.215, -0.273, -0.190, -0.225, -0.220, -0.190, -0.213, -0.243, -0.235, -0.258, 0
-0.273, -0.248, -0.193, -0.148, -0.108, -0.105, -0.082, -0.078, -0.153, -0.143, 0
-0.170, -0.183, -0.160, -0.130, -0.132, -0.043, -0.085, -0.075, -0.110, -0.070, 0
-0.173, -0.100, -0.038, -0.035, 0.005, -0.013, 0.025, -0.028, -0.178, -0.092, 0
-0.163, -0.148, -0.143, -0.118, -0.075, -0.035, -0.072, -0.055, -0.050, -0.072, 0
-0.205, -0.197, -0.150, -0.143, -0.110, -0.143, -0.163, -0.163, -0.118, -0.130, 0
-0.248, -0.335, -0.280, -0.228, -0.178, -0.178, -0.203, -0.190, -0.143, -0.213, 0Why column of 0 suddenly?
Was just to test to swap again. since as always the left side over compensates…
-
So the X and Y offsets get changed to first zero, and then both to -10?
Do you have any tool change files, if so, what do they contain?
-
on the duet?
I use the script above…
Have not updated any other scripts... there are some Txxx I have never looked into... There is nothing in these files. My tool change is done in the slicer. Not super good documentation in the wiki... https://duet3d.com/w2/index.php?title=Tool_change_macros&action=edit&redlink=1
Any ideas as to what the column of zeros mean?
And sorry to report that the mirroring is still the best…
-
Made some test today. And I can verify that there is no mirroring in the firmware…
I taped down a piece of paper on the right side and it was "found" by the leveling where it should be...
Then re-did it on the left and it appeared...So the magic now it WHY do I get better firs layers when mirroring...
The paper used is 0.36mm thick... but the duet says it is approximately 1mm.
Here is the table WITH paper on the left:
RepRapFirmware height map file v1 generated at 2017-03-29 20:35, mean error 0.17, deviation 0.42
xmin,xmax,ymin,ymax,radius,spacing,xnum,ynum
50.00,300.00,25.00,175.00,-1.00,25.00,11,7
0.565, 0.702, 0.717, -0.158, -0.080, -0.035, -0.010, -0.050, -0.070, -0.140, 0
0.857, 1.040, 1.050, -0.045, -0.015, -0.030, -0.020, -0.075, -0.140, -0.115, 0
0.915, 1.182, 1.155, -0.082, -0.023, 0.045, 0.007, -0.020, -0.048, -0.058, 0
0.885, 1.003, 0.892, -0.045, 0.017, -0.010, 0.007, -0.035, -0.040, -0.080, 0
0.702, 0.837, 0.618, -0.155, -0.080, -0.030, -0.038, -0.010, -0.055, -0.072, 0
0.587, 0.620, 0.520, -0.193, -0.130, -0.143, -0.138, -0.125, -0.110, -0.122, 0
0.240, 0.400, 0.415, -0.020, -0.230, -0.200, -0.240, -0.268, -0.210, -0.288, 0And no paper:
RepRapFirmware height map file v1 generated at 2017-03-29 20:54, mean error -0.12, 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.190, -0.278, -0.173, -0.130, -0.048, 0.003, 0.020, -0.033, -0.058, -0.155, 0
-0.215, -0.125, -0.060, -0.030, -0.018, -0.045, -0.035, -0.078, -0.115, -0.078, 0
-0.235, -0.160, -0.110, -0.053, 0.003, 0.050, 0.007, -0.033, -0.058, -0.053, 0
-0.210, -0.122, -0.045, -0.040, 0.005, -0.038, -0.007, -0.035, -0.018, -0.055, 0
-0.308, -0.218, -0.163, -0.132, -0.038, 0.000, -0.030, -0.010, -0.070, -0.085, 0
-0.338, -0.225, -0.230, -0.175, -0.112, -0.112, -0.108, -0.115, -0.112, -0.138, 0
-0.353, -0.408, -0.340, -0.270, -0.210, -0.197, -0.235, -0.285, -0.210, -0.268, 0 -
The column of zeros means that those points were within the probing area you requested, but not reachable by the probe, taking into account the probe offset.
Except on an IDEX machine, it shouldn't make any difference which tool you have selected during probing.
Did you check the probe trigger height on both sides of the bed as I suggested earlier?
-
Re-read your suggestion and I THINK I understand what I need to do… But I think the text above is this... I taped a piece of paper on the bed and yes it was seen by the probe... but the compensation seem extreme.
Secondly: the Z-probe that is sold on the duet homepage... is that better or equal to the one that I have on the E3D bigbox?
Starting to wonder if there is something wrong here...
Also is there a method I can test the position of the probe? Do not trust the duet to do what you say placing the probe on the bed...
Have had it pressing into the nozzles as hard as it can due to bad placement... would like to see the end positions and approve them before letting it do it's stuff.
I'll post some pictures showing the first and last probe position and then maybe we can try to figure out how to alter my script to cover the entire bed.
Row of zeros... So... if my "probe" center is between the nozzles and they are 38mm and the probe is 44mm from the center... 44 - (38/2) = 25 mm then I should probe 0 to 275 to not get a row of zeros? Correct? Or should to be 300?
Why can't I get more X then 240?
Command I run is: M557 X0:300 Y12:188 S20Also can someone explain why it is more or less impossible to understand how to get the calibration files for the M556 command? At least I would have expected to find a link in the Wiki… would have added it if I was able to find it on the internet... Thingiverse search function do not find ANYTHING at all... google find only test describing how to use it... the reprap SD card has a file but when importing it to my slicer nothing appears... Just was surprised at how hard is seems to be to get calibration done...
-
I've added a link to the M556 calibration STLs at https://duet3d.com/wiki/G-code#M556:_Axis_compensation.
What exactly do you mean by "test the position of the probe"?
The mini IR height sensor we sell is an improved design compared to the one that shipped with the BigBox, however if you use it with a transparent bed then the trigger height is still somewhat affected by any coatings on the surface, and it still needs a black surface below the transparent material to give the best results.
Regarding the area to probe, where have you defined the head reference point, from which the probe and nozzle offsets are measured? Have you set up your M208 and M208 S1 commands to define the range of positions that the head reference point can reach?
-
Test I mean to make a dry run to make sure the probe is where it should be… like a command that places the probe at the extremes (for a square bed goto corner 1 then wait, either time or user input then next util all corners has been visited. But no z calibration done. So I have a chance to verify that the automatic bed leveling always has a surface that is relevant to measure from...
I have a black PEI surface so there should be no problem for that to see the surface then... just need to check if they are interchangeable or if I need to print other mount for it. Just having hard time to trust my printer and if that can be fixed by buying a small circuit then that is not to much...
My M208:
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)This to allow tool T0 to move -38mm so that T1 can hit X0Y0... But now when I look at it... is the bed 338 to let T0 reach X300Y0?
On your recommendation I have his in the config-override.g:
G31 T1 P500 X-44.2 Y0.0 Z2.20placing the "center" between the nozzles.
Followed the link... it there a trick how to download? simplify3D do not like these stl files. (I right clicked and chose "save file as" and then tried to open it in simplfy3D...) Says the file is very small and recommend I try in mm instead of inches...
And I just found that there is... had to view the RAW file and then save the page... not very intuitive... Need to learn more about GITHUB...
-
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.