Motors accelerating multiple times during motion.
-
I've experienced weird movement behavior from both a Duet 3 Mini 5+, but also when using the Duet 3 Expansion 3HC. Whenever I let it print for a while, it will start to accelerate multiple times when moving in a straight line. This issue will resolve itself once the software is restarted (using M999), but it will come back at some point during a print.
My printer is a CoreXY (Rat Rig V-Core 3.1) that's running a Duet 3 Mini 5+ with Duet 3 Expansion 3HC, and is in SBC mode with a Raspberry Pi 4 (8GB).
Here's a link to a video showing the issue: Video Link
For context to that video, the printer was at coords: X50 Y50
And I sent it the following gcode command: G1 X250 Y250 F20000Here's a few things I've noticed:
- This happens in SBC mode and Standalone mode
- Happens on both the latest stable build of RRF and the latest beta build
- Happens with or without Input Shaping
- Goes away after software reset (M999)
- Goes away after power cycled
Below is the diagnostics from M122
M122 === Diagnostics === RepRapFirmware for Duet 3 Mini 5+ version 3.5beta2 (2023-02-08 15:27:32) running on Duet 3 Mini5plus Ethernet (SBC mode) Board ID: 431Z4-W196U-D65J0-40KM2-1T03Z-HA24K Used output buffers: 1 of 40 (17 max) === RTOS === Static ram: 103012 Dynamic ram: 105748 of which 0 recycled Never used RAM 28872, free system stack 126 words Tasks: ACCEL(notifyWait,0.0%,230) SBC(ready,30.3%,414) HEAT(notifyWait,0.9%,322) Move(notifyWait,5.7%,245) CanReceiv(notifyWait,0.6%,771) CanSender(notifyWait,0.1%,325) CanClock(delaying,0.1%,340) TMC(notifyWait,21.5%,71) MAIN(running,24.5%,531) IDLE(ready,2.1%,30) AIN(delaying,14.0%,263), total 100.0% Owned mutexes: HTTP(MAIN) === Platform === Last reset 20:16:38 ago, cause: software Last software reset at 2023-04-01 21:15, reason: User, Gcodes spinning, available RAM 28876, slot 2 Software reset code 0x6003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task SBC Freestk 0 n/a Error status: 0x00 MCU revision 3, ADC conversions started 72998328, completed 72998328, timed out 0, errs 0 Step timer max interval 1489 MCU temperature: min 24.7, current 36.4, max 39.5 Supply voltage: min 23.9, current 24.1, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/0, heap memory allocated/used/recyclable 2048/160/160, gc cycles 0 Events: 0 queued, 0 completed Driver 0: standstill, SG min 0, read errors 1, write errors 1, ifcnt 91, reads 16974, writes 28, timeouts 0, DMA errors 0, CC errors 0 Driver 1: standstill, SG min 0, read errors 5, write errors 1, ifcnt 91, reads 16970, writes 28, timeouts 0, DMA errors 0, CC errors 0 Driver 2: standstill, SG min 0, read errors 2, write errors 1, ifcnt 90, reads 16972, writes 28, timeouts 0, DMA errors 0, CC errors 0 Driver 3: standstill, SG min 0, read errors 2, write errors 1, ifcnt 32, reads 16990, writes 10, timeouts 0, DMA errors 0, CC errors 0 Driver 4: standstill, SG min 0, read errors 0, write errors 1, ifcnt 32, reads 16993, writes 10, timeouts 0, DMA errors 0, CC errors 0 Driver 5: standstill, SG min 0, read errors 0, write errors 1, ifcnt 32, reads 16992, writes 10, timeouts 1, DMA errors 0, CC errors 0, failedOp 0x72 Driver 6: standstill, SG min 0, read errors 0, write errors 1, ifcnt 71, reads 16978, writes 24, timeouts 0, DMA errors 0, CC errors 0 Date/time: 2023-04-02 17:32:38 Cache data hit count 4294967295 Slowest loop: 101.61ms; fastest: 0.09ms === Storage === Free file entries: 20 SD card 0 not detected, interface speed: 0.0MBytes/sec SD card longest read time 0.0ms, write time 0.0ms, max retries 0 === Move === DMs created 83, segments created 51, maxWait 55084435ms, bed compensation in use: mesh, comp offset 0.000 no step interrupt scheduled === DDARing 0 === Scheduled moves 161715, completed 161715, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 10], CDDA state -1 === DDARing 1 === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters 0 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 Heater 0 is on, I-accum = 0.1 Heater 1 is on, I-accum = 0.3 === GCodes === Movement locks held by null, null HTTP* is doing "M122" in state(s) 0 Telnet is idle in state(s) 0 File* is idle in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger* is idle in state(s) 0 Queue* is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 File2* is idle in state(s) 0 Queue2 is idle in state(s) 0 Q0 segments left 0, axes/extruders owned 0x0000803 Code queue 0 is empty Q1 segments left 0, axes/extruders owned 0x0000000 Code queue 1 is empty === CAN === Messages queued 888384, received 1167981, lost 0, boc 0 Longest wait 1ms for reply type 6018, peak Tx sync delay 392, free buffers 18 (min 12), ts 364991/364990/0 Tx timeouts 0,0,0,0,0,0 === SBC interface === Transfer state: 5, failed transfers: 0, checksum errors: 0 RX/TX seq numbers: 30067/30067 SPI underruns 0, overruns 0 State: 5, disconnects: 0, timeouts: 0 total, 0 by SBC, IAP RAM available 0x0e1f0 Buffer RX/TX: 0/0-0, open files: 0 === Duet Control Server === Duet Control Server version 3.5.0-beta.2 (2023-02-08 11:52:06) Code buffer space: 4096 Configured SPI speed: 8000000Hz, TfrRdy pin glitches: 0 Full transfers per second: 40.81, max time between full transfers: 129.2ms, max pin wait times: 52.1ms/9.5ms Codes per second: 15.39 Maximum length of RX/TX data transfers: 7500/2576
Any help with this is very appreciated.
Edit: The forum is not allowing me to reply to any topics for some reason
I'm new to this forum, but I'm guessing it due to having an issue with verifying my account.
Will get that done later.Anyway, here is my Config.g
; Configuration file for Duet 3 Mini 5+ (firmware version 3.3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.15 on Sat Jan 21 2023 16:20:29 GMT-0600 (Central Standard Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves ;M550 P"My Printer" ; set printer name M669 K1 ; select CoreXY mode G21 ; Set Units to Millimeters ; Network ;M551 P"81480102596" ; set password ;M552 P0.0.0.0 S1 ; enable network and acquire dynamic address via DHCP ;M586 P0 S1 ; enable HTTP ;M586 P1 S0 ; disable FTP ;M586 P2 S0 ; disable Telnet ; Drives M569 P0.0 S0 ; physical drive 0.0 goes backwards M569 P0.1 S1 ; physical drive 0.1 goes backwards M569 P0.2 S0 ; physical drive 0.2 goes forwards M569 P1.1 S1 ; physical drive 0.3 goes backwards M569 P1.0 S1 ; physical drive 0.4 goes backwards M569 P6 S0 ; physical drive 0.5 goes backwards M584 X1.0 Y1.1 Z0.0:0.1:0.2 E6 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X160.00 Y160.00 Z1600.00 E571.25 ; set steps per mm M566 X500.00 Y500.00 Z6.00 E120.00 P1 ; set maximum instantaneous speed changes (mm/min) M203 X30000.00 Y30000.00 Z1000.00 E3600.00 ; set maximum speeds (mm/min) M201 X5000.00 Y5000.00 Z100.00 E3600.00 ; set accelerations (mm/s^2) M906 X2000 Y2000 Z1600 E800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ;M205 X5 Y5 M671 X-4.5:150:304.5 Y-4.52:305:-4.52 S5 ; define positions of Z leadscrews or bed levelling screws ;M557 X20:280 Y20:280 P5 ; define 5x5 mesh grid ; Axis Limits M208 X0 Y0 Z-1 S1 ; set axis minima M208 X310 Y300 Z308 S0 ; set axis maxima ; Endstops M574 X1 S1 P"io6.in" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin io5.in M574 Y2 S1 P"io5.in" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io6.in M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; Z-Probe M950 S0 C"io3.out" ; create servo pin 0 for BLTouch M558 P9 C"io3.in" H5 F330 T6000 ; set Z probe type to bltouch and the dive height + speeds G31 P500 X-29 Y-15 Z3.121 ; set Z probe trigger value, offset and trigger height M557 X20:280 Y20:280 S20 ; 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 ; 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"temp1" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin temp1 M308 S1 P"spi.cs2" Y"rtd-max31865" ; create sensor number 1 as a PT100 sensor in the second position on the Duet daughterboard connector 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 S400 ; set temperature limit for heater 1 to 400C ; Dummy sensor for Stepper Temp M308 S13 Y"drivers" P"1.dummy" A"3HC Steppers" ; Fans M950 F0 C"out3" Q500 ; create fan 0 on pin out3 and set its frequency M106 P0 S1 H1 T45 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"out4+out4.tach" Q500 ; create fan 2 on pin out5 and set its frequency M106 P1 S0 H-1 ; set fan 2 value. Thermostatic control is turned off M950 F2 C"1.out6" Q500 ; create fan 2 on pin out5 and set its frequency M106 P2 S0 H-1 ; set fan 2 value. Thermostatic control is turned off M950 F3 C"io_2.out" Q500 ; create fan 3 on pin out6 and set its frequency M106 P3 S0 H-1 ; set fan 3 value. Thermostatic control is turned on ; Tools M563 P0 D0 H1 F3 ; 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 are not defined ; Miscellaneous T0 ; select first tool ; PID Settings M307 H1 R3.007 K0.395:0.285 D5.98 E1.35 S1.00 B0 V24.0 ; Hotend M307 H0 R0.431 K0.230:0.000 D11.08 E1.35 S1.00 B0 ; Bed M955 P0 C"io1.out+io1.in" I54 M593 P"ei3" F40 ;Input shaping at 60Hz
Given I cannot upload files to this site due to my current account's status, I can't provide an example gcode file that causes this issue. But I can say it doesn't matter what I print, it always happens after some amount of time.
-
@Kegan post your config and an example file
-
-
-
@Kegan two things stick out to me at a glance.
- Your Z jerk is very, very low
- Your M122 shoes you have a height map loaded and in use.
Try testing after disabling mesh compensation, then with a much higher Z jerk value, and then with mesh compensation enabled with the higher Z jerk value.
During your test travel move, the bed is trying to adjust through the travel move, cannot adjust its position quick enough based on your XY speed needs - hence the stuttering.
-
Also, besides the low z-jerk, your extruder jerk is also very low which can cause issues especially on arcs, circles, etc. I would raise your extruder jerk to at least over 1000.
I tried the 0.9 degree LDO motors but ended up going back to the 1.8degree ones. The 1.8 degree for me are much quieter and I saw no improvement with the 0.9 degree ones so I switched back.
I have a v-core 3.1 500mm using a Duet 6HC, my motor settings are as follows
M569 P0.0 S0 ; physical drive 0.0 goes backwards M569 P0.1 S0 ; physical drive 0.1 goes backwards M569 P0.2 S0 ; physical drive 0.2 goes backwards M569 P0.3 S0 M569 P0.4 S0 M569 P121.0 S1 ; physical drive 121.0 goes backwards - lgx forward / BMG backward M584 X0.0 Y0.1 Z0.2:0.3:0.4 E121.0 ; set drive mapping M350 X16 Y16 Z16 I1 ; configure microstepping with interpolation M350 E32 I0 ; try extruder no interpolation M92 X80.37 Y79.85 Z808.8 E1134 ; TEST CALIBRATION XY STEPS M566 X800 Y800 Z35 E2000 P1 ; instantaneous /jerk settings) M203 X21000.00 Y21000.00 Z1000.00 E3600.00 ; set maximum speeds (mm/min) M201 X3000.00 Y3000.00 Z200.00 E3600 ; set accelerations (mm/s^2) M906 X1900 Y1900 Z1700 E600 I30 ; set motor currents (mA) and motor idle factor in per cent - 600 for lgx motor / 900 for BMG M84 S30