How To Use the 3D Printer
1. Get a 3D Model (.stl file)
You can download an STL file, scan an object using a 3D scanner, or create one using a 3D modelling program.
Places to download printable 3D models from:
- http://www.thingiverse.com/ (recommended)
- http://www.shapeways.com/gallery?mg%5Bsearch%5D%5Bcategories%5D=99 (downloadable files from Shapeways)
- http://www.georgehart.com/ (geometric/mathematical models)
- http://endlessforms.com/ Design 3D models using evolution (and print them)
More 3D model sites:
- http://www-graphics.stanford.edu/data/3Dscanrep/ Stanford 3D Scanning Repository (use meshlab to convert .PLY to .STL)
- http://shapes.aimatshape.net/viewmodels.php Aim@Shape repository -- many high quality models, will need STL conversion
- http://edutechwiki.unige.ch/en/3D_assets (more links)
Use a 3D scanner:
- Ask Ben about his 3D scanner: good for scanning small objects. Use MeshLab or NetFabb to clean up model, make it printable.
- Photofly converts photos to 3D models: good for scanning large objects. http://labs.autodesk.com/technologies/photofly/
- Use your iPhone as a 3D scanner: http://trimensional.com/
3D model editors:
- Google Sketchup (easy to use, Windows only, no built-in STL support).
- Blender (open source, popular, higher learning curve, powerful, good manual)
- Art Of Illusion (open source, easier than Blender, but I've had problems with it)
- OpenSCAD, a language for generating STL models using Computational Solid Geometry
- MeshLab (open source) interactive tool for manipulating models, repairing flaws in models (making them printable), and for file format conversions
- NetFabb Studio Basic (free, proprietary) similar to MeshLab. Easier to use, might be better at repairs in some cases? http://edutechwiki.unige.ch/en/Netfabb_Studio_tutorial
- A nice tutorial on customizing thingiverse models using MeshLab, NetFabb and OpenSCAD: http://edutechwiki.unige.ch/en/Meshlab_for_RapMan_tutorial
- lampshade generator: http://www.thingiverse.com/thing:7664
reprap version: https://github.com/ErikDeBruijn/Makerbot/commit/35b9afbc08a5347d90e18b55383e026f4ee355db
Sketchup doesn't support STL file format natively, but plugins are available for "Import" and "Export". On Import, it's important to hit the Options button and set the units appropriately. Or use MeshLab for file conversion.
2. Convert the STL file to GCode using the RepRap Mendel Host Software
This is the current procedure that we are using. It's not great, but improvements are in the pipeline. As we make improvements to the procedure, we'll update this doc.
Read our documentation for the program we use to print 3D objects.
Convert the STL file to binary form, if it is ASCII. Use Alex W's conversion program, or use meshlab. Or use a text editor to globally replace all lowercase 'e' characters with uppercase 'E' in floating point literals.
Start the program by typing "reprap" in a shell window. Two windows will open, a Console window, and a 3D View window. In the console window, select the "Print" tab, and make sure "Print GCode to file" is selected (it is usually the default).
Convert the STL file to GCODE.
- If you have already loaded some objects, make sure none of them are selected (red) in the 3d View window by clicking the mouse somewhere against the base grid. If you don't do this, the new object and the selected one will become a single object that moves as a unit.
- Click "Load STL" in the Console window. Choose file in file selector dialog. Once you "OK" the file selection, you get to select the number of copies of the object to load as well as the "Material" (Extrusion Profile) to use to print the object.
- Move the model to the desired location on the print bed. The model will initially appear at the origin (bottom left) in the 3D View window. You probably don't want to print it right there, as the platform is a bit uneven at that point. Left-click the model, it changes colour. Then drag using right mouse button.
- You can load several models before generating GCODE, or print several copies of the same model by repeating above instructions. Not all objects need the same Material Profile, but the Material Profiles for all the objects must all specify the same ExtrusionHeight.
- There is now an opportunity to modify the GCODE generation parameters (including extrusion temperature) before generating GCODE, by clicking on Preferences.
- Generate GCODE after the model has been positioned. In the Console window, select "Print". This will take a while; the amount of time taken depends on some of the Preferences you have set. This will generate one temporary file for each layer, then combine them into the final output file. The output file is put in the same folder as the STL file (TBD: which one?) and has the same name as the STL file (TBD: again, which one) with a ".gcode" suffix instead of ".stl".
- Exit from the reprap program; generating GCode to a file sometimes leaves things bunged up.
- Edit the GCODE file to work around a bug in our firmware. Find the file in your home directory, edit it, replacing M109 with M104. Note that the parameter on this command is the extrusion temperature as specified by the Preferences. You will need this value in a couple of steps.
3. Print the GCode using the RepRap Mendel Host Software
Start the reprap program by typing "reprap" in a shell window. In the Print tab of the console window, select the "Print computer G-Codes" option. Use the "Load GCode" button to load a previously generated GCODE file. You won't be able to view or reposition the model in the 3D View window.
If the printer has just been powered up or reset, the axes must be homed.
- In the Console window, click on the "XYZ" tab.
- Click on "Home All". The printer should move the head to the origin as defined by all the opto-sensor flag positions.
Warm up and clean the print head. Warming up is necessary due to the firmware bug. Also, cleaning out the extruder is supposed to improve print quality.
- In the Console window, click on the Extruder 0 tab.
- Click "Move to dump point", which positions the extruder over the notch in the print platform.
- Enter the extrusion temperature from the GCode (on the M104/M109 command as noted above) into the "Target temperature" text pane. If you put any other value there, the nozzle will heat up to your entered value initially, but the M104 command will reset this to what the GCode was generated for.
- Click "Switch heat on". Wait for the temperature to climb and stabilize.
- Clean out the extruder (optional, but several experts have independently told me that this helps with print quality).
- Remove the filament from the print head. Select "reverse" then repeatedly select "Extrude" until the filament has been backed all the way out.
- Square the end of the filament with wire cutters, clipping off the cone shaped end. The theory here is that you get a better print if you minimize the length of the solid to molten transition zone within the print head. This reduces the occurrence of strings: whenever the print head must move from point A to point B without extruding any plastic, the software first jerks back the filament, which is supposed to withdraw molten plastic back into the print head, but that doesn't work as well if there is a long cone and an extended transition zone, so strings are left behind during the move.
- Insert the filament back into the print head, threading it through the felt pad (which both cleans and lubricates the filament). Deselect "reverse" then repeated select "Extrude" until the filament has gone back in. Add a few drops of oil to the felt pad if it seems dry. The oil helps prevent the unmelted-but-sticky filament from sticking to the sides of the feed guides. The oil does not seem to interfere with layer adhesion.
- Extrude a few centimeters of plastic out of the extruder to ensure that the filament is all the way in.
Print the GCODE by clicking the "Print" button.
Once you have printed a model, you can't repeat this process without resetting the printer (power down and up, or click the reset button on the main board) and quitting and restarting the program. (Could fix this by changing firmware? Yes, or perhaps from dropping the final M0 (?) command from the GCode)
When you are done, remove the power plug from the reprap.
If you cancel printing partway and want to leave, make sure the nozzle heat is off and that the nozzle is not touching anything (so it does not end up welded to the table when cooled). If necessary reset the printer and/or restart the reprap application, and use the Console window to ensure the nozzle heat is off (don't just rely on the pushbutton state, which can be wrong after a reset--click it until you actually observe the nozzle temperature dropping) and to raise the nozzle into free air.
Once your part is printed, it needs to be cleaned up. Try sanding, or see the video in the reprap manual (link above).
4. GCODE Generation Parameters
You specify the material when you generate GCODE. We currently have ABS. PLA is the other popular material, which we can mail order if there is interest.
- PLA is clear, warps less during printing, and smells better (fumes less toxic). The printing temperature is lower. It's biodegradable. It's more brittle, and very hot water will melt it. Makerbot.com sells it.
- ABS (what we have) is stronger, less brittle, more durable, has a higher melting point. It's what Legos are made from.
You specify the temperature when generating GCODE. Kevin has had success printing at 220 degrees (ABS). Don had the most success with his icosahedron part at 216. My cube printed okay at 210.
- Lower temperatures are preferred for: small printed areas, large overhangs, or other situations where faster phase change is beneficial. Lower temperatures also reduce swell inside the extruder and decrease the extrusion after feedstock drive is stopped (drooling).
- Higher temperatures allow the build material to flow into printed areas and extrude faster, and bond to previously extruded stock faster. At the same the filament becomes more viscous and more plastic evacuates the extruder after drive is stopped. A fan can help the plastic solidify faster and improve performance.
If your first layer doesn't stick to the base, drop the first Z coordinate that extrudes your part by .1 till it does. Once your first layer is down the next layers are good.
Lots more parameters to tweak.
5. Extruder Maintenance
The extruder is the most finicky part of the printer, and needs regular maintenance. If you use dirty filament, it can get clogged with dirt, which affects printing.
Temperature reading of zero on console
This is usually a transient condition caused by a communications failure between the extruder board and the mainboard. If it comes and goes it is harmless, but if it persists you should check for general communication problems between the computer and mainboard, or it may be necessary to reset everything.
Temperature reading of 2000 on console
This is caused by a communications failure between the extruder board and the thermistor controller board (on the side of the print head). In particular, the RJ45 connector seems to become flaky. To fix this, unplug and replug the RJ45 connector; no resetting should be necessary. Unless you have tiny fingers, you may need a knife or screwdriver to depress the retainer tab on the cable. Perhaps this board needs a thicker standoff from the extruder, but it could also be argued that a more reliable connector would be best.
When printing a GCode file, the head moves to the dump point and sits apparently forever
This is caused by the M109 command near the start of the GCode file, which sets the extruder temperature and waits for temperature stability. There is a bug in the wait code somewhere causing it to wait much longer than necessary. As mentioned in section 2, the GCode as generated must be manually edited to change the M109 to M104. To recover from this wait, you will have to reset the printer and restart the reprap application.
Other Software that We are Investigating
Here are some all-in-one programs that handle these printing a model:
- the original RepRap Mendel Host Software: "RepRap" in the Desktop folder
- We've used this software successfully, but it has a number of problems:
- The user interface is terrible
- It won't read standard text based STL files from thingiverse.com without a format conversion: you have to translate lower case 'e' to upper case 'E' in floating point number literals, or use Alex's program to convert these to binary STL files.
- The generated GCODE files need to be manually edited before printing.
- ReplicatorG (also in the Desktop folder)
- This is the MakerBot printing software. The Mendel is only "experimentally" supported. The control panel is kind of broken: no way to control the extruder motor, and it keeps getting wedged while communicating with the Mendel, which I fix by rebooting. Probably better to use the Mendel control panel instead.
- RepSnappper. Recommended by Kimberly Aandrus, CTO of TechZone Communications, the vendor who built our Mendel kit.
- We use repsnapper and run our files through a free website we created to clean them up. It is at www.3dtoolchain.com It is not pretty, but it works well.
- Pronterface: https://github.com/kliment/Printrun (fairly new, recommended by Josef Průša, one of the RepRap core developers, via Alex W). Requires the use of Sprinter firmware, which speeds up printing and improves print quality.
A GCODE file contains opcodes that directly controls the behaviour of the 3D printer at a low level. The conversion from STL to GCODE is non-trivial, and there's a lot of fiddling you can do during the conversion that will improve the print quality.
Instructions for Mendel Host Software:
- see above
- according to Kevin, the STL file needs to be manually edited before being loaded, to uppercase all the ‘e’s in the exponential-notation numbers
- according to Kevin, the GCODE file needs to be manually edited after generation, to replace the M109 (set temperature and wait to stabilize, which unfortunately often waits forever) with M104 (set temperature).
ReplicatorG and PronterFace use SkeinForge for GCODE generation. Not tried yet. Skeinforge docs: http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge A Skeinforge tutorial: http://edutechwiki.unige.ch/en/Skeinforge_for_RapMan
Skeinforge is powerful, but difficult to use. Rotorit has made Sfact, which is an easier to use Skeinforge (it's on his github account). Rotorit has our kind of printer, so hopefully there is a TechZone gen3 hardware profile.
New hotness, recommended by Josef Průša, one of the RepRap core developers: Sprinter is a new generation of firmware for reprap. This is the 1st firmware that has native support for SD card, and extreme acceleration. This firmware can run a printer at up to 300mm/s, which really changes the quality of a print. Sprinter has been tested and works on Gen6, Ramps, and Sanguinololu. Rotorit has created a fork of Sprinter that works on our hardware, but this appears to require a "gen3 plus" add-on electronics board which Rotorit provides schematics for, with no other explanation.