3D Printer

From All Hands Active Wiki
Jump to navigation Jump to search

Notes from the 3D printer class:


  • Not a new technology -- early 3d printers existed in the '80s.

Types of printing:

  • FDM (Fused Deposition Modeling) / FFF (Fused Filament Fabrication) -- "typical" 3d printers
  • SLA (stereolithography) / DLP (Digital Light Processing) -- i.e. resin printers
  • SLS (Selective Laser Sintering) / SLM (Selective Laser Melting) -- powdered materials melted with a laser. Can be used for metal parts; not consumer-level tech yet.


  • 3D models are saved in STL
  • Machines are controlled with GCODE
  • Slicers translate STL models into lines of GCODE
  • Cura, PrusaSlicer, Slic3r, Simplify3d are a few slicers
  • Lots of parameters you can tune or adjust. Most are beyond the scope of this class, or open to experimentation. However, some parameters will frequently be changed to fit your needs, such as brims/skirts/rafts, layer height, shell thickness, infill %, infill type, support materials, bed and nozzle temperatures, and feed rates.

Machine anatomy: go over the major parts

Filament types: go over some common materials

Machine operation:

  • Always clean the UNHEATED print bed of old filament bits and dust using a sturdy paper towel or clean, lint-free cloth with 90% isopropyl alcohol on it. Try to avoid touching the bed after you clean it.
  • Leveling the bed:
    • You will want to do this before every print.
    • Make sure bed is heated to printing temperature before leveling
    • One printer has a auto-leveling probe (untested), and the other one you will need to use the "paper method". (Demonstrate the paper method using the octoprint bed leveling helper plugin)
  • Loading filament:
    • Move print head a fair distance from the bed
    • Remove from the desiccant zipper bag. After removing the spool, always re-seal the bag to keep the desiccant packet as dry as possible.
    • Check the end of the filament when you pull it out of the bag. Make sure it's secured in the side of the spool. If it's not, you will need to try your best to ensure it isn't crossing under another loop to prevent a print failure.
    • Feed filament in from the top, push on the spring lever to allow it to be inserted easily. Continue to push the filament in until the color changes to the new filament's color, or you get a decent flow from the nozzle.
  • Printing:
    • Load the model you want, slice it, and send it to the printer
    • Carefully monitor the first layer or two to make sure it has good adhesion
    • First layer nozzle height should be close enough to slightly squish the extruded filament into an "oval" profile. It should not be too far away so as to drop it onto the bed, or so close that it flattens the filament entirely.
    • When the print is finished, wait until the bed has cooled completely before trying to remove it -- it should come off more easily when cool. Try to avoid scraping it off, which can gouge the bed.
  • Unloading filament:
    • Always unload and store filament in its desiccant zipper bag when you're done printing for the day. If left out, it will begin to absorb moisture from the air, which will cause it to become unusable over time.
    • Make sure the print head is heated to the working temperature.
    • Push the spring lever in and pull the filament out. If you encounter any resistance, make sure the nozzle is at the right temperature.
    • When unloading the filament, be sure to capture and tuck the loose end securely into the edge of the spool. If you let it flop loose, it's very likely that it will end up crossing under an adjacent loop, which will cause filament feed issues during its next use!
  • Finishing up:
    • Always ensure the nozzle heater, bed heater, and print cooling fan is turned off before leaving! The hot-end fan will always remain on.

Questions? Reach out to board@allhandsactive.org, #3dprinting or #Operations on Matrix.

As of 8/24/18:

Older/obsolete information follows, safe to ignore for the most part:

Creating a 3D Model

Lots of software exists to create models. As long as the software can export to STL file format, you can print your model. Check out the following software packages that we recommend.

  • Trimble (previously Google) Sketchup Make - [1]
    • Skethcup STL Plugin - [2]
  • OpenSCAD - [3]
  • Blender - [4]
  • Rhino3D - [5]
  • OnShape - [6]
  • FreeCAD - [7]
  • Fusion360 - [8]

3D model database

File Types


The slicing software needs your 3D model as an STL file before it can slice it. Slicing produces a file that has GCODE to describe the tool head movements for each layer. It is important that your STL file only includes one solid water-tight object. Missing faces, open vertices, and improper normal calculations will cause the slicer software to produce errors. You can fix some of these issues in an automated fashion by using NetFabb Basic, Blender (recalculate normals), and MeshLab's repair mode.

How to fix an STL

You've got holes or inverted normals? You can fix this by hand, try Blender or Meshlab. For a quick fix either try netfabb basic on client or NetFabb cloud [10]. These can fix basic problems and possibly produce a better file. You need 1 shell, non-inverted normals, and no holes to get a good print.

The newest versions of Slic3r will automatically try to fix holes and other errors in your stl files. This can work, but make sure that your model hasn't changed dramatically before printing. Take a look at it in the 3d view.

You can also try these awesome pieces of software:

  • MeshMixer
  • MeshLab
  • NetFabb Basic
  • blender


This is a description of the tool path that is generated by a slicer. The file includes commands which instruct the printer on how to move to produce the final object


Replicatorg converts a GCODE file into this reduced and compressed file type. This is equivalent to the GCODE but the smaller and easier to parse file type can be read off an SD card with less work. Use the build to SD card function in Replicatorg to produce this file. It can also be created with Makerbot's software


  • Layer Height - The size of each layer the printer produces. This is limited at its maximum by the size of the nozzle and at its minimum by the amount of plastic produced and how much stretching occurs.
  • Infill - The pattern and amount of plastic put inside the model to support it.
  • Shells - The number of solid outer layers the model has
  • Raft - A piece of plastic generated to stick to the print bed. This also includes support material for the object
  • Filament - The plastic fed into the printer
  • Extruder - The part responsible for filament melting and forming it into a continuous profile.
  • Slic3r - Produces a GCODE file from an STL file
  • Skeinforge - Produces a GCODE file from an STL file, built into Replicatorg
  • Replicatorg - Produces a S3G file from GCODE and controls the printer
  • OpenSCAD - 3D Solid Modeling software

Makerbot Replicator

The Makerbot Replicator .
The Makerbot Replicator 3D Printer.

Current Status

  1. 1/27/2017 - Working, right nozzle is fine. Left hasn't been thoroughly tested.

Things this bot has:

  • Heated glass bed
  • Stronger Arms supporting the platform
  • Custom enclosure

What do I need to run Makerbot Replicator?

  • Get Makerbot Desktop software from Makerbot.com

Printing with Makerbot Replicator

  • Turn the printer on (switch on back lower right).
  • On the front screen, find the preheat option and start it for the nozzle you want to use.
  • When it's up to temp, feed in the plastic you want (you may have to reverse out an existing plastic).
  • Load Makerbot Replicator desktop on your or the 3D printer computer.
  • Add a model (.stl file) to build plate in software.
  • Click on the print button. The printer will heat and begin to print.

Changing Filament

  • Preheat nozzle to change by using the interface on the front of the printer. (220 for ABS!, Less for PLA)
  • Pick change filament
  • Printer will back out filament (press the spring tab on the extruder to release it)
  • Take the new filament and use wire cutters to make sure the end is flat. Feed it down the tube into the extruder and when its at the bottom, fasten the latch.
  • Press load filament
  • Feed new filament through the tube and into the top of the printer by pressing spring clip on the desired extruder.
  • When the color has fully changed to the new filament, stop the extruder process.


Questions? Can you borrow it? Break something? Contact one of the following people!

  • Alex W.
  • Nick R.
  • Tyler W.

Wanhao i3 (Prusa)

This is a Prusa i3 clone. It can print with both PLA and ABS. It has an SD card and a heated bed that can be controlled from the front panel. Pronterface works at 115200 baud and slicer configs are available for several plastics. Get the latest Slic3r config bundle at https://github.com/nristow/AHA-3DPrinters .

The printer has been tuned and at low speeds does a really nice job with PLA. The current configuration can print parts with a layer thickness down to 100 microns. Increasing the print speed should be fine, but you will notice more waviness around corners and dimensional accuracy will suffer.

The standard configs will need to be tweaked based on individual models. Supports are important and will need to be set up for each model as needed.

Setup for PLA

PLA will stick fine to the bare bed, but not to glue stick. If there is any glue stick on the bed, wipe it off with alcohol or Windex before printing. Heat bed to 60C max. Filament to 190-210. If there is a part of your print that isn't adhering to the bed, clean the bed with alcohol or Windex. Try not to touch the bed.

Setup for ABS

Gluestick works great for keeping ABS stuck to the bed. Blue tape can also be used. Heat bed to ~110C. Filament to 235-240. PLA is recommended.

Changing Filaments

Heat the nozzle to 190-230C depending on the loaded filament. Depress the lever on top of the nozzle, next to where the filament is loaded, and pull the filament out.

To replace, depress the lever next to where the filament feeds and push the new filament down the hole until you see it extruding. The filament needs to through an internal tube to reach the extruder head. If it misses, the filament will start winding around the stepper gear. It may take several tries to thread the filament correctly. Cut the end of the filament to an angle to help guide it into the tube.

If changing filament types (eg, from ABS to PLA), the bed height will need to be adjusted to compensate. This can be done fairly quickly by using pronterface to fly the head to the 4 corners of the bed. Make sure that the head is 0.0 - 0.2mm above the limit switch. Then move the head 200mm to reach each corner. Adjust the screw under the head at each corner until the head is just above the bed.

When starting a print, if you notice that the filament isn't sticking, make sure that the bed is prepared correctly as noted above. Then raise the bed so that it is closer to the extruder head.


Questions? Want to help us build or document it?

  • Tyler W.
  • Nick R.
  • Nate Y.
  • Alex W.

Creamcheese Cupcake

Current Status

  1. 7/26/2017 - Still working! Lives with its owner currently. Contact Tyler W. to borrow it or use it for events.
  2. 11/26/2014 - Working. Acrylic is available for cutting the new Z stage, but not critical.
  3. 11/2/2014 - ACME threaded rods are installed, need to cut out a new Z stage. Current stage is binding against the rods.
  4. 10/4/2014 - New config files from Nick provide excellent prints using latest Slic3r version.
  5. 2/2/2014 - New config files created by Josh provide better-looking prints!
  6. 1/4/2014 - Working! The heater was replaced along with the extruder stepper driver. Frank assisted with tuning and all is now well in the world. Go print something!
  7. 12/19/2013 - Karen from Makergear shipped us a new 12V heater! Ours is 24v and can't be driven by the current bot hardware! This needs to be replaced before it works again!
  8. 12/12/2013 - Joshua from MakerGear says check resistance. ~4 Ohm = 12v V3b Extruder. ~14 Ohm = 24v V3b Extruder
    1. Ours is measuring right around ~16 Ohms.
    2. Awaiting feedback from Joshua (MakerGear)
  9. 12/04/2013 - Sounds like Extruder might not be the correct version? Emailing MakerGear
  10. 12/01/2013 - Temps of extruder not reaching >195 deg C. Also taking significantly longer. Contacted Tyler.
  11. 12/01/2013 - HBP wire mount added
  12. 12/01/2013 - Wire from RAMPS board to Heater Core connector. The connection on our end was loose. Re-crimped.
  13. 12/01/2013 - New MakerGear Extruder mounted
    1. One of the white temp. sensor wires fell out of connector, re-crimped.
  14. 11/24/2013 - Sanguino board replaced
  15. 11/21/2013 - Dead! The heater core has melted out of the extruder barrel.
    1. Parts have been ordered, repairs will be made over the next week/weekend

This bots history

This machine started as a Cupcake with Gen3 electronics and Gen3 Extruder.

DO NOT LEAVE THIS BOT PLUGGED IN WHEN NOT IN USE! If the power supply is on, the bot is on!

  • 6/10 - Bot received
  • 7/10 - Changed to makergear hot end
  • 1/11 - The X and Y axis were made a low rider and changed to be quiet and more accurate.
  • 5/12 - The DC extruder died during a 3D printing talk at Penguicon 2012. Switched to Stepper extruder
  • 7/12 - Replaced stepper drivers with Pololu
  • 10/12 - Accelerated
  • 11/12 - Converted to RAMPS motherboard. Use pronterface to run
  • 11/13 - New hot end.
  • 12/13 - New RAMPS and stepper drivers

Things this bot has:

What do I need to run Creamcheese?

  • Get Printrun, it comes with pronterface. Grab the newest tested with August 2014 version.
  • Get Slic3r 1.2.0 Experimental -- Updated 10/04/14
  • Get the Creamcheese config files from here: Tyler's repository of cool stuff! - Updated 10/04/14
  • Place the 3 directories (filament, printer, print) and their contents into the Slic3r config directory.
    • Linux: /home/user/.slic3r (hidden)
    • OSX: /Library/Application Support/Slic3r/ (Not tested)
    • Windows 7 : C:\Users\Username\AppData\Roaming\Slic3r\
    • Windows XP: C:\Documents and Settings\edutainment\Application Data\Slic3r
      • You may have to run slic3r once before these directories appear
  • In Pronterface (printrun) options set the following
    • Baudrate: 115200
    • Builtemp_abs: 110
    • Build_dimension: 100x100x100-50-50+0
    • temperature_abs: 215
    • xy_feedrate: 3000
    • z_feedrate: 555

Printing with Slic3r and Pronterface

-- Please use this checklist when using the printer. It helps us track settings and walks you through using the printer. [| Printer Checklist]

  • Get a model in STL format ([Thingiverse.com] or cad program)
  • Start Slic3r and make sure Creamcheese settings are loaded Creamcheese, 3MM ABS, Creamcheese
  • Under Print Settings, change fill density and shells. We recommend .10 fill density and 2-3 shells.
  • Under platter drag your STL files into slic3r or use the Add button. Move things so they will fit.
  • Press export GCode.
  • Save the result.
  • Open Pronterface.py and connect to CreamCheese with baud rate 115000.
  • Load your newly generated GCode file
  • Preheat platform to 110 and heat to 215c. Enable "watch" to see it rise.
  • Once at temp, raise the head (either manually or with a button) and extrude a little bit of plastic to prime the extruder.
  • Clear plastic, lower head to just touching platform in the center
  • Press print.
  • Bot will check platform temp and raise it if needed.
  • Bot will check nozzle temp and raise it if needed.
  • When at temp a count down will begin in the W:? from W:5 to W:1 and then the print will begin.
  • If it doesn't stick, hit pause, re-position everything, and hit restart in pronterface. It's also possible to put down blue painter's tape, a bit of slurry on top of it, wet it with paint thinner and print on that. See a member for example before you try it yourself. If done incorrectly it can damage the heated print bed.
  • After finish, let the print cool on the platform. When cool the print should remove easily without deforming. If using slurry, you need to remove the painter's tape first.

Changing Filament

Connect to the printer using Replicatorg and open the control panel. Heat the extruder up to 220c (for ABS) and the platform to 110c. When at temp, release the latch on the extruder (blue spring part) and pull the filament upward.

Take the new filament and using wire cutters make sure the end is flat. Feed it down the tube in the extruder and when at the bottom, fasten the latch. Using Replicatorg run the extruder forward until filament comes out. Continue to run it until the color changes to a solid color. Changing from dark to light filament requires significantly more time running the extruder forward to clean it out.

Experimenting with the 3D printer configuration

The firmware for the 3D printer is included with the zip file of configurations found here: Tyler's repository of cool stuff! - Updated 10/04/14

The configuration.h file in the marlin directory includes all the settings necessary to run Creamcheese as it is currently tuned and configured.

If you are curious how we've done the calculations for running it or if you wanted to try out Creamcheese using Skeinforge instead of slic3r, we've done some work in the past. You can find it documented here: Experimental Config

Repetier-Host: A very limited trial was done using repetier host. The bot heated successfully and moved. Slic3r also picked up the config files provided in our zip. We did not try printing and found repetier to be rather resource intensive compared to pronterface. This was performed on 01/04/14 by Tyler W.


Questions? Can you borrow it? Break something? Contact one of the following people!

  • Tyler W.
  • Michael Sh.
  • Josh W.

BlackBottom Cupcake

This bots history

November 2014, installed Ramps1.4/Arduino board. Firmware loaded. The new controller cannot move the x-y stage, too much drag with original hardware. Need to print a low-rider x-y stage similar to what is installed on Creamcheese.

This machine was confirmed working on December 19th 2013 by Tyler!

This machine started as a Cupcake with Gen3 electronics and Gen5 Extruder. The DC extruder was upgraded by Ox to a Gen5/6+ stepstruder. The bot originally was given a 3G5D board but it never worked well. As a result, we did the ugly cable hack.

At some point, Ox decided to donate this bot to AHA!

It was renamed from Ox's bot to BlackBottom Cupcake (alternate name for a cream cheese cupcake) on 7/1/12

Things this bot has:

  • Gen3 Electronics + Gen4 stepper for extruder
  • Mk6 Stepstruder
  • Acrylic Platform
  • .40MM Nozzle
  • Sailfish Firmware.

===What do I need to run Blackbottom?=== (this section deprecated)

Tyler's repository of cool stuff! - Updated 10/04/14

  • Put the *.xml files in your ReplicatorG machines directory
  • Place the 3 directories (filament, printer, print) and their contents into the Slic3r config directory.
    • Linux: /home/user/.slic3r (hidden)
    • OSX: /Library/Application Support/Slic3r/ (Not tested)
    • Windows 7 : C:\Users\Username\AppData\Roaming\Slic3r\

===How Do I run BlackBottom Cupcake?=== (this section deprecated) Using Slic3r, alter settings and produce gcode file. Use the following config to start: Blackbottom - 3MM ABS - BlackBottom (These show up if your XML files are in the right place!)

  • Open ReplicatorG and connect to CreamCheese with machine type BlackBottom - Slic3r
  • File->Open and pick your newly generated GCode file from Slic3r
  • Pick build to file
  • Save the resulting .x3g to an SD card with a filename no longer than 7 characters.
  • Put the SD card in the bot
  • In ReplicatorG open tools->control panel.
  • Preheat the bot to 220. When it reaches temp, turn on the extruder until plastic comes out.
  • Clear nozzle and lower to center of platform only a very tiny (practically touching) bit above it. You can use the controls in the control panel to do this or manually move it. (If the Z axis moves up when you press down the Axis is reversed and settings need to be changed in ReplicatorG!)
  • Close control panel and pick build from file.
  • Choose your .x3g file from the list.
  • If print doesn't stick at start, hit cancel, clean platform and try again. You can adjust the Z height during the start of the print!
  • After finish let print cool on platform. When cool the print should remove easily without deforming.

To fix warping on corners it is advisable to first put down a layer of blue painters tape or masking tape on the non heated build platform.

===Issues?=== (this section deprecated) If the bot moves from the center of the platform when you start a print make sure you have the following start g code and end gcode in Slic3r!

(**** begin initialization commands ****) M73 P0 (enable build progress) G92 X0 Y0 Z0 A0 (You are now at 0,0,0,0) M104 S220 T0 M109 S110 T0 M6 T0 (Wait for tool to heat up) (**** end initialization commands ****)

(**** begin final commands ****) M73 P100 (end build progress ) M104 S0 G91 G1 Z10.0 F2100.0 G90 (**** end final commands ****)


Questions? Can you borrow it? Break something? Contact one of the following people!

  • Tyler W.
  • Josh W.
  • Michael Sh.


This is a very large delta printer (over 10 cubic feet of build volume) with a new heated bed design and some other new tricks. When we finally finish it, it should be among the biggest deltas and among the fastest DIY printers out there. Perhaps unsurprisingly, it is very hard for people without mechanical design background to design and build such a device. We're working on it!

This Bot's History

The frame is designed and fabricated, motors mounted, heated build platform designed and built. Printed universal joints seeing too much tension from our huge delta geometry and snapping along shear lines, need redesign or sturdier print.

Want to help?

If you want to help, grab a tool and try to put a piece of the design together!

  • (done!) Motor mounts - Pete printed these but the motors need to be mounted and they must be attached to bottom of the frame
  • Electronics mount - The relays, arduino and stepper drivers need to be mounted somewhere along with the power supply.
  • Heated bed - The wire is run but needs to be safely connected with the ceramic connectors to the relays that are controlled by the arduino
  • (in progress!) Arms! The arms are finished and the ends must be press fit on them.
  • U joints - The inner pieces to all the U joints need to be reprinted in better quality. The existing prints had lots of slop in them after sanding and drilling the previous poor prints.
  • (done!) Motor wiring - The motors need to be wired and heat shrunk. Nick bought the connectors but they haven't been added. One of the wires has all connections for each pole of the motor labeled. The coloring on the others is the same. The center wire on each pole doesn't need to be used. This converts a 6 wire stepper to a 4 wire.
  • (in progress!) Tighten and square frame
  • Mount bed somehow squarely to the printer base.
  • (done by Alex?) Redesign belt tensioner mount
  • (in progress!) Document and clean up the OpenSCAD 3D Model file. Contact Nick or Tyler for this file!
  • (in progress!) Extruder - Lots of the parts have been printed, follow misery pusher instructions and assemble.
  • (in progress!) Extruder tube mount - The extruder when complete needs to have an attachment mounted to the bottom to connect to the feed tube. We printed one of these already
  • (in progress!) Extruder mount - The extruder needs to be mounted to the top electronics platform. Ideally we need room for 2-3 extruders here.
  • Hot end - We need to take inventory of parts we have, decide what needs to be ordered and get it setup. Mount for 1 hot end has been lasered and will connect to the center carriage. The tube mount needs to be cleaned up and also attached here
  • (in progress!) Firmware - Take the cupcake firmware, bring it to the version of Marlin 1.1 and enable the Delta option and begin configuration.
  • Design and build table to bolt printer onto, or use the existing Ikea table.


Current Status

  1. 6/2015 - Fully functional prints in ABS. Does not work with TPE (flexible) filament.
  2. 2/2015 - Alex White has been working on a mount for the Kysan geared stepper. Currently working, and appears to be printing fine.
  3. 11/2014 - Bot received thanks to Ox and Larry. Hot end melted off, waiting for replacement.

Things this bot has:

  • Delta printer
  • Bowden Extruder
  • 400 Watt AC Heated bed (Reaches printing temperature in 90 seconds)
  • Arduino + RAMPS 1.4 - Marlin firmware
  • Endstops, automatic bed leveling
  • Mk VB J Head extruder with 0.4mm nozzle for 1.75mm filament
  • ~200x200x200mm print volume

Slic3r Settings

Up to date settings for Slic3r can be found here for all current printers. These settings give good results for most prints, but need to be tweaked for individual projects. It is highly recommended to read through the Slic3r blog and manual to learn what each setting does and how they can help make nice prints.

AHA printers Github repository

Changing Filament

Heat the hot end to 220 Celsius. Unclip the paper clip from the extruder and pull the filament completely out of the tube. To replace, push filament up to hot end and clip extruder lever shut.