Cannot get Mesh Bed Compensation to work correctly
-
I Have a 500 x 500 core xy with a BL Touch that I have been trying to get mesh bed compensation to work correctly on but am at my wits end. I can feel the lead screws moving but I can't get a bed level test to print without the nozzle riding on the glass at some point and its not always the same spots on the bed.
I have read through a lot of the different posts trying to find the fix without any luck. I'll add a few pics and add my config files. I have gone through he frame thoroughly and I can't see where it could be mechanical.
Any suggestions will be appreciated. (I have probed the bed from 400 points to 9 points. The only reason this shows 9 was for time saving as I have tried to solve the issue)
bed.g
; bed.g ; called to perform automatic bed compensation via G32 ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Tue Jul 21 2020 09:51:15 GMT-0600 (Mountain Daylight Time) M291 P"Bed level probe in progress..." R"Bed Leveling" S1 T5 ;M144 S0 ; Bed heater standby M561 ; clear any bed transform ;G29 S2 ;clear the height map G28 ; home Z G30 P0 X465 Y100.5 Z-99999 ; probe near a leadscrew, half way along y axis G30 P1 X0 Y100.5 Z-99999 ; probe near a leadscrew G30 P2 X242 Y483 Z-99999 S3 ; probe near rear leadscrew ;G30 P2 X240 Y65 Z-99999 S3 ; probe front center and calibrate 3 motors ;G29 ; probe the bed ;G29 S1 ; enable compensation M376 H00 ; Bed compensation taper, Hnnn Height (mm) over which to taper off the bed compensation ;M144 S1 ; Bed heater active G28 ; home G30
config.g
; Configuration file for Duet WiFi (firmware version 3.2.2) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Tue Jul 21 2020 09:51:15 GMT-0600 (Mountain Daylight Time) ; General preferences M111 S0 ; Debug off G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"HyperCube EVO" ; set printer name M669 K1 ; select CoreXY mode ; Network M551 P"sM69732310" ; set password M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0 S1 ; physical drive 0 goes forwards X M569 P1 S1 ; physical drive 1 goes forwards y M569 P2 S1 ; physical drive 2 goes forwards y side Z M569 P3 S1 ; physical drive 3 goes forwards x side Z M569 P4 S0 ; physical drive 4 goes forwards E1 ;M569 P5 S1 ; physical drive 5 goes forwards E2 ;M569 P6 S1 ; physical drive 6 goes forwards E3 ;M569 P7 S1 ; physical drive 7 goes forwards E4 M569 P8 S1 ; physical drive 8 goes forwards REAR Z M584 X0 Y1 Z2:3:8 E4:5:6:7 ; set drive mapping M671 X509.5:-49.9:242 Y100.5:100.5:515.5 S20 ; leadscrews at left (connected to Z) right (connected to E1) of X axis and rear middle (connected to E4) ;M208 X0:488 Y0:496 ; X carriage moves from 0 to 488, Y bed goes from 0 to 496 ;M208 X0:488 Y0:496 M350 X16 Y16 Z16:16:16 E16:16:16:16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z400.00:400.00:400.00 E423.03:412.45:412.45:412.45 ; set steps per mm M566 X200.00 Y200.00 Z12.00:12.00:12.00 E120.00:120.00:120.00:120.00 ; set maximum instantaneous speed changes (mm/min) M203 X18000.00 Y18000.00 Z1200.00:1200.00:1200.00 E1500.00:1500.00:1500.00:1500.00 ; set maximum speeds (mm/min) M201 X3000.00 Y3000.00 Z100.00:100.00:100.00 E10000.00:10000.00:10000.00:10000.00 ; set accelerations (mm/s^2) M906 X950 Y950 Z700:700:700 E700:950:950:950 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S60 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z-.5 S1 ; set axis minima M208 X465 Y483 Z470 S0 ; set axis maxima ; Endstops M574 X1 S1 P"xstop" ; X Stop set active high endstops M574 Y1 S1 P"ystop" ; Y Stop set active high endstops M574 Z1 S2 ; set endstops controlled by probe ; Filament Run-Out M591 D0 P2 C"e0stop" S1 ; E-0 watcher Filament run-out sensor triggers a pause ;M591 D1 P2 C"e1stop" S0 ; E-1 watcher Filament run-out sensor triggers a pause ;M591 D2 P2 C"exp.e2stop" S0 ; E-2 watcher Filament run-out sensor triggers a pause ;M591 D3 P2 C"exp.e3stop" S0 ; E-3 watcher Filament run-out sensor triggers a pause ; Z-Probe M950 S0 C"duex.pwm5" ; create servo pin 0 for BLTouch M558 P9 C"^zprobe.in" H5 F120 T3000 A10 R0.5 S0.005 B0 ; set Z probe type to bltouch and the dive height + speeds M307 H1 R2.536 C112.3 D7.24 S1.00 V24.0 G31 P500 X-5 Y68 Z1.988 ; set Z probe trigger value, offset and trigger height M557 X1:460 Y72:480 P3:3 ; define mesh grid ; Heaters ;M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit ; Bed M308 S0 P"bed_temp" Y"thermistor" T100000 R4700 B3950 M950 H0 C"bed_heat" T0 ; disable bang-bang mode for the bed heater and set PWM limit M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M143 H0 S120 ; set temperature limit for heater 0 to 120C M140 H0 ; Hotend M308 S1 P"e_0temp" Y"thermistor" T100000 R4700 B3950 ; set thermistor + ADC parameters for heater 0 M950 H1 C"e0heat" T1 M307 H1 R3.093 K0.396:0.000 D7.27 E1.35 S1.00 B0 V24.0 M143 H1 S280 ; set temperature limit for heater 1 to 280C M570 S360 ; Fans M950 F0 C"fan0" Q500 M106 P0 S0 H-1 ; set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off Hot End M950 F1 C"fan1" Q500 m106 P1 S1 H1 T40 ; set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on Part Fan ;M106 P0 S0 I0 F500 H-1 C"Part Cooling Fan" ; set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off Hot End ;M106 P1 S1 I0 F500 H1 T40 ; set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on Part Fan ;M106 P2 S1 I0 F500 H1 T40 ; set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned on Z ;M106 P3 S1 I0 F500 H1 T40 ; set fan 3 value, PWM signal inversion and frequency. Thermostatic control is turned on Z ;M106 P4 S1 I0 F500 H-1 C"E1 Stepper Fan" ; set fan 4 value, PWM signal inversion and frequency. Thermostatic control is turned off E1 ;M106 P5 S1 I0 F500 H-1 C"E2 Stepper Fan" ; set fan 5 value, PWM signal inversion and frequency. Thermostatic control is turned off E2 ;M106 P6 S1 I0 F500 H-1 C"E3 Stepper Fan" ; set fan 6 value, PWM signal inversion and frequency. Thermostatic control is turned off E3 ;M106 P7 S1 I0 F500 H-1 C"E4 Stepper Fan" ; set fan 7 value, PWM signal inversion and frequency. Thermostatic control is turned off E3 ;M106 P4 C"E1" S1 I0 F500 H-1 ; set fan 4 name, value, PWM signal inversion and frequency. Thermostatic control is turned off ;M106 P5 C"E2" S1 I0 F500 H-1 ; set fan 5 name, value, PWM signal inversion and frequency. Thermostatic control is turned off ;M106 P6 C"E3" S1 I0 F500 H-1 ; set fan 6 name, value, PWM signal inversion and frequency. Thermostatic control is turned off ;M106 P7 C"E4" S1 I0 F500 H-1 ; set fan 7 name, value, PWM signal inversion and frequency. Thermostatic control is turned off ; 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 ;M563 P1 D1 H1 F0 ; define tool 1 ;G10 P1 X0 Y0 Z0 ; set tool 1 axis offsets ;G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C ;M563 P2 D2 H1 F0 ; define tool 2 ;G10 P2 X0 Y0 Z0 ; set tool 2 axis offsets ;G10 P2 R0 S0 ; set initial tool 1 active and standby temperatures to 0C ;M563 P3 D3 H1 F0 ; define tool 3 ;G10 P3 X0 Y0 Z0 ; set tool 2 axis offsets ;G10 P3 R0 S0 ; set initial tool 1 active and standby temperatures to 0C ;Power Fail Recovery M911 S21.0 R23.0 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000 ; Custom settings are not defined ; Miscellaneous M575 P1 S1 B57600 ; enable support for PanelDue M911 S21.0 R23.0 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss M501 : Load Active Parameters
homeall.g
; homeall.g ; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Tue Jul 21 2020 09:51:15 GMT-0600 (Mountain Daylight Time) G91 ; relative positioning G1 H2 Z5 F6000 ; lift Z relative to current position G1 H1 X-505 Y-505 F3600 ; move quickly to X or Y endstop and stop there (first pass) G1 H1 X-505 ; home X axis G1 H1 Y-505 ; home Y axis G1 X5 Y5 F6000 ; go back a few mm G1 H1 X-505 F360 ; move slowly to X axis endstop once more (second pass) G1 H1 Y-505 ; then move slowly to Y axis endstop G90 ; absolute positioning G1 X232.5 Y241.5 F6000 ; go to first bed probe point and home Z G30 ; home Z by probing the bed ; Uncomment the following lines to lift Z after probing ;G91 ; relative positioning ;G1 Z5 F100 ; lift Z relative to current position ;G90 ; absolute positioning
start g-code
G28 ; home all axes G32 G28 G29 S0 G29 S1 G4 S10; wait for heaters to recover M117 Purge extruder G92 E0 ; reset extruder G1 Z1.0 F3000 ; move z up little to prevent scratching of surface G1 X0.1 Y20 Z0.3 F5000.0 ; move to start-line position G1 X0.1 Y100.0 Z0.3 F1500.0 E15 ; draw 1st line G1 X0.4 Y100.0 Z0.3 F5000.0 ; move to side a little G1 X0.4 Y20 Z0.3 F1500.0 E30 ; draw 2nd line G92 E0 ; reset extruder G1 Z1.0 F3000 ; move z up little to prevent scratching of surface M117 Printing.....
Height Map
-
A couple of things.
1:
In your config.g file you have multiple values for the Z steppers in commands like M92, M566, M203, M201, M906.
That is not supported. Only the first value for Z in each command is used.
You can remove the other values for Z.
2:
You have specified a 9 point mesh. For Mesh Bed Compensation to work you are going to need many more points than that.
Given the size of your bed I would suggest 400 points, 20 x 20 though you can step up to 21 x 21 which is the current limit.
Remember:
- create the height map with bed and nozzle at your typical printing temps
- if you regularly print at significantly different temps you may improve things by creating a height map for each temp
- insure the Z=0 Datum has been set prior to creating/loading the heightmap
- save time by creating the height map once and just loading it for each print
Frederick
-
Test your bltouch trigger height at multiple points on the bed and see if it is consistent.
Set Z0 at the point with G92 Z0 when the nozzle is touching the bed, then use G30 S-1 to get the trigger height.
-
@alijambo73 The method I use to create the heightmap.csv:
Send the G31 for the Z offset needed, I use a macro to set this.
Before the mesh, heat up the bed to temperature. I usually set the hotend to 140C or so, make sure any stringing is soft.
Home the printer, then send the G29. -
@fcwilt The picture was printed with a 20 x 20 grid. I dialed it back to 9 just for time sake in trying to fix the issue.
-
@fcwilt The trigger height varied from High to low they were
2.235, 2.22, 2.132, 2.068, 2.027, 2.015, 1.985, 1.905 and 1.885.Does this lead to something with the BL Touch?
-
This post is deleted! -
@alijambo73 said in Cannot get Mesh Bed Compensation to work correctly:
@fcwilt The picture was printed with a 20 x 20 grid. I dialed it back to 9 just for time sake in trying to fix the issue.
That was confusing.
We need to see the actual height map you were using during the print.
Frederick
-
@alijambo73 said in Cannot get Mesh Bed Compensation to work correctly:
@fcwilt The trigger height varied from High to low they were
2.235, 2.22, 2.132, 2.068, 2.027, 2.015, 1.985, 1.905 and 1.885.Does this lead to something with the BL Touch?
Do the differences in trigger height correlate to the poorly printing areas on the bed?
That much variation means that your probe is probably tilting depending on XY position. Even a small tilt can lead to a different trigger height which means that your offset is only accurate where you measured it and wrong everywhere else.
The tilt may be caused by some skew in the XY plane, so perhaps your frame needs to be re-squared.
-
@phaedrux I just manually leveled the bed and then ran G29. This is the result
Does this give any clue of where to start on the frame?
-
@phaedrux said in Cannot get Mesh Bed Compensation to work correctly:
Do the differences in trigger height correlate to the poorly printing areas on the bed?
Can you map out on the bed map where those trigger heights are?
Another way to test is to remove the probe from the equation entirely by setting the M558 probe type to P0 which will allow for manual probing. This will prompt you to jog the nozzle down to the bed surface whenever the probe is called. This eliminates any probe tilt and will give you a more accurate view of what the bed surface is like.
-
@phaedrux The weird thing is that the low spots are not always consistent. You can see that in the height map compared to the actual photo. The height map is showing the back 2 corners as the high spots but the photo shows the 2 right corners.
I have been trying to find where the issue might be and started another bed level test print. The height map shows the front 2 cornets at Z:.22. the print is perfect on the left corner but is on the glass on the right corner. This makes me wonder if its something other than the frame but I don't have a lot of experience with this.
I have linear rails not rods and they seem to perfectly parallel. So if its the frame it would have to be the extrusions that the y rails are mounted to on the top left and right of the frame... Correct?
-
@alijambo73
From my own experience I can say that a original HEVO Z-axis does not work properly (and my bed is only 350x350...).The bed frame is not stiff enough. I had to constantly relevel the bed.
I modified the connection of the linear bearings on mine.
https://forum.duet3d.com/topic/13530/za-and-zb-connections/21?_=1651794964325
Maybe your third z-axis makes a little difference. -
@diy-o-sphere Did you have the same issue with Mesh Bed Leveling and did this solve it?
I run a g32 so the bed should technically be level so I kind of ruled that out.
-
@alijambo73 said in Cannot get Mesh Bed Compensation to work correctly:
I have linear rails not rods and they seem to perfectly parallel.
How did you determine that?
Frederick
-
This post is deleted! -
@fcwilt said in Cannot get Mesh Bed Compensation to work correctly:
@alijambo73 said in Cannot get Mesh Bed Compensation to work correctly:
I have linear rails not rods and they seem to perfectly parallel.
How did you determine that?
Frederick
By feel
-
@alijambo73 said in Cannot get Mesh Bed Compensation to work correctly:
2.235, 2.22, 2.132, 2.068, 2.027, 2.015, 1.985, 1.905 and 1.885.
The fact of the matter is your probe trigger height is varying quite a bit at different locations.
-
@alijambo73 said in Cannot get Mesh Bed Compensation to work correctly:
How did you determine that?
Frederick
By feel
You are making a joke?
Frederick
-
@alijambo73 said in Cannot get Mesh Bed Compensation to work correctly:
Did you have the same issue with Mesh Bed Leveling and did this solve it?
I had inconsistent z movements. When the printer was moved in Z, it did not return to the previous height.
It was easy to measure with a gauge. This was most noticeable in the corners. The bed mechanics was always bent. After the rebuild, there are no more problems with that.