Jerk Control M566
-
Using a Duet 3 MB6HC with RR Firmware 3.1.1 (2020-05-19b2)
when it comes to tweaking the jerk control settings, my machine has a heavy gantry running an IDEX setup so it runs pretty slow.
My config.g declares my instantaneous speed change as such
M566 X2 Y2 Z10 U2 E10:10
using the command prompt passing through a M566 command returns:
Maximum jerk rates: X6.0 Y6.0 Z10.0 U6.0 E10.0:10, jerk policy :0the 2's have become 6's...
Is there a minimum value for this command? I am experiencing layer shifting printing CFNylon which I have not experienced while using ABS. I have monitored the print job and adapted a Z hop and no tool changes for the print to prevent collision and losing steps.
Even pausing the print, homing the motors and resuming it goes back to printing shifted. Really bizarre and hard to diagnose, but I am pretty sure it lies in settings.
note: even using the same settings that have worked for me prior do not work for me now?
-
what motors are you using and which currents. best is to post the config.g
-
Note: The minimum jerk speed supported in as at firmware version 2.02RC3 is 0.1mm/sec.
0.1mm/sec = 6mm/min
If even that low of a jerk value is too much, perhaps the acceleration value should be lowered as well?
You can also try jerk policy 1 (M566 P1) Though I wonder if that might actually make it worse.
The default jerk policy is 0, which replicates the behaviour of earlier versions of RRF (jerk is only applied between two printing moves, or between two travel moves, and only if they both involve XY movement or neither does). Changing the jerk policy to 1 allows jerk to be applied between any pair of moves.
I second what @PCR says. Your motor currents should be ~80% of rated max. Also post your config.g.
-
@PCR said in Jerk Control M566:
what motors are you using and which currents. best is to post the config.g
It is difficult to identify which motors are exactly being used I would imagine NEMA 17's but the rated current is not obvious. They're pretty well mounted and covered with a water cooling system.
0.1mm/sec = 6mm/min
If even that low of a jerk value is too much, perhaps the acceleration value should be lowered as well?
You can also try jerk policy 1 (M566 P1) Though I wonder if that might actually make it worse.
understood I can try the policy 1 ... I'll be more reserved with my accelerations and current rating just observe the effects of changing those parameters.
Consider my config.g, note that I have yet to implement any changes to the following:
; Configuration file for Duet 3 (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Fri Sep 04 2020 17:16:08 GMT-0600 (Mountain Daylight Time) ; Axis Definitions====>>>>> ; X = Left (on X-axis) Extruder U = Right (on X-axis) Extruder /// Y = Y-Axis /// Z = Z-Axis ; ======={ Drives }======================================== ; 0.x corresponds to main board /// 20.x corresponds to tooloard-1 /// 21.x corresponds to toolboard-2 ; X M569 P20.0 S0 ; physical drive 0.0 goes forwards M569 P21.0 S0 ; physical drive 0.1 goes forwards ; Y M569 P0.2 S0 ; physical drive 0.2 goes forwards M569 P0.3 S1 ; physical drive 0.3 goes backwards ; Z M569 P0.4 S0 ; physical drive 0.4 goes backwards M569 P0.5 S0 ; physical drive 0.5 goes backwards ; ======={ Extruders }===================================== M569 P0.0 S1 ; physical drive 1.0 goes forwards M569 P0.1 S1 ; physical drive 2.0 goes forwards M584 X20.0 Y0.2:0.3 Z0.4:0.5 U21.0 E0.0:0.1 ; set drive mapping ; ======={ Movement }====================================== M350 X16 Y16 Z16 U16 E16:16 ; configure microstepping with interpolation ... 1/16 of a step for each motor M92 X80.872 Y80.306 Z1641.704 U80.872 E483.57:480.23 ; set steps per mm ;M92 X81.387 Y80.500 Z1606.43 U80.904 E483.57:480.23 ; Old Calibration 10/17 ;M92 X81.387 Y80.500 Z1606.43 U80.904 E484.7:484.7 ;===========> Previous calibration of the extruders had steps/mm set to 484.7 for both. M566 X6 Y6 Z10 U6 E10:10 ; set maximum instantaneous speed changes (mm/min) [JERK CONTROL] M203 X8000.00 Y8000.00 Z600.00 U8000.00 E8000:00:8000.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z20.00 U500.00 ; set accelerations (mm/s^2) M906 X700 Y700 Z700 E700:700 U700 I30 ; set motor currents (mA) and motor idle factor in percent M84 S20 ; Set idle timeout ; ======={ Axis Limits }=================================== M208 X0 Y0 Z0 U0 S1 ; set axis minima ;M208 X579 Y437 Z640 U582.165 S0 ; set axis maxima M208 X579 Y437 Z640 U582.58 S0 ; set axis maxima //// Update U maximum portionately (<-- subract to move left ; ======={ Endstops }====================================== M574 X1 S1 P"!20.io0.in" ;X-Min Homes Left carriage as Endstop index 0 M574 Y1 S1 P"!io5.in" ;Y-Max Homes Y as endstop index 1 M574 Z1 S1 P"!io3.in+!io4.in" ;Z-Min Homes Z (bed) as endstop index 2 M574 U2 S1 P"!21.io0.in" ;U-Max Homes Right carriage as Endstop index 3 ; ======={ Z-Probe }======================================= M558 P0 H5 F120 T6000 ; disable Z probe but set dive height, probe speed and travel speed M557 X15:439 Y15:439 S20 ; define mesh grid ;M558 P2 H5 F120 T6000 ; enable modulated IR Z probe sensor, dive height, probe speed and travel speed ; ======={ Heaters }======================================= ; Bed>>> M308 S0 P"temp0" Y"thermistor" T100000 B4138 A"Bed" ; configure sensor 0 as thermocouple temp0 pin M950 H0 C"out1" T0 ; create bed heater output on out1 and map it to sensor 0 M307 H0 A66.6 C305.2 D0.3 V24.3 B0 ; enable bang-bang mode for the bed heater and set PWM limit ;M307 H0 B0 M140 H0 ; map heated bed to heater 0 M143 H0 S150 ; set temperature limit for heater 0 to 150C ; Left nozzle>>> M308 S1 P"spi.cs0" Y"rtdmax31865" A"PT100 (L)" ; configure sensor 1 as thermocouple via CS pin spi.cs0 M950 H1 C"out0" T1 ; create nozzle heater output on 1.out0 and map it to sensor 1 M307 H1 A797.1 C281.0 D4.8 V24.3 B0 ; disable bang-bang mode for heater and set PWM limit M143 H1 S510 ; set temperature limit for heater 1 to 510C ;LAST TUNE M303 H1 P1.0 S135 >>>> M307 H1 A863.6 C276.4 C4.9 V24.3 ; Right nozzle>>> M308 S2 P"spi.cs1" Y"rtdmax31865" A"PT100 (R)" ; configure sensor 2 as thermocouple via CS pin spi.cs1 M950 H2 C"out3" T2 ; create nozzle heater output on 2.out0 and map it to sensor 2 M307 H2 A797.1 C281.0 D4.8 V24.3 B0 ; disable bang-bang mode for heater and set PWM limit M143 H2 S510 ; set temperature limit for heater 2 to 510C ;LAST TUNE M303 H2 P1.0 S150 >>>> M307 H2 A933.8 C307.9 D5.6 V24.3 ; Chamber>>> M308 S3 P"temp1" Y"thermistor" T100000 B4138 A"Chamber" ; configure sensor 1 as thermocouple via temp1 pin M950 H3 C"out2" T3 ; create chamber heater output on out2 and map it to sensor 1 ; ================Summer tuned ;M307 H3 A14.2 C66.7 D18.7 V24.3 B0 ; Summer tuned chamber heater ; ================Winter tuned M307 H3 A17.8 C79.1 D30.8 V24.3 B0 ; winter tuned chamber heater M141 H3 ; map chamber to heater 1 M570 H3 S65 ; ======={ Fans }========================================== M950 F0 C"out4" Q500 ; create fan 0 on pin out4 and set its frequency M106 P0 S1 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"out7" Q500 ; create fan 1 on pin out7 and set its frequency M106 P1 S1 H-1 ; set fan 1 value. Thermostatic control is turned off ; ======={ Tools}========================================== M563 P0 S"LEFT" D0 H1 ; define tool 0 G10 P0 X-80 Y-10 Z0 U-80 ; set tool 0 axis offsets G10 P0 R0 S0 M563 P1 S"RIGHT" D1 X3 H2 ; define tool 1 --- Map to U to X-Axis G10 P1 X502.58 Y-11.17 Z0.09 U-80 ; BASELINE set tool 1 axis offsets G10 P1 R0 S0 M563 P2 S"Chamber" H3 ; added for Simplify3d compatibility G10 P2 R0 S0 ; ========{ Filament Monitoring }========================== ;M591 D0.0 P5 C"io1.in" R60:120 E3.0 S1 ;Driver 0.0, laser sensor, pinname, Tol. 10-120%, 5.0mm detection, 0=disabled 1=enabled ===== RIGHT EXTRUDER ;M591 D0.1 P5 C"io2.in" R1:120 E5.0 S0 ;Driver 0.1, laser sensor, pinname, Tol. 10-120%, 5.0mm detection, 0=disabled 1=enabled ===== LEFT EXTRUDER M591 D0 P5 C"io1.in" R5:400 E5.0 S1 M591 D1 P5 C"io2.in" R10:400 E5.0 S1 ; ========={ Miscellaneous }=============================== M575 P1 S1 B57600 ; enable support for PanelDue
-
@kroybal well there's your problem...
M906 X700 Y700 Z700 E700:700 U700
700ma seems a very low motor current to be running (particularly if you've got a big heavy gantry!).
You really ought to find out what motors you've got and what their rated current is. Then set the motor currents to 70-80% of that. -
@kroybal said in Jerk Control M566:
............, but I am pretty sure it lies in settings.
.........................
note: even using the same settings that have worked for me prior do not work for me now?...............Those two statements are contradictory so only one of them can be true.
What sort of moving mass do you think you have? Also, why do you think the solution lies in reducing the instantaneous speed change threshold to a value where segmented arcs would be printed at less than 6mm/sec?
-
700ma seems a very low motor current to be running (particularly if you've got a big heavy gantry!).
You really ought to find out what motors you've got and what their rated current is. Then set the motor currents to 70-80% of that.Sure thing. I do not know for myself, but the person that sold my company the printer told us that the motors were 800mA rated. It is a heavy gantry but each axis has 2 motors connected. I dropped my x-axis and y-axis motors down to 600mA and they're working great still. My Z-axis appears to have larger motors for each lead screw so I left it at the 700mA. I will look deeper into it, though the decision isn't solely mine to make.
-
@deckingman said in Jerk Control M566:
@kroybal said in Jerk Control M566:
............, but I am pretty sure it lies in settings.
.........................
note: even using the same settings that have worked for me prior do not work for me now?...............Those two statements are contradictory so only one of them can be true.
What sort of moving mass do you think you have? Also, why do you think the solution lies in reducing the instantaneous speed change threshold to a value where segmented arcs would be printed at less than 6mm/sec?
I felt looking into jerk control could be a possible fix due to the fact that one of my curved prints were very noticeably line segments even more so than you would like coming from a large format printer. My analogy would be that the parts appeared like graphics in a nintendo 64 video game, but we would like to see at the least 2001 Xbox graphics.
Edit: increasing jerk control parameters consistently resulted in skipped steps and huge and/or subtle layer shifts.
-
@kroybal said in Jerk Control M566:
I felt looking into jerk control could be a possible fix due to the fact that one of my curved prints were very noticeably line segments even more so than you would like coming from a large format printer. My analogy would be that the parts appeared like graphics in a nintendo 64 video game, but we would like to see at the least 2001 Xbox graphics.
@kroybal If you model has the line segments(ie a low resolution model) modifying the jerk settings will not make those go away.
That can only be fixed by using a high res model.
-
@kroybal said in Jerk Control M566:
I do not know for myself, but the person that sold my company the printer told us that the motors were 800mA rated.
That may be the case but it would be good to know the specs of the motors if possible. There are some truly awful motors for 3d printers being used in 3d printers because the designers just didn't know any better.
You can experiment with higher currents and monitor the temps. Anything up to 80c over a long duration is probably alright. If you're able to increase the current and the temp stays well below that then the motors were likely rated for much higher.
Getting a model number off the motor would be ideal.
-
@kroybal said in Jerk Control M566:
... one of my curved prints were very noticeably line segments even more so than you would like coming from a large format printer.
That is almost certainly caused by how the model is described in the STL file. In STL, curves are represented as segments. It's up to the person who designed or exported the model to STL to decide how small those segments are.
-
I've noticed that with very low "jerk" rates, the facets of the model are much more visible. This is likely due to the extrudate "bulging" as the print head slows down to the jerk rate. In the case of OP, this is 0.1 mm/sec.
This is why I'm very glad to see progress being made soon towards a better alternative for instantaneous speed changes. The limitation is significant in preventing faster printing around curves, while slowing down enough on sharp corners.
-
@Phaedrux I have been incrementing the currents up and monitoring their temperatures (~50C in 40C hot chamber). I have them set to 1A but looking up lists of motors that they might be suggest they could have a rated current of around 2.8A. I will remain conserved with it but before I take the thing apart I called in a request for the support team to see if I can obtain those part numbers without having to take apart the water cooling and gantry.
-
@dc42 said in Jerk Control M566:
@kroybal said in Jerk Control M566:
... one of my curved prints were very noticeably line segments even more so than you would like coming from a large format printer.
That is almost certainly caused by how the model is described in the STL file. In STL, curves are represented as segments. It's up to the person who designed or exported the model to STL to decide how small those segments are.
Interesting, I sort of played around with that idea but I have results that do not support that statement:
above are images of the same STL file printed on different printers using the same parameters in Simplify3D. The difference is night and day. There is visible segments and layer shifting. I am frustrated with how difficult this has been to diagnose what could cause such lackluster quality, but I am determined to get to the bottom of this.
-
@bot said in Jerk Control M566:
I've noticed that with very low "jerk" rates, the facets of the model are much more visible. This is likely due to the extrudate "bulging" as the print head slows down to the jerk rate. In the case of OP, this is 0.1 mm/sec.
I think that could be the case, consider the images in my response to @dc42
-
Can you provide some photos and details on the printer itself so we can see what you're dealing with? Maybe a video of it printing?
-
@Phaedrux Sure, I am running an Aon-M1 legacy printer. Just for sake of preparation does this forum allow videos or is it best to upload to to YouTube first?
-
MP4 should work but there are size limits. So putting a video on YouTube or something would probably be best.
-
EDIT:
@Phaedrux okay, so I caught it subtly layer shifting as it tends to do. I will try to upload the video after lunch and give you an example. Usually after the bottom solid layers it starts gradually shifting, an analogy would be if you place a book flat on a table and press down firmly on the cover and apply sheer force to it causing the pages (in our case layers) to skew. In theory after catching a layer shift pausing the print and homing the toolhead should fix it (if it were to have mechanically skipped a step). Instead it typically returns to the same layer-shifted location as before and resuming the print resumes the layer shifting. This time it didn't even do that. Mind you, it has more amperage, higher jerk rates and accelerations this time around. In the video it resumed the print with no precision. Leading me to believe low acc. and low jerk rates are our better bet.stay tuned.
-
At my eyes it seems that with so low jerk values the printhead is stopping at every STL triangle and the extruder is overextruding there due to low speed and higher temperature on the already layed plastic. I would try to increase the jerk and print speed. These result are impossibile to be caused but too high jerk. You can clearely see the mesh triangles and still the model seems to be really low on poly count.
Just my 2 cents.Note: My jerk is at 900 in a medium size corexy with directdrive extruder so i think your values are really too low also with taking account of a heavy toolhead.