Probing issues
-
Hi,
I noticed the following when probing: When generating a height compensation mesh, the sensor does not show the reached depth at every point. This is represented by the P-value in the display and in the web gui. I have entered a P-value of 500. What is the background for this and how can I achieve a clean measurement at every point of the mesh? This worries me a lot, because this leads to massive problems with the first print layer. Because the determined heights are then obviously not correct. The same happens with quad gantry levelling.But there is also no error message that the measurement is not complete. For background understanding: I have a Voron 2.4 with 4 Z-belts and a bed aligning gantry. My probe used is a SuperPinda from Prusa (NPN, 5V, 3 mm trigger depth). Mainboard: D3 6HC with RRF3.2
M558 K0 P5 C"io4.in" H3 F150 T18000 A5 S0.01 B0 R0.2 G31 P500 X0 Y25 Z0.845
my mesh routine:
; Heat the bed to 110C M291 P"Heating up the bed..." R"Probing New Bed Mesh" T5 M190 S110 ; Set the hotend to 270C M291 P"Heating up the hotend..." R"Bed Mesh" T5 G10 P0 S260 M116 ; ignore current heightmap M561 ; Level the gantry again while everything is hot M291 P"QGL while everything is hot..." R"Bed Mesh" T5 G32 M98 P"/macros/print_scripts/do_nozzle_wipe.g" M98 P"/macros/print_scripts/do_nozzle_wipe.g" ; Probe a new bed mesh! M291 P"Probing now!" R"Bed Mesh" T5 ;M98 P"/macros/Mesh/mesh_121_points.g" ;M98 P"/macros/Mesh/mesh_81_points.g" M98 P"/macros/Mesh/mesh_49_points.g" ;M98 P"/macros/Mesh/mesh_36_points.g" ;M98 P"/macros/Mesh/mesh_25_points.g" ;M98 P"/macros/Mesh/mesh_16_points.g" M98 P"/macros/print_scripts/goto_bed_center_probe.g" G1 Z5 G30 G1 Z5 G29 S0 ; Done, move to center and turn off heat M98 P"/macros/print_scripts/goto_bed_center.g"
my QGL macro:
; bed.g ; Called to align the gantry to the bed plane via G32 ; Clear any bed transform M561 ; Turn off noisy Extruder motor M84 E ; Home all axes if !move.axes[0].homed || !move.axes[1].homed echo "Printer was not homed. Homing now." G28 ; Lower currents, speed & accel M98 P"/macros/print_scripts/speed_probing.g" ;M98 P"/macros/print_scripts/z_current_low.g" M98 P"/macros/print_scripts/xy_current_low.g" ; Probe the bed at 4 points multiple times while true if iterations = 7 abort "Too many auto calibration attempts" G30 P0 X10 Y28 Z-99999 ; probe near front left belt if result != 0 continue G30 P1 X10 Y315 Z-99999 ; probe near back left belt if result != 0 continue G30 P2 X340 Y315 Z-99999 ; probe near back right belt if result != 0 continue G30 P3 X340 Y28 Z-99999 S4 ; probe near front right belt if result != 0 continue if move.calibration.initial.deviation <= 0.007 break ; If there were too many errors or the deviation is too high - abort and notify user echo "Repeating calibration because deviation is too high (" ^ move.calibration.initial.deviation ^ "mm)" ; end loop echo "Auto calibration successful, deviation", move.calibration.initial.deviation ^ "mm" ; Restore high currents, speed & accel M98 P"/macros/print_scripts/speed_printing.g" M98 P"/macros/print_scripts/xy_current_high.g" ;M98 P"/macros/print_scripts/z_current_high.g" G28 Z M98 P"/macros/print_scripts/goto_bed_center.g" G1 Z5
my home.g:
; homez.g ; called to home the Z axis ; do nothing if XY is not homed yet if move.axes[0].homed && move.axes[1].homed G91 ; relative positioning G1 H2 Z10 F6000 ; lift Z relative to current position G90 ; absolute positioning M98 P"/macros/print_scripts/speed_probing.g"; Setup low speed & accel ; Home Z microswitch M98 P"/macros/print_scripts/goto_z_switch.g" G1 H1 Z-600 F360 ; move Z down until the endstop is triggered G1 Z4 F1800 ; go back a few mm G1 H1 Z-600 F80 ; move slowly to Z axis endstop once more (second pass) G92 Z-0.45; <-- using a Z-microswitch; height difference from the switch to the plate surface G1 Z10 M98 P"/macros/print_scripts/speed_printing.g"; Restore normal speed & accel M98 P"/macros/print_scripts/goto_bed_center.g"
Thank you for your help again,
Pierre -
First I do a homing of all axes. Then a quad gantry levelling when everything is heated. But the distortion due to heating will probably not always be the same either. That's why I make a new 49-points mesh before each printout. I initiate this with a G30. Only the values there are very fluctuating, by up to 0.2 mm. Therefore, it occasionally happens that the initial height is not correct when printing and the nozzle rams into the bed or is too high. But as I understand it, the measurement should be stable. Even my Prusa, which was worlds cheaper, does this without a problem.
Also the PINDA is one of the most accurate inductive sensors on the market. I am getting desperate as I have tested and tried a lot. Even the use of a BLtouch has not really led to success. If things don't get better, I will have to switch to SKR boards and Klipper.
The printer is aligned well. The prints, as long as they have a small footprint, are perfect. No line distortion or anything else that might indicate that the linear rails are out of alignment or there might be distortion in the gantry area.
-
For me the G30 S-3 before a mesh bed leveling seems more logical than a simple G30... The G30 depends on the trigger height set in config.g. But this could vary with the increasing temperature of the heat bed. So it would be better to have the actual height difference between the sensor and the bed. Or am I wrong?
Right now I have a trigger height in G31 from 2 mm. Does it makes a difference, when I set it to 0.5 or 0 mm? Then the sensor maybe should sense at every probing point... -
@medicusdkfz said in Probing issues:
For me the G30 S-3 before a mesh bed leveling seems more logical than a simple G30
G30 S-3 assumes the current Z position value is correct and can be used to determine how far the probe moved when it was triggered.
You want to use G30 to set the Z=0 datum - which assumes the Z trigger height value in G31 is correct.
Frederick
-
@fcwilt But this doesn't solve, that the trigger signal isn't shown in the right way... And the G30 S-3 have to have the same distance all over the bed after a mesh or at the gantry level probing points. But that isn't so...
-
@medicusdkfz said in Probing issues:
But this doesn't solve, that the trigger signal isn't shown in the right way
I don't know what you mean.
And the G30 S-3 have to have the same distance all over the bed after a mesh or at the gantry level probing points. But that isn't so...
Again I don't know what you mean.
Using G30 to set the Z=0 datum is only done at one XY position and always at the same position.
I use the center of the bed as that position.
You need to set the Z=0 datum before...
- creating the height map for mesh compensation using G29
- loading an existing height map previously created using G29
You need to set the Z=0 datum after...
- using the manual bed leveling assistant (if you do that)
- using the auto bed leveling feature (if you do that)
-
@fcwilt I also do this. You can see it in my code snippets above...But sometimes you can see a trigger value of P=1000 in the web gui (with a red background) or on the display and sometimes not. And for my opinion it has to sense always - of course with a small difference, but it has to sense... That's my problem. I don't trust the hardware... And I've tried it with different z-values in the G31 from -0.1 up to 2 mm...
-
@medicusdkfz said in Probing issues:
@fcwilt I also do this. You can see it in my code snippets above...But sometimes you can see a trigger value of P=1000 in the web gui (with a red background) or on the display and sometimes not. And for my opinion it has to sense always - of course with a small difference, but it has to sense... That's my problem. I don't trust the hardware... And I've tried it with different z-values in the G31 from -0.1 up to 2 mm...
But using that G30 S-3 changes the Z trigger height setting in G31 meaning the result of the subsequent G30 will be wrong.
Also I'm not sure why you find you have to run have that conditional code in your bed.g file. My bed.g simply probes the bed near the locations of each of the three Z steppers and I invoke bed.g twice with two G32. That always obtains accurate leveling.
-
I suppose I still have a thinking error when calibrating the Z height in G31. So far I have followed the instructions in the wiki. I have done a homing of all axes, then a quad gantry levelling and a G28 Z again.
All this at 110 degrees bed temperature and heated the nozzle to 260 degrees. Then I moved the nozzle to the center of the bed and lowered it to the paper surface so that the paper could still be moved with some resistance. Then followed a G92 Z0 and several G1 Z5 and G30 S-1 commands.
The determined value was then entered in config.g as Z-value at G31.
But actually, after G92 Z0, I should have moved the inductive sensor over the former nozzle position in the middle of the bed, right? I have an offset Y-position from nozzle to sensor of 25 mm....
Of course, it would be best if the sensor position would match the nozzle position. This would mean that I get reliable values only from Y > 25, because I can drive with my nozzle only to Y=0 but not into the minus... -
... and now I get the error again and again: "Warning: the height map has a substantial Z offset. Suggest use Z-probe to establish Z=0 datum, then re-probe the mesh."
To fix the mesh bed levelling is getting me me mad...The papertest with G28 Z (z microswitch) is ok!
-
You seem to be on the right track.
Yes you want to probe the spot where you touched the nozzle to the bed.
I always use the center of the bed for both of those operations.
Of course after you determine the correct value for the Z trigger height parameter for the G31 you have to be sure that the G31 command gets executed.
The probe X and/or Y offsets will limit where you can move the probe to as you near the edges of the bed - that's perfectly normal.
Frederick
-
@medicusdkfz said in Probing issues:
... and now I get the error again and again: "Warning: the height map has a substantial Z offset. Suggest use Z-probe to establish Z=0 datum, then re-probe the mesh."
To fix the mesh bed levelling is getting me me mad...The papertest with G28 Z (z microswitch) is ok!
So you do the equivalent of...
- move to Z=5
- move the nozzle to the center of the bed
- jog Z so to just touch the nozzle to the bed
- execute G92 Z0 to establish the Z=0 position
- move to Z=5
- move the probe to the center of the bed
- execute G30 S-1 to determine the probe trigger height
- enter that value into G31 as the Z trigger height parameter
- execute the G31 command with the new parameter (however you do that)
Now at that point to verify that all is working as it should be I...
- move to Z=5
- execute G30 to set the Z=0 datum using the new G31 Z trigger height parameter
- move to Z=5
- move the nozzle to the center of the bed
- move to Z=1 and use a 1mm thickness gauge to verify the gap (or move to Z=0 and use paper)
All should be good.
Now to make all that easier I have created a few macros to save time and keystrokes.
Frederick
-
That all is logic and clear to me and is working right now. But when I perform the G30 and perform a mesh bed levelling (G29 S0) I get this warning...
-
@medicusdkfz said in Probing issues:
That all is logic and clear to me and is working right now. But when I perform the G30 and perform a mesh bed levelling (G29 S0) I get this warning...
You need to go back and do the G30 with G29 to create a new height map.
Then the G30 with G29 S0 should load the height map without issue.
Frederick
-
Sorry, that is exactly what I have done (line 32 in my mesh.g)... And than I get this warning!
But thank you for your help!
-
@medicusdkfz said in Probing issues:
Sorry, that is exactly what I have done (line 32 in my mesh.g)... And than I get this warning!
I cannot find where you execute G30 after leveling the gantry but before creating the height map.
In the bed.g file I see where you execute G28 Z but in the homez.g file I see that you are homing to an end stop switch but I don't see G30.
Frederick
-
In my mesh macro you will find in line 15 a G32 command and after that before the G29 S0 the G30...
-
@medicusdkfz said in Probing issues:
In my mesh macro you will find in line 15 a G32 command and after that before the G29 S0 the G30...
Yes I see that but you also have to do a G30 BEFORE creating the height map as well as before loading a height map.
Also remember that you don't need to load the height map after just creating it - the height map remains loaded after creation until something else unloads it.
Frederick
-
I have done all this, but this doesn't explain the warning... I go a step further and perform with every print a mesh. I know, that's an overkill, but I suppose, that the thermal expansion is not consistent. But again: I don't understand the warning...
@medicusdkfz said in Probing issues:
... and now I get the error again and again: "Warning: the height map has a substantial Z offset. Suggest use Z-probe to establish Z=0 datum, then re-probe the mesh."
To fix the mesh bed levelling is getting me me mad...The papertest with G28 Z (z microswitch) is ok!
-
Is there any perspective of help here? If it has a professional service, I would also pay for it... The issue is important to me and I would like to get it solved!