Help with mesh leveling
I am having trouble getting mesh leveling to work properly on my prusa i3 printer with a duet 3 mini 5+. The issue I have is it seems like the printer over compensates for points on the bed. So for example the points that are close to z=0 print just fine. As you get to z=-.2 the printer pushes down into the print bed too far and when you go to z=.2 its printing above the print surface and not sticking at all. Its a pinda 2 probe so maybe I have it set up wrong?
I have printed test prints with out applying a mesh and the points it are taking are definitely correct. Do I have a setting wrong that causes the mesh to over compensate for a mesh or do I just not have it set up right. I have attached my config file please let me know if you think something else may be affecting it also.
; Configuration file for Duet 3 Mini 5+ (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Mon Mar 15 2021 19:09:36 GMT+0100 (Mitteleuropäische Normalzeit) ; ##### General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Prusa MK2.25 S DUET" ; set printer name ; ##### Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; ##### Drives M569 P4 S0 D3 V10 ; X drive @1 M569 P2 S0 D3 V10 ; Y drive @2 M569 P0 S0 D3 V100 ; Z left drive @0 M569 P1 S0 D3 V100 ; Z right drive @4 M569 P3 S1 D3 V1000 ; E drive @3 - inversed M584 X4 Y2 Z1:0 E3 ; set drive mapping M671 X-37:287 Y0:0 S10 ; define dual driven z-axis M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X100.00 Y100.00 Z400.00 E155.00 ; set steps per mm M566 X600.00 Y600.00 Z48.00 E300.00 ; set maximum instantaneous speed changes (mm/min) M203 X8000.00 Y8000.00 Z720.00 E7200.00 ; set maximum speeds (mm/min) M201 X1250.00 Y1250.00 Z1250.00 E2000.00 ; set accelerations (mm/s^2) M906 X750 Y750 Z600 E700 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; ##### Axis Limits M208 X0 Y-5 Z-1 S1 ; set axis minima M208 X250 Y210 Z215 S0 ; set axis maxima ; ##### Endstops M574 X1 S1 P"io0.in" ; X endstop M574 Y1 S1 P"io1.in" ; Y endstop ; ##### Filament Sensor M591 D0 P2 C"io3.in" S1 ; Filament Runout Sensor ; ##### Z-Probe Settings for PINDA 2 M558 P5 C"io2.in" I1 H1 F1000 T6000 A3 ; Prusa PindaV2 Endstop M308 S2 P"temp2" A"Pinda V2" Y"thermistor" T100000 B3950 ; Prusa PindaV2 Thermistor G31 P1000 X22.5 Y5 Z.475 ; Nozzle offset M574 Z1 S2 ; Set Z axis endstop, controlled by probe M557 X36:236 Y7:205 P3 ; Define mesh grid for probing M376 5 ; Fade height 5mm ; ##### Heaters ; Bed Heater M308 S0 P"temp1" Y"thermistor" B4725 C7.060000e-8 ; configure sensor 0 as thermistor on pin temp1 M950 H0 C"out0" Q25 T0 ; create bed heater output on out0 and map it to sensor 0, PWM frequency: 25Hz M307 H0 B0 R0.298 C372.8 D11.53 S1.00 V12.2 ; Bed tuning values, enable PID M140 H0 ; Bed uses Heater 0 M143 H0 S120 ; Set temperature limit for heater 0 to 120C Bed ; Hotend heater M308 S1 P"temp0" Y"thermistor" T100000 B4725 C7.060000e-8 ; configure sensor 1 as thermistor on pin temp0 M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1 M307 H1 B0 R2.164 C276.6 D4.16 S1.00 V12.2 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S295 ; set temperature limit for heater 1 to 295C M302 S170 R170 ; allow extrusion starting from 170°C and retractions already from 170°C ; ##### Fans ; Part cooling fan M950 F0 C"out3" Q100 ; create fan 0 on pin out3 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off ; Hotend cooling fan M950 F1 C"out6" Q5000 ; NOCTUA fan an pin out6 with 5000Hz PWM frequency M106 P1 T55 S255 H1 ; Temperature control: turn fan on at 55°C ; ##### 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 M572 D0 S0.06 ; Pressure Advance ; ##### Startup M18 XYE ; release / unlock X, Y, and E axis M501 ; use config-override (for Thermistor Parameters and other settings) G90 ; send absolute coordinates... M83 ; ... but relative extruder moves
I am using bed.g to run gantry leveling before g29 which levels my gantry correctly but I don't know if something in there could be jacking up my mesh. Here is the bed.g
; bed.g ; called to perform automatic bed compensation via G32 ; M561 ; Clear any existing bed transform. G28 G1 Z210 F10000 M558 F10000 G30 M558 F100 A5 S0.003 G30 P0 X33 Y106 Z-99999 ; probe near a leadscrew, half way along Y axis G30 P1 X235 Y106 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors G1 X112 Y101; G30; M558 F200 A1 G1 X10 Y210 Z10 F10000
Stephen6309 last edited by
@col_clucks This may help, here's the one I use:
; bed.g ; called to perform automatic bed compensation via G32 M561 ; clear any bed transform if !move.axes.homed || !move.axes.homed || !move.axes.homed G28 M290 R0 S0 ; clear baby stepping G30 P0 X44 Y140 Z-99999 ; probe near a leadscrew, half way along Y axis G30 P1 X265 Y140 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors G29 S1 ; load heightmap.csv if result > 1 ; if no heightmap.csv, make one G29 S0
@stephen6309 it looks like the only difference between the code is the remove baby steps when I include my start gcode.I do like how you code is structured though so I’ll probably be changing to it.
Just remember that before creating/loading any height map you need to set the Z=0 Datum using a single G30 at your chosen XY reference point.
The reference point that was used when creating a height map must be used when loading that same height map.
@fcwilt I do have a g30 at the center of the bed in bed.g
In my start gcode g32 is followed by g29
Yes but the code posted by Stephan309 does not.
I just wanted to be sure you did not use his code as a template for yours.
Stephen6309 last edited by Stephen6309
@fcwilt G28 homes the Z with a G30. Why does it need the G30 again?
@fcwilt G28 homes the Z with a G30. Why does it need the G30 again?
It doesn't. I just wanted to be sure the OP understood and didn't follow the other posters bed.g code too closely where there was no setting of the Z=0 datum before creating/loading the height map.
Hey guys, I have the same issue as Col_Clucks.
My printer is a coreXY with 2 Leadscrews.
The code that Stephen6309 posted I don't see any improvement, it just automates the leveling.
Is there anywhere a compensation multiplier whoose value is set too high?
Do you use the same XY point to home the Z axis with the probe in your homeall/homez and in your bed.g? Does your probe or print head have any tilt to it that varies with XY position?
@phaedrux I execute each step manually:
- G29 S2
- homeall ; HomeZ is in centre of bed
here is what character the bed always appears
about tilting: the printhead is running on a rail. Tilting is what carriage on rail is usual
That saddle shape makes me think your rails are not perfectly parallel. Looks as though the left rail tilts up at the front and the right rail tilts up at the back.
homeall ; HomeZ is in centre of bed
Would need to see your actual files ot say more. Probably best to start your own thread.
@phaedrux oh no, the rails are parallel. wonder where you could see something like that? only the x carriage is able to tilt by a small amount which is due to decent rigidity between rail and carriage in that case.
The issue really appears like to much compensation or the compensation value is inverted.
what is the advantage of a new thread?