z calibration is different than z print height
-
I have followed the mesh bed compensation instructions found here; https://duet3d.dozuki.com/Wiki/Using_mesh_bed_compensation
Z height is perfect when I run the test.
However, when I print, I have to baby step up/down as much as 1.8mmSometimes I have to step up, other times down.
I also have to adjust subsequent layers.
I must have some setting incorrect, but I can't figure out which one that would be.
Printer: Ender 6, Duet 3 mini 5+ wifi, Bondtech DDX3 with Mosquito hot end
Slicer: Cura 4.11
Here's all the pertinent files that I can think of.
-
Hi,
I've re-posted your files using the </> tag - this make it easier on everyone as there is no need to download any files.
; Configuration file for Duet 3 Mini 5+ (firmware version 3.3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.2 on Tue Sep 21 2021 07:56:15 GMT-0700 (Pacific Daylight Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Ender 6" ; set printer name M669 K1 ; select CoreXY mode M918 P1 E4 F2000000 ; configure direct-connect display ; Network M551 P"mddlewen" ; set password M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0.0 S0 ; physical drive 0.0 goes backwards M569 P0.1 S1 ; physical drive 0.1 goes forwards M569 P0.2 S0 ; physical drive 0.2 goes backwards M569 P0.3 S1 ; physical drive 0.3 goes forwards ;M584 X0.0 Y0.1 Z0.2 E0.3 ; set drive mapping M584 X0.0 Y0.1 Z0.2 E0.4 ; set drive mapping (drive 3 is throwing "short to ground error", so moved EXT to drive 4) ;M350 E256 I0 ; configure microstepping without interpolation M350 E256 I1 ; configure microstepping with interpolation M350 X16 Y16 Z16 I1 ; configure microstepping with interpolation ;M92 X80.00 Y80.00 Z400.00 E420.00 ; set steps per mm M92 X80.00 Y80.00 Z400.00 E6778.25 ; set steps per mm M566 X900.00 Y900.00 Z60.00 E120.00 ; set maximum instantaneous speed changes (mm/min) ;M203 X6000.00 Y6000.00 Z180.00 E1200.00 ; set maximum speeds (mm/min) original settings from RRF Config M203 X12000.00 Y12000.00 Z900.00 E2100.00 ; set maximum speeds (mm/min) X=200 mm/s, Y=200 mm/s, Z=60 mm/s, EXT=35 mm/s ;M201 X500.00 Y500.00 Z20.00 E250.00 ; set accelerations (mm/s^2) original settings from RRF Config M201 X1500.00 Y1500.00 Z500.00 E250.00 ; set accelerations (mm/s^2) M906 X800 Y800 Z800 E700 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z-2 S1 ; set axis minima M208 X251 Y251 Z400 S0 ; set axis maxima ; Endstops M574 X2 S1 P"io5.in" ; configure active-high endstop for high end on X via pin io5.in M574 Y2 S1 P"io6.in" ; configure active-high endstop for high end on Y via pin io6.in M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; Z-Probe ;M558 P5 C"^!io3.in" H3 F900 T12000 ; set Z probe type to switch and the dive height + speeds M558 P5 C"^!io3.in" H3 F900 T12000 ; set Z probe type P1 to IR PROBE, I1 Invert, Pin Cxx, dive height H3, F probe speed, T move speed ;G31 P25 X-32 Y0 Z2 ; set Z probe trigger value, offset and trigger height G31 P25 X-32 Y2 Z2.00 ; set Z probe trigger value, offset and trigger height ;M557 X15:215 Y15:195 S20 ; define mesh grid M557 X15:215 Y15:220 S40 ; define mesh grid ; Heaters M308 S0 P"temp0" Y"thermistor" T98801 B4185 ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 ; create BED HEATER output on out0 and map it to sensor 0 M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M307 H0 B0 R0.175 C905.2 D10.36 S1.00 V23.5 ; bed auto tune parameters M143 H0 S125 ; set temperature limit for heater 0 to 125C M308 S1 P"temp1" Y"thermistor" T100000 B4681 C6.478804e-8 ; configure sensor 1 as thermistor on pin temp1 M950 H1 C"out1" T1 ; create NOZZLE HEATER output on out1 and map it to sensor 1 ;M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M307 H1 B0 R2.678 C192.5:137.6 D5.65 S1.00 V23.8 ; hot end auto tune parameters M143 H1 S300 ; set temperature limit for heater 1 to 300C ; Fans M950 F0 C"out3" Q500 ; create PART COOLING fan 0 on pin out3 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"out5" Q500 ; create HOT END fan 1 on pin out5 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on M950 F2 C"out6" Q075 ; create MAIN BOARD fan 2 on pin out6 and set its frequency ;M106 P2 S0.5 H-1 ; set fan 2 value. Thermostatic control is turned off M106 P2 T45:65 H100:101:102 ; Sets up an electronics cooling fan that starts to turn on when the MCU temperature (virtual heater 100) reaches 45C and reaches full speed when the MCU temperature reaches 65C or if any TMC2660 drivers (virtual heaters 101 and 102) report that they are over-temperature. ; Tools ;M563 P0 D0 H1 F0 ; define tool 0 seems to be using PART COOLING fan M563 P0 S"Mosquito" D0 H1 F1 ; define tool 0 -- attempting to use only the HOT END fan, named "Mosquito" G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool (P) 0 active (S) temperature to 10C and standby (R) temperature to 0C ; Custom settings are not defined ; Miscellaneous M501 ; load saved parameters from non-volatile memory M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss ; from TH3D T0 ; Select tool 0 M501 ; Enable EEPROM support
; homeall.g ; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Sun Jul 11 2021 02:52:17 GMT-0700 (Pacific Daylight Time) ;G91 ; relative positioning ;G1 H2 Z5 F12000 ; lift Z relative to current position ;G1 H1 X255 Y255 F1200 ; move quickly to X or Y endstop and stop there (first pass) ;G1 H1 X255 ; home X axis ;G1 H1 Y255 ; home Y axis ;G1 X-5 Y-5 F12000 ; go back a few mm ;G1 H1 X255 F450 ; move slowly to X axis endstop once more (second pass) ;G1 H1 Y255 ; then move slowly to Y axis endstop ;G90 ; absolute positioning ;G1 X125 Y125 F12000 ; go to first bed probe point and home Z ;G30 ; home Z by probing the bed ; from TH3D G91 ; relative positioning G1 H2 Z5 F6000 ; lift Z relative to current position G1 H1 X-305 Y-305 F3000 ; move quickly to X and Y axis endstops and stop there (first pass) G1 H2 X5 Y5 F6000 ; go back a few mm G1 H1 X-305 Y-305 F1800 ; move slowly to X and Y axis endstops once more (second pass) G90 ; absolute positioning G1 X157 Y123 F6000 ; go to first bed probe point and home Z M558 F900 ; Home EZABL Fast 15mm/s G30 ; home Z by probing the bed M558 F450 ; Home EZABL Slow 7.5mm/s G30 ; home Z by probing the bed ; Uncomment the following lines to lift Z after probing G91 ; relative positioning G1 Z5 F200 ; lift Z relative to current position G90 ; absolute positioning
; homez.g ; called to home the Z axis ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Sun Jul 11 2021 02:52:17 GMT-0700 (Pacific Daylight Time) ;G91 ; set relative positioning ;G1 H2 Z5 F6000 ; lift Z 5mm relative to current position ;G90 ; set absolute positioning ;G1 X125 Y125 F3000 ; go to center of bed for first probe point ;G30 ; home Z by probing the bed ; from CNC Kitchen ;M558 F600 A1 ; Set probing speed to fast for the first pass. ;M558 F720 A3 ; Set probing speed to fast for the first pass. ;G30 ; Perform Z probing. ;G1 H0 Z2 F200 ; Lift Z axis to the 5mm position. ;M558 F200 A3 S-1 ; Set probing speed to slow for second pass, take 5 probes and yield the average. (original = F50) ;G30 ; Perform Z probing. ;G1 H0 Z5 F200 ; Lift Z axis to the 5mm position. (original = F100) ;M558 F200 A1 ; Set normal z-probe speed. ;M558 F720 A1 ; Set normal z-probe speed. ; from TH3D G91 ; relative positioning G1 H2 Z5 F6000 ; lift Z relative to current position G90 ; absolute positioning G1 X157 Y123 F6000 ; go to first bed probe point and home Z M558 F900 ; Home EZABL Fast 15mm/s G30 ; home Z by probing the bed M558 F450 ; Home EZABL Slow 7.5mm/s G30 ; home Z by probing the bed ; Uncomment the following lines to lift Z after probing G91 ; relative positioning G1 Z5 F200 ; lift Z relative to current position G90 ; absolute positioning
; bed.g ; called to perform automatic bed compensation via G32 ; ; generated by RepRapFirmware Configuration Tool v3.3.2 on Tue Sep 21 2021 07:56:14 GMT-0700 (Pacific Daylight Time) M561 ; clear any bed transform ;G29 ; probe the bed and enable compensation ; From CNC Kitchen G28 ; home ;M558 P1 F200 H2 T18000 A5 S0.003 ; P1 = smart IR, F=probing speed (original = F100), H2= dive height, T3600 = Travel & Z lift speed, A= # times to probe, S=Tolerance when probing multiple times, default 0.03mm M558 P1 F200 H2 T18000 A5 S0.003 ; P1 = smart IR, F=probing speed (original = F100), H2= dive height, T3600 = Travel & Z lift speed, A= # times to probe, S=Tolerance when probing multiple times, default 0.03mm ;G30 ; Single Z-Probe ; from config.g G31 P25 X-32 Y2 Z2.00 ; set Z probe trigger value (P25 per TH3d), offset and (Z0.70 trigger height for non-contact probe) ; generated by RepRapFirmware Configuration Tool v3.2.3 on Sun Jul 11 2021 02:52:17 GMT-0700 (Pacific Daylight Time) G29 S0 ; probe the bed and enable compensation ; From CNC Kitchen G1 X10 Y10 Z5 F18000 ; move to X10 Y10 Z10 F=speed
-
Just FYI.
You can simplify using the probe for homing by making use of this ability noted in the docs:
From RRF 3.3 you can provide two F parameters instead of one, where the second is lower than the first, for example F1000:500. When doing a plain G30 command, an additional probe will be done using the first speed to establish the approximate bed position, before one or more additional probes are done using the second speed. The first speed will not be used when probing at a defined point or when mesh bed probing.
Using two speeds in M558 F allows using just a single G30 to get the two speeds you are now doing in code.
Frederick
-
Typically you can configure your probe just once and use it for homing, bed leveling and mesh bed compensation.
I noticed in your bed.g file you re-configure the probe. Once you execute G32 the probe will take on the new configuration and likely remain that way until you re-boot the printer.
Is that what you really want to do?
You also are creating the height map in bed.g.
Typically that is not done as with current firmware (3.3 or newer) you use mesh.g (which you have to create) for that purpose.
In much the same way that G32 runs bed.g, G29 by itself will run mesh.g (assuming you have created it) and in mesh.g you have G29 S0 along with any other commands needed to correctly create the mesh.
By using bed.g and mesh.g as intneded the pull-down menu in the DWC will perform bed leveling or height map creation as expected.
Frederick
-
Thanks for reposting my files files using the </> tag.
Please let me know how to do that for future posts.
-
Thank you for the help.
I'm not sure I understand what you're saying.It sounds like I'm doing the mesh leveling 2x.
1x in bed.g
1x in config.gI do not have a mesh.g
If you don't mind, would you write up what my files should be?
bed.g
mesh.gFor reference, I have Cura run G29 mesh leveling for each print in the Start G-code.
-
@davidewen said in z calibration is different than z print height:
Thanks for reposting my files files using the </> tag.
Please let me know how to do that for future posts.
When you click on the </> icon some characters will be entered into you post
- 3 ` characters
- then the word undefined
- then 3 more ` characters
You copy-and-paste over the word undefined with the contents of whatever file you wish to post
Frederick
-
@davidewen said in z calibration is different than z print height:
It sounds like I'm doing the mesh leveling 2x.
1x in bed.g
1x in config.gNo you are simply configuring the Z probe once in config.g and then again (differently) in bed.g.
You are using the Z probe in:
- homeall.g via the two G30 commands
- homez.g via the two G30 commands
- bed.g indirectly via the G28 command (which invokes homeall.g) and via the G29 command
I do not have a mesh.g
Yes you have to create it.
If you don't mind, would you write up what my files should be?
bed.g
mesh.gBe glad to. Which of the these two Z probe configurations is correct:
From config.g
M558 P5 C"^!io3.in" H3 F900 T12000 G31 P25 X-32 Y2 Z2.00
From bed.g
M558 P1 F200 H2 T18000 A5 S0.003 G31 P25 X-32 Y2 Z2.00
For reference, I have Cura run G29 mesh leveling for each print in the Start G-code.
Understood.
In the interest of reducing confusion G29 is related to Mesh Bed Compensation while G32 is related to Manual Bed Leveling and Auto Bed Leveling.
Folks often refer to "mesh leveling" which can be confusing since it is using terms related to both G29 and G32.
Frederick
-
@fcwilt said in z calibration is different than z print height:
Be glad to. Which of the these two Z probe configurations is correct?
My understanding is in config.g the probe itself is defined. with the type "P5" and the pinout C"^!io3.in"
I think I missed part of the instructions from TH3D. The pin also needs to be inverted.
https://www.th3dstudio.com/hc/product-information/ezabl/advanced-setup/ezabl-duet-board-setup-information/So I'm going to say the config.g is correct.
M558 P5 I1 C"^!io3.in" H3 F900 T12000 G31 P25 X-32 Y2 Z2.00
I agree. The terminology with G29 & G32 is confusing and at the basic level seems to be the same thing. The more advanced users understand the difference, but for new & learning users, it is not so easy to clarify.
-
@davidewen said in z calibration is different than z print height:
I agree. The terminology with G29 & G32 is confusing and at the basic level seems to be the same thing. The more advanced users understand the difference, but for new & learning users, it is not so easy to clarify.
Confusion is common.
While to someone new to the firmware they may seem much the same they are actually totally different.
G32 is used for bed leveling, be it manual or automatic.
Bed leveling deals with getting the entire bed adjusted so that the hotend is perpendicular to the bed.
The correct term is "tramming" but "leveling" is in common use.
Manual adjustment is done using "thumb screws" which are turned by hand to raise/lower the bed at 3 or 4 points.
The 3 points will typically be near two corners of the bed (say left front and right front) and near the middle of the opposite edge of the bed (say the back edge).
Since 3 points define a plane it is fairly easy to make the adjustments to get the bed level.
The 4 points will typically be near the four corners of the bed. This is fairly common but it can be harder to level the bed.
Full automatic adjustment is done by having 3 Z steppers positioned similar to the 3 points above.
Automatic adjustment is likely more common among printers that move the bed up/down on the Z axis but it perhaps can be done on most any printer if desired.
The firmware uses the Z probe to determine how much each Z stepper needs to move to get the bed level.
Here is a link to a quick-and-dirty video I made of my 3 Z stepper printer leveling a badly out of level bed.
I will post some info about Mesh Bed Compensation later.
Frederick
-
@fcwilt said in z calibration is different than z print height:
I do not have a mesh.g
Yes you have to create it.
If you don't mind, would you write up what my files should be?
bed.g
mesh.gBe glad to
Frederick,
You mentioned that you would be willing to help with the code for my mesh.g and bed.gAre you still willing to do that?
Thanks,
David -
@davidewen said in z calibration is different than z print height:
You mentioned that you would be willing to help with the code for my mesh.g and bed.g
Are you still willing to do that?
Thanks,
DavidMost certainly.
But it's time for bed here. I will create and post them tomorrow.
Frederick
-
-
@davidewen said in z calibration is different than z print height:
Thanks Frederick. I look forward to your help.
David
I'm working on them now.
I'll post them when I'm done.
Frederick
-
-
@fcwilt said in z calibration is different than z print height:
Making progress.
At lunch now, shall return to work soon.
Frederick
Thank you so much!
-
@davidewen said in z calibration is different than z print height:
Thank you so much!
Does your printer have manual adjusters you can turn by hand to level the bed?
Frederick
-
@fcwilt said in z calibration is different than z print height:
@davidewen said in z calibration is different than z print height:
Thank you so much!
Does your printer have manual adjusters you can turn by hand to level the bed?
Frederick
Yes, but I have removed the springs and installed solid spacers.
Printer is an Ender 6 -
@davidewen said in z calibration is different than z print height:
Yes, but I have removed the springs and installed solid spacers.
Printer is an Ender 6So you can no longer adjust them?
Frederick
-
@fcwilt said in z calibration is different than z print height:
@davidewen said in z calibration is different than z print height:
Yes, but I have removed the springs and installed solid spacers.
Printer is an Ender 6So you can no longer adjust them?
Frederick
Correct.
I can reinstall them if I need to.