Height Map - Substantial z-offset after setting z-offset
-
Hi All... So I was frustrated with slanting on my first layer height and I decied to put on the TH3D Solid Bed Mounts to stop the springs from constantly shifting... and that was a mistake. After putting those on, my height map was the worst I've seen and spent 2 hours trying to add washers and gave up.
I've put the Springs back on now, but am having the hardest time get a level bed and I'm not sure what step I'm missing...
These are the steps I've done, roughly a dozen times in the last 12 hours and same result...
- Calibrate EZABL Probe following the TH3D guide
- Followed the Test and Calibrate Guide to set my z=0 and my z-offset
- After doing #2 & #3, I test my z-height by jogging the head down to z=0 and it is just touching the paper, so z is set correctly.
- I run a G29 on just 2 points to test the evenness of the bed and this is where I get stuck...
The console reports:
G29 Warning: the height map has a substantial Z offset. Suggest use Z-probe to establish Z=0 datum, then re-probe the mesh. 4 points probed, min error -0.389, max error -0.224, mean -0.314, deviation 0.070 Height map saved to file 0:/sys/heightmap.csv
What I don't get is I just calibrated the probe and set my z-offset, so how can this be off by so much?
Is the below the proper steps to calibrate and get a level bed or am I missing something stupid simple?
- Heat bed to 65 and unplug Extruder motor (remove EMI interference)
- Calibrate Probe Sensitivity
- Calibrate Probe Z-Offset and set offset in
G31
inprobe_config.g
- Run MBL (
G32
) on four corners to get 0.00 on each spring - Run ABL (
G29
) to probe mesh
Here's my files for review:
Config.g
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.0 on Sun Aug 08 2021 21:27:12 GMT+1000 (Australian Eastern Standard Time) ; ###################################################### ; General preferences ; ###################################################### G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Stargate SG-1 - Jackson" ; set printer name ; ###################################################### ; Global Variables ; ###################################################### global g_z_home = 5 ; can be used to always move Z to known height global g_z_neghome = -{global.g_z_home} ; can be used to always move Z to known height global g_print_end_mode = "HEAT OFF" ; determines if heaters are turned off when print is done global g_map_mode = "FULL" ; determines which kind of height map is created/loaded global g_probe_mode = "TWO" ; determines if z proving used consecutive or averaging global g_level_mode = "3PT" ; determines if 3 or 4 points are used for leveling ; ###################################################### ; Network ; ###################################################### M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; ###################################################### ; Drives ; ###################################################### M569 P0 S0 ; physical drive 0 goes backwards M569 P1 S1 ; physical drive 1 goes backwards M569 P2 S1 ; physical drive 2 goes forwards M569 P3 S1 ; physical drive 3 goes forwards M584 X0 Y1 Z2 E3 ; set drive mapping ; ###################################################### ; Movement ; ###################################################### M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z800.00 E137.31 ; set steps per mm M566 X900.00 Y900.00 Z300.00 E2000.00 P1 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z900.00 E6000.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z500.00 E3000.00 ; set accelerations (mm/s^2) 200 M906 X800 Y800 Z800 E800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; ###################################################### ; Axis Min/Max ; ###################################################### M208 X5 Y0 Z-10 S1 ; set axis minima M208 X355 Y355 Z400 S0 ; set axis maxima ; ###################################################### ; Endstops ; ###################################################### M574 X2 S1 P"xstop" ; configure active-high endstop for low end on X via pin xstop M574 Y2 S1 P"ystop" ; configure active-high endstop for low end on Y via pin ystop M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; ###################################################### ; Custom Probe config file ; ###################################################### M98 P"configs/probe_config.g" ; Config settings for my EZABL probe ; ###################################################### ; Heaters ; ###################################################### M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 ; create bed heater output on bedheat 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 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"e0temp" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S280 ; set temperature limit for heater 1 to 280C ; ###################################################### ; Fans ; ###################################################### ; Experimental for Prusa Slicer M950 F0 C"nil" ; Free up pin F0 M950 F0 C"fan1" Q500 ; Assign Fan0 for Prusa Slicer M106 P0 S0 H-1 M950 F1 C"nil" M950 F1 C"fan0" Q500 ; create fan 0 on pin fan3 and set its frequency M106 P1 S1 H1 T45 ; set fan 0 value. Thermostatic control is turned on ; ###################################################### ; Tools ; ###################################################### M563 P0 D0 H1 F0 ; define tool 0 G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C ; ###################################################### ; Custom Configurations ; ###################################################### ; Filament Runout Sensor M591 D0 P1 C"e0stop" S1 ; TFT Display Config M575 P1 S1 B57600 ; Miscellaneous M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss M501 ; load saved parameters from non-volatile memory
configs/probe_config.g
; probe_config.g ; Z-Probe M558 P5 C"!zprobe.in" H3 F900 T12000 ; setup my EZABL ;G31 P500 X47 Y10 Z1.395 ; Initial offset before watching https://www.youtube.com/watch?v=bOb9_ImSW7c G31 P25 X47 Y10 Z0.770 ; new offset after fixing EZABL mount - cut pieces off to get level
bed.g
; bed.g ; called to perform automatic bed compensation via G32 ; ; generated by RepRapFirmware Configuration Tool v3.3.0 on Sun Aug 08 2021 21:27:11 GMT+1000 (Australian Eastern Standard Time) ; Setup Manual Bed Levelling Assistant M671 X69:338:69:338 Y51:51:308:308 P0.5 ; Front-Left:Front-Right:Back-Left:Back-Right G28 Z; home ; Probe near bed screws G30 P0 X127 Y58 Z-9999 ; Front-Left G30 P1 X380 Y58 Z-9999 ; Front-Right G30 P3 X127 Y318 Z-9999; Back-Left G30 P2 X380 Y318 Z-9999 S4; Back-Right ;G29;
mesh.g
;mesh g - manually configured M561 ; clear any bed transform M98 P"configs/probe_config.g" ; configure Z probe M557 X90:400 Y15:360 P2 ; define probe area and points G29 S0 ; probe and save height map
Hopefully I'm missing a simple step and not losing my mind!
-
@infidelprops try adding a G28 Z to mesh.g to home before mesh levelling. Also adding a G28 Z after bed.g may be a good idea.
-
@infidelprops
Can you post your homez.g just to be sure we know what you are doing?
It's important to set the Z=0 Datum using a single G30 at some XY reference point before creating the height map and before loading that same height map.
It's essential that your XY reference point is the same when creating and loading.
Some folks use one of the points probed when creating the height map, others use the center of the bed.
Frederick
-
I'll add the G28 and re-run to see if that helps, good suggestion.
@fcwilt - I thought I was setting my z=0 datum when I was doing my offsets, guess this terminology still has me confused. Here's the other files as requested:
homez.g
; homez.g ; called to home the Z axis ; ; generated by RepRapFirmware Configuration Tool v3.3.0 on Sun Aug 08 2021 21:27:13 GMT+1000 (Australian Eastern Standard Time) G91 ; relative positioning G1 H2 Z{global.g_z_home} F6000 ; lift Z relative to current position G90 ; absolute positioning ; Probing Z home setup M98 P"configs/zhome_config.g"
zhome_config.g
; Go to center of the bed and probe M98 P"configs/center_probe.g" 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
center_probe.g
; center_probe.g G90 ; absolute moves ; move probe to center of bed G1 X{((move.axes[0].max + move.axes[0].min) / 2) + sensors.probes[0].offsets[0]}, Y{((move.axes[1].max + move.axes[1].min) / 2) + sensors.probes[0].offsets[1]}, F6000
-
@infidelprops said in Height Map - Substantial z-offset after setting z-offset:
The terminology can be confusing.
I thought I was setting my z=0 datum when I was doing my offsets,
What do you mean by the above?
In any case it looks like you have the file needed (zhome_config.g) to set the Z=0 Datum.
Just M98 this file in your mesh.g file right before the G29 S0.
Now just out of curiosity why do you have a folder named "configs"?
There is nothing, absolutely nothing wrong with doing that, I was just wondering why. At my age (71) I would find it confusing to have to look in multiple folders for my files.
Frederick
-
@fcwilt said in Height Map - Substantial z-offset after setting z-offset:
@infidelprops said in Height Map - Substantial z-offset after setting z-offset:
The terminology can be confusing.
I thought I was setting my z=0 datum when I was doing my offsets,
What do you mean by the above?
Apologies... In my brain, when I set my z-offset using the
G30-S1
to look trigger height variance and then setting that it in myG31
ofprobe_config.g
, I thought that was setting my z=0 datum - I am probably wrong.
So because I have some macros to calculate my absolute centre, and then I probe this point to set my
probe height at centre
, is this setting my z=0 datum?This is my updated mesh.g
; ###################################################### ;mesh g - manually configured ; ###################################################### M98 P"configs/probe_config.g" ; configure Z probe M98 P"configs/zhome_config.g" ; configure z=0 datum (this still confuses me on how this is set) ; ###################################################### ; Probe bed and create Heightmap ; ###################################################### M561 ; clear any bed transform G28 Z M557 X90:400 Y15:360 P2 ; define probe area and points G29 S0 ; probe and save height map
-
@fcwilt said in Height Map - Substantial z-offset after setting z-offset:
Now just out of curiosity why do you have a folder named "configs"?
There is nothing, absolutely nothing wrong with doing that, I was just wondering why. At my age (71) I would find it confusing to have to look in multiple folders for my files.
Frederick
No problem, happy to answer... I used to be a pretty hard code web developer and I always like to keep certain files in specific folders so when adding new functionality/editing/troubleshooting, I always know exactly where to go. Could also very well just be an OCD thing.
-
So I added that config to mesh.g and re-ran
G29
, still the huge z-offset... I must be missing a step! -
@infidelprops said in Height Map - Substantial z-offset after setting z-offset:
I always know exactly where to go.
I was a programmer for 30+ years but now given the limited number of files I put them in one place and I always know where they are - the System folder.
71 year old brains crave simplicity.
Thanks.
Frederick
-
@fcwilt totally get that!
And not sure if you saw, but I added the additional config to mesh.g and I'm still getting the large offset when probing.
-
@infidelprops said in Height Map - Substantial z-offset after setting z-offset:
This is my updated mesh.g
; ###################################################### ;mesh g - manually configured ; ###################################################### M98 P"configs/probe_config.g" ; configure Z probe M98 P"configs/zhome_config.g" ; configure z=0 datum (this still confuses me on how this is set) ; ###################################################### ; Probe bed and create Heightmap ; ###################################################### M561 ; clear any bed transform G28 Z M557 X90:400 Y15:360 P2 ; define probe area and points G29 S0 ; probe and save height map
That looks to be correct.
I'm working on a response to discuss G30 S-1 and G31.
Frederick
-
@infidelprops
In my brain, when I set my z-offset using the
G30-S1
to look trigger height variance and then setting that it in myG31
ofprobe_config.g
, I thought that was setting my z=0 datum - I am probably wrong.The problem with using G30 S-1 to report the trigger height is it presumes that the logical Z position (what the firmware "thinks" the Z position is) matches the physical Z position.
Consider this:
You jog Z till the tip of the nozzle is exactly 5mm off the surface of the bed which you determined by measuring it with a ruler/scale/thickness gauge.
At that point we know the physical Z position is 5.
If the logical position matches the physical position the DWC will display 5.
If the DWC displays some other number the logical position position is "out-of-sync" with the physical position and it needs to be corrected.
Now assume the probe triggers when the tip of the nozzle is exactly 2mm off the surface of the bed.
We haven't moved the nozzle so it is still 5mm off the bed.
Now we execute G92 Z10 telling the firmware the current position of the nozzle is 10mm off the bed - which it is not - we are lying to the firmware - and it is going to hold that against us.
Now do a single G30 S-1. The nozzle begins to drop and after 3mm of movement it is 2mm off the bed and that is the point at which the probe triggers.
The probing stops and reports the Z position is not 2mm but 7mm because the firmware believed us (even though we lied) and it thinks it started probing from 10mm.
Does that much make sense. I have more to add.
Frederick
-
@fcwilt Yeah that all makes sense, but where I get stuck is if using
G30 S-1
to get my trigger height is inaccurate, what's the best method to set myG31
Probe Z-offset? -
@infidelprops said in Height Map - Substantial z-offset after setting z-offset:
@fcwilt Yeah that all makes sense, but where I get stuck is if using
G30 S-1
to get my trigger height is inaccurate, what's the best method to set myG31
Probe Z-offset?The problem with the "G30 S-1' approach is you are trying to calibrate the probe using the probe to do the calibration.
That clearly won't work.
Any calibration has to be done against some other accurate standard, something independent of the probe we are trying to calibrate.
I use a 1mm thickness gauge as opposed to something thin like a piece of paper.
You can likely start with a G31 Z Trigger Height setting of 0 which for most probes is going to be too small.
You begin by moving the probe to the center of the bed.
Then you do G1 Z10 followed by a G30. If the probe fails to trigger just use a smaller value as the starting Z position, say G1 Z5.
After the probing is complete you carefully jog down until the tip of the nozzle is just touching the thickness gauge and you now know the physical Z position is 1mm.
You check the DWC to see what it reports, which is the logical Z position.
If it doesn't report 1 then the G31 Z Trigger Height setting needs to be adjusted and the process repeated until you find the setting that does display 1.
Larger Z Trigger Height values will reduce the displayed value.
Frederick
-
@fcwilt Thanks!
So I've got a 1.5mm wrench here and used that, ran the above steps and had it reporting correctly on DWC which had my offset a 0.890
I set that in my G31 in my probe, re-ran a MBL (
G32
) and it's 0.00 adjustment neeeded all around
Ran a 4 pt probe test, and still the same problem...
I feel like I'm doing everything right, don't know why this is reporting so badly.
-
@infidelprops said in Height Map - Substantial z-offset after setting z-offset:
So I've got a 1.5mm wrench here and used that, ran the above steps and had it reporting correctly on DWC which had my offset a 0.890
What do you mean by "had my offset a 0.890"?
Another approach is to pick a starting value for the Z Trigger height.
Do your G30 probe at bed center.
Do a G90 G1 Znn using the thickness of your "gauge" for nnn and see if the gap between nozzle and bed is "just right".
Frederick
-
@fcwilt said in Height Map - Substantial z-offset after setting z-offset:
@infidelprops said in Height Map - Substantial z-offset after setting z-offset:
So I've got a 1.5mm wrench here and used that, ran the above steps and had it reporting correctly on DWC which had my offset a 0.890
What do you mean by "had my offset a 0.890"?
When I reset my
G31
Z offset to 0, I reset the machine and then homed all axes, then homed z.
DWC was reporting my Z at 3
I put the 1.5mm wrench under the nozzle and adjusted the tip down 1.5mm and it wasn't touching the wrench yet.
I lowered it another 0.89mm to get it touching the wrench and set that in myG31
for my Z offset.
Reset the machine again and then homed all, homed z, put the wrench under the nozzle and lowered it to 1.5mm and it was touching the wrench. -
@infidelprops said in Height Map - Substantial z-offset after setting z-offset:
I lowered it another 0.89mm to get it touching the wrench and set that in my
G31
for my Z offset.Got you.
The Duet docs use the term "Z Trigger Height" thus my lack of understanding of the term "offset".
But it sounds like you have found the correct value for use in G31.
Using a 4 point test can give misleading results.
Are you using the center of the bed for your XY reference point when doing your G30?
Frederick
-
@fcwilt said in Height Map - Substantial z-offset after setting z-offset:
Are you using the center of the bed for your XY reference point when doing your G30?
Frederick
In my zhome_config.g file, I am just using G30 after I centre the bed, so I believe that I am and when I kick off a G29, it does start at the centre fist.
-
@infidelprops said in Height Map - Substantial z-offset after setting z-offset:
@fcwilt said in Height Map - Substantial z-offset after setting z-offset:
Are you using the center of the bed for your XY reference point when doing your G30?
Frederick
In my zhome_config.g file, I am just using G30 after I centre the bed, so I believe that I am and when I kick off a G29, it does start at the centre fist.
OK here is how a 4 point grid can be misleading.
Imaging the bed rises or falls from the center to the edges in both X and Y.
When you set the Z=0 Datum in the center of the bed but don't probe near the center of the bed but just the near the edges you can get a picture like yours because all of the probed points are above/below the Z=0 Datum.
Try a 9 point grid which will include a probed point near the center of the bed and I think you will see what I mean.
Frederick