Getting Started: How to Calibrate Your 3D Printer
This 3D printer calibration guide will provide all the essential information you need to manually calibrate your printer and fine-tune your slicer.
Checking the first layer
The first layer is literally the foundation for the full print; therefore, establishing a good first layer is essential to guaranteeing the integrity of the entire print. If the nozzle extrudes too close to the print bed, the first layer will not be even or dry properly, which can lead to a squished or inconsistent first layer and might make you throw away the whole print. If the nozzle is seated too far from the print bed, the layers will not adhere properly, and the entire print will lack structure and may collapse in on itself.
The first step to ensuring a good first layer is tuning the Z offset. The Z offset dictates how far the Z axis is moved from the Z endstops, which tells the printer software where the print bed is set. By properly tuning the Z offset, you are more likely to get a print that sticks perfectly to the print bed.
If your first layer is squished or the nozzle pushes into the filament, increase the Z offset. If your first layer is peeling up from the bed or the subsequent layer is not adhering to the first layer properly, lower the Z offset. As with most changes made to your 3D printer, you should make these adjustments in small increments to avoid overcorrecting.
Adjusting the Stepper Motors
Stepper motors rotate in small increments to move axes or the extruder by a certain distance. For example, if one rotation is 100 steps, then the motor must rotate 50 steps to complete half of a rotation. Such movements allow for excellent rotation control. Calibrating the stepper motors involves determining the relationships between steps and distance for your specific printer. This requires a bit of basic math and keeping track of values, so open a note program on your computer or have a pencil and paper ready.
Step 1: Prepare your values
To calibrate the extruder, first check to ensure your 3D printer is extruding the correct amount of filament. To do this, a few G-code commands must be sent to your printer. A G-code (geometric code) is a simple programming code that instructs the machine to move along three dimensions and determines extrusion rate and bed temperature. Becoming comfortable with G-codes will be a significant help with fine-tuning your printer in the future.
First, retrieve all your printer’s settings by sending it the command ‘M503’.
Then, write down the output values; the output should look something like ‘Steps per unit: M92 X100.00 Y100.00 Z400.00 E140.00’. The values following M92 correspond to the number of steps that the stepper motors take to move one millimeter in the X, Y, and Z directions, as denoted by each letter in the value string. These aren’t essential for the next step, but you should write them down for later. The last value, which indicates the number of steps that the extruder motor takes per millimeter of extruded filament, is critical for calibrating the stepper motors. In this guide, this value is denoted as ‘A’.
Next, insert your filament and mark it at approximately 50 mm above the top of the extruder. If possible, measure the exact value with calipers and write it down. Here, this value is denoted as ‘B’.
Extrude 10 mm of filament and measure the distance from the top of the extruder to the marked point. This post-extrusion measurement is denoted as ‘C’. B - C denotes the amount of filament that was extruded. If B - C = 10 mm, then the extruder is calibrated correctly. If not, the extruder’s steps per millimeter must be re-calibrated.
Find D by computing 10*A / (B - C). This is the new number of steps per millimeter for the extruder. To ensure proper tuning, it is recommended to measure D multiple times and take the average.
Step 2: Calibrate your 3D printer extruder
To calibrate the extruder, you need to input the new value. Send the command ‘M92 E[D]’ to the printer. While this command tells the printer the new value for the next print, it does not automatically save it in the baseline calibration settings. To save this setting, send the command ‘M500’. The extruder should now be calibrated correctly.
Here is an example illustrating the extruder calibration process:
Suppose that before our test extrusion, the distance between the marked point and the top of the extrusion was 52.10 mm; after the test extrusion, the distance was measured to be 44.80 mm. Then, B - C = 7.30 mm. If the original number of steps per millimeter for the extruder was 140, 10*140/10.30 = 191.78; therefore, we send the command ‘M92 E191.78’ to calibrate the extruder.
When calibrating the mechanical aspects of your printer, do not worry if your results are not perfect. It is nearly guaranteed that you will observe some variation after you confirm the new calibration; so long as you are relatively close (within a few percentage points) to the desired value, your printer should be well-calibrated and produce good prints.
Step 3: Calibrate your 3D printer axes
After calibrating the extruder, the axes should be calibrated as well. Calibrating the axes is similar to calibrating the extruder but requires that a test print be performed to ensure that everything is aligned. A common test print is a cube because this shape tests the alignment and integrity of the produced layers.
After the print is complete, measure each dimension of the cube. For each axis, repeat the computation you performed when calibrating the extruder but replace (B – C) with your measurement, the number 10 with the target value of that measurement, and A by the M92 value for that axis. Then, send the appropriate M92 commands to the printer, replacing E with the letter corresponding to the axis you need to set. The final calculation will be [target value]*[M92 axis value/ [axis measurement]. Remember that you need to perform this measurement for the X, Y, and Z axes, so be sure to check all measurements, taking care not to mix up any values from other axes.
Here is another example illustrating the axis calibration process:
Suppose the cube is meant to be 20 mm on each side, but we measure 20.43 mm in the X direction. If the M92 X value was set to 100.00, we would calculate 20*100 / 20.43 = 97.90 and update this value using the command ‘M92 X97.90’.
As mentioned above, it is recommended to take multiple measurements and use their average. In this case, do not worry about printing multiple objects. Instead, take multiple measurements of each axis on the printed cube. If you find that your calibration is still significantly off, you may wish to run this entire test again.
Checking Filament Settings
Every roll of filament is different. Filaments produced by different manufacturers will have different properties, and even different colors of the same material may exhibit different characteristics during heating and printing. To produce the best prints possible, your filament settings will require fine adjustment. The settings recommended by the filament manufacturer are typically suitable for good prints, but for optimal printing results, you should perform the following process every time you open a new roll of filament.
Step 1: Measure your filament
Using calipers, determine the actual diameter of the filament, which may vary slightly from that printed on the packaging. The tolerance in diameter is usually printed on the spool or elsewhere on the packaging. Measure your filament at several locations along the spool and take the average of your measurements. For the best measurements, taking the diameter at four or more locations is recommended.
Enter this result as the filament diameter in your slicer. Ensuring that this number is correct for the specific filament you are using helps ensure that your printer will evenly extrude the proper amount of filament during the printing process.
Step 2: Set the correct print temperature
Identifying the optimal print temperature is essential for producing stable and aesthetically pleasing prints. Makers are recommended to print a temperature tower to determine the best print temperature. There are several variations online, and you can even make your own (see these temperature towers for ideas), but the basic idea remains the same for all variations. The tower is separated into blocks at different heights, and each block is printed at a different temperature. You can analyze each block after printing to determine the best temperature for your material.
Printing a temperature tower for the first time can be tricky. If your printer’s slicer does not allow differential height temperatures, you will have to manually edit the G-code prior to printing. To do this, you will use G-code commands to set the extruder temperature; these commands begin with ‘M104’.
First, determine the height of each block. Here, we denote this ‘H’; different blocks start at height 0, H, 2H, 3H, etc.
Then, open your G-code file in the editor of your choice. Look for commands that tell your printer how to move, which begin with ‘G1’. Your G-code file will contain many of these commands, so look for the first G-code command that looks like ‘G1 Z[H]’; note that it may also contain X and Y movement commands. Directly before the line with this command, insert the line ‘M104 S[T]’ where ‘T’ is the temperature of the block that begins at height H. Keep track of these commands in the file because you will be deleting the height–temperature gradient commands after finding the right temperature.
Here is an example illustrating our temperature tower calibration process:
Suppose the blocks have heights of 1 cm (10 mm) and the temperatures range from 185 °C to 220 °C in 5 °C increments. First, we find the first command containing ‘G1 Z10’, which is the first command that brings the hot end to a height of 10 mm. Directly above this line, we set the hot end to 190 °C by inputting the command ‘M104 S190’.
Repeat this for each block according to height with the appropriate temperature. Then, print using the updated G-code file.
Once you have printed a temperature tower, examine the different blocks to determine the best temperature for the material you are using. You should be paying attention when the print is being conducted to evaluate how the filament sets, which can impact print strength and integrity. Find the block that was printed the most evenly and set the temperature accordingly. Be sure to delete the other height–temperature settings to ensure that larger prints do not end up being printed at different temperatures.
The Ultimate Test: Torture
Following these basic procedures will allow you to calibrate your printer and slicer settings to ensure that you get the most out of your filament. However, this list is not comprehensive, and there are many more settings that you can alter to further improve your prints.
One essential method for getting a comprehensive view of what is working and not working with your printer is performing “torture tests.” Printing and perfecting these prints by tweaking other settings can help with fine-tuning notoriously problematic areas such as bridges and overhangs. Torture tests are also beneficial for diagnosing problems that are not immediately visible in simple prints.
3DBenchy (known widely as “Benchy”) is among the most frequently used and recommended torture test. However, Benchy is not the only torture test and may not be best suited for your needs. There are many others that are more and less suitable for identifying different problems, so search “torture test” on your favorite STL site to find one that works best for you. Most tests include basic instructions on how to use them to diagnose problems and points of failure in the resulting print.