23
$\begingroup$

When the print head changes direction, the printer must accelerate and decelerate the print head. When calibrated correctly, the printer is able to do this quickly and without causing the printer to shake too much, without drastically slowing down the print process.

If I set it too high, my printer shakes violently, especially during infill. If I set it too low, print times are doubled or tripled.

What process can I follow to determine (or how can I calculate) the fastest acceleration value my printer can use without causing problems in my print?

I'd prefer a process I can follow over a formula I can plug values into, especially if the formula includes magic numbers.

$\endgroup$
14
$\begingroup$

As Tom pointed out, binary search is the best way. In case that term isn't familiar to all readers, here's a little more detail:

  1. Establish an acceleration value that you're sure is too low (call it $L$), and one that you're sure is too high ($H$). It sounds like you know such values already from experience.

  2. Figure out the speed in the middle: $(L+H)/2$. Call that $M$.

  3. Try printing at speed $M$. Something like a stepped calibration cube might be a good choice of object (plenty available on Thingiverse).

  4. If $M$ is still too fast, take $M$ as your new high-speed limit (that is, reset $H$ to the value of $M$), and repeat from step #2.

  5. If it's slow enough to work, take $M$ as your new low-speed limit ($L$), and repeat from step #2.

Each repetition will cut the range in half. Keep repeating until $L$ and $H$ get as close as you want; say, within 5 % of each other or so.

I wouldn't bother trying to get super-close, because the workable value will vary somewhat over time (friction from dust getting on various parts; slight voltage differences; different mass and pulling tension for the filament roll, temperature of motors, complexity of the object you're printing, behavior of the slicing program you use, you name it).

$\endgroup$
  • $\begingroup$ That seems like an interesting calibration method! Is there somewhere I can read more about this? $\endgroup$ – Tormod Haugene Jan 14 '16 at 6:02
  • 2
    $\begingroup$ It's a very common method for searching in computer programs. Look up "binary search" and you'll find lots of information. I don't know of any good references on using it for hardware optimization in particular. $\endgroup$ – TextGeek Jan 15 '16 at 16:27
6
$\begingroup$

A tool that you might find useful for experimenting with acceleration is RepRap Centrals Acceleration Calculator (at the bottom).

By setting an acceleration, length of travel and target speed, you can see:

  1. The theoretical speed that can be achieved during the travel with your set acceleration (yellow line).
  2. The distance required to reach your target speed, and for how long it will hold that speed before slowing down (blue line).

For instance, setting acceleration = 3000, length = 30 and speed = 150 means it will travel 4 mm before reaching its desired speed of 150 mm/s, while that same acceleration theoretically could give a speed of 300 mm/s for the given distance:

enter image description here

Calculating speed, acceleration and jerk:

In many cases your printer will have some limitation in maximum speed or settings given by your provider that can be used as a starting point. If not, trial and error is the most straightforward way of doing it.

I would separate speed calibration into three task:

  1. First find the maximum speed your printer can tolerate. One way of doing this is to print an object with long travel distances, and vary the maximum travel speed.
  2. Using the calculator above, increase the acceleration for various traveling distances until you get suitably smooth acceleration curves for your desired speed for medium to long traveling distances.
  3. Adjust your jerk setting to allow for quick speedup on short traveling distances. Jerk speed is the speed that the printer will immediately jump to before taking acceleration into account. With a jerk of 20mm/s, the printer will make an immediate jump from 0 to 20 mm/s, and thereafter speed up to the desired speed by following the acceleration profile.

As a rule of thumb, it might be smart to then set the actual speed, jerk and acceleration approximately 20% below the the maximum found as a safeguard when printing.

Also, bear in mind that the strength of stepper motors lowers for higher speeds, so that the nozzle will not hold its path very well if obstructed. If this becomes a problem, consider lowering the speed.

$\endgroup$
  • 1
    $\begingroup$ Excellent last point -- my printer has a big Y-axis (1200mm), so lots of inertia. I had to run the stepper very slow for it to have enough torque to turn the leadscrew at all. I switched to a "5-start" lead screw (so it spins 1/5 as fast for the same motion), and no more problems. $\endgroup$ – TextGeek Jan 13 '16 at 22:11
  • $\begingroup$ @TextGeek Thanks! This is the kind of thing you figure out the hard way. My introduction to the stepper motor strength curve was that very minor defects due to leveling the bed too close would push the nozzle off its path during high speed travels. $\endgroup$ – Tormod Haugene Jan 14 '16 at 6:01
  • 1
    $\begingroup$ I do not completely understand how you get to the number of 'somewhat less than 5 seconds'. The calculator should show length on the x-axis and the acceleration could theoretically give a speed of 300 mm/s, on a length of 30 mm as given by you while taking into account that the printer has to accelerate and deaccelerate by the given 3000 mm/s^2. Do I see this correctly? Otherwise excellent answer! $\endgroup$ – kamuro Jan 4 '17 at 11:25
  • $\begingroup$ @kamuro, excellent question! I added an image where I have highlighted the info. Notice where the green line intersects the x-axis (at approximately 4 seconds). :-) $\endgroup$ – Tormod Haugene Jan 5 '17 at 8:59
  • 2
    $\begingroup$ But it cannot be coincidence that the x-axis of the graph scales with field 'distance or axis length', can it? $\endgroup$ – kamuro Jan 5 '17 at 14:03
1
$\begingroup$

Most printers use between 2000 and 5000 mm/s2.... extrusion moves are usually 2000 (on average, between different printers), travel is normally seen at 3000-5000, though for most lower end or duel direct drive extruder (heavy) printers, this value should be lower (some as low as 500-1000, some as high as 2000 for travel). Heavier extruders need lower values, as well a slower jerk values, to avoid the motors skipping. The jerk setting being set lower can actually be beneficial, as this makes for smoother extrusion after a corner or a hole (some people will see ripples near these areas as it accelerates out of the direction change - lower values make these ripples smaller, but slightly increase print time).

I've just modified mine with a prototype carriage design that I'm working on. It's added about 100 grams to the stock weight. It was finely tuned before, so this extra weight set it over that pillow of 20-30% in the setting, and makes the X and Y skip as it jerks around the plate; especially in high resolution models, particularly high resolution circles with 200 faces on the vertical axis, because the printer tries to jerk after each node - normally that isn't an issue, but in heavy designs, the jerk setting needs to be lowered. I had my jerk at 20 for XY, and its now at 4, after having tested and failed 8 and 15 values. The acceleration was at 2000 for both extrusion and travel (some firmwares don't allow separate values for travel and extrusion moves, but if yours does, it's best to have travel value about double the print moves - when your travel is twice the speed of extrusion moves - so use that 1-1 formula in relation to speed, scale it for each desired speed set in the slicer). Mine has been tested at 2000, 1500, 1000, and 800, failing all of them, with jerk setting of 5. Now testing 500 for acceleration, and beginning to get a little confused as to why this is happening.

Now I'm having second thoughts... After going as low as 800 from 2000, and still getting skipping (seemingly worse) am I getting this backwards here? Do I need a higher value if the motor is skipping on quick moves? My understanding is that lower is better for those problems, but perhaps I've confused myself.

$\endgroup$
  • $\begingroup$ Hi and welcome to SE 3D Printing. Your answer, whilst informative, seems to include a question. It would be better to ask your own question (using the link at the top of the page), as this is a Q&A site, not a "threaded forum". You could always link back to this answer, in order to maintain the context of your query. $\endgroup$ – Greenonline Feb 16 '17 at 2:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.