All rolls of filament have a sweet spot of a temperature to print at and it will differ between materials and brands and even with the makeup of your individual extruder. One of the best ways to calculate this for a given filament involves running a single print that gradually changes temperature and then reviewing afterward where the print looks the best in terms of layer adhesion, overhangs, bridging, etc. To do this, we need to insert the various temperatures that we'd like the extruder to reach, into our sliced gcode file before sending it to the printer. While it's not particularly hard to edit the gcode file by hand in a text editor I wrote a python script to automate the process.
Generally, when I get a new roll of filament my routine is to:
To use the script you'll need to have python installed. When slicing your stl file it's best practise to set the printing temperature in your slicer settings to the starting temperature you intend to test. Once sliced, simply drag and drop your gcode file onto the python scripts icon then follow the prompts to enter four parameters:
The script will then tell you which temps will print at which height.
If you want to have the script run automatically after you hit export within your slicer, most slicers will allow you to specify post-processing scripts and save it to a profile.
eg. for PrusaSlicer... Print Settings > Output options > Post processing scripts...
"pathtopython.exe" "pathtogcode_temp_changer.py";
Thingiverse has plenty of different designs of temperature tower to use - choose any that you like the look of that incorporates a number of tests. I'll sometimes switch between a simpler tower with a smaller footprint so it finishes quicker to a more complex tower if I have a more crucial project to print (or one that will take a long time).
If the tower you choose is customisable then you simply need to create a remix with your desired temps - note that it's always quicker to download the scad file and generate the tower on your desktop rather than using the customiser in your browser. If the tower you choose is NOT customisable (and has more stages than you require) then simply use the CUT feature in your slicer to remove the portions you don't need (either from the bottom or the top of the model).
The script will auto-detect and handle output from a few different slicers (and across a few different versions). If you receive the message saying your slicer "isn't yet supported", you can upload your gcode somewhere and send me the link and I'll add it.
21/09/2016 - updated script to handle output from another slicer
19/06/2017 - added a separate script for CURA users
06/12/2017 - consolidated the separate versions into one. added: auto-detection for different slicer output; various safety checks; and reverse temp direction.
10/07/2020 - changed the script to handle if the temp tower used has a base or not
Please only use this script if you understand what you're doing. Setting temps that your printer can't handle can/will damage your printer.
example_temp_tower_205-230.stl | 579.3KB | |
gcode_temp_changer.py | 5.8KB |