Bigger gantry printer: Lagging and stuttering when printing
-
@sbNielsen @dc42 @T3P3Tony @droftarts Hi guys, i know this topic is pretty old but i'm struggling with the same thing. i also have a (slightly bigger) 3d printer (picture A below) and i am scared to raise the acceleration and jerk settings. One thing i know, right now they are not correct. Even at the slight curves it slows down alot to make the curve and leaves artifacts. (picture B).
The problem is if the accelaration / jerk gets too high in certain situations (when the Z axis has to come to a stop from a going-down movement) if the forces are too high the motors will skip or worse... the whole gantry drops down. The 4 motors on the gantry/bridge are nema42 (32nm) and there is 100kg per side counter-weight on the gantry. That makes sure the likelyhood of this happening less but it has happened to me in the past. Now we have changed the motors to the big 32nm ones but i'm still scared.
So long story short, i dont mind it slowing down a bit, i do mind it stuttering, i must have the values wrong.
i hope somebody can help me / advise me.info:
i am printing at 85mm/s
i am printing in a 45 degree angle
sliced with cura (already spent alot of time with resolution settings etc.) (using custom post processor for 45degrees)
NOTE: i print in 45 degree angle with a 'normal' printer, this means for a diagonal line / curve i'm moving all 3 axis at the same time.A: The printer
B: Artifacts
C; config
;!!!DRIVE-MAPPING!!! M584 X44.0 Y0.0:54.0 Z40.0:41.0:42.0:43.0 E55.0 ;NEW M92 X22.63 Y113.15 Z113.15 E50 U600 ;NEW M350 X16 Y8 Z16 U16 E16 I0 ;NEW M566 X500.00 Y250.00 Z250.00 E9000 ; set maximum instantaneous speed changes JERK (mm/min) M203 X10000.00 Y4200.00 Z4200.00 E1000000000 ; set maximum speeds (mm/min) ||1500mm/m = 25mm's || 6000 = 100 || 9000 = 150 || M201 X250.00 Y75.00 Z75.00 E6000 ; set accelerations (mm/s^2) M906 Y6000 I70 ; set motor currents (mA) and motor idle factor in per cent M84 S9999999999999999999999 ; Set idle timeout in seconds ;BACKLASH COMPENSATION M425 X0.25 Y0.25 S10 ; !!!Axis Limits!!! M208 X0 Y0 Z0 U0 S1 ; set axis minima M208 X3500 Y9000 Z1800 U9999999999 S0 ; set axis maxima
-
@Dutchprinting I've created a separate thread for this, as while it's similar to the original thread, that is marked as solved, and the fix is likely to be very different on a machine of this size. Please can you send M122 and post the response, so we know what hardware and firmware version you are using.
Ian
-
@droftarts Hi ian, thank you for your swift response. Here is the m122
Duet 6ch mainboard
4x duet 1xd for the bridge/gantry
1x 1XD for X-axis
1x 1XD for extruder
1x 1HCL for Y-motor (other one on mainboard for now)
firmware: 3.5b4i am actually printing at the moment and shot the next video for reference, i will make another one when it has a longer perimiter. (dont mind the wobbly hot air tubes)
https://www.dropbox.com/scl/fi/ipg2zb2h06mb7aswqh766/Video-30-03-2025-14-35-05.mov?rlkey=4mfreacwh6p62th9tp045yr8e&st=y9515bpx&dl=0m122 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.5.0-beta.4 (2023-06-08 23:41:30) running on Duet 3 MB6HC v1.02 or later (standalone mode) Board ID: 08DJM-956BA-NA3TN-6J9D0-3SD6Q-1BB2T Used output buffers: 3 of 40 (36 max) === RTOS === Static ram: 155012 Dynamic ram: 120548 of which 204 recycled Never used RAM 67228, free system stack 136 words Tasks: NETWORK(1,ready,39.6%,169) ETHERNET(5,nWait,0.2%,314) HEAT(3,nWait,0.0%,353) Move(4,nWait,0.0%,243) CanReceiv(6,nWait,0.1%,771) CanSender(5,nWait,0.0%,330) CanClock(7,delaying,0.0%,349) TMC(4,nWait,8.2%,59) MAIN(1,running,51.8%,444) IDLE(0,ready,0.0%,30), total 100.0% Owned mutexes: === Platform === Last reset 01:05:48 ago, cause: software Last software reset at 2025-03-30 12:28, reason: User, Gcodes spinning, available RAM 68104, slot 1 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0044a000 BFAR 0x00000000 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,1 MCU temperature: min 25.0, current 35.1, max 35.6 Supply voltage: min 47.6, current 47.8, max 48.2, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.0, current 12.2, max 12.5, under voltage events: 0 Heap OK, handles allocated/used 99/0, heap memory allocated/used/recyclable 2048/1936/1936, gc cycles 10 Events: 0 queued, 0 completed Driver 0: standstill, SG min 0, mspos 368, reads 9781, writes 21 timeouts 0 Driver 1: standstill, SG min n/a, mspos 8, reads 9791, writes 11 timeouts 0 Driver 2: standstill, SG min n/a, mspos 8, reads 9791, writes 11 timeouts 0 Driver 3: standstill, SG min n/a, mspos 8, reads 9792, writes 11 timeouts 0 Driver 4: standstill, SG min n/a, mspos 8, reads 9792, writes 11 timeouts 0 Driver 5: standstill, SG min n/a, mspos 8, reads 9792, writes 11 timeouts 0 Date/time: 2025-03-30 13:34:04 Slowest loop: 130.70ms; fastest: 0.05ms === Storage === Free file entries: 19 SD card 0 detected, interface speed: 25.0MBytes/sec SD card longest read time 7.2ms, write time 67.0ms, max retries 0 === Move === DMs created 125, segments created 6, maxWait 3426434ms, bed compensation in use: none, height map offset 0.000, ebfmin 0.00, ebfmax 0.00 next step interrupt due in 30425683 ticks, disabled === DDARing 0 === Scheduled moves 50, completed 47, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 17], CDDA state 3 === DDARing 1 === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 === 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 USB is idle in state(s) 0 Aux is assembling a command 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 doing "M42 P6 S0" in state(s) 0 0, running macro 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 0x80000003 Queue 0 has 'M42 P4 S0' for move 49 Queue 0 has 'M42 P6 S0' for move 50 Queue 0 has 'M42 P5 S0' for move 50 Queue 0 has 'M42 P4 S0' for move 50 Queue 0 has 'M42 P6 S0' for move 50 Queue 0 has 'M42 P5 S0' for move 50 Queue 0 has 'M42 P4 S0' for move 50 Queue 0 has 'M42 P6 S0' for move 50 Queue 0 has 'M42 P5 S0' for move 50 Queue 0 has 'M42 P4 S0' for move 50 Queue 0 has 'M42 P6 S0' for move 50 Queue 0 has 'M42 P5 S0' for move 50 Queue 0 has 'M42 P4 S0' for move 50 Queue 0 has 'M42 P6 S0' for move 50 Queue 0 has 'M42 P5 S0' for move 50 Queue 0 has 'M42 P4 S0' for move 50 Q1 segments left 0, axes/extruders owned 0x0000000 Code queue 1 is empty === CAN === Messages queued 20007, received 300264, lost 0, boc 0 Longest wait 1ms for reply type 6041, peak Tx sync delay 281, free buffers 50 (min 46), ts 19744/19743/0 Tx timeouts 0,0,0,0,0,0 === Network === Slowest loop: 1158.85ms; fastest: 0.03ms Responder states: MQTT(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) Telnet(0) HTTP sessions: 2 of 8 = Ethernet = Interface state: active Error counts: 0 0 0 1 0 0 Socket states: 5 2 2 2 2 0 0 0 = WiFi = Interface state: disabled Module is disabled Failed messages: pending 0, notready 0, noresp 0 Socket states: 0 0 0 0 0 0 0 0 === Multicast handler === Responder is inactive, messages received 0, responses 0
-
@Dutchprinting if long straight moves are jerky, this usually means that you are using mesh bed compensation and the maximum Z instantaneous speed change set in M566 or M205 is too low to permit the required reversal of Z direction to apply mesh bed compensation.
If straight moves are K but curves are not OK, this probably means that the X and/or Y instantaneous speed change allowed is too low to follow the segments that the slicer generated for the curve at the speed requested by the slicer.
If the nature of your printer and print requires the Z axis to move other than for the purpose of implementing mesh bed compensation, then I guess the Z axis M566 setting may limit the speed even without mesh bed compensation being used.
From your config.g file I see that your M566 settings for Y and Z are rather low. We normally suggest at least 600 for X and Y.
Bear in mind that the resolution of the curve in the GCode file also has an effect. If the curve is made from longer segments, the direction change will be greater at each point between segment boundaries, so the slowdown will be greater. If the GCode was sliced from an STL model then the segment length will have been set in the STL file; so if you want shorter segments then you may need to go back to the program that generated the STL file and reconfigure it to generate shorter output segments (i.e. higher resolution output).