Calibrating a 3D printer kit can be a lot harder than building it. And, if you are not careful, you can make it even harder. Here is my experience with my Sunhokey 3D printer kit. Remember that a 3D printer kit is not a precision instrument. It’s more likely a good enough instrument. So, have reasonable expectations. Perfect is the enemy of good.
It is important to know that there are two different sets of numbers that you can adjust to get things working properly. These are (a) slicer settings and (b) firmware configuration. Slicer settings are independent of your printer. They are part of your printing software on your computer. Slicer settings control things like temperatures, feeds and speeds. For example, what should be the extruder and bed temperatures, how much plastic should be extruded, and how fast should the print head move during different types of movement? Slicer settings apply to one particular print. Firmware configuration parameters are about controlling the parts of your printer. For example, how many steps should a stepper motor take to move the print head one millimeter in any direction? What should be the upper and lower limits of temperatures? Firmware configuration works across all your prints.
Slicer settings and firmware configurations are two different things. Let’s use a car analogy. Firmware configuration is like the basic mechanical performance of your car. Slicer settings are like what you as the driver try to do with your car. But slicer settings are about higher level behavior while firmware configuration is lower level. Both are important. Both work together. A great driver can’t do much with a lousy car, and vice versa.
3D Printer Kit Set-up Basics
There are many sources of information for 3D printer kit calibration. Some are basic, others are more advanced. Some provide pictures to help you diagnose and troubleshoot. It also helps to join an owners’ group and get advice about your particular 3D printer kit.
You will find lots of advice on the Internet about the “best” settings and calibrations. Take these as information only. The people giving out advice are not using your printer, in your environment, with your spool of filament. You need to figure these things out yourself, but you can get ideas and learn from others.
Perhaps the best discussion about pros and cons of calibration comes in this video from Thomas Sanladerer. He talks about what you should be trying to achieve through calibration and when to leave good enough alone.
So, here are the basics that you must achieve before you event think of tweaking your firmware.
- Level the print bed. This is a combination of placing your printer on a level surface, adjusting the print bed screws to achieve horizontal, and making sure that your hot end nozzle is the proper distance for good printing. If your print bed is not level, this distance will vary and so will your results. I start out by placing a small circular bubble level on the print bed. Then I adjust the bed screws to center the bubble along the X and Y axis. Next, I adjust the hot end nozzle so that it is positioned the width of a piece of paper from the print surface. This requires making adjustments to the Z axis (vertical) end stop system. My 3D printer kit provides a spring loaded screw for making this adjustment. When you are done, you should be able to feel the print nozzle just rub against a piece of paper as it moves around the print bed.
- Prepare the print surface. There is lots of advice around as to the best surface for printing PLA or ABS. Experiment. I found that PLA prints fine on a cold surface of blue painters tape. ABS prints fine on a heated surface of Kapton tape with some ABS slurry. Whether you are using a glass or aluminum print surface does not matter. You still need some sort of surface treatment to ensure that the plastic sticks properly when extruded.
- Understand and Use the Settings in your slicer software. Nearly all of the things you might want or need to adjust are available in your slicer software. Ideally, you should not even have to play with your firmware configuration. In your slicer software you can adjust temperatures, speeds and rates of extrusion. In particular, each 3D printer kit will vary in how fast it can go. You might want to slow down printing speed until you get good quality prints consistently, then try speeding up. Each spool of filament may require different temperatures and rates of extrusion. You can label and save different slicer configurations. I also keep a notebook handy so I can remember settings that work best.
One often overlooked issue is that most cheap plastic filament is not standardized. You will need to experiment with hot end and bed temperatures, filament diameters and extrusion multipliers. Your 3D printer kit provided will recommend these settings. These should only be considered as starting points. You will probably have to figure out the best temperatures every time you start a new roll of filament.
Understanding Your Firmware
The controller board on your 3D printer kit runs on firmware. Firmware is the brain which translate commands (G-code) into physical movement, heating temperatures and plastic extrusion. When you are running a 3D printer kit, firmware configuration needs to be checked. For example, when your G-code says “move 10 mm on the X axis”, the stepper motors don’t know anything about millimeters. They just know how to turn in steps, one way or the other. Your firmware has to be told how to translate a millimeter into the number of steps it should turn the motor. This is called configuration. The parameter that needs to be configured is called “steps per millimeter” and there is one of these parameters for each axis, as well as the extruder.
The three axis “steps per millimeter” are based on the physical characteristics of the hardware only. There are online calculators for this. These calculators take into account things like motor step angle, pulley tooth count, driver micro-stepping and lead screw pitch. The extruder “steps per millimeter” follow the same idea but can be more difficult to calibrate.
There are many other parameters which control things like temperature limits, speed, acceleration, and so on. Some of these can be set in your “slicer” software and sent to the printer as G-code. Some of these need to be set in the firmware.
Usually, your 3D printer kit vendor will have figured these things out for you. Sometimes, you need to make changes. For example, I started by printing small cubes, 10 mm per side. When I measured the results, I found find that the printed dimensions were way off. My first cubes were around 8.5 mm in width and 12 mm in height. If you find that your dimensions are significantly wrong (mine were 15-20% out in different directions) you need to adjust the firmware.
There are two ways to adjust the firmware configuration. The first is to use the LCD panel to make changes and then save these in memory. Thereafter, your controller board will read these parameters from its EEPROM whenever it boots up. The second way is to edit your firmware and upload it to your controller board. Either should work.
Typically, a 3d printer kit uses some sort of Arduino Mega and RAMPS 1.4 controller standard, using an open source firmware like Marlin. These controllers will be pre-configured at the factory. In the ideal world, you will not have to make any changes. But in the real world you might have to adjust configuration parameters in your firmware. Typically, you will use the Arduino IDE and personalize your own copy of Marlin (or other firmware) and upload it into your printer through the USB connection. There is really only one file in Marlin you need to become familiar with. It is called “configuration.h”. That is where you will find the parameters like steps per millimeter that you might want to change.
Your 3D printer kit supplier should provide you with a copy of Marlin that they configured for your printer. This way you will know how they set things up. And you have a fallback configuration if things go wrong during your tweaking. Updating your firmware is as simple as making changes in the “configuration.h” file and pressing the Upload button in the Arduino IDE. When I make changes, I usually add a comment in the file so that I know what parameter I changed and when.
I ran into several problems with my firmware. First, the supplier did not provide a copy how they configured Marlin. Fortunately, I was able to find this from an owner’s group. Second, the supplier configured Marlin to disable saving any changes in EEPROM. Third, a few of the settings were not right. Once I got a copy of the original Marlin configuration, I was able to easily make adjustments and upload the new firmware with confidence.