Position Tolerance Exceeded
-
Whenever homing the axes of this large custom designed printer, the axes says "Warning: Driver 72.0 warning: position tolerance exceeded". I assume this is because the motors are moving fast when they suddenly stop at a limit switch. How do I fix this warning? Is there a way to fix it without compromising the speed?
I am using a mainboard 6HC connected to M23CL motors, which then have lead screws/pulleys to actuate a gantry.
config.g
; Configuration file for RepRapFirmware on Duet 3 Main Board 6HC ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.5.10 on Sun Jan 19 2025 10:10:54 GMT-0800 (Pacific Standard Time) ; General G90 ; absolute coordinates M83 ; relative extruder moves M550 P"5axis" ; set hostname G4 S2 ;Drivers M569 P70.0 S0 R1; driver 0.0 goes forwards (X axis) M569.1 P70.0 T3 R100 I0 M569 P70.0 D4 ;M569 P71.0 S1 D2 ; driver 0.1 goes forwards (Y axis) M569 P71.0 S0 R1 M569.1 P71.0 T3 R100 I0 M569 P71.0 D4 ;M569 P72.0 S1 D2 ; driver 0.2 goes forwards (Z axis) M569 P72.0 S0 R1 M569.1 P72.0 T3 R100 I0 M569 P72.0 D4 ;M569 P73.0 S1 D2 ; driver 0.4 goes forwards (U axis) M569 P73.0 S0 R1 M569.1 P73.0 T3 R100 I0 M569 P73.0 D4 ;M569 P74.0 S1 D2 ; driver 0.5 goes forwards (V axis) M569 P74.0 S0 R1 M569.1 P74.0 T3 R100 I0 M569 P74.0 D4 ; Axes M584 X70.0 Y71.0 Z72.0 U73.0 V74.0 E75.0 ; set axis mapping M350 X16 Y16 Z16 U16 V16 I1 ; configure microstepping with interpolation M92 X640 Y640 Z1969.230 U800 V27.350 ; configure steps per mm M906 X1500 Y1500 Z1500 U1500 V1500 ; set axis driver currents M208 X0:1000 Y0:820 Z0:210 U-20:100 V-999:999 ; set minimum and maximum axis limits M566 X500 Y500 Z500 U500 V1000 ; set maximum instantaneous speed changes (mm/min) M203 X1500 Y1500 Z500 U500 V2000 ; set maximum speeds (mm/min) M201 X500 Y500 Z500 U500 V1000 ; set accelerations (mm/s^2) ; Kinematics ;M669 K8 ; configure CoreXYUV kinematics ; Endstops M574 X1 P"!io3.in" S1 ; configure X axis endstop M574 Y1 P"!io0.in" S1 ; configure Y axis endstop M574 Z2 P"!io7.in" S1 ; configure Z axis endstop M574 U0 ; configure U axis endstop M574 V0 ; configure V axis endstop G92 V0 ; set V axis to zero upon startup G92 U0 ; set V axis to zero upon startup ; Extruder M350 E16 I1 ; configure microstepping with interpolation M906 E900 ; set extruder driver currents M92 E2682 ; configure steps per mm M566 E120 ; set maximum instantaneous speed changes (mm/min) M203 E3600 ; set maximum speeds (mm/min) M201 E250 ; set accelerations (mm/s^2) ;Nozzle Temperature M308 S1 P"75.temp1" Y"thermistor" A"Nozzle" T100000 B4267 C7.06e-8 ; configure sensor #1 M950 H1 C"75.out0" T1 ; create heater #1 hotend heater M143 H1 P0 S275 A0 M143 H1 P1 S285 A2 M307 H1 R4.663 K0.549:0.000 D1.95 E1.35 S1.00 B0 ; Scanning Z Probe M558 P11 C"75.i2c.ldc1612" F36000 T36000 M308 A"SZP coil" S10 Y"thermistor" P"75.temp2" ; thermistor on coil G31 Z2 X302 Y245 ; M558.2 K0 S13 R142607 M557 X292:312 Y235:255 P10
homex.g
; homex.g ; called to home the X axis ; ; generated by RepRapFirmware Configuration Tool v3.5.10 on Sun Jan 19 2025 10:11:00 GMT-0800 (Pacific Standard Time) ; increase Z G90; ABSOLUTE positioning G1 H2 Z200 ; move z axis to 5mm from top G90 ; absolute positioning ; home X G91 ; relative positioning var maxTravel = move.axes[0].max - move.axes[0].min + 5 ; calculate how far X can travel plus 5mm G1 H1 X{-var.maxTravel} F5000 ; coarse home in the -X direction G1 X5 F6000 ; move back 5mm G1 H1 X{-var.maxTravel} F300 ; fine home in the -X direction G90 ; absolute positioning
-
@ash100 the reason we haven't seen this before is that or recommendation us to home in open loop mode. You can do this by using M569 with D parameter to switch to open loop mode at the start if each homing file, and back to closed loop mode at the end.
Homing in closed loop mode may be possible with the right mechanics. The reason you get the position error is probably because after the homing switch is triggered, there is a latency of a few milliseconds before the command to stop the motor is received. If you can arrange your homing switch to trigger a small distance (2mm may be enough) before the physical stop is reached, so that the motor can overshoot the homing position slightly without hitting a hard stop, that may avoid the error. If it doesn't then I will need to amend the firmware to ignore position errors immediately after the motor is commanded to stop during homing.