Jump to content
Ultimaker Community of 3D Printing Experts
bimmersix

Cura 2.x - "Coast" causing extruder motor noise

Recommended Posts

Let me start by thanking the Ultimaker team for creating a really nice slicer package and making it available for even non-Ultimaker owners. Also, big thanks for adding Delta support back in 2.4 beta.

I recently installed Cura 2.3.1 and the Cura 2.4 beta and I'm really impressed with them. 2.4 actually fixed one of the two issues I was having (3rd party printers connecting reliably not withstanding).

I have a Rostock Max v2 with a Prometheus hotend, 0.4mm, and a 5.18/1 geared extruder. It works very nicely and creates great prints, EXCEPT with stringing because retraction on a long bowden setup is tricky.

Because of this, I was really interested in the Coast feature in Cura and S3D. Coast completely fixed my stringing issues. However, Coast in Cura causes a strange symptom - every time the print gets to a "coast" spot, the extruder clicks loudly but doesn't move (and it isn't supposed to move), almost like it is being told to accelerate very quickly and doesn't have the power to do so. This happens frequently, but is completely absent in prints with Coast off but with all of the same settings otherwise. Coast in S3D does not cause this.

Does anyone have suggestions? Tonight, I can run the gcode for a small print with and without Coast and upload for comparison. I've spent a bit of time trying to figure this out but have reached the end of my abilities.

-Joel in Phoenix

Share this post


Link to post
Share on other sites

Just pick one of the instances where the machine makes the noise and find the 5 gcodes before and after that point. this should be easy to do - just print 2 cubes and it will retract between them. Do one shell width wall and no infill to keep things fast and simple.

Ideally it will happen on the bottom layer. Then you can easily know where in the gcode the problem occurrs. Slice with both slicers and post the gcodes just before and after the event. I'm very curious about this. I suspect the movements have different feedrates "F" gcode from the 2 slicers and I suspect that's the primary difference. Although it's possible that s3d sets the acceleration or jerk parameters. Or cura might also set those. Typically acceleration and jerk are not setup by the slicer and that's a printer thing but there are gcodes for that.

  • Like 1

Share this post


Link to post
Share on other sites

Thanks so much for the fast response.

I watched the gcode carefully and confirmed it is at the "moment" that the issue happens. I had the same thought about feedrates and accel. The extruder works fine at 80 mm/sec on retracts, which is the max firmware setting for it, and I turned the acceleration way down from the defaults with no effect on the sound. This gcode is all from Cura. I don't see anything weird, so I'm not sure what to make of it, but that is why I'm asking the experts.

Excerpt from retraction cube print, coast enabled:

;TYPE:WALL-OUTER

G1 F3000 E25.68521

G1 F900 X-4.8 Y4.8 E26.15605

G1 X-4.8 Y-4.8 E26.62689

G1 X4.8 Y-4.8 E27.09773

G1 X4.8 Y4.385 E27.54821

G0 F720 X4.8 Y4.8 <----------This is the coast move

G0 F5625 X4.6 Y4.8

G0 X4.619 Y4.619

;TYPE:SKIN

G1 F3000 E27.56857

G1 F900 X-4.619 Y-4.619 E28.20933

G0 X-4.689 Y-4.689

G0 F5625 X-4.053 Y-4.619

G1 F900 X4.619 Y4.053 E28.81083

G0 X4.689 Y4.123

G0 F5625 X4.619 Y3.488

G1 F900 X-3.488 Y-4.619 E29.37314

G0 X-3.558 Y-4.689

Same place, no coast:

;TYPE:WALL-OUTER

G1 F3000 E25.68521

G1 F900 X-4.8 Y4.8 E26.15605

G1 X-4.8 Y-4.8 E26.62689

G1 X4.8 Y-4.8 E27.09773

G1 X4.8 Y4.8 E27.56857

G0 F5625 X4.6 Y4.8

G0 X4.619 Y4.619

;TYPE:SKIN

G1 F900 X-4.619 Y-4.619 E28.20933

G0 X-4.689 Y-4.689

G0 F5625 X-4.053 Y-4.619

G1 F900 X4.619 Y4.053 E28.81083

G0 X4.689 Y4.123

G0 F5625 X4.619 Y3.488

G1 F900 X-3.488 Y-4.619 E29.37314

G0 X-3.558 Y-4.689

Share this post


Link to post
Share on other sites

Looking at the gcode it looks like it should print fine. Basically it is drawing an approximately 9mm trace and then coasts the last .5mm meaning no extruding the last bit (looks like maybe a 10mm cube).

However there is one striking thing. Having looked at the motion planner for Marlin hundreds of times and having poked through most of the lines of code repeatededly (and also looking though the motion planner for repetier and redeem) there is a bug in Marlin I found if you move twice in the same direction AND CHANGE SPEED. the bug sets the junction speed between 2 separate gcodes to an extremely low value in a buggy sort of way. This is the "jerk" parameter which limits changes in vector velocity at vertices but gets confused if there is also a speed change.

Anyway I see you are printing VERY slow there so it seems strange but I would make all the speeds the same. So right now I see 15mm/sec for the printing move followed by 12mm/sec for the coast move. Try to make these speeds the same please. In fact for a test please make all printing speeds the same speed (I recommend 20-30mm/sec - I don't think there is much reason to go down to 15mm but 15mm/sec is fine also). However the nonprinting moves can still be fast but just for experiment lets keep them at 150mm/sec or slower.

  • Like 1

Share this post


Link to post
Share on other sites

You are correct, it is a set of 10mm cubes.

The firmware is the latest Repetier (0.92, I believe) and I've been using Rep since that is what originally came with my Rostock a year ago, when I knew nothing of other firmwares.

I will slice in S3D and submit for comparison.

Regarding Marlin and the differing speeds - I actually sliced this with Cura keeping the "Coast Speed" at 100%, keeping the last move at the same speed, but it exhibited the exact same symptom.

I can increase the speed for your test, but the reason it was slow was just because it was the first layer. I normally print at 40 mm/sec and travel at 250 mm/sec, being a delta. I can change the travel speed and reslice. I'm also happy to reslice with faster print speeds for the first layer, but the symptom does persist even when moving to the full print speeds.

Again, I appreciate the time you have put into this.

 

Looking at the gcode it looks like it should print fine.  Basically it is drawing an approximately 9mm trace and then coasts the last .5mm  meaning no extruding the last bit (looks like maybe a 10mm cube).

However there is one striking thing.  Having looked at the motion planner for Marlin hundreds of times and having poked through most of the lines of code repeatededly (and also looking though the motion planner for repetier and redeem) there is a bug in Marlin I found if you move twice in the same direction AND CHANGE SPEED.  the bug sets the junction speed between 2 separate gcodes to an extremely low value in a buggy sort of way.  This is the "jerk" parameter which limits changes in vector velocity at vertices but gets confused if there is also a speed change.

Anyway I see you are printing VERY slow there so it seems strange but I would make all the speeds the same.  So right now I see 15mm/sec for the printing move followed by 12mm/sec for the coast move.  Try to make these speeds the same please.  In fact for a test please make all printing speeds the same speed (I recommend 20-30mm/sec - I don't think there is much reason to go down to 15mm but 15mm/sec is fine also).  However the nonprinting moves can still be fast but just for experiment lets keep them at 150mm/sec or slower.

 

Share this post


Link to post
Share on other sites

Ah. A delta. that changes things a bit. Still the speed changes comment is relative. I would go in and replace all speed changes so it doesn't change speed at the coast point. Remove the F720 (or change to F900) or if it only happens on faster layers remove do the similar substitution there (with global replace).

I'm looking forward to seeing the gcode from s3d.

Share this post


Link to post
Share on other sites

Ok, so here are the two differences I can spot now between S3D and Cura:

S3D uses relative extruder coordinates on each layer, and;

S3D uses G1 moves, but Cura uses G0 and G1. However - both Cura files, with and without Coast enabled, use the G0 moves but no coast doesn't make the noise.

Cura + Coast and print/coast speeds being equal, as you suggested, extruder still clicks/bangs like it is trying to rapidly accelerate and can't. I'm beyond my ability to interpret gcode, so maybe something will stand out to you. I also know the speeds are not identical - tried to get them close but have sliced so many test files of this I am starting to lose track. By the way, I have not experienced this slicing with Rep Host, slic3r, or Mattercontrol, although those don't have a coast option, but otherwise this behavior is anomalous.

Cura + Coast (a few layers in):

;LAYER:3

G0 X54.211 Y-4.4 Z0.9

G0 X45.27 Y4.73

G0 X45.2 Y4.8

;TYPE:WALL-OUTER

G1 F1800 X45.2 Y-4.8 E141.29238

G1 X54.8 Y-4.8 E141.60627

G1 X54.8 Y4.8 E141.92016

G1 X45.825 Y4.8 E142.21362

G0 X45.2 Y4.8

G0 F15000 X45.2 Y4.6

G0 X45.379 Y4.401

;TYPE:SKIN

G1 F3000 E142.23406

G1 F1200 X54.4 Y-4.62 E142.6512

G0 X54.47 Y-4.69

G0 F15000 X54.619 Y-4.273

S3D + Coast, same place, same layer, although paths are slightly different:

G1 X45.720 Y4.280 F9000

G1 E0.0000 F3000

G92 E0

G1 X45.720 Y-4.280 E0.3416 F1800

G1 X54.280 Y-4.280 E0.6833

G1 X54.280 Y4.280 E1.0249

G1 X46.020 Y4.280 E1.3546

G1 X45.720 Y4.280 F1800

; outer perimeter

G1 X45.240 Y4.760 F9000

G92 E0

G1 X45.240 Y-4.760 E0.3800 F1200

G1 X54.760 Y-4.760 E0.7599

G1 X54.760 Y4.760 E1.1399

G1 X45.540 Y4.760 E1.5079

G1 X45.240 Y4.760 F1200

; solid layer

G1 X46.638 Y3.872 F9000

Share this post


Link to post
Share on other sites

It's basically the same stupid code. It should do the same thing.

I'm 90% sure Marlin ignores G1 versus G0. No difference. One is supposed to be "linear" and the other "fastest" but Marlin *always* moves linear (none of this X axis gets there first crap). Anyway G1 versus G0 means nothing.

relative Extruder position versus absolute extruder position should be no difference also.

The only difference of any consequence is that the move afterwards is 250mm/sec travel versus 150mm/sec in S3D. That can definitely make a big difference. It can make a big difference in the move before that.

Like I said earlier - there is a bug in Cura on speed changes. I'm thinking the 250 (plus a bug in Marlin I know about) is the problem.

In the cura it's doing a 180 degree turn in the Y axis and jumping from 30mm/sec to 250mm/sec at the same time. The way the "jerk" code works it will limit the junction speed to I beleive 2mm/sec. Maybe the entire coast section is limited to that - not sure. That would explain it. Lower the travel speed to 100mm/sec just to see what happens.

I guess I should point out this bug to someone someday. Hmm. I have a nice fix for it but writing it, testing it, and doing a pull request is a lot of work.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

[[Template core/front/global/_customFooter does not exist. This theme may be out of date. Run the support tool in the AdminCP to restore the default theme.]]
×

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!