<p>A tool that you might find useful for experimenting with acceleration is <a href="http://prusaprinters.org/calculator/" rel="noreferrer">RepRap Centrals Acceleration Calculator</a> (at the bottom).</p>

<p>By setting an <em>acceleration</em>, <em>length of travel</em> and <em>target speed</em>, you can see:</p>

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

<p>For instance, setting <code>acceleration = 3000, length = 30 and speed = 150</code> 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: </p>

<p><a href="https://i.sstatic.net/g13l3.png" rel="noreferrer"><img src="https://i.sstatic.net/g13l3.png" alt="enter image description here"></a></p>

<p><strong>Calculating speed, acceleration and jerk:</strong></p>

<p>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. </p>

<p>I would separate speed calibration into three task:</p>

<ol>
<li>First find the <em>maximum speed</em> your printer can tolerate. One way of doing this is to print an object with long travel distances, and vary the maximum travel speed.</li>
<li>Using the calculator above, increase the <em>acceleration</em> for various traveling distances until you get suitably smooth acceleration curves for your desired speed for medium to long traveling distances.</li>
<li>Adjust your <em>jerk</em> 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.</li>
</ol>

<p>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. </p>

<p>Also, bear in mind that <a href="https://www.google.no/search?q=stepper%20motor%20strength%20curve%20NEMA%2017&amp;espv=2&amp;biw=1920&amp;bih=985&amp;tbm=isch&amp;tbo=u&amp;source=univ&amp;sa=X&amp;ved=0ahUKEwi74aLL46fKAhVIdCwKHdJbDa4QsAQIGg&amp;dpr=1#imgrc=NbUjFTxiWehyKM%3A" rel="noreferrer">the strength of stepper motors lowers for higher speeds</a>, so that the nozzle will not hold its path very well if obstructed. If this becomes a problem, consider lowering the speed.  </p>

CC BY-SA 3.0
2017-01-04T11:25:51.433Z
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!
kamuro
CC BY-SA 3.0
2017-01-05T08:59:46.703Z
@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). :-)
Tormod Haugene
CC BY-SA 3.0
2017-01-05T14:03:32.097Z
But it cannot be coincidence that the x-axis of the graph scales with field 'distance or axis length', can it?
kamuro
CC BY-SA 3.0
2017-01-05T15:13:39.530Z
@kamuro, I think you are absolutely right. The x-axis has to be the distance travelled, and not the time. Then, the green line would mean it takes 4 **mm** to reach the desired speed, and not seconds. Now that I think about it, 4 seconds is a tremendously long time for a stepper motor to speed up. :-) I have updated the image/explanation.
Tormod Haugene
CC BY-SA 3.0
2016-01-13T22:11:38.323Z
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.
TextGeek
CC BY-SA 3.0
2016-01-14T06:01:09.427Z
@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.
Tormod Haugene
CC BY-SA 3.0
2016-01-13T22:00:20.880Z
2017-01-05T15:20:41.750Z
2017-01-05T15:20:41.750Z
Tormod Haugene
<p>Most printers use between 2000 and 5000 mm/s<sup>2</sup>.... 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).</p>

<p>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. </p>

<p>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. </p>

CC BY-SA 3.0
2017-02-16T02:48:23.067Z
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.
Greenonline
CC BY-SA 3.0
2017-02-14T22:36:25.327Z
2017-02-16T20:31:56.920Z
2017-02-16T20:31:56.920Z
DevWolf
<p>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:</p>

<ol>
<li><p>Establish an acceleration value that you're sure is too low (call it <span class="math-container">$L$</span>), and one that you're sure is too high (<span class="math-container">$H$</span>). It sounds like you know such values already from experience.</p></li>
<li><p>Figure out the speed in the middle: <span class="math-container">$(L+H)/2$</span>.  Call that <span class="math-container">$M$</span>.</p></li>
<li><p>Try printing at speed <span class="math-container">$M$</span>. Something like a stepped calibration cube might be a good choice of object (plenty available on Thingiverse).</p></li>
<li><p>If <span class="math-container">$M$</span> is still too fast, take <span class="math-container">$M$</span> as your new high-speed limit (that is, reset <span class="math-container">$H$</span> to the value of <span class="math-container">$M$</span>), and repeat from step #2.</p></li>
<li><p>If it's slow enough to work, take <span class="math-container">$M$</span> as your new low-speed limit (<span class="math-container">$L$</span>), and repeat from step #2.</p></li>
</ol>

<p>Each repetition will cut the range in half. Keep repeating until <span class="math-container">$L$</span> and <span class="math-container">$H$</span> get as close as you want; say, within 5&nbsp;% of each other or so.</p>

<p>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).</p>

CC BY-SA 3.0
2016-01-14T06:02:46.230Z
That seems like an interesting calibration method! Is there somewhere I can read more about this?
Tormod Haugene
CC BY-SA 3.0
2016-01-15T16:27:47.503Z
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.
TextGeek
CC BY-SA 4.0
2016-01-13T22:03:45.240Z
2019-06-18T14:33:30.010Z
2019-06-18T14:33:30.010Z
TextGeek
<p>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.</p>

<p>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.</p>

<p>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?</p>

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

CC BY-SA 3.0
2016-01-13T20:58:37.593Z
[Binary search](https://en.wikipedia.org/wiki/Binary_search_algorithm), i.e. trying values until you find one that works.
Tom van der Zanden
<calibration>
How do I determine the acceleration value for my printer?
Marsh
# How do I determine the acceleration value for my printer?

(Asked by: username_0 on 2016-01-13)

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.

**Tags:** calibration
> **Comments:**
> **username_1**: [Binary search](https://en.wikipedia.org/wiki/Binary_search_algorithm), i.e. trying values until you find one that works.  

---

## 3 answers

### Answer by username_4 on 2016-01-13. Score: 19 | Accepted answer

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).

> **Comments:**
> **username_2**: That seems like an interesting calibration method! Is there somewhere I can read more about this?  
> **username_4**: 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.  

---

### Answer by username_2 on 2016-01-13. Score: 8

A tool that you might find useful for experimenting with acceleration is [RepRap Centrals Acceleration Calculator](http://prusaprinters.org/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](https://i.sstatic.net/g13l3.png)](https://i.sstatic.net/g13l3.png)

**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](https://www.google.no/search?q=stepper%20motor%20strength%20curve%20NEMA%2017&espv=2&biw=1920&bih=985&tbm=isch&tbo=u&source=univ&sa=X&ved=0ahUKEwi74aLL46fKAhVIdCwKHdJbDa4QsAQIGg&dpr=1#imgrc=NbUjFTxiWehyKM%3A), so that the nozzle will not hold its path very well if obstructed. If this becomes a problem, consider lowering the speed.

> **Comments:**
> **username_4**: 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.  
> **username_2**: @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.  
> **username_3**: 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!  
> **username_2**: @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). :-)  
> **username_3**: But it cannot be coincidence that the x-axis of the graph scales with field 'distance or axis length', can it?  
> **username_2**: @kamuro, I think you are absolutely right. The x-axis has to be the distance travelled, and not the time. Then, the green line would mean it takes 4 **mm** to reach the desired speed, and not seconds. Now that I think about it, 4 seconds is a tremendously long time for a stepper motor to speed up. :-) I have updated the image/explanation.  

---

### Answer by username_5 on 2017-02-14. Score: 2

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.

> **Comments:**
> **username_6**: 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.  

---

