v2.0 consistently increasing probe heights
-
@oarjjj i'm also not sure whether this still applies with 3.6 alpha 5.1
The tower motors of a delta printer cannot be driven via CAN-connected expansion boards. Workaround: use M669 to enable segmentation with short (e.g. 1mm) segments.
https://docs.duet3d.com/en/User_manual/RepRapFirmware/CAN_limitations#:~:text=The tower motors of a delta printer cannot be driven via CAN-connected expansion boards. Workaround%3A use M669 to enable segmentation with short (e.g. 1mm) segments. -
@jay_s_uk said in v2.0 consistently increasing probe heights:
@oarjjj i'm also not sure whether this still applies with 3.6 alpha 5.1
The tower motors of a delta printer cannot be driven via CAN-connected expansion boards. Workaround: use M669 to enable segmentation with short (e.g. 1mm) segments.
https://docs.duet3d.com/en/User_manual/RepRapFirmware/CAN_limitations#:~:text=The tower motors of a delta printer cannot be driven via CAN-connected expansion boards. Workaround%3A use M669 to enable segmentation with short (e.g. 1mm) segments.It should be OK to use CAN-connected motors for delta towers on 3.6, however there is a known issue (see https://github.com/Duet3D/RepRapFirmware/wiki/Changelog-RRF-3.x-Beta#reprapfirmware-360-alpha51-main-board--alpha5-expansion-boards) that may be relevant. The delay in stopping motion when the probe is triggered may be causing the motors to skip steps. Or perhaps there isn't really a delay in stopping motion but the degree of reversion needed is being calculated incorrectly.
Fixing this is one of my top priorities because it is the last major bug to fix before the 3.6.0-beta.1 release.
-
@apak said in v2.0 consistently increasing probe heights:
@oarjjj said in v2.0 consistently increasing probe heights:
M208 Z0 S1 ; set minimum Z
Need to go under Z=0 with contact probe like smarteffector.
Good tip. From what I can tell the probe dive height allows it to go beyond Z0.
@dc42 said in v2.0 consistently increasing probe heights:
@jay_s_uk said in v2.0 consistently increasing probe heights:
@oarjjj i'm also not sure whether this still applies with 3.6 alpha 5.1
The tower motors of a delta printer cannot be driven via CAN-connected expansion boards. Workaround: use M669 to enable segmentation with short (e.g. 1mm) segments.
https://docs.duet3d.com/en/User_manual/RepRapFirmware/CAN_limitations#:~:text=The tower motors of a delta printer cannot be driven via CAN-connected expansion boards. Workaround%3A use M669 to enable segmentation with short (e.g. 1mm) segments.It should be OK to use CAN-connected motors for delta towers on 3.6, however there is a known issue (see https://github.com/Duet3D/RepRapFirmware/wiki/Changelog-RRF-3.x-Beta#reprapfirmware-360-alpha51-main-board--alpha5-expansion-boards) that may be relevant. The delay in stopping motion when the probe is triggered may be causing the motors to skip steps. Or perhaps there isn't really a delay in stopping motion but the degree of reversion needed is being calculated incorrectly.
Fixing this is one of my top priorities because it is the last major bug to fix before the 3.6.0-beta.1 release.
I really appreciate your help. Can confirm, segmentation is enabled. The towers do very abruptly stop when performing their homing move. But, I can't seem to notice any difference in motion when probing.
The expansion boards are there for closed loop support. It sounds like delta performance may be better running the motors on the main board though. I don't suppose it's possible to have the best of both worlds?
I'll try connecting the axis motors to the main board to see if the issue persists there.
-
@oarjjj the bug in 3.6 that I mentioned is now fixed. I expect to release 3.6.0-beta.1 this week.
-
@dc42 The problem goes away when connecting drives to the main board, bypassing the expansions boards and CAN bus. I'll be happy to test the update when it's ready!
-
@oarjjj this is fixed in the forthcoming 3.6.0 beta 1 build.
-
@dc42 awesome I'll keep an eye on the beta forum for a link to download the new firmware
-
@dc42 said in v2.0 consistently increasing probe heights:
@oarjjj this is fixed in the forthcoming 3.6.0 beta 1 build.
Looks I'm still facing the problem after updating to 3.6.0b1. For some reason it would not update the boards initially:
There are 5 outdated boards: - Duet 3 MB6HC (3.6.0-alpha.5+1 -> 3.6.0-beta.1) - Duet 3 Expansion EXP1HCL (3.6.0-alpha.5 -> 3.6.0-beta.1) @ CAN address 121 - Duet 3 Expansion EXP1HCL (3.6.0-alpha.5 -> 3.6.0-beta.1) @ CAN address 122 - Duet 3 Expansion EXP1HCL (3.6.0-alpha.5 -> 3.6.0-beta.1) @ CAN address 123 - Duet 3 Expansion EXP1HCL (3.6.0-alpha.5 -> 3.6.0-beta.1) @ CAN address 124 Would you like to update them all (Y/n)? y Updating firmware on board #121... Error: JsonTypeInfo metadata for type 'DuetControlServer.Commands.Code' was not provided by TypeInfoResolver of type 'DuetAPI.Commands.CommandContext'. If using source generation, ensure that all root types passed to the serializer have been annotated with 'JsonSerializableAttribute', along with any types that might be serialized polymorphically. Updating firmware on board #122... Error: JsonTypeInfo metadata for type 'DuetControlServer.Commands.Code' was not provided by TypeInfoResolver of type 'DuetAPI.Commands.CommandContext'. If using source generation, ensure that all root types passed to the serializer have been annotated with 'JsonSerializableAttribute', along with any types that might be serialized polymorphically. Updating firmware on board #123... Error: JsonTypeInfo metadata for type 'DuetControlServer.Commands.Code' was not provided by TypeInfoResolver of type 'DuetAPI.Commands.CommandContext'. If using source generation, ensure that all root types passed to the serializer have been annotated with 'JsonSerializableAttribute', along with any types that might be serialized polymorphically. Updating firmware on board #124... Error: JsonTypeInfo metadata for type 'DuetControlServer.Commands.Code' was not provided by TypeInfoResolver of type 'DuetAPI.Commands.CommandContext'. If using source generation, ensure that all root types passed to the serializer have been annotated with 'JsonSerializableAttribute', along with any types that might be serialized polymorphically. Updating firmware on mainboard... Error: JsonTypeInfo metadata for type 'DuetControlServer.Commands.Code' was not provided by TypeInfoResolver of type 'DuetAPI.Commands.CommandContext'. If using source generation, ensure that all root types passed to the serializer have been annotated with 'JsonSerializableAttribute', along with any types that might be serialized polymorphically.
So I did the following:
- Attempted to downgrade to stable via apt, and got the same error.
- Reimaged the PI SD card with the latest lite image.
- Attempted an update to unstable via apt, same errors.
- Downgraded to stable duet packages.
- I was now able to downgrade to stable firmware via deb package.
- Updated to 3.6.0b1 using the deb package while on stable duet3d packages.
- Updated to unstable duet3d packages.
Upon reconnecting the steppers to the expansion boards I got a similar result as before:
** encoders disabled ** G32 bed probe heights: 0.103 0.112 0.119 0.123 0.134 0.140 0.148 0.159 0.167 0.175 0.189 0.200 0.216 0.224 0.228 0.236 0.247 0.250 0.266 0.269, mean 0.185, deviation from mean 0.053
** encoders enabled ** Driver 123.0 basic tuning succeeded, measured backlash 0.048 step Driver 122.0 basic tuning succeeded, measured backlash 0.060 step Driver 121.0 basic tuning succeeded, measured backlash 0.046 step G32 bed probe heights: 0.082 0.089 0.096 0.099 0.111 0.118 0.127 0.133 0.140 0.152 0.164 0.164 0.172 0.182 0.186 0.197 0.208 0.216 0.227 0.238, mean 0.155, deviation from mean 0.047
I have also tried:
- Replacing the smart effector v2 with a new v4.
- Replacement also resulted in me repinning the connectors on the effector.
I am starting to think it may be an issue with the E3d Lite6, possibly its spring is compressing? I'm not sure.
I tried running the script a few more times:
G32 bed probe heights: 0.082 0.089 0.096 0.099 0.111 0.118 0.127 0.133 0.140 0.152 0.164 0.164 0.172 0.182 0.186 0.197 0.208 0.216 0.227 0.238, mean 0.155, deviation from mean 0.047 G32 bed probe heights: 0.242 0.250 0.253 0.266 0.277 0.284 0.291 0.299 0.309 0.307 0.317 0.325 0.328 0.343 0.344 0.359 0.359 0.365 0.371 0.377, mean 0.313, deviation from mean 0.041 G32 bed probe heights: 0.399 0.408 0.419 0.426 0.437 0.442 0.456 0.459 0.472 0.479 0.487 0.490 0.497 0.508 0.512 0.519 0.528 0.538 0.549 0.554, mean 0.479, deviation from mean 0.046 G32 bed probe heights: 0.562 0.569 0.577 0.584 0.594 0.599 0.610 0.618 0.622 0.636 0.636 0.651 0.654 0.666 0.674 0.684 0.688 0.703 0.711 0.715, mean 0.638, deviation from mean 0.047 G32 bed probe heights: 0.883 0.891 0.898 0.902 0.913 0.917 0.926 0.933 0.943 0.951 0.959 0.962 0.974 0.978 0.986 0.993 1.001 1.003 1.012 1.018, mean 0.952, deviation from mean 0.042 G32 bed probe heights: 1.023 1.033 1.037 1.044 1.056 1.059 1.071 1.079 1.086 1.098 1.104 1.109 1.119 1.124 1.127 1.136 1.149 1.154 1.162 1.173, mean 1.097, deviation from mean 0.045
The end result of all this is mesh bed leveling is ever increasing in one direction.
config.g
; 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 M584 X122.0 Y123.0 Z121.0 E124.0 ; set drive mapping 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 ;M584 Z0.0 X0.1 Y0.2 E124.0 ; set drive mapping ;M569 P0 S0 ; Drive 0 (Z) goes backwards ;M569 P1 S0 ; Drive 1 (X) goes backwards ;M569 P2 S0 ; Drive 2 (Y) goes backwards M569 P124.0 S1 ; physical drive 124.0 goes forwards 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 ;M574 Z2 S1 P"io0.in" ; configure switch-type (e.g. microswitch) endstop for high end on Z via pin 121.io0.in ;M574 X2 S1 P"io1.in" ; configure switch-type (e.g. microswitch) endstop for high end on X via pin 122.io0.in ;M574 Y2 S1 P"io2.in" ; configure switch-type (e.g. microswitch) endstop for high end on Y via pin 123.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 B4267 ; 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
; 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 G1 Z700 X0 Y0
macro
g1 x0 y0 z20 var x=0 var y=0 var numProbes=20 g30 s-1 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
-
-
@oarjjj gave you verified that all the boards are now running 3.6.0-beta.1 ?
-
@dc42 Yes.
FIRMWARE_NAME: RepRapFirmware for Duet 3 MB6HC FIRMWARE_VERSION: 3.6.0-beta.1 ELECTRONICS: Duet 3 MB6HC v1.0 or earlier FIRMWARE_DATE: 2024-09-24 10:07:51 Duet EXP1HCL rev 1.0a or earlier firmware version 3.6.0-beta.1 (2024-09-24 08:50:54) Duet EXP1HCL rev 1.0a or earlier firmware version 3.6.0-beta.1 (2024-09-24 08:50:54) Duet EXP1HCL rev 1.0a or earlier firmware version 3.6.0-beta.1 (2024-09-24 08:50:54) Duet EXP1HCL rev 1.0a or earlier firmware version 3.6.0-beta.1 (2024-09-24 08:50:54)
-
I wonder if there's something wrong on the CAN bus causing unexpected latency? I didn't use a premade cable.
-
@dc42 said in v2.0 consistently increasing probe heights:
@oarjjj gave you verified that all the boards are now running 3.6.0-beta.1 ?
Any other ideas?