Delta Mesh Comp -- without G30?
-
This is asked every few years (probably by me because I can't remember the reason each time), but why is there a warning, on a delta printer, when "G29 S1" is used to load a mesh height map before G30 is used (when M665 and M666 are already executed?)
In particular, in my simplified point of view, RRF should be able to use the values in M665 and M666 to calculate anything needed to determine what "Z=0" is, so requiring a "G30" seems redundant.
Detail on why this matters to me:
On my printer, I rarely need to recalibrate unless my build surface changes or I lose power. When I do recalibrate, I first need to clean my nozzle (using cleaning filament that doesn't ooze) so any filament stuck on the nozzle doesn't impact the smart effector probe. After I calibrate, I typically send "M500" and then start G29. For some reason, if I don't clean my nozzle, the ooze does impact my calibration and I end up having to use negative babysteps.
The reason to ask this question, then, is that I have to recalibrate after a power loss because RRF doesn't like to reload the mesh height map from SDCard without previously having at least run G30. So, a simple flicker of power results in a somewhat long procedure of heating everything, ejecting filament, running cleaning filament, running G30, etc. (I know I don't have to run the full bed calibration, but once I've spent the time cleaning the nozzle, I might as well.)
Ideally, RRF would boot up, read M665/M666 parameters from config-override, and allow reading the mesh height map without a G30. At that point, I'd even be able to add "G29 S1" to my config.g (after M501.)
-
You need to set the Z=0 datum using G30 before creating the height map and before loading the height map.
That's just the way it is.
I would never load a height map in config.g.
I only load it in my print begin code and unload it in my print end code.
YMMV.
-
@garyd9 I think RRF will let you load the heightmap without a G30, it just gives you a warning about it. In most use cases this is quite valid! But a warning is just a warning, not an error...
I don't think you should/can apply the mesh comp until you've homed your printer though, which would be valid in all cases. It can't know what compensation to apply if it doesn't know where the nozzle is, so might mess things up.
-
I probably should have mentioned it in my original post, but I created this thread for @dc42 in response to this: https://forum.duet3d.com/post/230214
-
@garyd9 the reason is that if you have both a Z endstop switch (or, in the case of a delta, three endstop switches on the towers) that define(s) the Z height when homed, and a Z probe, then the difference between the Z position when the homing switch(es) are triggered and the Z position defined by the Z probe may not be stable with ambient temperature, hot end temperature, and bed temperature. In the case of a delta printer, the hot end, diagonal rods, and towers will usually all have different coefficients of thermal expansion. So, depending on the temperatures, the homed height may not be exactly the same as was specified in the M665 command.
That's why when you load a height map using G29 S1, if the Z=0 position was defined by endstop switches instead of by the Z probe, that warning is generated. In the case of resurrecting a print, it's best to load the height map and ignore the warning. If you are using bed compensation taper and the height so far is greater than the taper height, then it doesn't matter whether you load it or not.
-
So, if the temperatures are stabilized, can the warning be safely ignored?
-
@garyd9 said in Delta Mesh Comp -- without G30?:
So, if the temperatures are stabilized, can the warning be safely ignored?
Yes, if the temperatures are the same as when the height map was generated, the endstop switches haven't moved, and there have been no changes that might have affected the nozzle height relative to the effector.
-
@garyd9 said in Delta Mesh Comp -- without G30?:
So, if the temperatures are stabilized, can the warning be safely ignored?
Is there a reason you don't want to perform the G30?
Thanks.
Frederick
-
@fcwilt said in Delta Mesh Comp -- without G30?:
Is there a reason you don't want to perform the G30?
Yes. I've found that running a full bed.g without properly cleaning my nozzle sometimes results in a bad calibration due to ooze, etc. (and I've tried various mechanisms to get around that such as heating to only 130C without much luck. There's always some tiny amount of filament stuck to the tip of the nozzle or oozing out.)
To ensure a perfect calibration, I make sure all filament is pulled, and I extrude some cleaning filament (that doesn't ooze after being pulled), brush the nozzle with a brass brush (and/or a piece of leather) and then run bed.g via G30.
This works 100% of the time (unless my smart effector decides to lose it's sensitivity setting override and I didn't notice) but it's a somewhat annoying process when the filament I want to print with is already loaded.
On a side note, I've always been jealous of people who seem to get good calibrations from nozzle probing when they have filament loaded.
-
@garyd9 said in Delta Mesh Comp -- without G30?:
brush (and/or a piece of leather) and then run bed.g via G30.
I don't understand.
G32 runs bed.g.
G29 runs mesh.g.
The current intent is for G32 to be used for auto/manual bed leveling and G29 for height map creation.
G30 is used in bed.g and mesh.g but I am not aware of any use of G30 to run any .g file.
I don't create the height map very often and, as mentioned, I load the existing height map at the start of a print and unload it at the end.
Are you creating a height map at the start of every print?
Thanks.
-
@fcwilt Sorry - I mistyped. " and then run bed.g via G30." should be " and then run bed.g via G32."