After tuning, closed-loop motors do a sharp jerk and error
-
Every time I turn my printer on, my Duet3d closed-loop system (2x 1HCL and 2x Duet magnetic encoders) goes through a calibration process. At the end, it does this quick jerk and then tells me that the encoder had an error(Driver 50.0 and 51.0 error: failed to maintain position). What is happening here, and how should I fix it? Video attached, below is my config. kathunk smallest.mp4
; General preferences
G4 S1 ;wait for expansion boards to start
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"V-Core 3" ; set printer name
M669 K1 ; CoreXY
G21 ; Set Units to Millimeters; Network
M552 S1 ; enable network
M586 P0 S1 ; enable HTTP
M586 P1 S0 ; disable FTP
M586 P2 S0 ; disable Telnet;Closed-loop steppers setup
M584 X50.0
M569.1 P50.0 T3 S200 ; Configure the Duet 3 Expansion 1HCL board at CAN address 50 with a Duet 3 magnetic encoder, warn if 1 fullstep threshold exceeded, error if 2 full steps threshold exceeded.
M906 X2500; set motor current
M569 P50.0 D2; set open loop mode
M17 X
M203 X10800.0
G4 P300
M569 P50.0 D4
G4 P300
M569.6 P50.0 V2M584 Y51.0
M569.1 P51.0 T3 S200
M906 Y2500
M569 P51.0 D2
M17 Y
M203 Y10800.00
M201 Y3000.00
G4 P300
M569 P51.0 D4
G4 P300
M569.6 P51.0 V2M917 X0 Y0 ; Set the closed loop axes to have a holding current of zero
M350 X32 Y32 ; set steps/mm to 32 to make full use of the encoder resolution
M92 X160 Y160 ; steps/mm for a 20 tooth gt2 pulley; Drives
M569 P0.0 S1 D3 ; physical drive 0.0 goes forwards
M569 P0.1 S1 D3 ; physical drive 0.1 goes forwards
M569 P0.2 S1 D3 ; physical drive 0.2 goes forwards
;M569 P0.3 S1 D3 ; physical drive 0.3 goes forwards
;M569 P0.4 S1 D3 ; physical drive 0.4 goes forwards
M569 P0.5 S1 D3 ; physical drive 0.5 goes forwards
M569 P0.6 S1 D3
M584 X50.0 Y51.0 Z0.0:0.1:0.2 E0.5:0.6 ; set drive mapping
M350 Z16 E16:16 I1 ; configure microstepping with interpolation;M92 X80.00 Y80.00 Z800.00 ; set steps per mm
M92 Z800.0
M906 Z800 I30 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeoutM566 X400.00 Y400.00 Z6.00 E300.00:300.00 P1 ; set maximum instantaneous speed changes (mm/min)
M203 X10800.00 Y10800.00 Z1000.00 E7200.00:7200.00 ; set maximum speeds (mm/min)
M201 X3000.00 Y3000.00 Z100.00 E10000.00:10000.00 ; set accelerations (mm/s^2); Axis Limits
M208 X0 Y0 Z-10 S1 ; set axis minima
M208 X500 Y500 Z500 S0 ; set axis maxima; Endstops
M574 X1 S1 P"io0.in" ; configure active high endstops
M574 Y2 S1 P"io1.in" ; configure active high endstops; Filament Runout Sensor
M591 D0 P1 C"io6.in" S1 ; simple sensor (high signal when filament present) connected to IO_6 for drive 0, enabled
;M591 D0 ; display filament sensor parameters for extruder drive 0M671 X-4.5:250:505 Y-4.52:505:-4.52 S10 ; define positions of Z leadscrews or bed levelling screws
M557 X50:450 Y50:450 P5 ; define 5x5 mesh grid; Heaters
M308 S0 P"temp0" Y"thermistor" T100000 B3950 A"Bed" ; configure sensor 0 as thermistor on pin temp0
M950 H0 C"out0" T0 ; create bed heater output on out5 and map it to sensor 0
M307 H0 B0 S.50 ; disable bang-bang mode for the bed heater and set PWM limit
M140 H0 ; map heated bed to heater 0
M143 H0 S85 ; set temperature limit for heater 0 to 110C;; Run Bed PID Tune!! Below is an example for a 300x300 bed
;M307 H0 A303.1 C356.7 D1.4 S1.00 V24.0 B0
M307 H0 R0.467 K0.281:0.000 D7.29 E1.35 S1.00 B0; Fans
M950 F0 C"out4" Q450 ; create fan 0 on pin out4 and set its frequency
M106 P0 C"Flexion Fan" S255 H-1 ; set fan 0 name and value. Thermostatic control is turned off
M950 F1 C"out3" Q500 ; create fan 1 on pin out3 and set its frequency
M106 P1 C"Revo Micro Fan" S255 H-1 ; set fan 1 name and value. Thermostatic control turned on for Hotend; Tools
M563 P0 S"Flexion Extruder" D0 H1 ; define tool 0
G10 P0 X10 Y-26 Z0 ; set tool 0 axis offsets
G10 P0 R215 S0 ; set initial tool 0 active and standby temperatures to 0CM563 P1 S"Revo Micro Extruder" D1 H2 ;define tool 1
G10 P1 X-18.5 Y-56.5 Z0
;last: G10 P1 X-17 Y-56.5 Z0
G10 P1 R220 S0M950 H1 C"out1" T1 ; create nozzle heater output on out2 and map it to sensor 1
M307 H1 B0 S.60 ; disable bang-bang mode for heater and set PWM limit
M143 H1 S230 ; set the maximum temperature in C for heaterM950 H2 C"out2" T2
M307 H2 B0 S.80
M143 H2 S290; EVA 2 / BMG / E3D V6
;M92 E690 ; set extruder steps per mm, 0.9 angle/step (LDO Pancake)
;M92 E304
M92 E244.17671:680
M906 E1361:800 ; set extruder motor current (mA) and idle factor in per cent
;Max: E1512
;Original: E800M308 S1 P"temp1" Y"thermistor" T100000 B3950 A"Flexion Heater"
;For mosquito:
M308 S2 P"temp2" Y"thermistor" T100000 B4725 C7.060000e-8 A"Revo Micro Heater"
;; Run Heater PID Tune!!
;; M307 H1 A751.5 C196.6 D4.7 S1.00 V23.9 B0
;Mosquito
;M307 H1 R3.108 K0.765:0.123 D6.44 E1.35 S1.00 B0
;M307 H1 R4.707 K1.275:0.000 D8.01 E1.35 S0.50 B0 V23.9
;Normal, extruder fan duct but no bed fan:
;M307 H1 R4.521 K0.457:0.000 D8.91 E1.35 S0.50 B0
;With bed fan:
;M307 H1 R3.793 K0.978:0.000 D9.61 E1.35 S0.60 B0
;Flexion PID params
;M307 H1 R3.308 K0.457:0.000 D11.78 E1.35 S0.50 B0
;Flexion PID params, FAN ON
M307 H1 R3.625 K0.519:0.000 D11.25 E1.35 S0.60 B0
;Revo Micro PID params
;M307 H2 R4.988 K1.051:0.000 D1.53 E1.35 S0.80 B0 V24.1
;M307 H2 R5.029 K0.514:0.000 D1.84 E1.35 S0.80 B0
;Revo Micro PID Params, FAN ON
M307 H2 R5.056 K0.775:0.000 D1.73 E1.35 S0.80 B0;Z-Probe
;; Inductive Probe
; M558 P5 C"!io3.in" H5 F400 T5000 ; set Z probe type to unmodulated and the dive height + speeds
; G31 P500 X-30 Y-15 Z0.20 ; set Z probe trigger value, offset and trigger height, more Z means closer to the bed
; BLTouch
M950 S0 C"io2.out" ; Create a servo pin on io2
M558 P9 C"io2.in" H5 F240 T10800 A5 ; set Z probe type to unmodulated and the dive height + speeds
;M558 C"zprobe.in" P8 R0.4 F1200 H10 T6000
G31 P25 X10.00 Y-30.00 Z1.2 ; set Z probe trigger value, offset and trigger height, more Z means closer to the bed; Select default tool
T0; Pressure Advance
; M572 D0 S0.10 -
-
Firmware versions on all your boards?
-
@tylersuard if you use 3.5 series firmware then with the Duet3D magnetic encoders you don't need to do the calibration every time, only when the relative positions of the encoder board, motor shaft and magnet may have changed.