Input shaper causing stutters and blobs on curves RRF3.5.0-rc.1
-
Post the results of M122 after a print has completed to see if you're overwhelming the MCU, but I suspect it's not the case unless you're also running very high steps per mm.
Perhaps share your full config.g
-
@Phaedrux Here are the M122 after a blobbing/stuttering print. I have temporarily disabled the M593 L command. It reports 3.5.0-rc.1, but I can confirm that I'm now back on 3.4.6. (Edit: I wasn't back on 3.4.6. See posts below)
M122 === Diagnostics === RepRapFirmware for Duet 3 Mini 5+ version 3.5.0-rc.1 (2023-08-31 16:16:56) running on Duet 3 Mini5plus Ethernet (standalone mode) Board ID: Used output buffers: 1 of 40 (32 max) === RTOS === Static ram: 102836 Dynamic ram: 124244 of which 0 recycled Never used RAM 10448, free system stack 130 words Tasks: NETWORK(1,ready,22.8%,139) ETHERNET(5,nWait,0.2%,566) HEAT(3,nWait,0.1%,329) Move(4,nWait,2.8%,258) CanReceiv(6,nWait,0.0%,939) CanSender(5,nWait,0.0%,337) CanClock(7,delaying,0.0%,342) TMC(4,nWait,1.4%,74) MAIN(1,running,71.9%,700) IDLE(0,ready,0.0%,29) AIN(4,delaying,0.9%,264), total 100.0% Owned mutexes: === Platform === Last reset 00:05:55 ago, cause: software Last software reset at 2023-10-02 20:05, reason: User, Gcodes spinning, available RAM 14336, slot 1 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 MCU revision 3, ADC conversions started 355607, completed 355607, timed out 0, errs 0 MCU temperature: min 34.8, current 43.3, max 43.6 Supply voltage: min 23.7, current 24.2, max 24.3, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/1, heap memory allocated/used/recyclable 2048/24/0, gc cycles 0 Events: 0 queued, 0 completed Driver 0: standstill, SG min 0, read errors 0, write errors 0, ifcnt 30, reads 22271, writes 3, timeouts 0, DMA errors 0, CC errors 0 Driver 1: standstill, SG min 0, read errors 0, write errors 0, ifcnt 30, reads 22273, writes 1, timeouts 0, DMA errors 0, CC errors 0 Driver 2: standstill, SG min 0, read errors 0, write errors 0, ifcnt 30, reads 22272, writes 1, timeouts 0, DMA errors 0, CC errors 0 Driver 3: standstill, SG min 0, read errors 0, write errors 0, ifcnt 36, reads 22272, writes 1, timeouts 0, DMA errors 0, CC errors 0 Driver 4: standstill, SG min 0, read errors 0, write errors 0, ifcnt 36, reads 22273, writes 1, timeouts 0, DMA errors 0, CC errors 0 Driver 5: standstill, SG min 0, read errors 0, write errors 0, ifcnt 36, reads 22272, writes 1, timeouts 0, DMA errors 0, CC errors 0 Driver 6: standstill, SG min 0, read errors 0, write errors 0, ifcnt 36, reads 22272, writes 1, timeouts 0, DMA errors 0, CC errors 0 Date/time: 2023-10-02 20:11:25 Cache data hit count 515038510 Slowest loop: 20.53ms; fastest: 0.11ms === Storage === Free file entries: 18 SD card 0 detected, interface speed: 22.5MBytes/sec SD card longest read time 4.2ms, write time 1.1ms, max retries 0 === Move === DMs created 83, segments created 43, maxWait 67678ms, bed compensation in use: mesh, height map offset 0.000, ebfmin -1.00, ebfmax 1.00 no step interrupt scheduled Moves shaped first try 555, on retry 0, too short 1781, wrong shape 5079, maybepossible 1568 === DDARing 0 === Scheduled moves 13275, completed 13275, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], 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.4 Heater 1 is on, I-accum = 0.6 === GCodes === Movement locks held by null, null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0, sync state 1 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 === Filament sensors === Extruder 0: pos 325.90, errs: frame 0 parity 0 ovrun 0 pol 0 ovdue 0 === CAN === Messages queued 2205, received 0, lost 0, boc 0 Longest wait 0ms for reply type 0, peak Tx sync delay 0, free buffers 26 (min 26), ts 1225/0/0 Tx timeouts 0,0,1225,0,0,980 last cancelled message type 30 dest 127 === Network === Slowest loop: 11.83ms; fastest: 0.04ms Responder states: MQTT(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) HTTP sessions: 1 of 8 = Ethernet = Interface state: active Error counts: 0 0 0 0 0 0 Socket states: 5 2 2 2 2 0 0 0
G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Voron" ; set printer name M669 K1 ; select CoreXY mode M950 E1 C"io3.out" T1 M950 E0 C"LED" T2 M150 E0 R25 U50 B127 W0 S19 ; set LED main lighting colours M918 P2 E-4 F2000000 ; configure direct-connect display M150 E1 R255 U255 B0 S3 ; set screen LED colours M150 E1 R18 U21 B0 S2 ; Network M551 P 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.2 S1 ; physical drive 0.2 goes forwards M569 P0.1 S1 ; physical drive 0.1 goes forwards M569 P0.3 S1 ; physical drive 0.3 goes forwards M569 P0.0 S0 ; physical drive 0.0 goes forwards M584 X0.2 Y0.1 Z0.3:4:5:6 E0.0 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z400.00 E713.00 ; set steps per mm M566 X600.00 Y600.00 Z300.00 E300.00 ; set maximum instantaneous speed changes (mm/min) M203 X27000.00 Y27000.00 Z6000.00 E6000.00 ; set maximum speeds (mm/min) M201 X10000.00 Y10000.00 Z2000.00 E10000.00 ; set accelerations (mm/s^2) M906 X1700 Y1700 Z1400 E800 I70 ; set motor currents (mA) and motor idle factor in per cent M84 S1800 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X300 Y300 Z250 S0 ; set axis maxima ; Endstops M574 X2 S1 P"io5.in" ; configure active-high endstop for high end on X via pin io5.in M574 Y2 S1 P"io6.in" ; configure active-high endstop for high end on Y via pin io6.in M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; Z-Probe M558 P5 C"io4.in" H5 F800 T27000 ; set Z probe type and the dive height + speeds G31 P1 X0 Y-24 Z2.26 ; set Z probe trigger value, offset and trigger height M557 X24:276 Y24:276 S14 ; define mesh grid ; Heaters M308 S0 P"temp1" Y"thermistor" T100000 B4582 C1.013e-7 ; configure sensor 0 as thermistor on pin temp1 M950 H0 C"out0" T0 Q10 ; create bed heater output on out0 and map it to sensor 0 M307 H0 B0 S0.90 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S135 ; set temperature limit for heater 0 to 135C M570 H0 P10 ; allow 10 seconds before heater fault M308 S1 P"temp0" Y"pt1000" ; configure sensor 1 as PT1000 on pin temp0 M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1 M307 H1 B0 S0.80 ; disable bang-bang mode for heater and set PWM limit M143 H1 S305 ; set temperature limit for heater 1 to 305C M308 S2 P"temp2" Y"thermistor" T100000 B4582 C1.013e-7 M308 S2 A"Chamber" ; Fans M950 F0 C"out6" Q2000 ; create fan 0 on pin out6 and set its frequency M106 P0 C"Part fan" S0 H-1 L0.15 ; set fan 0 value. Thermostatic control is turned on M950 F1 C"!out3+out3.tach" Q25000 ; create fan 3 on pin out3 and set its frequency M106 P1 X0.7 H1 T55 C"Hotend radiator fan" ; set fan 3 value. Thermostatic control is turned on M950 F2 C"out4" Q60 ; create fan 2 on pin out4 and set its frequency M106 P2 S0 H0 T60 C"Filter fan" ; set fan 2 value. Theromostatic control is turned on ; Tools M563 P0 S"Hotend" 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 ; Miscellaneous M501 ; load saved parameters from non-volatile memory T0 ; select first tool M569 P0 D2 M569 P1 D2 M569 P2 D2 M569 P3 D3 M569 P4 D3 M569 P5 D3 M569 P6 D3 M572 D0 S0.028 ; set pressure advance value M671 X-46:-46:345:345 Y9:368:368:9 S20 ; Z leadscrews positions M376 H2 ; set mesh compensation height limit to 2mm during a print ;G4 S1 ; 1 second pause to allow accelerometer to wake ;M955 P0 C"io2.out+io2.in" I60 ; configure accelerometer M593 P"mzv" F66 ;L3000 ; use MZV input shaping to cancel ringing at 66Hz M591 D0 P3 C"io0.in" S1 L25.42 R40:300 E40 A0 ; filament sensing ;OLD ;M592 D0 A-0.00597 B0.00135 ; Configure non-linear extrusion
-
I've noticed something else which I think is related. (TLDR; This problem also seems to be causing skipping steps due to the violent movement.)
When I ran the blob test last, I started missing steps on X and Y. Which is very weird because I'm using the same acceleration and jerk as I have done for months, and I have just reduced the X carriage from about 1100g to 555g.
Well, I thought I would find a lower M201 and M566 value that doesn't skip. Obviously, none of it really makes any sense, since I've reduced my mass by half.
I didn't want to waste more plastic, so I removed the heat up from the same gcode file and set things moving. Which of course sends constant "Warning: Tool 0 was not driven because its heater temperatures were not high enough or it has a heater fault" but stills sends all X, Y and Z movement commands.
It never skipped.
It seems that as soon as extrusion is added into the calculations, not only does the print head stop for a fraction of a second repeatedly, but these movements are not staying within the jerk/acceleration limits given.
It seems something is not playing right between my extrusion settings and my X and Y commands.
I didn't have any issues before I moved over to 3.5.0-rc.1. I have flashed back to 3.4.6. Could there be residual parts of 3.5.0-rc.1 left on the firmware?
-
@Threepwood Are you 100% sure you have gone back to 3.4.6? The M122 you posted earler showed 3.5. If M122 shows 3.5 then you are running 3.5.
There is no carry over from "previous" firmware installs, the only thing that will carry over is any changes you made to your config.g files. You seem to be running with a relatively low extruder jerk setting, you may want to try increasing that.
-
@gloomyandy As far as I can tell. Edit: Oh hang on. I just realised, does DWC not come with RRF? I think that's where I've gone wrong.
I tried increasing extruder jerk, but once I went above about 450, I started getting really bad extrusion problems. Huge holes in test prints and overall only extruding about 20% of what I should be getting. No idea what was going on with that. I'm running a Hextrudort and Goliath from VZbot, so I would expect to be able to go higher. Once I get all these problems sorted, I'll try increasing it again.
-
@Threepwood Okay now I'm back on 3.4.6 RRF, not just DWC.
-
@Threepwood None of those are showing the version number of the actual firmware. You need to look in the printer specific section of DWC or just run M122 in the console. Just to be clear DWC is not the same as RRF, they are two different components.
-
Now that I am actually back on 3.4.6. My problems seem to be gone again. Thanks @gloomyandy
Hopefully the next release of 3.5.0 will solve all these issues.
-
@Threepwood I had some issues with jerk settings today. I have increased it to 1800 and I had messed up print (I had some XY movement problems of round object perimeter and have found that it's caused by pressure advance and not high enough jerk), but the movement got even worse. Lowered to 600 and looks good for now. The only thing I am really missing right now is some explanation of correlation between acceleration and jerk settings
-
@Arminas Are you talking about extruder jerk?
I've just run a test with increasing extruder jerk values from 300 to 1400. I'm getting gaps in the print from 600 to 1400, but they don't get any worse between 600 and 1400. There was no clicking or anything from the extruder either.
This makes me think that the issue could be related to the extruder jerk allowing X and Y movement speeds/acc/jerk to increase, which is what is really causing the issues. Although, saying that, I think my acceleration and jerk are quite conservative for my Voron/VZbot setup. I am trying to print this test at 300mm/s though.
I'm not sure how to go about finding a good value for extruder jerk and acceleration. I've read people on here using 3600 extruder jerk.
Should I keep pushing it and listen for when it starts getting too clicky?
-
@Threepwood I change XY and E jerks at the same time, so not really sure what cause this issue, but my issue is related more to the XY movement.
During fast printing (200 mm/s) on rounded parts of the model the XY movement was not correct, instead of smooth circular line, it was wavy. I also noticed that lowered XY jerk leads to better input shaping results.
As for the extruder jerk, I don't really know, I just lower it together with XY and there is no issue so far. I am on RRF 3.4.6. With RRF 3.5.0 I also had blobs, so now I know that it's related to jerk settings (based on your experience), but I am not going to test it now until I find some good info about jerk/accel and speed relation.
I guess I am just trying to say that incorrect jerk settings are causing these strange things with XY and E. And it gets even more complicated with Input Shaping and Pressure Advance activated.
I have also been reading some posts where it was said to keep jerk as low as possible. I will try to do that now.
-
@Threepwood Actually, I have found good info on what exactly jerk is in a normal human language I will keep it between the standard values 300-600 mm/s
-
@Arminas said in Input shaper causing stutters and blobs on curves RRF3.5.0-rc.1:
@Threepwood I change XY and E jerks at the same time, so not really sure what cause this issue, but my issue is related more to the XY movement.
During fast printing (200 mm/s) on rounded parts of the model the XY movement was not correct, instead of smooth circular line, it was wavy. I also noticed that lowered XY jerk leads to better input shaping results.
As for the extruder jerk, I don't really know, I just lower it together with XY and there is no issue so far. I am on RRF 3.4.6. With RRF 3.5.0 I also had blobs, so now I know that it's related to jerk settings (based on your experience), but I am not going to test it now until I find some good info about jerk/accel and speed relation.
I guess I am just trying to say that incorrect jerk settings are causing these strange things with XY and E. And it gets even more complicated with Input Shaping and Pressure Advance activated.
I have also been reading some posts where it was said to keep jerk as low as possible. I will try to do that now.
There is an interaction between extruder jerk and Pressure Advance when extruder Jerk is too low. Remember that for any X Y and E move, both the axes and the extruder moves have to be synchronised, so a low extruder jerk setting will of necessity have to slow down the XY axes to keep them synchronised with the extruder. You can set extruder jerk to a "silly high" number without any adverse effects because it would only apply to extruder only moves and even then, only when there is a change of direction during that move (which never happens for extruder only moves).
-
@deckingman Any idea how to choose the most optimal jerk settings?
This line should be straight... I lowered the jerk and solved it, but now the printer does not reach max speed on curved toolpath.
-
@Arminas Try increasing the extruder jerk but keep X and Y the same. As I said before, you can set extruder jerk to "silly high" numbers - I use 3600mm/min on my machine but 900 for X and Y.
-
@deckingman This issue is related to printing speed or something else?
-
@Arminas Have you tried running ringing tower tests where you change a setting in gcode every 5mm of the print?
At what jerk setting did you find the lines straighten out? Remember that speed, jerk and acceleration can all effect ringing. Which is why I'm currently surrounded my dozens of test prints.
Despite having tuned input shaper and using the same accel and jerk settings as I used for an x carriage that was twice the weight, I'm really struggling to stop the printer from vibrating in curves. The only thing changing in this test print is print speed, from 60mm/s to 400mm/s. It seems like I can't stop the vibration above 100mm/s. Very frustrating when you see people printing with similar hardware at 400mm/s+ with far less ringing than this.
I checked the frequency of the vibration by recording the sound. It seems to be about 103hz. Which mzv @66hz should extend to, but I have a feeling this isn't related to acceleration.
No idea where to go to from here...
-
@Threepwood I had zero ringing at 3k accel, 300 mm/s jerk at 200 mm/s speed, but with such a low jerk for XY, I can not reach 200 mm/s at NOT straight lines. I have some hope that I will be able to solve this
-
I've now reduced acceleration and jerk to half what it was, and the result is exactly the same.
-
@Threepwood It might be worth trying a shaper that spans a large range and change the frequency every 5mm of the print.
If you chose ei3 (which spans about 40Hz) you should be able to change the frequency by 30Hz steps like 30, 60, 90. Hopefully it will give a clue as to what is going on and you would only have to print a 15mm high part.