Z axis Not Moving for Mesh Compensation
-
Hello everyone! I have a highly modified Lulzbot Workhorse (2x Belt Z). The MB is a Duet 3 mini 5 running 3.5.0. Other than the issue at hand, the printer functions perfectly and is proving to be a reliable workhorse, thanks to the help of this group. That said, My Z axis stepper motors do not move for mesh compensation during a print, at all. I have read through all the documentation as well as several posts in an attempt to solve the issue on my own. I just cant seem to figure it out. All things point back to it working properly but there is no Z axis movement at all. I will include everything pertinent to this dilemma and more than likely one of you great people will come in and make me look like a schmuck as usual. But that's ok. I can handle it and I'm getting better, hehe .
My Config:
; Configuration file for RepRapFirmware on Duet 3 Mini 5+ Ethernet ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.5.0-rc.4+1 on Sun Apr 21 2024 09:30:28 GMT-0400 (Eastern Daylight Time) ; General G90 ; absolute coordinates M83 ; relative extruder moves M550 P"Lulzbot Workhorse" ; set hostname ; Accessories M575 P1 S0 B57600 ; configure PanelDue support ; Network M552 S1 ; enable network M586 P0 S1 ; configure HTTP M586 P1 S1 ; configure FTP M586 P2 S0 ; disable Telnet ; Expansion Board G4 S2 ; Wait a moment for the CAN expansion boards to become available ; Accelerometers M955 P121.0 I24 ; configure accelerometer on board #121 ; Kinematics M669 K0 ; configure Cartesian Kinematics ; Smart Drivers M569 P0.1 S0 D2 ; driver 0.1 goes forwards (Y axis) M569 P0.2 S0 D2 ; driver 0.2 goes forwards (X axis) M569 P0.3 S0 D2 ; driver 0.3 goes forwards (LEFT Z axis) M569 P0.4 S1 D2 ; driver 0.4 goes backwards (RIGHT z axis) M569 P121.0 S0 D2 ; driver 121.0 goes forwards (extruder 0) ; Motor Idle Current Reduction M906 I30 ; set motor current idle factor M84 S30 ; set motor current idle timeout ; Axes M584 X0.2 Y0.1 Z0.3:0.4 ; set axis mapping M671 X380:-130 Y150:150 S5 ; position of leadscrew/bed pivot point at left and right of X axis M350 X16 Y16 Z16 I1 ; configure microstepping with interpolation M906 X1200 Y1200 Z800 ; set axis driver currents M92 X100 Y100 Z500 ; configure steps per mm M208 X-42:309 Y-10:320 Z-2:290 ; set minimum and maximum axis limits M205 X8 Y8 Z1 ; set maximum instantaneous speed changes (mm/sec) M203 X9000 Y9000 Z600 ; set maximum speeds (mm/min) M201 X1000 Y1000 Z100 ; set maximum accelerations for XYZ axis(mm/sec) M204 P1000 T2000 ; set accelerations for print moves and travel moves ; Extruders M584 E121.0 ; set extruder mapping M350 E16 I1 ; configure microstepping with interpolation M906 E900 ; set extruder driver currents M92 E393 ; configure steps per mm M566 E120 ; set maximum instantaneous speed changes (mm/min) M203 E3600 ; set maximum speeds (mm/min) M201 E2000 ; set maximium accelerations for extruder(mm/s^2) ; BLTouch M558 K0 P9 C"121.io0.in" H5 F600:120 T6000 ; configure BLTouch probe via slot #0 G31 P500 X49.7 Y-19.3 Z2.82 ; set Z probe location, trigger value, offset and trigger height. If you have to move the nozzle closer to the bed, increase the G31 Z value by the amount of baby stepping used. If you have to move the nozzle farther away from the bed, decrease the G31 Z value by the amount of baby stepping used. M950 S0 C"121.io0.out" ; create servo #0 for BLtouch M376 H10 ; taper off bed compensation over 10mm ; Endstops l M574 X1 P"io1.in" S1 ; configure X axis endstop M574 Y1 P"io2.in" S1 ; configure Y axis endstop M574 Z1 S2 ; configure Z axis endstop ; Filament Runout M591 D0 P1 C"io6.in" S2 ; configure filament monitor (simple switch) for E0 ; Mesh Bed Compensation M557 X25:275 Y25:275 P5:5 ; define grid for mesh bed compensation ; Temperature Sensors M308 S0 P"temp0" Y"thermistor" A"Heated Bed" T100000 B4725 C7.06e-8 ; configure sensor #0 M308 S1 P"121.temp0" Y"thermistor" A"Hot End" T100000 B4725 C7.06e-8 ; configure sensor #1 ; Heaters M950 H0 C"out1" T0 ; create bed heater #0 M140 P0 H0 ; configure heated bed #0 M143 H0 P0 T0 C0 S120 A0 ; configure heater monitor #0 for bed heater #0 M307 H0 R0.321 K0.450:0.000 D1.20 E1.35 S1.00 B0 ; configure model of heater #0 M950 H1 C"121.out0" T1 ; create hotend heater #1 M143 H1 P0 T1 C0 S300 A0 ; configure heater monitor #0 for hotend heater #1 M307 H1 R3.832 K0.446:0.329 D2.21 E1.35 S1.00 B0 V24.1 ; configure model of hotend heater #1 ; Fans M950 F0 C"121.out2" ; create fan #0 M106 P0 C"Heatsink Fan" S0 B0.1 H1 T45 ; configure fan #0 M950 F1 C"121.out1" Q250 ; create fan #1 M106 P1 C"Part Cooling Fan" S0 B0.1 L35 X250 ; configure fan #1 ; Tools M563 P0 S"Tool 0" D0 H1 F1 ; create tool #0 M568 P0 R0 S0 ; set initial tool #0 active and standby temperatures to 0C ; Miscellaneous M593 P"zvdd" F40.0 ; use ZVDD input shaping to cancel ringing at 40.0Hz M572 D0 S0.034 ; set pressure advance for T0 T0
M122 While Printing:
M122 === Diagnostics === RepRapFirmware for Duet 3 Mini 5+ version 3.5.2 (2024-06-11 17:14:16) running on Duet 3 Mini5plus WiFi (standalone mode) Board ID: K4V3J-AP6KL-K65J0-409NG-2012Z-7P0WG Used output buffers: 15 of 40 (32 max) === RTOS === Static ram: 103368 Dynamic ram: 121856 of which 12 recycled Never used RAM 12604, free system stack 133 words Tasks: NETWORK(2,nWait 7,13.5%,203) HEAT(3,nWait 6,0.0%,350) Move(4,nWait 6,0.9%,241) CanReceiv(6,nWait 1,0.1%,773) CanSender(5,nWait 7,0.0%,336) CanClock(7,delaying,0.0%,348) TMC(4,nWait 6,0.9%,67) MAIN(1,running,83.6%,665) IDLE(0,ready,0.1%,29) AIN(4,delaying,0.9%,259), total 100.0% Owned mutexes: WiFi(NETWORK) === Platform === Last reset 00:28:46 ago, cause: power up Last software reset at 2024-08-08 23:15, reason: User, Gcodes spinning, available RAM 16740, slot 2 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 MCU revision 3, ADC conversions started 1727168, completed 1727168, timed out 0, errs 0 MCU temperature: min 21.8, current 39.9, max 45.1 Supply voltage: min 23.0, current 23.5, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/0, heap memory allocated/used/recyclable 2048/588/588, gc cycles 0 Events: 0 queued, 0 completed Driver 0: standstill, SG min 0, read errors 0, write errors 0, ifcnt 10, reads 25309, writes 10, timeouts 0, DMA errors 0, CC errors 0 Driver 1: standstill, SG min 0, read errors 0, write errors 0, ifcnt 17, reads 25302, writes 17, timeouts 0, DMA errors 0, CC errors 0 Driver 2: ok, SG min 0, read errors 0, write errors 0, ifcnt 17, reads 25302, writes 17, timeouts 0, DMA errors 0, CC errors 0 Driver 3: ok, SG min 0, read errors 0, write errors 0, ifcnt 17, reads 25301, writes 17, timeouts 0, DMA errors 0, CC errors 0 Driver 4: ok, SG min 0, read errors 0, write errors 0, ifcnt 17, reads 25302, writes 17, timeouts 0, DMA errors 0, CC errors 0 Driver 5: not present Driver 6: not present Date/time: 2024-08-24 11:36:05 Cache data hit count 3184748154 Slowest loop: 242.11ms; fastest: 0.14ms === Storage === Free file entries: 19 SD card 0 detected, interface speed: 22.5MBytes/sec SD card longest read time 8.1ms, write time 2.1ms, max retries 0 === Move === DMs created 83, segments created 30, maxWait 224898ms, bed compensation in use: mesh, height map offset -0.222, max steps late 0, min interval 0, bad calcs 0, ebfmin 0.00, ebfmax 0.00 next step interrupt due in 77 ticks, enabled Moves shaped first try 877, on retry 3, too short 502, wrong shape 3937, maybepossible 1 === DDARing 0 === Scheduled moves 5584, completed 5549, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state 3 === DDARing 1 === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters 0 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 Heater 0 is on, I-accum = 0.2 Heater 1 is on, I-accum = 0.0 === GCodes === Movement locks held by null, null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 3 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 File2 is idle in state(s) 0 Queue2 is idle in state(s) 0 Q0 segments left 1, axes/extruders owned 0x0000807 Code queue 0 is empty Q1 segments left 0, axes/extruders owned 0x0000000 Code queue 1 is empty === Filament sensors === check 7388450 clear 0 Extruder 0 sensor: ok === CAN === Messages queued 21145, received 34842, lost 0, errs 0, boc 0 Longest wait 2ms for reply type 6031, peak Tx sync delay 255, free buffers 26 (min 25), ts 8635/8634/0 Tx timeouts 0,0,0,0,0,0 === Network === Slowest loop: 13.09ms; fastest: 0.00ms Responder states: MQTT(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) HTTP sessions: 1 of 8 === WiFi === Interface state: active Module is connected to access point Failed messages: pending 0, notrdy 0, noresp 0 Firmware version 2.1.0 MAC address e8:68:e7:e1:50:dd Module reset reason: Power up, Vcc 3.39, flash size 2097152, free heap 36444 WiFi IP address 192.168.1.133 Signal strength -53dBm, channel 2, mode 802.11n, reconnections 0 Clock register 00002001 Socket states: 0 0 0 0 0 0 0 0
homeall.g:
; homeall.g ; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v3.5.0-rc.4+1 on Sun Apr 21 2024 09:30:28 GMT-0400 (Eastern Daylight Time) ; lift Z G91 ; relative positioning G1 H2 Z5 F6000 ; move Z relative to current position to avoid dragging nozzle over the bed G90 ; absolute positioning ; home XY var xTravel = move.axes[0].max - move.axes[0].min + 5 ; calculate how far X can travel plus 5mm var yTravel = move.axes[1].max - move.axes[1].min + 5 ; calculate how far Y can travel plus 5mm G91 ; relative positioning G1 H1 X{-var.xTravel} Y{-var.yTravel} F6000 ; coarse home in the -X and -Y directions G1 H2 X5 Y5 F6000 ; move back 5mm G1 H1 X{-var.xTravel} Y{-var.yTravel} F300 ; fine home in the -X and -Y directions G90 ; absolute positioning ; home Z var xCenter = move.compensation.probeGrid.mins[0] + (move.compensation.probeGrid.maxs[0] - move.compensation.probeGrid.mins[0]) / 2 - sensors.probes[0].offsets[0] var yCenter = move.compensation.probeGrid.mins[1] + (move.compensation.probeGrid.maxs[1] - move.compensation.probeGrid.mins[1]) / 2 - sensors.probes[0].offsets[1] G1 X{var.xCenter} Y{var.yCenter} F6000 ; go to bed centre G30 ; probe the bed M98 P"home'z.g" ; home z axis
Startup .gcode:
M104 S[first_layer_temperature] ; set extruder temp M140 S[first_layer_bed_temperature] ; set bed temp M190 S[first_layer_bed_temperature] ; wait for bed temp G29 ; Bed Mesh G32 ; auto-bed level/tram G32 ; auto-bed level/tram G28 Z ; Home Z G1 Z5 F3000 ; lift G1 X8 Y8 F3000 ; move to prime M109 S[first_layer_temperature] ; wait for extruder temp G1 Z0.15 F3000 ; get ready to prime G92 E0 ; reset extrusion distance G4 S15; wait for temp G1 X50 E25 F500 ; Extrude 25mm of filament in a 4cm line G92 E0 ; zero the extruded length G1 E-.5 F500 ; Retract a little G1 X80 F4000 ; Quickly wipe away from the filament line G1 Z0.3 ; Raise and begin printing
Heightmap:
Hotend Photo:
That BLTouch is not crooked as it appears in the photo. It is very perpendicular to the bed/toolhead as it should be.I have ran it with the G29 in both my startup .gcode as well as in the homeall. result is the same, or lack thereof. I know this is a common issue with common fixes. I may have missed/overlooked something so be patient and thorough. Thank you in advance for talking the time . If there is any additional info that is needed, please do not hesitate to ask. Also, If you see anything else that can be improved upon or tweaked during your investigation, I would greatly appreciate any feedback you would be willing to provide.
-
@SonnyD1 said in Z axis Not Moving for Mesh Compensation:
G29 ; Bed Mesh
G32 ; auto-bed level/tram
G32 ; auto-bed level/tram
G28 Z ; Home ZYou're doing a mesh before leveling the z axis and then homing z. This seems like a backwards order.
@SonnyD1 said in Z axis Not Moving for Mesh Compensation:
M98 P"home'z.g" ; home z axis
What is this macro? Please post it. Is it the same as homez.g?
-
@Phaedrux I have no idea what that is or how it got there. I certainly didn't write it. Here they both are. The "home'z.g" has to be an accidental duplicate and may need to go. Z axis has two steppers but does it need both of those files? I think one needs to go but which one?
homez.g:
; homez.g ; called to home the Z axis ; ; generated by RepRapFirmware Configuration Tool v3.5.0-rc.4+1 on Sun Apr 21 2024 09:30:29 GMT-0400 (Eastern Daylight Time) ; increase Z G91 ; relative positioning G1 H2 Z5 ; move Z relative to current position to avoid dragging nozzle over the bed G90 ; absolute positioning ; home Z var xCenter = move.compensation.probeGrid.mins[0] + (move.compensation.probeGrid.maxs[0] - move.compensation.probeGrid.mins[0]) / 2 - sensors.probes[0].offsets[0] var yCenter = move.compensation.probeGrid.mins[1] + (move.compensation.probeGrid.maxs[1] - move.compensation.probeGrid.mins[1]) / 2 - sensors.probes[0].offsets[1] G1 X{var.xCenter} Y{var.yCenter} F6000 ; go to bed centre G30 ; probe the bed
home'z.g
; home'z.g ; called to home the z axis ; ; generated by RepRapFirmware Configuration Tool v3.5.0-rc.4+1 on Sun Apr 21 2024 09:30:29 GMT-0400 (Eastern Daylight Time) ; increase Z G91 ; relative positioning G1 H2 Z5 ; move Z relative to current position to avoid dragging nozzle over the bed G90 ; absolute positioning ; home z var maxTravel = move.axes[3].max - move.axes[3].min + 5 ; calculate how far z can travel plus 5mm G1 H1 'z{var.maxTravel} F6000 ; coarse home in the +z direction G1 H2 'z-5 F6000 ; move back 5mm G1 H1 'z{var.maxTravel} F300 ; fine home in the +z direction ; decrease Z again G91 ; relative positioning G1 Z-5 F6000 ; move Z relative to current position G90 ; absolute positioning
-
You're going to have to clean up your files and determine which Z axis homing routine you actually need to use.
Then in your slicer start gcode, change it up to start with homing z, then tramming (which should also home z at the end to re-establish the Z0 point in case the change in tilt has changed it), and then do your mesh.
-
@Phaedrux I've already fixed the startup gcode. How do I determine which z axis homing routine I actually need to keep? Is that something you could provide a bit of assistance with? I can read code but not likely as good as you can. I would be inclined to remove the duplicate and deal with the fallout if necessary, (fix the remaining one) but that may not be the best solution.
-
@SonnyD1 said in Z axis Not Moving for Mesh Compensation:
How do I determine which z axis homing routine I actually need to keep?
Homez.g is using the probe to home Z.
Home'z.g is using an endstop to home Z.
Which is the correct way to home your printer?
-
@Phaedrux Ah ok. I do have a high end z endstop in addition to the BLTouch. Would the home'z.g be the file for that one?
-
In that case you should definitely remove
M98 P"home'z.g" ; home z axis
from the end of your homeall.g as it will be homing to the endstop at the end and resetting the Z0 position found by the probe.
You can keep home'z.g around for when you want to home to Z max, but keep in mind that the Z position set by it may not be accurate to what your probe has determined z0 to be.
-
@Phaedrux Done! But is that the cause or does it effect my an axis not moving to compensate for mesh?
-
Please share your current config.g homeall.g, homez.g start.g mesh.g bed.g and slicer start gcode. Also a M122 report taken during a print.
-
@Phaedrux I don't have a mesh.g. Here is the rest of it. Is the lack of a mesh.g the issue?
; Configuration file for RepRapFirmware on Duet 3 Mini 5+ Ethernet ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.5.0-rc.4+1 on Sun Apr 21 2024 09:30:28 GMT-0400 (Eastern Daylight Time) ; General G90 ; absolute coordinates M83 ; relative extruder moves M550 P"Lulzbot Workhorse" ; set hostname ; Accessories M575 P1 S0 B57600 ; configure PanelDue support ; Network M552 S1 ; enable network M586 P0 S1 ; configure HTTP M586 P1 S1 ; configure FTP M586 P2 S0 ; disable Telnet ; Expansion Board G4 S2 ; Wait a moment for the CAN expansion boards to become available ; Accelerometers M955 P121.0 I24 ; configure accelerometer on board #121 ; Kinematics M669 K0 ; configure Cartesian Kinematics ; Smart Drivers M569 P0.1 S0 D2 ; driver 0.1 goes forwards (Y axis) M569 P0.2 S0 D2 ; driver 0.2 goes forwards (X axis) M569 P0.3 S0 D2 ; driver 0.3 goes forwards (LEFT Z axis) M569 P0.4 S1 D2 ; driver 0.4 goes backwards (RIGHT z axis) M569 P121.0 S0 D2 ; driver 121.0 goes forwards (extruder 0) ; Motor Idle Current Reduction M906 I30 ; set motor current idle factor M84 S30 ; set motor current idle timeout ; Axes M584 X0.2 Y0.1 Z0.3:0.4 ; set axis mapping M671 X380:-130 Y150:150 S5 ; position of leadscrew/bed pivot point at left and right of X axis M350 X16 Y16 Z16 I1 ; configure microstepping with interpolation M906 X1200 Y1200 Z800 ; set axis driver currents M92 X100 Y100 Z500 ; configure steps per mm M208 X-42:309 Y-10:320 Z-2:290 ; set minimum and maximum axis limits M205 X8 Y8 Z1 ; set maximum instantaneous speed changes (mm/sec) M203 X9000 Y9000 Z600 ; set maximum speeds (mm/min) M201 X1000 Y1000 Z100 ; set maximum accelerations for XYZ axis(mm/sec) M204 P1000 T2000 ; set accelerations for print moves and travel moves ; Extruders M584 E121.0 ; set extruder mapping M350 E16 I1 ; configure microstepping with interpolation M906 E900 ; set extruder driver currents M92 E393 ; configure steps per mm M566 E120 ; set maximum instantaneous speed changes (mm/min) M203 E3600 ; set maximum speeds (mm/min) M201 E2000 ; set maximium accelerations for extruder(mm/s^2) ; BLTouch M558 K0 P9 C"121.io0.in" H5 F600:120 T6000 ; configure BLTouch probe via slot #0 G31 P500 X49.7 Y-19.3 Z2.82 ; set Z probe location, trigger value, offset and trigger height. If you have to move the nozzle closer to the bed, increase the G31 Z value by the amount of baby stepping used. If you have to move the nozzle farther away from the bed, decrease the G31 Z value by the amount of baby stepping used. M950 S0 C"121.io0.out" ; create servo #0 for BLtouch M376 H10 ; taper off bed compensation over 10mm ; Endstops l M574 X1 P"io1.in" S1 ; configure X axis endstop M574 Y1 P"io2.in" S1 ; configure Y axis endstop M574 Z1 S2 ; configure Z axis endstop ; Filament Runout M591 D0 P1 C"io6.in" S2 ; configure filament monitor (simple switch) for E0 ; Mesh Bed Compensation M557 X25:275 Y25:275 P5:5 ; define grid for mesh bed compensation ; Temperature Sensors M308 S0 P"temp0" Y"thermistor" A"Heated Bed" T100000 B4725 C7.06e-8 ; configure sensor #0 M308 S1 P"121.temp0" Y"thermistor" A"Hot End" T100000 B4725 C7.06e-8 ; configure sensor #1 ; Heaters M950 H0 C"out1" T0 ; create bed heater #0 M140 P0 H0 ; configure heated bed #0 M143 H0 P0 T0 C0 S120 A0 ; configure heater monitor #0 for bed heater #0 M307 H0 R0.321 K0.450:0.000 D1.20 E1.35 S1.00 B0 ; configure model of heater #0 M950 H1 C"121.out0" T1 ; create hotend heater #1 M143 H1 P0 T1 C0 S300 A0 ; configure heater monitor #0 for hotend heater #1 M307 H1 R3.832 K0.446:0.329 D2.21 E1.35 S1.00 B0 V24.1 ; configure model of hotend heater #1 ; Fans M950 F0 C"121.out2" ; create fan #0 M106 P0 C"Heatsink Fan" S0 B0.1 H1 T45 ; configure fan #0 M950 F1 C"121.out1" Q250 ; create fan #1 M106 P1 C"Part Cooling Fan" S0 B0.1 L35 X250 ; configure fan #1 ; Tools M563 P0 S"Tool 0" D0 H1 F1 ; create tool #0 M568 P0 R0 S0 ; set initial tool #0 active and standby temperatures to 0C ; Miscellaneous M593 P"zvdd" F40.0 ; use ZVDD input shaping to cancel ringing at 40.0Hz M572 D0 S0.034 ; set pressure advance for T0 T0
; homeall.g ; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v3.5.0-rc.4+1 on Sun Apr 21 2024 09:30:28 GMT-0400 (Eastern Daylight Time) ; lift Z G91 ; relative positioning G1 H2 Z5 F6000 ; move Z relative to current position to avoid dragging nozzle over the bed G90 ; absolute positioning ; home XY var xTravel = move.axes[0].max - move.axes[0].min + 5 ; calculate how far X can travel plus 5mm var yTravel = move.axes[1].max - move.axes[1].min + 5 ; calculate how far Y can travel plus 5mm G91 ; relative positioning G1 H1 X{-var.xTravel} Y{-var.yTravel} F6000 ; coarse home in the -X and -Y directions G1 H2 X5 Y5 F6000 ; move back 5mm G1 H1 X{-var.xTravel} Y{-var.yTravel} F300 ; fine home in the -X and -Y directions G90 ; absolute positioning ; home Z var xCenter = move.compensation.probeGrid.mins[0] + (move.compensation.probeGrid.maxs[0] - move.compensation.probeGrid.mins[0]) / 2 - sensors.probes[0].offsets[0] var yCenter = move.compensation.probeGrid.mins[1] + (move.compensation.probeGrid.maxs[1] - move.compensation.probeGrid.mins[1]) / 2 - sensors.probes[0].offsets[1] G1 X{var.xCenter} Y{var.yCenter} F6000 ; go to bed centre G30 ; probe the bed
; homez.g ; called to home the Z axis ; ; generated by RepRapFirmware Configuration Tool v3.5.0-rc.4+1 on Sun Apr 21 2024 09:30:29 GMT-0400 (Eastern Daylight Time) ; increase Z G91 ; relative positioning G1 H2 Z5 ; move Z relative to current position to avoid dragging nozzle over the bed G90 ; absolute positioning ; home Z var xCenter = move.compensation.probeGrid.mins[0] + (move.compensation.probeGrid.maxs[0] - move.compensation.probeGrid.mins[0]) / 2 - sensors.probes[0].offsets[0] var yCenter = move.compensation.probeGrid.mins[1] + (move.compensation.probeGrid.maxs[1] - move.compensation.probeGrid.mins[1]) / 2 - sensors.probes[0].offsets[1] G1 X{var.xCenter} Y{var.yCenter} F6000 ; go to bed centre G30 ; probe the bed
; bed.g ; called to level the bed ; ; generated by RepRapFirmware Configuration Tool v3.5.0-rc.4+1 on Sun Apr 21 2024 09:30:29 GMT-0400 (Eastern Daylight Time) G28 ; home G30 P0 X20 Y150 Z-99999 ; probe near left leadscrew, half way along Y axis G30 P1 X280 Y150 Z-99999 S2 ; probe near right leadscrew and calibrate 2 motors
Startup gcode:
M104 S[first_layer_temperature] ; set extruder temp M140 S[first_layer_bed_temperature] ; set bed temp M190 S[first_layer_bed_temperature] ; wait for bed temp G28 ; Home all G32 ; auto-bed level/tram G32 ; auto-bed level/tram G28 Z ; Home Z G29 ; Bed mesh G1 Z5 F3000 ; lift G1 X8 Y8 F3000 ; move to prime M109 S[first_layer_temperature] ; wait for extruder temp G1 Z0.15 F3000 ; get ready to prime G92 E0 ; reset extrusion distance G4 S15; wait for temp G1 X50 E25 F500 ; Extrude 25mm of filament in a 4cm line G92 E0 ; zero the extruded length G1 E-.5 F500 ; Retract a little G1 X80 F4000 ; Quickly wipe away from the filament line G1 Z0.3 ; Raise and begin printing
M122 === Diagnostics === RepRapFirmware for Duet 3 Mini 5+ version 3.5.2 (2024-06-11 17:14:16) running on Duet 3 Mini5plus WiFi (standalone mode) Board ID: K4V3J-AP6KL-K65J0-409NG-2012Z-7P0WG Used output buffers: 12 of 40 (29 max) === RTOS === Static ram: 103368 Dynamic ram: 121600 of which 12 recycled Never used RAM 13148, free system stack 130 words Tasks: NETWORK(2,nWait 7,13.2%,203) HEAT(3,nWait 6,0.0%,350) Move(4,nWait 6,0.2%,238) CanReceiv(6,nWait 1,0.1%,796) CanSender(5,nWait 7,0.0%,336) CanClock(7,delaying,0.0%,348) TMC(4,delaying,0.8%,67) MAIN(1,running,84.7%,665) IDLE(0,ready,0.1%,29) AIN(4,delaying,0.9%,259), total 100.0% Owned mutexes: WiFi(NETWORK) === Platform === Last reset 00:11:46 ago, cause: power up Last software reset at 2024-08-26 23:20, reason: HardFault imprec, Platform spinning, available RAM 12460, slot 0 Software reset code 0x4060 HFSR 0x40000000 CFSR 0x00000400 ICSR 0x00487803 BFAR 0xe000ed38 SP 0x20012020 Task NETW Freestk 488 ok Stack: 2002c658 20030bb8 200014e8 00000000 20032d96 0003015d 00030074 610f6000 200358e8 2002c640 2001882c 2002c496 2001882c 2001ea80 000302e3 00000000 00000000 00000000 200120b8 00000014 469d0078 00000002 fe530050 cb01a8c0 0800016a 00000001 000349f1 Error status: 0x00 Aux0 errors 0,0,0 MCU revision 3, ADC conversions started 706584, completed 706584, timed out 0, errs 0 MCU temperature: min 22.0, current 42.9, max 43.1 Supply voltage: min 23.1, current 23.7, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/0, heap memory allocated/used/recyclable 2048/200/200, gc cycles 0 Events: 0 queued, 0 completed Driver 0: standstill, SG min 0, read errors 0, write errors 0, ifcnt 10, reads 37147, writes 10, timeouts 0, DMA errors 0, CC errors 0 Driver 1: ok, SG min 0, read errors 0, write errors 0, ifcnt 15, reads 37142, writes 15, timeouts 0, DMA errors 0, CC errors 0 Driver 2: ok, SG min 0, read errors 0, write errors 0, ifcnt 15, reads 37142, writes 15, timeouts 0, DMA errors 0, CC errors 0 Driver 3: standstill, SG min 0, read errors 0, write errors 0, ifcnt 15, reads 37142, writes 15, timeouts 0, DMA errors 0, CC errors 0 Driver 4: standstill, SG min 0, read errors 0, write errors 0, ifcnt 15, reads 37142, writes 15, timeouts 0, DMA errors 0, CC errors 0 Driver 5: not present Driver 6: not present Date/time: 2024-08-27 21:15:05 Cache data hit count 1334650226 Slowest loop: 247.45ms; fastest: 0.16ms === Storage === Free file entries: 19 SD card 0 detected, interface speed: 22.5MBytes/sec SD card longest read time 5.5ms, write time 0.0ms, max retries 0 === Move === DMs created 83, segments created 18, maxWait 505523ms, bed compensation in use: none, height map offset 0.000, max steps late 0, min interval 0, bad calcs 0, ebfmin 0.00, ebfmax 0.00 next step interrupt due in 113 ticks, enabled Moves shaped first try 36, on retry 1, too short 16, wrong shape 315, maybepossible 0 === DDARing 0 === Scheduled moves 420, completed 415, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state 3 === DDARing 1 === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters 0 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 Heater 0 is on, I-accum = 0.2 Heater 1 is on, I-accum = 0.0 === GCodes === Movement locks held by null, null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is doing "G1 X140.244 Y125.527 E36.19697" in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 File2 is idle in state(s) 0 Queue2 is idle in state(s) 0 Q0 segments left 1, axes/extruders owned 0x0000807 Code queue 0 is empty Q1 segments left 0, axes/extruders owned 0x0000000 Code queue 1 is empty === Filament sensors === check 3012704 clear 0 Extruder 0 sensor: ok === CAN === Messages queued 6785, received 14195, lost 0, errs 0, boc 0 Longest wait 2ms for reply type 6053, peak Tx sync delay 12, free buffers 26 (min 25), ts 3532/3531/0 Tx timeouts 0,0,0,0,0,0 === Network === Slowest loop: 14.57ms; fastest: 0.00ms Responder states: MQTT(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) HTTP sessions: 1 of 8 === WiFi === Interface state: active Module is connected to access point Failed messages: pending 0, notrdy 0, noresp 0 Firmware version 2.1.0 MAC address e8:68:e7:e1:50:dd Module reset reason: Power up, Vcc 3.39, flash size 2097152, free heap 39700 WiFi IP address 192.168.1.133 Signal strength -54dBm, channel 2, mode 802.11n, reconnections 0 Clock register 00002001 Socket states: 0 0 0 0 0 0 0 0
-
@SonnyD1 said in Z axis Not Moving for Mesh Compensation:
Is the lack of a mesh.g the issue?
No. Mesh.g is an optional macro that you can use if you want to define exactly what happens when G29 is sent.
-
@SonnyD1 said in Z axis Not Moving for Mesh Compensation:
M558 K0 P9 C"121.io0.in" H5 F600:120 T6000
You're using K0 in the probe definition. If you do this, you must consistently use K0 in all other probe related commands. If you only have a single probe, just omit the K0 entirely and the firmware will assume you only have a single probe. This may be a part of your issue.
@SonnyD1 said in Z axis Not Moving for Mesh Compensation:
M376 H10
You have a mesh taper set as well. This will reduce the amount of z adjustment and may also be part of why it seems like nothing is happening. Try commenting this out for the time being.@SonnyD1 said in Z axis Not Moving for Mesh Compensation:
bed compensation in use: none
According to that M122 report, the mesh is not active at the time it was gathered, but your slicer start gcode should have an active mesh after your G29 command is executed and the mesh is performed. Was it gathered during the print?
G28 ; Home all G32 ; auto-bed level/tram G32 ; auto-bed level/tram G28 Z ; Home Z G29 ; Bed mesh
If you send those commands in the console and then move the print head around in XY do you see the Z motor turning? It can help to attach a small piece of tape so you can see very slight movements.
-
@Phaedrux I removed the K0 from the M558 cmd and commented out the M376 for now. That M122 was taken during a print as was the one above. The one above showed bed compensation in use as active.
@SonnyD1 said in Z axis Not Moving for Mesh Compensation:bed compensation in use: mesh, height map offset -0.222
Its weird that this one did not. I'm gonna run a M122 on a fresh print with those changes on a fresh slice.
New M122 results:
M122 === Diagnostics === RepRapFirmware for Duet 3 Mini 5+ version 3.5.2 (2024-06-11 17:14:16) running on Duet 3 Mini5plus WiFi (standalone mode) Board ID: K4V3J-AP6KL-K65J0-409NG-2012Z-7P0WG Used output buffers: 11 of 40 (30 max) === RTOS === Static ram: 103368 Dynamic ram: 121624 of which 12 recycled Never used RAM 12980, free system stack 132 words Tasks: NETWORK(2,nWait 7,14.1%,203) HEAT(3,nWait 6,0.0%,350) Move(4,nWait 6,0.5%,240) CanReceiv(6,nWait 1,0.1%,794) CanSender(5,nWait 7,0.0%,336) CanClock(7,delaying,0.0%,348) TMC(4,delaying,0.9%,67) MAIN(1,running,83.5%,665) IDLE(0,ready,0.1%,29) AIN(4,delaying,0.9%,259), total 100.0% Owned mutexes: WiFi(NETWORK) === Platform === Last reset 00:19:54 ago, cause: software Last software reset at 2024-08-28 19:59, reason: User, Gcodes spinning, available RAM 16764, slot 1 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 MCU revision 3, ADC conversions started 1194705, completed 1194705, timed out 0, errs 0 MCU temperature: min 31.1, current 37.8, max 43.3 Supply voltage: min 23.1, current 23.8, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/0, heap memory allocated/used/recyclable 2048/468/468, gc cycles 0 Events: 0 queued, 0 completed Driver 0: standstill, SG min 0, read errors 0, write errors 1, ifcnt 21, reads 62827, writes 10, timeouts 0, DMA errors 0, CC errors 0 Driver 1: ok, SG min 0, read errors 0, write errors 1, ifcnt 29, reads 62822, writes 15, timeouts 0, DMA errors 0, CC errors 0 Driver 2: ok, SG min 0, read errors 0, write errors 1, ifcnt 29, reads 62822, writes 15, timeouts 0, DMA errors 0, CC errors 0 Driver 3: ok, SG min 0, read errors 0, write errors 1, ifcnt 29, reads 62822, writes 15, timeouts 0, DMA errors 0, CC errors 0 Driver 4: ok, SG min 0, read errors 0, write errors 1, ifcnt 29, reads 62822, writes 15, timeouts 0, DMA errors 0, CC errors 0 Driver 5: not present Driver 6: not present Date/time: 2024-08-28 20:19:50 Cache data hit count 2235614968 Slowest loop: 244.06ms; fastest: 0.15ms === Storage === Free file entries: 19 SD card 0 detected, interface speed: 22.5MBytes/sec SD card longest read time 5.8ms, write time 47.2ms, max retries 0 === Move === DMs created 83, segments created 24, maxWait 483010ms, bed compensation in use: mesh, height map offset 0.000, max steps late 0, min interval 0, bad calcs 0, ebfmin 0.00, ebfmax 0.00 next step interrupt due in 140 ticks, enabled Moves shaped first try 334, on retry 1, too short 182, wrong shape 577, maybepossible 7 === DDARing 0 === Scheduled moves 1212, completed 1203, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state 3 === DDARing 1 === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters 0 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 Heater 0 is on, I-accum = 0.2 Heater 1 is on, I-accum = 0.0 === GCodes === Movement locks held by null, null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is doing "G1 X58.353 Y81.167 E137.12446" in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 File2 is idle in state(s) 0 Queue2 is idle in state(s) 0 Q0 segments left 1, axes/extruders owned 0x0000807 Code queue 0 is empty Q1 segments left 0, axes/extruders owned 0x0000000 Code queue 1 is empty === Filament sensors === check 5117227 clear 0 Extruder 0 sensor: ok === CAN === Messages queued 11995, received 24147, lost 0, errs 1, boc 0 Longest wait 4ms for reply type 6013, peak Tx sync delay 230, free buffers 26 (min 25), ts 5972/5971/0 Tx timeouts 0,0,0,0,0,0 === Network === Slowest loop: 220.14ms; fastest: 0.00ms Responder states: MQTT(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) HTTP sessions: 1 of 8 === WiFi === Interface state: active Module is connected to access point Failed messages: pending 0, notrdy 0, noresp 0 Firmware version 2.1.0 MAC address e8:68:e7:e1:50:dd Module reset reason: Power up, Vcc 3.39, flash size 2097152, free heap 39700 WiFi IP address 192.168.1.133 Signal strength -53dBm, channel 2, mode 802.11n, reconnections 0 Clock register 00002001 Socket states: 0 0 0 0 0 0 0 0
This printer is a belt Z so its a bit more difficult to see Z axis movement. Let me do some more testing and I'll get back with you with some better results. I'm sure there are others, that are a far less PITA, need your help too. I want to make sure I do my due diligence and not waste your time. There's a few things I want to try to ensure that it is not in fact moving and I'm just not seeing it. I'll tag ya when I'm done. Unless you have any other suggestions. TYVM for your help thus far.
-
One of the best ways to test if mesh compensation is working as expected is to slice a full size bed level test print and then print it twice. Once with compensation active, and again without. It should be pretty obvious if it's effective. Here is an STL that is fast to print.
-
@Phaedrux That's exactly what I was thinking. I need some exaggeration. Thanks for the help. I'll get back with ya!