Jump to content
Ultimaker Community of 3D Printing Experts
Sign in to follow this  
olivierc

Trying to reduce Ringing with ulticontroller

Recommended Posts

Hi,

first of all, I'm not sure if I should post this to the marlin forum or here, but I think this sub forum gets more views, so I post here.

I'm very happy with my printer, I'm improving the print quality every day, the only thing that bugs me now is some ringing effect. I don't mind doing some sanding, but ringing happens when the head takes sharp turns, which generally means in detailed and complex areas, which I either don't want to sand off or are too hard to reach with sandpaper.

I thought that having belts tensed properly would solve it, but not really. I did some research on this forum and the solutions I found were either to put some weight on the print bed to keep it from vibrating, or to modify the acceleration and jerk in firmware.

I'm going to try both.

Since the acceleration and jerk values can be modified directly on the ulticontroler, I want to try that first before messing with the firmware. I lowered acceleration from 5000 to 2000, I don't know if that's not enough or too much.

Same thing for jerk, don't know much about it so I googled it and I found only little info about it. But I understood it's the speed when moving from a segment to the next one, which could actually be what causes the most ringing in case of 90* angles. I want to lower it but I don't want to lower it more than necessary and loose too much speed. What do you guys recommend? 10 mm/s? 5?

 

Share this post


Link to post
Share on other sites

nevermind, after more research, I found my answers, going to try what he says: http://blog.lincomatic.com/?p=773

But if you guys have some input, I'm interested. Any one has experience with glueing some heavy part to the print bed to keep it from shaking (something I have read, not sure if that's such a problem, I would expect more vertical shaking that horizontal from the bed)?

 

Share this post


Link to post
Share on other sites

I bolted a 1 kg steel plate to the underside of my Z-platform (the wooden). The ringing is less but has not gone away completely. But it has another advantage: because the wood is under constant pressure now, I don't need to do as much bed-leveling as before, and the Z-height stays more constant, especially during a long print.

 

Share this post


Link to post
Share on other sites

Acceleration can be very very high and constant and you will get zero ringing. What you want to reduce is the true jerk (not what Marlin calls jerk). Jerk (look it up in wikipedia) is the change in acceleration. An example is when you are sitting in a car and someone stops pretty hard at a stop sign. during the deceleration you adjust and lean back into the seat but that final instant when your acceleration goes from very high (say half a G) to zero is in theory infinite jerk. In practice there are springs and bendy parts of the vehicle and tires and it's not infinite but jerk is very high and you suddenly get "jerked" back into the seat. This is what causes ringing because the tension on a belt goes from one value to another value suddenly so the belt changes how much it is stretched and then rings.

aside:

I don't know where the ringing comes from exactly but I assume it is the head and the rubber belts. Ringing should be caused by a system that prefers to oscillate at a particular frequency. You can change that frequency by changing the weight of the head or the tension on the belts but it won't go away - just change the frequency. You can dampen the frequency with friction. It seems to me if you glued a closed box half filled with sand onto the print head that would dampen the ringing instantly. It would have to be comparable heaviness to the print head so quite heavy.

Now back to Jerk and Marlin:

Marlin moves the print head in a series of line segments. In theory the only way to keep the jerk below infinite is to come to a complete stop at every vertex because you are "instantly" changing the acceleration if you don't come to a complete stop. In practice the steppers are stepped a certain number of steps per second and the switch happens "between" 2 steps so it isn't instant but noone has calculated this. Plus things stretch and deform a bit (like the belts) so obviously in practice jerk is not infinite. But the problem for the programmers of Marlin is they didn't know how to control jerk because in theory it's infinite at every corner.

But thinking about drawing a circle of 10 line segments it seemed silly to come to a stop at each vertex so they defined this new parameter (which they unfortunately call jerk) that says how much the print head has to slow down when you change directions. And if you only change directions slightly they don't want to slow down as much (such as in a circle) but in a sharp turn like a 90 degree turn they want to slow down more.

By the way I could be wrong but I think this whole idea is what made Marlin so great (fast).

They call this parameter "max jerk" and it's in mm/sec. Marlin calculates the fake jerk at a given intersection by taking the speed vectors before and after the vertex and finds the difference between them. For example on a 90 degree turn if the velocities are North at 10mm/sec and West at 10mm/sec the hypoteneuse (distance between the tips of those vectors) is 14mm/sec (not 20). If it is a 180 degree turn the diff would be 20mm/sec. If no angle then 0mm/sec. If a slight angle then maybe 1mm/sec. That value is called the Jerk and the print head is slowed down enough so that the speed change, (aka fake jerk) is at the "max jerk" setting.

So...

The default marlin max-jerk value I believe is 20mm/sec. This means that 90 degree turns will be done at 14mm/sec sqrt(14*14+14*14) = 20mm/sec. At that vertex the true jerk and true acceleration are both theoretically infinite. In practice they aren't infinite but pretty damn high!

If you set jerk to 10mm, that corner will be taken at half the speed (7mm/sec) and although the true jerk and accel will be infinite, in practice it will be exactly half.

For more gradual corners, say only a 10 degree shift in angle, and a max-jerk of 20mm, the minimum speed at the vertex is 115mm/sec. So the "max jerk" won't affect this if your speed is already lower than that.

Infill is full of sharp corners so if you are printing small parts, the jerk can make a huge difference in how long it takes to print. For larger parts where there is plenty of time to get up to speed, lowering the jerk won't increase the time as much.

 

Share this post


Link to post
Share on other sites

wow thanks for that very detailed explanation, very helpful!

So, I guess I'll try lower values for max jerk (default is 20 indeed), see if it helps. So you think lowering the acceleration won't change much?

I tried various belt tensions but it did not seem to affect ringing. But flat surfaced print much better with tight belts.

I like the box of sand idea but a bit over the top :) But I'll try adding weight to the lift just too see.

 

Share this post


Link to post
Share on other sites

I'm really not sure. I suspect one of them (accel, jerk) causes ringing much more than the other. Thinking about a corner of a cube, default accel I believe is 3000mm/sec (about 1/3 of a G). But the jerk probably causes accel of something like 10G's or 100G's at the corner. But that acceleration is soooo brief. The jerk will be highly postive, then highly negative in millisecond succession and much of that will cancel out before the energy reaches the print head.

I'm really not sure which parameter is the important one (accel or jerk) so play with both of them. Do a bunch of tests at 100mm/sec, 230C and .2mm layers (thinner layers will take longer and won't tell you much more - faster than 100mm/sec at .2mm and you might get underextrusion).

I recommend a 3 inch-on a side hollow cube. Every few minutes, change the settings (can you do that with the UC? Not sure). Mark the part as you go up with a sharpie. Keep good notes. Let us know. Maybe first print with max jerk of 20, then 10 then 5 the 3 then 2.

Then try max jerk of 20 with accell at 3000, then 1500, then 700, then 300.

Then try a combination of 2 of those settings.

 

Share this post


Link to post
Share on other sites

Bear in mind that if you're printing a 20mm-per-side cube at 100mm/s, then you're looking at less than 1 second per layer for a single-pass wall, or 1.6 seconds for a 2-pass wall. That's almost certainly too fast for the plastic to cool between layers, and so will introduce problems of its own.

Even reducing the speed by half (an risking reducing the ringing effects that you're testing for), the times will still be pretty short. You really need to print something that's large enough that the plastic can cool properly during the print, while still maintaining a reasonable print speed.

(These sort of layer time v. speed v. size issues are particularly challenging when you're testing 350mm/s printing as I have been recently :-) )

 

Cool I will try that on sunday (don't have time before) and will post photos of result here. I know you can modify the acceleration and jerk with the unticontroller but I don't know if doing mid-print works. 3 inches seems kinda big, I can already see ringing on the 20 mm cube from thingiverse.

 

Share this post


Link to post
Share on other sites

Well since you're mostly interested in what happens on the sides, I'd recommend turning off the top and bottom in Cura, and just printing the sides. Perhaps print a single layer bottom if you need to for bed adhesion. But jsut the walls should stick well enough I think, especially if you do a couple of passes. (Although it might be worth comparing the effect of 1 v 2 passes to see if it affects the appearance).

 

Share this post


Link to post
Share on other sites

I have a much heavier than standard bed (heated 5/16" Mic6 precision aluminum plate) and the extra mass just changed the resonant frequency nodes. I've not done any experiments to confirm my suspicions but I think most ringing artifacts are due to bed movement rather than head errors. You can try changing speeds (not always slower) and also weighting the bed differently in different places to try to hit other less resonant frequencies.

In general, while most people focus on the head drive mechanism for upgrades, I think efforts would be better spent improving the z-stage. I think there's enough room in the two front corners of the UM box for two additional track rods for guide bearings mounted just off the front two corners of my already oversize bed. This placement would not create any significant inconvenience in hand access to the bed but would probably do wonders to stabilize it.

I always print parts as far to the back of the bed as they will fit and oriented with the long dimension left and right. Obviously the lateral movement from any z-stage ringing is greatest at the front of the stage, given the length of the shaking arms! This is also one of the reasons I've stuck with the UM default maximum z speed in Marlin (5mm / second). I can go a little faster, but it's not worth it. The stage starts to ring vertically before the print times drop by a compelling amount. The horizontal ringing is more difficult to manage and the impact on print times can be significant.

Any one has experience with glueing some heavy part to the print bed to keep it from shaking (something I have read, not sure if that's such a problem, I would expect more vertical shaking that horizontal from the bed)?

 

Share this post


Link to post
Share on other sites

illuminarti is right about needing 7 seconds to traverse the border. So I made an stl that is 700mm around the border (7 seconds at 100mm/sec). Of course it will be a little slower but the point is this way cura won't slow down the speed as 7 seconds is enough to cool each layer.

So here's an stl file for a ringing test for oliverC

http://gr5.org/ringing%20test.stl

Right click (alt click for you loser mac people with only one button mouse) and choose "save link as..." or similar.

 

Share this post


Link to post
Share on other sites

Thank you for the file gr, I had already prepare my own, 7cm, and like illuminarti said, I unchecked the top and bottom infill.

I ran through the hardware store yesterday and found a couple of small heavy metal plates. I have not weighted them but I'd say they are 500g together. I'll try to attach one under the lift and I'll glue one under the bed (go epoxy!) , see if it helps. I also found small rubber ring joins, generally used for plumbing, I wonder if putting one of these between the bed and washer for each screw would reduce vibration.

Also, I'm going to install some feet with rubber cushion, maybe it will keep the whole machine from shaking

 

Share this post


Link to post
Share on other sites

Also, I'm going to install some feet with rubber cushion

 

Someone recently mentioned that they clamped their Ultimaker to a heavy wooden bench and also put weights on it to keep the vibrations down to a minimum. In theory you could attach weights to the long belts at the opposite point of where the blocks are. The weights should be equal to the weight of the head. That way there is no net momentum to shake the UM when the head moves.

 

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
Sign in to follow this  

  • Our picks

    • Taking Advantage of DfAM
      This is a statement that’s often made about AM/3DP. I'll focus on the way DfAM can take advantage of some of the unique capabilities that AM and 3DP have to offer. I personally think that the use of AM/3DP for light-weighting is one of it’s most exciting possibilities and one that could play a key part in the sustainability of design and manufacturing in the future.
        • Like
      • 3 replies
×

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!