Temperature ladder

Folk have advised me to print a temperature ladder with new filament to determine the best hot-end temperature to use with it. Is there a way to automate this so that the temperature set point is adjusted automatically at each step?

I’m assuming the temperature ladder is an .stl file that is sliced to produce .gcode. The .stl file can be procedurally generated but none of the existing slicers that I am aware of have a way of dynamically changing the hotend temperature (unless it supports post-processing extensions). G-code doesn’t have any support for doing math. The best you could do would be to post process the .gcode file with slicer extensions or a program of some sort.

OK thanks for the response.
So without be able to adjust the set point for each temperature step, what would the procedure be for printing a temperature ladder on my original Mini?

Pick a temperature tower model. The model should have instructions that describe its geometry including a recommended layer height. Using these parameters in your slicer and produce a .gcode file. Edit this .gcode file inserting “M104 Sxxx” commands at the appropriate locations (by layer or by height).

Here’s a pointer to one that includes everything you should need including post processing macros, https://www.thingiverse.com/thing:2729076. If you don’t like that one, here’s a pointer to everything tagged with “Temperature Tower”, https://www.thingiverse.com/tag:Temperature_Tower

Google will be your friend if you ask it the right question. Try “automated 3d temperature tower” and throw in the name of your preferred slicer.

I know this post is a few months old … but there is built-in support for this in Cura Lulzbot Edition

  1. Load your temperature tower (i.e. find one you like from a website such as Thingiverse. There are many of these and you’ll find them with temp ranges printed on the towers that correspond to common temp ranges for various filaments… e.g. PLA temp towers, ABS temp towers, etc.)

  2. Set the temperature used for the first section of the temperature tower (think of this like a tall building with “levels” or “floors”) and set that temp in Cura as you normally would.

  3. From the Cura main menubar, navigate to “Extensions” -> “Post processing” -> “Modify G-code”

  4. Click “Add a script” and select the script named “Tweak at Z or Layer”

  5. Determine if you’d prefer to tweak at a layer number … or at a height (in millimeters). Suppose you choose to do this by layer number and the first temperature change (from the original print temp) should occur at layer number 100. You’d click the “Trigger” and set that to “Layer number” (instead of “Height”). then you’d fill in the layer number in box below (the one named “Tweak Layer”).

  6. You’ll notice you can tweak lots of things… print speed, flow rate, fan speed, etc. But what you want to change is the extruder temp. So put a check in the box for Extruder Temp. Then fill in the new temp you want to use.

But that just changes one “level” of the tower and your tower needs several of these changes.

  1. So go back and repeat just as you did in Step 4 … pick “Add a script” and add another “Tweak at Z or Layer” and repeat the steps of determine the new height or layer number and set the next extruder temp.

  2. Repeat for each level/floor of the temp tower until you are done.

Now slice the job and send it to the printer.

Be aware that the best temp to use can be affected not just by the filament… but also by things like layer heights, flow rates, fan speeds, retraction settings, etc.

Lastly but VERY important. One you add these scripts… they can stay there. That means that when you’re ready to print an actual part (not a temp tower) make sure you turn off all these temp change scripts. (just loading a new part into Cura doesn’t clear the scripts).

Your last paragraph is confusing me a little. Are you saying that after printing the temp tower, when I load a new job ( .gcode) to be printed which has previously been sliced, the settings will be left as they were for the temp ladder? If that is the case, how would I ‘turn off’ the temp change scripts.
I hope I am making sense here :slight_smile:

@bbc0, correct. Assume you set up and printed the temp-tower with all the temperature changes and finished your print. Then in Cura you clear the build plate and load something new into Cura… you’ll likely find that all those temperature changes are still active even though it’s a completely different part.

You’ll notice that even with a new part, you can go into Extensions -> Post Processing -> Modify G-codes … that all those scripts are still enabled.

Just click the tiny “X” icon to the right of each script to clear them.

If I completely quit Cura and restart… it clears all the scripts. But if I simply clear the build-plate and load a new part to slice… the scripts do not clear – I have to manually clear them.

Interesting. I have never made any gcode mods so I will have to remember to do this when the time comes. Often though I only print one item in an evening and then shut down the power for the night, so I should be alright in that case.

The G-codes are fairly simply and meant to be human-readable. You can find a list of them here: http://marlinfw.org/meta/gcode/

E.g. G-codes such as G00 or G01 are followed by X, Y, and possibly Z coordinates and that causes the print head to move to a new position (at some travel speed and possibly also laying down filament … or not laying down filament … while moving). Not all codes start with “G”.

Many years ago (probably about 35 years ago) I used to program CNC numerical milling machines by hand (no computer software generated the G-codes) to make machined parts and that’s when I originally learned the G-codes. When I got into 3D printing I was surprised to see those same G-codes still in use today.

If you were to tell your slicing software (e.g. Cura) to “save to file” instead of sending the G-codes to the printer, you could follow through the text file line-by-line while looking at that reference page and see exactly what each code does.

Knowing how this works make it easy to understand how to change temperatures, fan speeds, or other things … in the middle of a print (as long as some subsequent g-code in the file doesn’t over-ride the change you just made.)

I finally printed one of these after @TheVirtualTim and @b-morgan have been after me to do since I got my used printer in March. If I post a picture would one of you two gurus be willing to give feedback on things I should be looking at? I’m also concerned the glass bed on my printer is being flexed or warped because of something I am seeing when printing.

Regarding the glass bed (so I am assuming you are printing on the “glass” side and not on the matte-finish PEI side … you can flip the bed plate over depending on what type of surface you need) … what type of filament are you printing (PLA, PETG, etc.) and are you using an adhesive/release-agent on the bed (such as PVA (e.g. Elmer’s glue-stick is PVA)?

A temp tower typically prints various overhang angles, bridging over gaps of various lengths, and sometimes has bits designed to let you try to break them off to check for layer strength.

More than just temperature will affect print quality… things like print speed, fan settings, layer height (especially when printing overhangs), can also have an impact. So really you’re just trying to evaluate the effect of temperature changes … and may wish to do other tests to try to dial in some of the other settings.

The bed is not reversible it’s a Taz Workhorse and the heating element is attached to the glass. I replaced the PEI because it came without it and I couldn’t get PLA to stick without massive rafts previously.

Hmm… it seems there may have been some modification of your printer.

The normal bed on a TAZ Workhorse is reversable. The glass plate has a PEI sheet bonded to one side but is glass on the other side. When I print PLA I use the PEI side. When I print PETG or TPU I use the glass side but use either Magigoo or Elmer’s glue-stick (PVA) for adhesion of PETG – and nothing (just clean glass) for TPU.

This plate is resting on the bed heater with the foil layer that has the 1cm grid lines (visible through the glass). You should be able to remove the four corner-washers and you can flip the glass to print on either the glass side or PEI side. If this is not what you have, then I’m wondering what may have been done to your printer prior to you owning it (it would not have come from Lulzbot with the bed heater attached to the glass).

PEI sticks better on the “matte” side (vs. the glossy side). Skin oils (fingerprints) will reduce how well parts “stick”. While Isopropyl Alcohol (IPA) cleans the bed, it doesn’t necessarily remove skin oils (it tends to move them around). You can clean the bed with a mild solution of Dawn dish soap, clean thoroughly to remove oils, then use IPA to clean any residue and wipe clean with a paper towel. From time to time, you can re-rough-up the surface of the PEI with some sandpaper … maybe 450 grit … just gently to help PEI stick.

This is what I have.




The temperature tower was printed on a 15c offset (250 bottom layer). The nozzle is the .5 hardened steel. The printer was purchased second hand off eBay and I have no information about what may have been done with it before I got it. The printer did come with an octograb plate but no magnetic thing.