On my delta, the smart effector trigger height increases linearly with each successive probe. I noticed this problem when performing mesh grid mapping, the build surface appears to rise steadily toward the X axis.
Probing the same spot:
G32 bed probe heights: -1.094 -1.094 -1.090 -1.094 -1.094 -1.071 -1.067 -1.079 -1.056 -1.056 -1.052 -1.045 -1.041 -1.037 -1.030 -1.045 -1.026 -1.037 -1.034 -1.030, mean -1.059, deviation from mean 0.024
Only performing a homing move will reset the sensor to the actual trigger height. Then it proceeds to increase each subsequent measurement.
I am currently testing the printer using quadature encoders, and seeing this problem both with the encoders off and on. Running firmware 3.5.1 I was seeing U-shaped moves (Z was dipping down on longer X-Y moves) so I updated to 3.6.0-alpha.5+1. That solved the dipping problem.
HW setup:
DC42 delta build, linear rails, smart effector, pcb carriages, optical endstops, 400mm bed, 490mm Haydn's arms, E3d Revo 2, currently do not have an extruder setup.
Duet 3 MB6HC, 3.6.0-alpha.5+1, SBC mode Pi4. Runs hotend, fans and smart effector probe
4 X Duet 3 Expansion EXP1HCL, 3.6.0-alpha.5- Each runs an axis
; Configuration file for Duet 3 MB 6HC (firmware version 3.3)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v3.4.1 on Sat Sep 14 2024 13:39:54 GMT-0600 (Mountain Daylight Time)
; General preferences
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"Duet 3" ; set printer name
M665 L490.910:490.930:490.86 r230 B195 H714 ; Set delta radius, diagonal rod length, printable radius and homed height
M666 X0 Y0 Z0 ; put your endstop adjustments here, or let auto calibration find them
; Drives
M569 P122.0 S0 ; physical drive 122.0 goes backwards
M569 P123.0 S0 ; physical drive 123.0 goes backwards
M569 P121.0 S0 ; physical drive 121.0 goes backwards
M569 P124.0 S1 ; physical drive 124.0 goes forwards
M584 X122.0 Y123.0 Z121.0 E124.0 ; set drive mapping
M350 E16 I0 ; configure microstepping without interpolation
M350 X16 Y16 Z16 I1 ; configure microstepping with interpolation
M92 X266.66 Y266.66 Z266.66 E572.00 ; set steps per mm
M566 X20 Y20 Z20 ; set maximum instantaneous speed changes (mm/min)
M203 X7200 Y7200 Z7200 E3600 ; set maximum speeds (mm/min)
M201 X200.00 Y200.00 Z200.00 E800.00 ; set accelerations (mm/s^2)
M906 X2400 Y2400 Z2400 E500 I60 ; set motor currents (mA) and motor idle factor in per cent
M84 S900 ; Set idle timeout
; Axis Limits
M208 Z0 S1 ; set minimum Z
; Endstops
M574 X2 S1 P"122.io0.in" ; configure switch-type (e.g. microswitch) endstop for high end on X via pin 122.io0.in
M574 Y2 S1 P"123.io0.in" ; configure switch-type (e.g. microswitch) endstop for high end on Y via pin 123.io0.in
M574 Z2 S1 P"121.io0.in" ; configure switch-type (e.g. microswitch) endstop for high end on Z via pin 121.io0.in
; Z-Probe
M558 P8 R0.4 C"io3.in+io3.out" H8 F1200 T3000 ; set Z probe type to effector and the dive height + speeds
G31 P100 X0 Y0 Z-0.39 ; set Z probe trigger value, offset and trigger height
; Heaters
M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0
M950 H0 C"out0" T0 ; create bed heater output on out0 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"temp2" Y"thermistor" T100000 B4267 ; configure sensor 1 as thermistor on pin temp2
M950 H1 C"out1" T1 ; create nozzle heater output on out1 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
M950 F0 C"out7" Q55 ; create fan 0 on pin out7 and set its frequency
M106 P0 S0 H-1 ; set fan 0 value. 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
; Custom settings
M912 P0 S-9.5 ; mcu temperature calibration
G4 S1 ; wait for expansion boards to start
M557 R180 S18
; Miscellaneous
M501 ; load saved parameters from non-volatile memory
T0 ; select first tool
; homedelta.g
; called to home all towers on a delta printer
;
; generated by RepRapFirmware Configuration Tool v3.3.16 on Fri Oct 06 2023 14:23:27 GMT-0600 (Mountain Daylight Time)
M569 P121.0 D0 ; Make sure we are in open loop mode
M569 P122.0 D0 ; Make sure we are in open loop mode
M569 P123.0 D0 ; Make sure we are in open loop mode
G91 ; relative positioning
G1 H1 X1000 Y1000 Z1000 F1800 ; move all towers to the high end stopping at the endstops (first pass)
G1 H2 X-5 Y-5 Z-5 F360 ; go down a few mm
G1 H1 X10 Y10 Z10 F360 ; move all towers up once more (second pass)
G1 Z-20 F360 ; Move to a known-safe position
M400 ; Wait for the move to complete
G4 P200 ; Wait for the motor to settle
M569.1 P121.0 T2 C2500 S400 R100 H25 I650 D0.085 A50000 V60 ; Configure Z closed loop
M569.5 P121.0 S2000 A0 R2000 D24830 V0
M569 P121.0 D4 S0 ; Configure the motor on the 1HCL at can address 121 as being in closed-loop drive mode (D4) and reversed (S0)
M400 ; Wait for the move to complete
G4 P200 ; Wait for the motor to settle
M569.6 P121.0 V1 ; Perform closed-loop calibration
M569.1 P122.0 T2 C2500 S400 R100 H25 I650 D0.085 A50000 V60 ; Configure X closed loop
M569.5 P122.0 S2000 A0 R2000 D24830 V0
M569 P122.0 D4 S0 ; Configure the motor on the 1HCL at can address 122 as being in closed-loop drive mode (D4) and reversed (S0)
M400 ; Wait for the move to complete
G4 P200 ; Wait for the motor to settle
M569.6 P122.0 V1 ; Perform closed-loop calibration
M569.1 P123.0 T2 C2500 S400 R100 H25 I650 D0.085 A50000 V60 ; Configure Y closed loop
M569.5 P123.0 S2000 A0 R2000 D24830 V0
M569 P123.0 D4 S0 ; Configure the motor on the 1HCL at can address 123 as being in closed-loop drive mode (D4) and reversed (S0)
M400 ; Wait for the move to complete
G4 P200 ; Wait for the motor to settle
M569.6 P123.0 V1 ; Perform closed-loop calibration
G90 ; absolute positioning
Test script:
g1 z20
var x=0
var y=0
var numProbes=20
g30 s-1
g1 z8
while iterations < var.numProbes-1
G30 P{iterations} X{var.x} Y{var.y} Z-9999
G30 P{var.numProbes-1} X{var.x} Y{var.y} Z-9999 S-1
RepRapFirmware height map file v2 generated at 2024-09-14 23:56, min error 0.030, max error 0.981, mean 0.453, deviation 0.271
axis0,axis1,min0,max0,min1,max1,radius,spacing0,spacing1,num0,num1
X,Y,-140.00,140.10,-140.00,140.10,175.00,35.00,35.00,9,9
0, 0, 0.030, 0.053, 0.045, 0.078, 0.146, 0, 0
0, 0.170, 0.109, 0.092, 0.077, 0.085, 0.124, 0.185, 0
0.206, 0.178, 0.135, 0.148, 0.167, 0.191, 0.240, 0.308, 0.381
0.334, 0.304, 0.275, 0.277, 0.260, 0.253, 0.310, 0.322, 0.387
0.357, 0.365, 0.381, 0.379, 0.365, 0.422, 0.478, 0.538, 0.546
0.526, 0.544, 0.549, 0.535, 0.537, 0.534, 0.590, 0.591, 0.598
0.548, 0.587, 0.630, 0.665, 0.691, 0.750, 0.740, 0.805, 0.808
0, 0.754, 0.775, 0.825, 0.838, 0.859, 0.861, 0.843, 0
0, 0, 0.823, 0.888, 0.938, 0.945, 0.981, 0, 0