[3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh
-
Hello,
I am running an IDEX 3D-printer with a klicky as the Z-probe and two toolheads one on the XY axis and the other one on the UY axis.
I have three issues :
-
The first one is that during the G29 calibration the machine will sometimes fail to detect the "status change" of the Z-probe and will go all the way down breaking the Z-probe before generating a "Error: G29: Probe was not triggered during probing move" message.
I have tried increasing the Z lift to 0.5mm in between two probes without success. H2:0.25 => H2:0.5
I also tried to increase the recovery time to 0.5s thinking the Z-probe "status" was not updated in time. R0.0 => R0.5 -
The second one is that the XY mesh calibration is only applied to the Left toolhead (the one connected to the X motor).
Is there a way to apply it to the U axis without having to run the mesh calibration twice? -
The third issue is that while the mesh calibration is almost running as expected when the G29 is running on the left toolhead. When I try to run the mesh calibration with the right one (the one using the U axis) the mesh is advancing along the Y axis as expected but it does not advances along the U axis, the toolhead stays at the last position the U axis was moved to before starting the G29 command and is simply going back and forth.
I have tested every release between 3.5.4 and 3.6.0-rc2 and it seems this is a new issue to 3.6.0-rc2:- 3.5.4 is moving the toolhead diagonally (U and Y are moving)
- 3.6.0-beta.3 - 3.6.0-rc1 is running fine
- 3.6.0-rc2 is not moving along U
extract from the config.g file
[...] ;Kliky L M558 P8 C"10.io0,in" H2:0.25 F1200:120 T18000 K1 R0.0 A15 S0.005 ; set Z probe type to bltouch and the dive height + speeds (the forum thinks this is an URL hence the commas) G31 P500 X42.00 Y0.00 Z-25.000 K1 ; set Z probe trigger value, offset and trigger height M556 S50 X0 Y0 Z0 U0 ; set orthogonal axis compensation parameters M557 X0:300 Y0:250 S50 ; define mesh grid ;Kliky R M558 P8 C"11.io0,in" H2:0.25 F1200:120 T18000 K1 R0.0 A15 S0.005 ; set Z probe type to bltouch and the dive height + speeds (the forum thinks this is an URL hence the commas) G31 P500 U-42.00 Y0.00 Z-25.000 K1 ; set Z probe trigger value, offset and trigger height M556 S50 X0 Y0 Z0 U0 ; set orthogonal axis compensation parameters ;M557 U0:300 Y0:250 S50 ; define mesh grid [...]
; run mesh.g
; Mesh compensation T-1 M290 R0 X0 Y0 Z0 U0 ; clear babystepping G28 ; Home all towers ;pickup the klicky M98 P"0:/sys/pickupprobe.g" M558 F120 K1 ; Reduce probing speed to prevent scares M556 S50 X0 Y0 Z0 U0 ; set orthogonal axis compensation parameters M557 U0:300 Y0:250 S25:30 ; define mesh grid G1 Z5 F1200 ; Approach tool - BL Touch G1 U-42 Y0 F15000 G29 S0 K1 ; Proceed mesh compensation by probing, saving heightmap.csv correction map file and displaying the matrix if result != 0 ; If the Mesh failed abort ; cancel the calibration process G29 S1 ; Activate meshgrid compensation G29 S3 P"0:/sys/heightmap_U.csv" ; Save meshgrid U M376 H{max(5,(move.compensation.liveGrid.deviations.max-move.compensation.liveGrid.deviations.min)*20)} ; Set the mesh bed compensation taper to 10% of a layer height. ;drop M98 P"0:/sys/dropprobe.g" G28 ; Home all towers
Board Name:
Duet3-6HC
Toolboard1LC
Firmware Version:MB6HC: 3.6.0-rc.2 ( 2025-03-31 12:17:13)
Toolboard1LC: 3.6.0-rc.2 (2025-03-31 12:22:41)
DWC Version: 3.6.0-rc.1
Raspberry Pi: No -
-
Downgrading the Toolboard1LC firmware to the version 3.6.0-rc.1 (2025-02-28 15:03:36) seems to have solved the first issue.
Even increasing the probing speed does not seems to be able to reproduce the issue with the old firmware. -
@tcamguil said in [3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh:
;Kliky L M558 P8 C"10.io0.in" H2:0.25 F1200:120 T18000 K1 R0.0 A15 S0.005 ; set Z probe type to bltouch and the dive height + speeds G31 P500 X42.00 Y0.00 Z-25.000 K1 ; set Z probe trigger value, offset and trigger height ... ;Kliky R M558 P8 C"11.io0,in" H2:0.25 F1200:120 T18000 K1 R0.0 A15 S0.005 ; set Z probe type to bltouch and the dive height + speeds
Do you have one Klicky probe, or two? You seem to be defining two, on different IO inputs. Or is it the same Klicky, but it depends which tool head picks it up?
You have K1 set as the probe number for both probes, so most likely only one of them is actually being configured; the second effectively overwrites the first, so when the 1st toolhead (using the CAN '10' board) picks it up, it's looking on the wrong input for the probe response. Same for G31. Send M558 K# to check what probes are defined. Use a different K number for each probe. I don't know which probe number you are using in your 'pickupprobe.g' etc macros, but you could pass a parameter to the macro based on the tool number.
As far as I'm aware, the mesh should be applied to both tools. Please post your full config.g, maybe it's a config issue.
There is an issue running mesh probing on the U axis, it has been reported before, and your third issue sounds similar to this: https://forum.duet3d.com/topic/37165/issue-with-szp-on-secondary-idex-toolhead
Ian
-
@droftarts said in [3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh:
Do you have one Klicky probe, or two? You seem to be defining two, on different IO inputs. Or is it the same Klicky, but it depends which tool head picks it up?
You have K1 set as the probe number for both probes, [...]
I have one Klicky probe that can be loaded by both heads.
I was playing with the macros before posting here and forgot to change back the first probe to K0 but yes both probes are declared. So as far as the Duet is concerned it has two probes, K0 is on T0 (CAN '10' board on the X motor) and K1 is on T1 (CAN '11' board on the U motor).As far as I'm aware, the mesh should be applied to both tools. Please post your full config.g, maybe it's a config issue.
After experimenting with the mesh and both toolheads I realized that the mesh is being applied to both tools as expected. The mesh XY simply does not affect raw U moves which is the expected result. So I think this solves my second issue and may render my third issue moot.
There is an issue running mesh probing on the U axis, it has been reported before, and your third issue sounds similar to this: https://forum.duet3d.com/topic/37165/issue-with-szp-on-secondary-idex-toolhead
I also noticed that the mesh is probed along Y first then U (in every version of RRF 3.6) only in RRF 3.6.0-rc2 does the U axis not move at the end of each row.
For example, if I run the 3 commands below U moves to the center of the buildplate (U150, Y125), to the front (U150, Y0), then to the back (U150, Y250) where it probes twice (performing one probing move from Z5 and 2-3 probes from Z0.5 each time) and finally to the front again (U150, Y0) instead of probing each corner once.
M557 U0:300 Y0:250 P2 ; define mesh grid G1 U150 Y125 F15000 ; Move to the center G29 S0 K1 ; Proceed mesh compensation
But the resulting heightmap is "correct" here is the heightmap.csv file generated
RepRapFirmware height map file v2 generated at 2025-04-08 11:22, min error -0.041, max error 0.001, mean -0.020, deviation 0.020 axis0,axis1,min0,max0,min1,max1,radius,spacing0,spacing1,num0,num1 Y,U,0.00,250.00,0.00,300.00,-1.00,249.97,299.97,2,2 -0.038, 0.001 -0.041, -0.000
-
@tcamguil Thanks for your response. I've raised a github issue, and @dc42 is looking into it.
https://github.com/Duet3D/RepRapFirmware/issues/1105Ian
-
@droftarts, I have quickly tested a few things with the following handmade heightmap.
heightmap_X.csv
RepRapFirmware height map file v2 generated at 2025-04-08 11:22, min error -0.041, max error 0.001, mean -0.020, deviation 0.020 axis0,axis1,min0,max0,min1,max1,radius,spacing0,spacing1,num0,num1 X,Y,0.00,250.00,0.00,300.00,-1.00,249.97,299.97,2,2 -4.000, 4.000 -4.000, 4.000
heightmap_U.csv (the points are rotated to match the probing order)
RepRapFirmware height map file v2 generated at 2025-04-08 11:22, min error -0.041, max error 0.001, mean -0.020, deviation 0.020 axis0,axis1,min0,max0,min1,max1,radius,spacing0,spacing1,num0,num1 Y,U,0.00,250.00,0.00,300.00,-1.00,249.97,299.97,2,2 4.000, 4.000 -4.000, -4.000
here are my results
With heightmap_X active,
- If no tool is active the heightmap is applied on G1 moves using the G1 Xaaa command but not the G1 Uaaa command.
- If T0 (connected to X motor) is active the heightmap is applied on G1 moves using the G1 Xaaa command but not the G1 Uaaa command.
- If T1 (connected to U motor) is active the heightmap is applied on moves using the G1 Xaaa command but not the G1 Uaaa command.
With heightmap_U active,
- If no tool is active the heightmap is applied on G1 moves using the G1 Uaaa command but not the G1 Xaaa command.
- If T0 (connected to X motor) is active the heightmap is applied on G1 moves using the G1 Uaaa command but not the G1 Xaaa command.
- If T1 (connected to U motor) is active the heightmap is applied on both moves using the G1 Uaaa command and the G1 Xaaa command.
I hope this can help you diagnose the issue.
On the other hand do you have an idea about what could be causing the toolboard to fail to detect the status change of the klicky thus attempting to push it through the bed?
@tcamguil said in [3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh:
The first one is that during the G29 calibration the machine will sometimes fail to detect the "status change" of the Z-probe and will go all the way down breaking the Z-probe before generating a "Error: G29: Probe was not triggered during probing move" message.
I have tried increasing the Z lift to 0.5mm in between two probes without success. H2:0.25 => H2:0.5
I also tried to increase the recovery time to 0.5s thinking the Z-probe "status" was not updated in time. R0.0 => R0.5 -
@tcamguil said in [3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh:
On the other hand do you have an idea about what could be causing the toolboard to fail to detect the status change of the klicky thus attempting to push it through the bed?
I'd guess it's looking for a response from the wrong probe. Are you using G29 with a K parameter? Also check that any deployprobe#.g, retractprobe#.g and tool change macros (tpre#.g, tpost#.g and tfree#.g) are all numbered appropriately for the correct tool and probe. If you leave off the number (the #), that macro will be running for ALL probes/tools.
For the heightmaps, @dc42 is looking into this. However, to me it looks like the order of the axes are incorrect when doing a mesh bed on the tool with U mapped to X, because it is listing the Y axis before U, when it should be U first. Can you post your full config.g, so I can see how you've set up your tools?
I also think the mesh is being applied correctly (though not in the correct order), ie a mesh that has been made on the XY axes affects the XY axes but not U, and a mesh made on the UY axes affects the X when U is mapped to it, and UY axes. You generally wouldn't command a U axis move during a job, so this seems sensible.
Ian
-
@droftarts
After hours of trying to debug this issue here are the three files left on my printer
@droftarts said in [3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh:
I'd guess it's looking for a response from the wrong probe. Are you using G29 with a K parameter? Also check that any deployprobe#.g, retractprobe#.g and tool change macros (tpre#.g, tpost#.g and tfree#.g) are all numbered appropriately for the correct tool and probe. If you leave off the number (the #), that macro will be running for ALL probes/tools.
G29 is using K1. I don't use / don't like using the deployprobe/retractprobe pair as it has a tendency to pickup/drop the probe too frequently when running a full machine calibration. tfree-tpre-tpost macros are all correctly numbered
@droftarts said in [3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh:
For the heightmaps, @dc42 is looking into this. However, to me it looks like the order of the axes are incorrect when doing a mesh bed on the tool with U mapped to X, because it is listing the Y axis before U, when it should be U first. Can you post your full config.g, so I can see how you've set up your tools?
For the heightmap I suppose the machine is configuring the mesh in the order of the axes in the firmware (ie: XYZUVWABC...) so it will select Y then U when calibrating, I may be wrong here but it seems logical to me maybe the firmware is selecting Y as both the first axis and the default Y axis (I could not quite understand how the mesh is working under the hood).
@droftarts said in [3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh:
I also think the mesh is being applied correctly (though not in the correct order), ie a mesh that has been made on the XY axes affects the XY axes but not U, and a mesh made on the UY axes affects the X when U is mapped to it, and UY axes. You generally wouldn't command a U axis move during a job, so this seems sensible.
That is also my point of view I think the Heightmap is correctly applied, Both toolheads were applying the compensation while the XY heightmap was active.
The fact that the Heightmap is rotated when displayed on the DWC is an old issue as is the points being meshed and saved in the "wrong" order. It was for me just a quirk of the Firmware (the spacing has to be declared backwards Y then U).