3D Printing Guide

This is a 3D printing guide for CSCF's 3D printer.

While the documentation on this page is mainly for internal use, others may be able to benefit from it.


Term Definition
FDM Fused Deposition Modeling is a 3D printing process that uses a continuous filament of a thermoplastic material melted from an extruder to create a 3D object. AKA the "hot glue gun on wheels" approach.
Extruder The extruder is the mechanism on an FDM 3D printer that melts and controls the flow of melted thermoplastic filament. While the term extruder usually refers to the entire extruder assembly (including the hotend), it can also refer to just the mechanism or motor that controls the flow of melted plastic.
Hot end The hot end of an FDM 3D printer is the heater assembly that melts the thermoplastic filament. It usually consists of a nozzle, heating block, heating core, thermistor, heat break, heat-sink and usually requires a fan to cool the heat-sink.
Print bed The print bed of an FDM printer is the flat print surface being printed on. A print sheet is usually attached on top of the print bed to allow for quick removal of a 3D print. Most FDM 3D printers have a heated print bed to keep the printed filament at a consistent temperature during a print in order to prevent warping, layer separation or the print breaking free from the build surface.
Print sheet The print sheet of an FDM 3D printer is a surface attached to the print bed. The 3D printed object is then printed directly onto the print sheet. This allows for quick removal of the 3D print. Print sheets are usually magnetically attached spring-steel sheets with a PEI/PEX coating. Some 3D printer owners use glass print sheets instead for their ability to heat with less warping. 


The following warnings are very important for safety reasons and to prevent damage to the 3D printer:

  • Only use 99% Isopropyl Alcohol (IPA) to clean the 3D print sheet. Do NOT use other chemicals (especially acetone).
  • Only use approved filament and material types. The use of cheap filament or incompatible material types may damage the extruder or hot-end.
  • Wait 15 minutes after a print has finished before attempting to remove the printed object from the print sheet. This allows it to cool, allows it to detach easier and will prevent damage on the smooth print sheet (if used).
  • Never use a knife or spatula on the print sheet. This will scratch the surface and damage the coating.
  • Keep your hands free from the 3D printer during use.
  • Wait for the extruder to reach ambient room temperature before handling any part of the extruder.
  • Do NOT use g-code sourced from online. G-code generated from a slicing program will be machine specific. A 3D printer will happily run any g-code even if it means destroying itself. The safest way to avoid this is to generate your own g-code.


While consumer 3D printers are generally safe and typically marketed for home/education, there are still some dangers present that should be considered.

FDM 3D printers have a heating element in the hot-end and print bed. These heaters are regulated by thermistors (temperature sensors) to ensure that they do not exceed their set temperatures. It is extremely important that FDM printers have thermal runaway protection. Most thermistors present on 3D printers track temperature via resistance on a circuit, this means that if a thermistor is damaged or the cable for the thermistor is cut then the controller may read it as a low temperature due to the open circuit. On 3D printers without thermal runaway protection, this would cause the controller to continuously heat the printer unchecked. This is a fire hazard and can damage the heater, controller and power supply of the 3D printer.

The Prusa i3 MK3S 3D printer used by CSCF has thermal runaway protection for both the print bed and hot-end. If either thermistor reports a temperature too low then the print will immediately be cancelled and the printer will cool down with a "MINTEMP" error. Any further 3D prints will be immediately cancelled until the issue is resolved.

The final dangers to consider are regarding the use of certain materials. In FDM printing, thermoplastic filament is melted which will create fumes. How toxic these fumes are is dependant on the type of material being used. With resin based 3D printers, the resin will give off toxic fumes even when not being used. The resin would also require gloves when handling to prevent contact with skin.

Generally, CSCF will use two types of materials on its FDM 3D printer; PLA and PETG. While PLA is much less harmful than other materials due to it being starch-based, it may still have additives to improve print quality and shouldn't be considered 100% organic. Other materials such as PETG or ABS may give off fumes that smell either unpleasant or cause headaches.

When using an FDM 3D printer, always ensure that the space you are printing in has adequate ventilation.

Approved Printing Materials

Generally, the best 3D print filament to use will be Prusament from Prusa Research. While many other online users may recommend their own preferred brands, I prefer Prusament due to their tight spool winding and 0.02mm (20 micron) guarantee on filament diameter deviance. Prusa Research also publicly lists all of their spool data online in order for users to track the exact properties of each one of their spools purchased. -- Devon Merner - 2020-01-07

The following printing materials are able to be used on CSCF's 3D printer and are high enough quality to prevent damage:

  • Prusament PLA/PETG/ASA from Prusa Research - $25-30 USD per 1kg - Link to supplier

Choosing a Material

The most common 3D printer filament materials are PLA and ABS.

Polylactic Acid (PLA) is a "bioplastic" material similar to polypropylene, polyethylene and polystyrene made from biodegradable plant sources such as corn, rice starches or sugar feed. PLA has a much lower melting point than other materials and little to no contraction during print cooling. This makes PLA ideal for detail based prints such as models, figurines or smooth surfaces. PLA is typically used around 180C to 220C and does not require a heated print bed to use (although having a print bed around 60C helps with adhesion). Due to PLA's lower melting point, it is not ideal for use in high temperature environments (such as outdoor or car use).

Acrylonitrile Butadiene Styrene (ABS) is a polymer used in 3D printing with a much higher melting point over PLA. ABS is used in most commercial plastics (e.g Lego bricks). ABS is not recommended for large or detailed prints due to the large amount of contraction that occurs during print cooling. This causes major problems with print layer separation, warping and separation from the print bed. ABS is ideal for high temperature environments or for watertight parts (since ABS can be sealed with an acetone vapor bath to be completely smooth). ABS is typically used around 225C to 260C and absolutely requires a heated bed around 110C. The environment ABS is printed in must be controlled to prevent drafts from rapidly cooling and splitting the print. As such, a heated or controlled build chamber is recommended.

PETG is a Glycol modified version of Polyethylene Terephthalate which is typically used in the manufacturing of water bottles. Its characteristics are very similar to ABS in terms of thermal properties and strengths but without the large amounts of contraction that would occur when the print is cooled. All of the 3D printed parts used on CSCF's Prusa i3 MK3S are printer are PETG. PETG is typically printed around 240C to 250C and requires a heated print bed around 90C.

For internal uses, CSCF in most cases recommends only using PLA or PETG. If you are trying to print something with large amounts of high detail (i.e figurines) then PLA is the best choice. If you are printing something to be durable and functional in most environments then choose PETG (although it may not look as nice).


Custom G-code

The following G-code settings can be used under the "Printer Settings" tab to further improve performance of the printer

This G-code has the following advantages over the typical Start/End G-code:

  • Enables two-stage preheat
  • Waits for the PINDA probe to reach 35C before levelling
  • Retracts the filament when a print is finished

Two-stage preheating is used to mostly warm up the printer in preparation for bed levelling without the printer being warm enough to ooze filament from the nozzle and cause a mess during warmup. Levelling will occur at a lower temperature such as 165C instead of the full 215C in the case of PLA.

The PINDA probe on the printer is an Induction probe (Prusa INDuction Autobedleveling probe). Induction probes (similar to capacitive probes) are sensitive to temperature drift. This means that if the probe changes temperature suddenly then it may give off different readings. For this reason, the start G-code provided will preheat the bed and move the PINDA probe above it until the probe reports a consistent temperature of 35C.

The end G-code will retract the filament at the end of the print to prevent oozing during the start of the next print (this G-code is only run at the end of a successful print. It will not run if a print is cancelled.)

Start G-code

; Last updated 20190708
M300 S40 P10 ; chirp
M115 U3.7.1 ; tell printer latest fw version
; Set coordinate modes
G90 ; use absolute coordinates
M83 ; extruder relative mode
; Reset speed and extrusion rates
M200 D0 ; disable volumetric e
M220 S100 ; reset speed
M221 S{if layer_height >= 0.32}90{else}100{endif} ; compensate for thick layer heights
; Set initial warmup temps
M104 S160 ; set extruder no-ooze temp
M140 S{max(first_layer_bed_temperature[0],65)}  ; set bed PINDA warmup temp
; Nozzle warmup before home to avoid driving hardened ooze into PEI surface
M109 S160 ; wait for extruder no-ooze warmup temp before mesh bed leveling, cool hot PINDA
M300 S40 P10 ; chirp
; Initial homing
G28 W ; home all without mesh bed level
; PINDA warmup
G0 Z3; Raise nozzle before move
; Present bed for final cleaning
G0 X125 Y210 F10200; Move nozzle to PINDA warming position
G0 Z0.15 F10200; Lower nozzle to PINDA warming position
M860 S35 ; wait for PINDA temp to stabilize
G0 Z3; Raise nozzle before move
M300 S40 P10 ; chirp
G80 ; mesh bed leveling
G81 ; check mesh leveling results
G0 Z5; Raise nozzle to avoid denting bed while nozzle heats
M140 S[first_layer_bed_temperature] ; set bed final temp
; Final warmup routine
M104 S[first_layer_temperature] ; set extruder final temp
M109 S[first_layer_temperature] ; wait for extruder final temp
M190 S[first_layer_bed_temperature] ; wait for bed final temp
M300 S40 P10 ; chirp
; Prime line routine
G0 Z0.15 ; Restore nozzle position - (thanks tim.m30)
M900 K0; Disable Linear Advance for prime line
G92 E0.0 ; reset extrusion distance
G1 Y-3.0 F1000.0 ; go outside print area
G1 E2 F1000 ; de-retract and push ooze
G1 X20.0 E6  F1000.0 ; fat 20mm intro line @ 0.30
G1 X60.0 E3.2  F1000.0 ; thin +40mm intro line @ 0.08
G1 X100.0 E6  F1000.0 ; fat +40mm intro line @ 0.15
G1 E-0.8 F2100; retract to avoid stringing
G1 X99.5 E0 F1000.0 ; -0.5mm wipe action to avoid string
G1 X110.0 E0 F1000.0 ; +10mm intro line @ 0.00
G1 E0.6 F1500; de-retract
G92 E0.0 ; reset extrusion distance
; Final print adjustments
M300 S40 P10 ; chirp

End G-code

; Last updated 20190404
G4 ; wait
G92 E0 ; prepare to retract
G1 E-2 F4800; retract quickly to avoid ooze
{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+60, max_print_height)}{endif} ; Move print head up
G0 X0 Y200 F10200; present bed
M220 S100 ; reset speed factor to 100%
M221 S100 ; reset extruder factor to 100%
M900 K0 ; reset linear acceleration
M104 S0 ; turn off temperature
M140 S0 ; turn off heatbed
M107 ; turn off fan
M84 ; disable motors
M300 S100 P10 ; chirp
Edit | Attach | Watch | Print version | History: r4 < r3 < r2 < r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r4 - 2020-01-27 - DevonMerner
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback