Plan to switch from normal steppers to 1HCL+ magnetic encoders
-
Just in case downgraded back to 3.5.4 and the result is the same
-
I am stupid these are 0.9 mottors
tried to edit M569.1 with S400 parameter and the calibration went well , but after that the motor entered in such big resonance in stoped position , that crashed the whole board1/20/2025, 8:37:55 PM Connection established 1/20/2025, 8:37:25 PM Connection interrupted, attempting to reconnect... Network error: Request timed out 1/20/2025, 8:37:17 PM Warning: Driver 50.0 warning: position tolerance exceeded 1/20/2025, 8:37:16 PM m17 1/20/2025, 8:36:28 PM Warning: Driver 50.0 warning: position tolerance exceeded 1/20/2025, 8:36:27 PM Connection established 1/20/2025, 8:36:12 PM Connection interrupted, attempting to reconnect... Network error: Request timed out 1/20/2025, 8:36:03 PM m569.6 p50.0 v2 Driver 50.0 calibration succeeded, measured backlash is -0.084 step Original encoder reading errors: min -12.3, max 14.8, rms 5.2 Corrections made: min -9.0, max 10.0, rms 5.1 Warning: Driver 50.0 warning: position tolerance exceeded Warning: Driver 50.0 warning: position tolerance exceeded Warning: Driver 50.0 warning: position tolerance exceeded Warning: Driver 50.0 warning: position tolerance exceeded Warning: Driver 50.0 warning: position tolerance exceeded Warning: Driver 50.0 warning: position tolerance exceeded Warning: Driver 50.0 warning: position tolerance exceeded Warning: Driver 50.0 warning: position tolerance exceeded Warning: Driver 50.0 warning: position tolerance exceeded Warning: Driver 50.0 warning: position tolerance exceeded Warning: Driver 50.0 warning: position tolerance exceeded Warning: Driver 50.0 warning: position tolerance exceeded Warning: Driver 50.0 warning: position tolerance exceeded Warning: Driver 50.0 warning: position tolerance exceeded Warning: Driver 50.0 warning: position tolerance exceeded 1/20/2025, 8:35:37 PM m569.6 p50.0 Error: M569.6: Driver 50.0 calibration failed (no reason available) 1/20/2025, 8:35:14 PM m569.1 p50.0 Encoder type: rotaryAS5047 Magnetic encoder motor steps/rev 400, agc 80, mag 4715 PID parameters P=100.0 I=0.000 D=0.000 V=1000.0 A=0.0, torque constant 1.00Nm/A Warning/error threshold 1.00/2.00 1/20/2025, 8:35:03 PM m17 1/20/2025, 8:34:47 PM Upload of config.g successful after 0s 1/20/2025, 6:39:33 PM Connection established
-
@martin7404 grab an
M122
andM122 B50
so we can see whats the cause of the reboot -
@jay_s_uk Reboot is fixed I uped the error in m596.1
It now just gives a warning when I send m17
if I reset the tuning 569.6 p50.0 v4 it goes away
so the problem seems to be 0.9 steppers
it performs calibration and after that goes in resonance -
@jay_s_uk here is new calibration
and then the m122 p50.0
m122 b50 Diagnostics for board 50: Duet EXP1HCL rev 1.0a or earlier firmware version 3.6.0-beta.3 (2025-01-15 18:54:31) Bootloader ID: SAME5x bootloader version 2.4 (2021-12-10) All averaging filters OK Never used RAM 51588, free system stack 184 words Tasks: EncCal(1,nWait 6,0.3%,183) Move(3,nWait 7,0.0%,167) CLSend(3,nWait 6,0.0%,149) TMC(4,nWait 6,66.5%,317) HEAT(2,nWait 6,0.1%,105) CanAsync(5,nWait 4,0.0%,66) CanRecv(3,nWait 1,0.0%,65) CanClock(5,nWait 1,0.0%,64) MAIN(1,running,32.0%,253) IDLE(0,ready,0.0%,29) AIN(2,nWait 2,1.2%,255), total 100.0% Owned mutexes: Last reset 00:05:44 ago, cause: software Last software reset data not available Moves scheduled 0, hiccups 0 (0.00/0.00ms), segs 0, step errors 0 (types 0x0), maxLate 0 maxPrep 0, ebfmin 0.00 max 0.00 Phase step loop runtime (us): min=26, max=65, frequency (Hz): min=4807, max=18292 Peak sync jitter -7/7, peak Rx sync delay 190, resyncs 0/0, next timer interrupt due in 2 ticks, enabled, next step interrupt due in 4036578614 ticks, disabled VIN voltage: min 24.2, current 24.3, max 24.3 V12 voltage: min 12.0, current 12.0, max 12.1 MCU temperature: min 28.4C, current 29.1C, maDriver 0: pos 690, 320.0 steps/mm, position tolerance exceeded, failed to maintain position, SG min n/a, mspos 4, reads 25157, writes 8 timeouts 0 Last sensors broadcast 0x00000000 found 0 89 ticks ago, 0 ordering errs, loop time 0 CAN messages queued 2421, send timeouts 0, received 3688, lost 0, ignored 0, errs 0, boc 0, free buffers 38, min 38, error reg 0 dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 0 Closed loop driver 0 mode: closed loop, pre-error threshold: 10.00, error threshold: 20.00, encoder type rotaryAS5047, position -1966 Encoder reverse polarity: no, full rotations -1, last angle 14418, minCorrection=-9.0, maxCorrection=9.2, agc 79, mag 4747, no error Tuning mode: 0, tuning error: 0, collecting data: no Accelerometer: none I2C bus errors 0, naks 0, contentions 0, other errors 0
-
I think I found the culprit.
Originally due to heavy gantry my motors LDO-42STH60-MAC were runing at 1700 mA max current cutoff (2 Amps max)
I reduced the current to 1200 mA and now it is without vibrations in closed loop mode1/20/2025, 10:05:28 PM m569.6 p50.0 v3 Driver 50.0 calibration check succeeded, measured backlash is -0.067 step Residual encoder reading errors: min -5.0, max 11.3, rms 1.4 1/20/2025, 10:04:47 PM m569.6 p50.0 v2 Driver 50.0 calibration succeeded, measured backlash is -0.074 step Original encoder reading errors: min -13.8, max 14.1, rms 5.7 Corrections made: min -9.6, max 9.2, rms 5.6 1/20/2025, 10:04:11 PM m17 1/20/2025, 10:04:05 PM M906 X1200 Y1200 I0
I still do not know if these numbers are good
-
@martin7404 that backlash number is good and the other readings looks OK to me. It's more difficult to get good readings using 0.9deg motors than it is using 1.8 deg motors which is what we recommend.
If you want to increase the motor current beyond 1200mA without getting instability, try reducing the PID P parameter in the M569.1 command from its default value.
-
@dc42 Does that mean 0.9 steppers will have problems running in closed loop ?
-
@martin7404 they should run OK, however the speed won't be as high as you can get using 1.8deg motors and the tuning will be more critical. With a closed loop motor it's the encoder that determines the resolution, not the motor.
-
@dc42 Thank you . I get this but these are on the machine. Any guidelines about PID tuning. I managed to make it today following the wiki guide and my graphs are more "noisy" is this to be expected. It is a big machine with 0.6 and 0.8revo nozzles. But I limit the acceleration a lot , hopin to improve this by going closed loop
-
@dc42 Something to ask
When you do manual tuning with the plugin after it is finished.
How to save the tuned parameters?
Do I need to enter them in config.g in the 569.1 command? -
@martin7404 yes you need to put the new parameters in the M569.1 command in config.g.
-
@dc42 does this manual tooling look OK?
This is what I cma up after following the tuning guide
-
this is the second motor
-
the final config.g
; Configuration file for Duet 3 (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Thu May 27 2021 13:17:12 GMT+0300 (Eastern European Summer Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"CoreXY500" ; set printer name M669 K1 ; select CoreXY mode ; Network M552 P192.168.1.27 S1 ; enable network and acquire dynamic address via DHCP M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet G4 S2 ;wait for expansion boards to start ; Drives M569.1 P50.0 T3 E4:8 S400 R40 I1500 D0.05 V400 A200000 H10 ; 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. M569 P50.0 D4 S1 ; ;M569 P0.0 S1 ; physical drive 0.0 goes forwards ;M569 P0.1 S0 ; physical drive 0.1 goes forwards M569.1 P51.0 T3 E4:8 S400 R40 I1500 D0.05 V400 A200000 H10 ; 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. M569 P51.0 D4 S0 M569 P0.3 S0 M569 P0.4 S1 M569 P0.5 S1 ; physical drive 0.2 goes forwards M569 P121.0 S1 ; physical drive 121.0 goes forwards M584 X50.0 Y51.0 Z0.3:0.4:0.5 E121.0 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X160.00 Y160.00 Z8280.00 E395.70 ; set steps per mm ;M350 X32 Y32 Z16 E16 I1 M566 X300.00 Y300.00 Z50.00 E120.00 ; set maximum instantaneous speed changes (mm/min) M203 X12000.00 Y12000.00 Z150.00 E1200.00 ; set maximum speeds (mm/min) M201 X1000.00 Y1000.00 Z20.00 E500.00 ; set accelerations (mm/s^2) M906 Z1000 E800 I30 ; set motor currents (mA) and motor idle factor in per cent M906 X1700 Y1700 I30 M84 S30 ; Set idle timeout ; Axis Limits M208 X-26 Y0 Z0 S1 ; set axis minima M208 X500 Y330 Z365 S0 ; set axis maxima ; Endstops M574 X1 S4 ; configure sensorless endstop for low end on X M574 Y1 S4 ; configure sensorless endstop for low end on Y M574 Z1 S2 ; configure Z-probe endstop for low end on Z ;M574 E1 S1 ;Filament sensor BTT E1 M591 D0 P2 C"io8.in" S1 ;configure BTT smart filament sensor ; Z-Probe M671 X-31.39:250:531.36 Y-18:433.3:-18 S10 ; Locations left, center, right M558 P8 C"121.io2.in" H3 F1000 T6000 A20 S0.005 ; PINDA set Z probe type to switch and the dive height + speeds ;M308 S2 P"121.temp1" A"PINDA" Y"thermistor" T100000 B3950 ;M950 H2 C"out1" T2 ; create nozzle heater output on 121.out0 and map it to sensor 1 ;M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit ;M141 H2 ;M143 H2 S90 ; set temperature limit for heater 1 to 280C G31 P500 X30 Y0 Z1.48 ; set Z probe trigger value, offset and trigger height M557 X20:450 Y5:320 P5 ; define mesh grid ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 Q10 ; create bed heater output on out0 and map it to sensor 0 M307 H0 B0 S1 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S130 ; set temperature limit for heater 0 to 120C M308 S1 P"121.temp0" Y"thermistor" T100000 B4725 C7.060000e-8 ; configure sensor 1 as thermistor on pin 121.temp0 M950 H1 C"121.out0" T1 ; create nozzle heater output on 121.out0 and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S290 ; set temperature limit for heater 1 to 280C M308 S2 A"Chamber" P"temp2" Y"thermistor" T100000 B4725 C7.06e-8 M950 H2 C"out2" T2 ; create nozzle heater output on 121.out0 and map it to sensor 1 M307 H2 R0.001 A11 C99999 D4000 B1 ; disable bang-bang mode for heater and set PWM limit M141 H2 M143 H2 S70 ; Fans M950 F0 C"121.out1" ; create fan 0 on pin 121.out1 and set its frequency M106 P0 S0 B0.5 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"121.out2" Q500 ; create fan 1 on pin 121.out2 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on ; Tools M563 P0 D0 H1 F0 ; define tool 0 G10 P0 X0 Y0 Z-0.15 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C ; Custom settings are not defined M955 P121.0 I05 ;Accelerometer on Toolboard ; Miscellaneous M575 P1 S1 B57600 ; enable support for PanelDue M572 D0 S0.045 ; PA for ABS GD filament 0.4 nozzle M501 ; load saved parameters from non-volatile memory M911 S22.5 R23.5 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss ``'