<p>Are you using the stock firmware of your printer? Sounds like to me that you have 16 tooth pulleys and your firmware is set to 20 tooth i.e. 80 steps per mm</p>

<p>The calculation behind the steps per mm is <span class="math-container">$\frac{\text{Steps per Revolution} \times Microsteps}{Teeth \times Pitch}$</span>. The reason for this is that one revolution of the pulley will move the belt the number of teeth times the pitch of the belt. Now take the total number of steps, Steps per Revolution times microsteps, and divide by the distance moved giving the steps per mm.</p>

<p>In <span class="math-container">$\underline{most}$</span> hobby 3D printers you have:</p>

<ul>
<li>1.8 degrees steppers which equals <span class="math-container">$\frac{360}{1.8}=200$</span> steps per revolution , Less common is 0.9 degrees steppers <span class="math-container">$\frac{360}{0.9}=400$</span></li>
<li>GT2 is the most common belts now which have a pitch of 2mm</li>
<li>The two most common pulleys are 16 tooth and 20 tooth, </li>
<li>Depending on what stepper drivers and or configuration you have

<ul>
<li>A4988 <span class="math-container">$\to$</span> 16 microsteps</li>
<li>DRV8825 <span class="math-container">$\to$</span> 32 microsteps</li>
<li>Trinamic <span class="math-container">$\to$</span> 16-256 mircosteps</li>
</ul></li>
</ul>

<p>In your situation I believe you have a 1.8 degree stepper with 16 microsteps, a gt2 belt, and a 16 tooth pulley. Which means your XY steps per mm should be <span class="math-container">$\frac{200 \times 16}{16 \times 2} = 100$</span>. While your firmware is expecting 20 tooth pulleys, yielding <span class="math-container">$\frac{200 \times 16}{20 \times 2} = 80$</span>. This would result in your prints being <span class="math-container">$\frac{100-80}{100} = 20\%$</span> smaller, which explains your results with the circles.</p>

<p>Generalizing, the steppers, microsteps, and pitch don't matter. To go between 16 tooth pulleys to 20 tooth, multiply by <span class="math-container">$0.8=\frac{16}{20}$</span>. From 20 tooth to 16 tooth, multiply by <span class="math-container">$1.25=\frac{20}{16}$</span>.</p>

CC BY-SA 4.0
2019-06-22T17:01:37.867Z
Excelent answer, this is the solution, thanks for all explaniation and the data for understand the problem.
Pedro Miguel Pimienta Morales
CC BY-SA 4.0
2019-06-20T04:40:30.427Z
2019-06-21T02:08:13.197Z
2019-06-21T02:08:13.197Z
Perplexed Dipole
<p>Let's do the math, you printed something of size 9&nbsp;cm and got a size of 7&nbsp;cm. This implies that the scale equals <span class="math-container">$\frac{7}{9}=0.778$</span>. In order to print it at the correct size, you should have printed the object at scale <span class="math-container">$\frac{1}{0.778}=1.286$</span>; so 28.6&nbsp;% bigger, i.e. <span class="math-container">$1.286\times9=11.6$</span>&nbsp;cm. You printed at 11&nbsp;cm, so the print should become smaller than the pencil drawn circle on the paper. This is actually what you see in the image you supplied.</p>

<p>This can imply 2 things, you either scale the prints incorrectly to export to stl (but that is unlikely because the Z height is correct), or the steps per mm are incorrectly set in the firmware of your printer. The rotation of the steppers (usually 200 steps) need to be translated into linear movement; this depends on the used pulleys mounted on the steppers (typically used pulleys are: 16 or 20 teeth for belt driven X and Y axes).</p>

<p>Calibrating the steps per mm of the extruder is answered in <a href="/a/6484/">this answer</a>. For the X and Y axis this works the same. If you have a Marlin based printer firmware, send G-code <a href="https://reprap.org/wiki/G-code#M503:_Print_settings" rel="nofollow noreferrer"><code>M503</code></a> to the printer over a terminal interface as e.g. OctoPrint, Pronterface (as part from Printrun: 3D printing host suite), Repetier-Host have, you can obtain the current values from the reply; these are listed under M92.</p>

<p>That value for X and Y needs to be multiplied by 1.286 (as an example) to get the correct dimensions. You do this by sending G-code <a href="https://reprap.org/wiki/G-code#M92:_Set_axis_steps_per_unit" rel="nofollow noreferrer"><code>M92</code></a> like <code>M92 X100.00 Y100.00</code> (see <a href="/a/10318">this answer</a> that explains which values you should use based on pulleys you use, either 80 or 100) to the printer, to keep these values they need to be stored in memory using G-code <a href="https://reprap.org/wiki/G-code#M500:_Store_parameters_in_non-volatile_storage" rel="nofollow noreferrer"><code>M500</code></a> (note that the values 100.00 should be replaced by the values you get by multiplying the return values for X and Y from <code>M503</code> by the 1.286 multiplication factor, only if the error is systematically increasing with print dimensions, otherwise stick to the calculated values from e.g. the Prusa belt calculator). </p>

<p>Without the proper steps per mm, you will not be able to use the full potential of the bed. An alternative as scaling your prints by the appropriate scaling factor will only help if your scaled print is smaller than the bed size divided by that scaling factor, so no use of the full bed. Rather fix the firmware to fit the actual mechanical layout.</p>

CC BY-SA 4.0
2019-06-20T05:34:48.027Z
Your answer is really awesome, tomorrow try your solution and tell you the result
Pedro Miguel Pimienta Morales
CC BY-SA 4.0
2019-06-21T02:06:55.963Z
I believe that 7mm and 9mm measurements were not take with enough significant figures to arrive at the 0.778 and 1.286 values. Using these values to calibrate the Steps per mm will result in a mis-calibrated printer. You would  be much better off using the calculated values from the mechanical properties of your printer.
Perplexed Dipole
CC BY-SA 4.0
2019-06-21T04:45:27.017Z
Further, calibraing steps-per-mm via measurement rather than mechanical properties is **always wrong**, because it will result in values that don't evenly divide nozzle width/feature width, thereby producing really bad aliasing artifacts in all the printed surfaces. If the measured value doesn't match what's predicted by mechanical properties, then you need to fix whatever parts are dimensioned incorrectly that are causing the discrepancy (e.g. stretched belt, ...).
R.. GitHub STOP HELPING ICE
CC BY-SA 4.0
2019-06-21T08:23:07.383Z
@PerplexedDipole ,R.. e.g. who says that a new belt is exactly 2 mm in width? Or whatever dimension of any part should be. It actually is a very good idea to adapt to your machine rather than counting on values. In the real world everything is produced with tolerances. Besides, the calculations show an example, with better measurements it would become more accurate, it is left as an exercise for the OP. There are some great stories to be found on people relying on hardware to be according to specifications rather than accounting for the actual sizes. I've been around to have seen examples.
0scar
CC BY-SA 4.0
2019-06-20T04:45:55.263Z
2019-06-21T15:53:14.973Z
2019-06-21T15:53:14.973Z
0scar
<p>I am printing a small cylinder, but when the object is finished, it's smaller than the measures I used when create the model.</p>

<p>I used thincerkad to make a simple model, the measures are:</p>

<ul>
<li>width: 90 mm</li>
<li>height: 2 mm</li>
</ul>

<p>After the print was done, the actual dimensions were:</p>

<ul>
<li>width: 70 mm</li>
<li>height: 2 mm</li>
</ul>

<h3>Pictures</h3>

<p>First attempt</p>

<p><a href="https://i.sstatic.net/ESch8.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/ESch8.jpg" alt="one"></a></p>

<p>The smaller object that's in the drawn circle was the first one printed, the dimensions I used were:</p>

<ul>
<li>width: 110 mm</li>
<li>height: 2 mm</li>
</ul>

<p>Then I printed it again, and the result was:</p>

<p><a href="https://i.sstatic.net/TAAPI.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/TAAPI.jpg" alt="Two"></a></p>

CC BY-SA 4.0
2019-06-20T11:25:25.193Z
in reprinting: did you use the same gcode? did you resclice it? What does the Sicer tell you is the size of the disk?
Trish
CC BY-SA 4.0
2019-06-20T11:48:54.843Z
I used simplify, just generate the file with the g-code, copy to the pendrive, insert that in the print, and lets go.
Pedro Miguel Pimienta Morales
CC BY-SA 4.0
2019-06-20T11:51:10.920Z
Good question, i Will try today with Slicer, but simplify show me the same measures than i put yo the model un the software
Pedro Miguel Pimienta Morales
CC BY-SA 4.0
2019-06-21T18:09:28.953Z
Is it true that the first picture shows a 70mm output for a 90mm model, and that the second picture shows a 110mm output for a 110mm model?  If so, something other than scaling (or wrong steps per inch) is happening.  Also, what is causing the cross-hatching?  That seems to be scale invariant.
cmm
CC BY-SA 4.0
2019-06-21T18:12:07.943Z
110 mm model 90 cm output
Pedro Miguel Pimienta Morales
<3d-models>
Why is the printed object smaller than original model?
Pedro Miguel Pimienta Morales
# Why is the printed object smaller than original model?

(Asked by: username_0 on 2019-06-20)

I am printing a small cylinder, but when the object is finished, it's smaller than the measures I used when create the model.

I used thincerkad to make a simple model, the measures are:

* width: 90 mm
* height: 2 mm

After the print was done, the actual dimensions were:

* width: 70 mm
* height: 2 mm

### Pictures

First attempt

[![one](https://i.sstatic.net/ESch8.jpg)](https://i.sstatic.net/ESch8.jpg)

The smaller object that's in the drawn circle was the first one printed, the dimensions I used were:

* width: 110 mm
* height: 2 mm

Then I printed it again, and the result was:

[![Two](https://i.sstatic.net/TAAPI.jpg)](https://i.sstatic.net/TAAPI.jpg)

**Tags:** 3d-models
> **Comments:**
> **username_1**: in reprinting: did you use the same gcode? did you resclice it? What does the Sicer tell you is the size of the disk?  
> **username_0**: I used simplify, just generate the file with the g-code, copy to the pendrive, insert that in the print, and lets go.  
> **username_0**: Good question, i Will try today with Slicer, but simplify show me the same measures than i put yo the model un the software  
> **username_2**: Is it true that the first picture shows a 70mm output for a 90mm model, and that the second picture shows a 110mm output for a 110mm model?  If so, something other than scaling (or wrong steps per inch) is happening.  Also, what is causing the cross-hatching?  That seems to be scale invariant.  
> **username_0**: 110 mm model 90 cm output  

---

## 2 answers

### Answer by username_4 on 2019-06-20. Score: 5 | Accepted answer

Let's do the math, you printed something of size 9 cm and got a size of 7 cm. This implies that the scale equals $\frac{7}{9}=0.778$. In order to print it at the correct size, you should have printed the object at scale $\frac{1}{0.778}=1.286$; so 28.6 % bigger, i.e. $1.286\times9=11.6$ cm. You printed at 11 cm, so the print should become smaller than the pencil drawn circle on the paper. This is actually what you see in the image you supplied.

This can imply 2 things, you either scale the prints incorrectly to export to stl (but that is unlikely because the Z height is correct), or the steps per mm are incorrectly set in the firmware of your printer. The rotation of the steppers (usually 200 steps) need to be translated into linear movement; this depends on the used pulleys mounted on the steppers (typically used pulleys are: 16 or 20 teeth for belt driven X and Y axes).

Calibrating the steps per mm of the extruder is answered in [this answer](/a/6484/). For the X and Y axis this works the same. If you have a Marlin based printer firmware, send G-code [`M503`](https://reprap.org/wiki/G-code#M503:_Print_settings) to the printer over a terminal interface as e.g. OctoPrint, Pronterface (as part from Printrun: 3D printing host suite), Repetier-Host have, you can obtain the current values from the reply; these are listed under M92.

That value for X and Y needs to be multiplied by 1.286 (as an example) to get the correct dimensions. You do this by sending G-code [`M92`](https://reprap.org/wiki/G-code#M92:_Set_axis_steps_per_unit) like `M92 X100.00 Y100.00` (see [this answer](/a/10318) that explains which values you should use based on pulleys you use, either 80 or 100) to the printer, to keep these values they need to be stored in memory using G-code [`M500`](https://reprap.org/wiki/G-code#M500:_Store_parameters_in_non-volatile_storage) (note that the values 100.00 should be replaced by the values you get by multiplying the return values for X and Y from `M503` by the 1.286 multiplication factor, only if the error is systematically increasing with print dimensions, otherwise stick to the calculated values from e.g. the Prusa belt calculator).

Without the proper steps per mm, you will not be able to use the full potential of the bed. An alternative as scaling your prints by the appropriate scaling factor will only help if your scaled print is smaller than the bed size divided by that scaling factor, so no use of the full bed. Rather fix the firmware to fit the actual mechanical layout.

> **Comments:**
> **username_0**: Your answer is really awesome, tomorrow try your solution and tell you the result  
> **username_3**: I believe that 7mm and 9mm measurements were not take with enough significant figures to arrive at the 0.778 and 1.286 values. Using these values to calibrate the Steps per mm will result in a mis-calibrated printer. You would  be much better off using the calculated values from the mechanical properties of your printer.  
> **username_5**: Further, calibraing steps-per-mm via measurement rather than mechanical properties is **always wrong**, because it will result in values that don't evenly divide nozzle width/feature width, thereby producing really bad aliasing artifacts in all the printed surfaces. If the measured value doesn't match what's predicted by mechanical properties, then you need to fix whatever parts are dimensioned incorrectly that are causing the discrepancy (e.g. stretched belt, ...).  
> **username_4**: @PerplexedDipole ,R.. e.g. who says that a new belt is exactly 2 mm in width? Or whatever dimension of any part should be. It actually is a very good idea to adapt to your machine rather than counting on values. In the real world everything is produced with tolerances. Besides, the calculations show an example, with better measurements it would become more accurate, it is left as an exercise for the OP. There are some great stories to be found on people relying on hardware to be according to specifications rather than accounting for the actual sizes. I've been around to have seen examples.  

---

### Answer by username_3 on 2019-06-20. Score: 7

Are you using the stock firmware of your printer? Sounds like to me that you have 16 tooth pulleys and your firmware is set to 20 tooth i.e. 80 steps per mm

The calculation behind the steps per mm is $\frac{\text{Steps per Revolution} \times Microsteps}{Teeth \times Pitch}$. The reason for this is that one revolution of the pulley will move the belt the number of teeth times the pitch of the belt. Now take the total number of steps, Steps per Revolution times microsteps, and divide by the distance moved giving the steps per mm.

In $\underline{most}$ hobby 3D printers you have:

* 1.8 degrees steppers which equals $\frac{360}{1.8}=200$ steps per revolution , Less common is 0.9 degrees steppers $\frac{360}{0.9}=400$
* GT2 is the most common belts now which have a pitch of 2mm
* The two most common pulleys are 16 tooth and 20 tooth,
* Depending on what stepper drivers and or configuration you have
  + A4988 $\to$ 16 microsteps
  + DRV8825 $\to$ 32 microsteps
  + Trinamic $\to$ 16-256 mircosteps

In your situation I believe you have a 1.8 degree stepper with 16 microsteps, a gt2 belt, and a 16 tooth pulley. Which means your XY steps per mm should be $\frac{200 \times 16}{16 \times 2} = 100$. While your firmware is expecting 20 tooth pulleys, yielding $\frac{200 \times 16}{20 \times 2} = 80$. This would result in your prints being $\frac{100-80}{100} = 20\%$ smaller, which explains your results with the circles.

Generalizing, the steppers, microsteps, and pitch don't matter. To go between 16 tooth pulleys to 20 tooth, multiply by $0.8=\frac{16}{20}$. From 20 tooth to 16 tooth, multiply by $1.25=\frac{20}{16}$.

> **Comments:**
> **username_0**: Excelent answer, this is the solution, thanks for all explaniation and the data for understand the problem.  

---

