This page attempts to make some sense, in general, of how all the pieces fit together to create a RepRap.
However, if you want to skip all this stuff and get straight to getting your hands dirty then your best bet is to take a look at The incomplete reprap beginner's guide and the build instructions category. In addition to those guides, you may also want to take a look at the links under the Models section below.
That being said, to get a higher-level overview, we must start with discussing the different models of repraps, then go on to the four main components of a reprap:
- The software toolchain.
- The electronics.
- The mechanical body.
- The extruder.
- 1 Models
- 2 Software Toolchain
- 3 Electronics
- 4 Mechanical Body
- 5 Extruder
These days there are a growing number of many great and detailed build instructions for repraps! Here is a list on specific variants and on how to build them:
- How to Build a Prusa - The faster to print, cheaper to build Mendel variant, using only common easy to get stuff (Start here if you're new to RepRap).
- How to Build Darwin - The first RepRap Version I design, which is now legacy.
- How to Build a Mendel - The original RepRap Version II design.
- How to Build a Huxley - The successor to Mendel (a.k.a. reprap III); it is still experimental, not-yet fully documented, and a more travel-sized Mendel variant.
- Cartesio - The profesional 3D printer/CNC router.
- Eventorbot - Solid!
(As one gets here by clicking on "build a RepRap", should model that are Gratis really be listed? Sure enough the page welcomes selfreplicating projects, ye faithful old but, the project itself is Freely available. Like it or not, this is the original spirit of the RepRap movement, the whole Free flow of ideas without restrictions which is a bit "more" than just "gratis", especially in an.. or well.. a project with one of it's consequences; usher humanity into an age of wealth without monetary means. Hence, I for one suggests that the gallery below could list solely frontpage compatible RepRap models, i.e.; GPL compatible dito.)
The software toolchain can be roughly broken down into 3 parts:
- CAD tools.
- CAM tools.
- Firmware for electronics.
Computer Aided Design, or CAD, tools are used to design 3D parts for printing.
CAD tools in the truest sense are designed to allow you to easily change and manipulate parts based on parameters. Sometimes CAD files are referred to as parametric files. They usually represent parts or assemblies in terms of Constructive Solid Geometry, or CSG. Using CSG, parts can be represented as a tree of boolean operations performed on primitive shapes such as cubes, spheres, cylinders, pyramids, etc.
Free/Libre/Open Source Software (FLOSS) applications that fall into this category would be OpenSCAD, FreeCAD and HeeksCAD and more. Examples of proprietary and fully parametric CAD tools are PTC Creo (formerly PTC Pro/Engineer), Dassault Solidworks, Autodesk Inventor and more.
Typical for such programs is that the geometry is stored in a feature tree where the dimensions can be modified numerically, and the geometry is then regenerated with great precision. The geometry is a mathematical representation where for example a circle is generated from its center, radius and plane parameters (hence, "parametric"). No matter how much you zoom in, a circle is still curved and the CAD program has no problem finding its center when you click on it, which is quite beneficial when making drawings with dimensions between hole centers and such.
Another looser category of CAD tool would be apps that represent parts as a 3D Polygon mesh. These applications are meant to be used more for special effects and artistic applications. They also seem to be a little more user-friendly. FLOSS-apps in this category would be Blender, Google Sketchup and Art of Illusion. Proprietary tools are Autodesk 3ds Max, Autodesk Alias and more.
Some of the tools mentioned above also use parametric data to generate the geometries, but a lot just register the positions of the vertices of the polygons making up the models. Some use parameters to generate the geometry but then drops that data once the vertices are placed. A curve is thus actually an approximation, generated from a number of straight lines between points. As such, those tools are better suited for design where the precision of dimensions are less important than looks and ease of use.
Most of the time 3D software apps save their files in an application-specific format, which in the case of proprietary CAD tools usually are frequently changed and heavily guarded trade secrets.
There are very few interchangeable CAD file formats. The two most widely used interchangeable CSG file formats are STEP and IGES. Both strip the geometries from parametric data and offer only "dead" solids. Features can be added and removed, but the base shape is locked. There is to date no industry-wide interchangeable file format that retain parametric data.
The most widely used interchangeable mesh file format is STL. STL files are important because, as we will see below, they are used by CAM tools.
Mesh files cannot be converted into CSG file formats, because they contain no parametric data - only the coordinates of the polygon vertices that make up the solid volume. However, CSG file formats can be converted into mesh file formats.
Thus, if you're designing a part, it's a good idea to design it using a CSG CAD application and save and distribute its original parametric file along with generated STL files.
Computer Aided Manufacturing, or CAM, tools handle the intermediate step of translating CAD files into a machine-friendly format used by the RepRap's electronics.
In order to turn a 3D part into a machine friendly format, CAM software needs an STL file. The machine friendly format that is used for printing is called G-code. Early versions of RepRaps used a protocol called SNAP but industry standard G-codes are now used. To Convert STL files to G-code, you can use one of the following programs:
The STL to G-code conversion slices the part like salami and then looks at the cross section of each slice and figures out the path that the print head must travel in order to squirt out plastic and calculates the amount of filament to feed through the extruder for the distance covered.
After you have your G-code file, you have to run it through a G-code interpreter. This reads each line of the file and sends the actual electronic signals to the motors to tell the RepRap how to move. There are two main G-code interpreter options:
- A workstation program called EMC (or other CAM software) which controls the hardware directly or
- The firmware on a RepRap's electronics platform with an integrated hardware interface that has a G-code interpreter
To send the G-code files to an integrated hardware interpreter, you need to either to:
- Load the G-code file on an memory card (typically SD card) if supported.
- Drip-feed the G-codes (usually a line at a time) over a serial port (RS-232 or TTL level, often used with a USB converter) or a direct USB connection using one of the following programs on your workstation:
Some of the options are cross platform while others will only work with certain operating systems or prefer specific integrated firmware interpreters.
The main files use by CAM tools are STL and G-code files. CAM tools convert STL files into G-code files. The official STL files for Mendel are stored in the reprap subversion repository. To get a copy of these files, run the following commands in ubuntu:
sudo apt-get install subversion svn co https://reprap.svn.sourceforge.net/svnroot/reprap/trunk/mendel/mechanics/solid-models/cartesian-robot-m4/printed-parts/
This will create a directory full of STL files that you can then give to your neighbor that already has a reprap and they can print out the parts for you. You will also notice that this directory contains AoI files. These files are for Art of Illusion. It is the CAD application that was used to design the parts and then save them as STL files.
Reprap electronics are controlled by an inexpensive CPU such as the Atmel AVR processor. Atmel processors are what Arduino-based microcontrollers use. These processors are very wimpy compared to even the average 10 to 15 year old PC you find in the dump nowadays. However, these are CPUs so they do run primitive software. This primitive software they run is the Reprap's firmware.
Of the entire software chain that makes the Reprap work, the firmware portion of it is the closest you get to actual programming. Technically, the term for what you are doing with firmware is called cross compiling.
This process more or less consists of the following steps:
- Install the Arduino IDE on your PC.
- Download some firmware source code from a website.
- Make some minor changes to the source code to specify what hardware you have.
- Compile the firmware using the Arduino IDE.
- Connect the controller to your PC via a USB cable.
- Upload the firmware to your controller's CPU.
After your microcontroller has its firmware loaded, it is ready to accept G-codes via the USB serial port (aka COM port). You can either use a program to send these G-codes over the serial port or you can type them in by hand if you fire up a plain-old terminal application like hyperterm or minicom. If you use a program, they generally take files in gcode format.
For all available firmwares see List of Firmware. The following is a brief list of the most popular firmware:
To compile and upload firmware to your arduino-based electronics, you use the arduino IDE that you can download from the arduino website.
The firmware files are usually packaged as source code for an Arduino IDE project. Arduino source code consists of a bunch of PDE (or as of Arduino ver 1.0, INO) files along with some extra .cpp and .h files thrown in. The Arduino IDE compiles the source code into a single .hexfile. When you click on the upload icon in the Arduino IDE, it uploades the .hex file to the electronics.
In general, all reprap electronics are broken down into 5 different areas:
The controller is the brains of the reprap. Almost all reprap controllers are based on the work of the Arduino microcontroller. While a lot of variations exist, they are exchangeable and basically do all the same. Sometimes the controller is a stand-alone circuit board with chips on it, sometimes the controller is an Arduino Mega with an add-on board (called a 'shield'). Find more at List of electronics.
A stepper motor is a type of electric motor that can be accurately controlled with the controller. Most repraps use 4 to 5 stepper motors. 3 to 4 motors control the x/y/z axis movement (sometimes the z axis is controlled by 2 motors) and 1 motor controls the extruder.
A stepper driver is a chip that acts as a kind of middle-man between a stepper motor and the controller. It simplifies the signals that need to be sent to the stepper motor in order to get it to move.
Sometimes the stepper drivers are on separate circuit boards that are linked to the controller via cables.
Sometimes the stepper drivers are on small circuit boards that plug directly into the controller itself. In this case, the controller will have space for at least 4 of these small circuit boards (one for each stepper motor).
Finally, sometimes the stepper drivers are soldered right onto the controller itself.
An end stop is a very small and simple circuit board with a switch of some sort on it that tells the reprap when it has moved too far in one direction. Thus, there's normally 6 of these: 2 for each axis. A single end stop connects via wires to either:
- The controller.
- A stepper driver board.
The heated bed is an optional component of a reprap. This is what the reprap's plastic parts get printed onto. Without a heated bed, parts can have a tendency to cool down before the print is done and warp, as well as fall off the bed.
NOTE: from what I understand, the heated bed is only needed for ABS plastic. Apparently PLA doesn't warp that much.
To see more details about reprap electronics, take a look at the List of electronics page.
When it comes to the mechanical body, it can be generally broken down into two parts:
- Movement along the x/y/z axes.
- The hot end or extruder.
X/Y/Z Axis Motion
When facing the front of a reprap, X axis movement is side to side, aka left to right movement, Y axis movement is forwards/backwards movement and Z axis movement is up and down along the vertical plane.
Linear movement is genearally accomplished using one of 2 different methods:
- Belt/pulley driven motion.
- Threaded rod or leadscrew motion.
Belts and pulleys are good for fast/lightweight movement and threaded rods are good for slow but forceful movement. Most repraps use a combination of belts for X/Y axis movement and threaded rod for Z axis movement.
Belts and Pulleys
When it comes to accuracy, the most important part of your reprap is your belt/pulley combination. Current state of the art is the GT2 belt, along with a machined pulley that matches the exact bore size of your stepper motors (normally this is 5mm).
There are many types of belt/pulley combinations, currently (March 2012) most in use are:
- These are metric belts that are difficult to get in North America, in addition the pulleys themselves can be printed. Using a printed pulley will give you approximately the same results as if you use an MXL pulley/belt combination with the wrong bore size.
- Like the T5 these are metric belt/pulley combinations. These have a 2.5mm (.098") pitch and are printable. With the same diameter pulleys there is a better grip (compared to t5) on the belt and will give a better result. The best results are with metal pulleys due to the fine tooth profile.
- This stand for "mini extra-light". These belts are common in North America because they use imperial sizes. The distance between teeth is 0.08". You *may* be able to find pulleys that have a 5mm bore but it seems difficult. Most stepper motors have spindles that are 5mm in diameter.
- Unlike the MXL and T5 belts, GT2 belts have round teeth with very low backlash. T5 and MXL are both timing belts so they have trapezoidal teeth and deliberate backlash to reduce belt wear and noise for uni-directional applications. These may be more difficult to find everywhere.
For more info see Choosing Belts and Pulleys.
Almost all repraps use threaded rod for the Z axis exclusively. The Z axis doesn't have to move fast because it generally only goes up tenths of a mm at a time. Threaded rod is very good for accuracy and force. Repraps don't require force but if you're cutting steel like CNC machines, they always use threaded rod for all 3 axes.
Notes on Backlash
One thing to note about all ways of moving is backlash. Backlash is that jigglyness that you feel in both threaded rod and belts/pulleys when you change direction. This jigglyness/sloppiness affects accuracy.
The T5 and MXL belts above were originally designed to be used as timing belts. Timing belts normally only spin in one direction so backlash is not an issue. Thus, because the GT2 belts were designed to change direction, they will be more accurate.
The standard way of compensating for threaded rod backlash is to use 2 nuts and force them apart using a spring. This kind of makes sure that the nuts are always pushing against the threads so that when you change direction, it doesn't jiggle. Not sure if that makes sense but I'll leave it here anyways.
The extruder is responsible for feeding filament through a nozzle and melting it as it's deposited onto the bed where the part is made.
The extruder consists of two parts:
- The cold end
- The hot end
Normally, the "Cold End" is connected to the "Hot End" across a thermal break or insulator. This has to be rigid and accurate enough to reliably pass the filament from one side to the other, but still prevent much of the heat transfer. The materials of choice are usually PEEK plastic with PTFE liners or PTFE with stainless steel mechanical supports or a combination of all three.
However, there also exist Bowden Extruders which separate the hot end from the cold end by a long tube. Bowden extruders are much faster because they are much lighter.
This can get a bit confusing here People tend to refer to the cold end as an "extruder" also. In reality, it's only half of the entire extruder mechanism. The cold end is the part that mechanically feeds material to the hot end, which in turn melts it.
Popular cold ends are:
- Wade's geared extruder
- Greg's hinged extruder
The hot end is the part of the extruder that melts the extruded material (usually PLA or ABS). In general, the hot end is a metal case with
- A resistor that heats up like crazy so it melts the plastic (usually 180C? or so)
- A thermistor which measures the temperature of the metal tube
The electronics basically monitor the temperature via the thermistor, then raise or lower the temperature by varying the amount of juice that goes through the resistor.
Popular hot ends are:
Generally, people use one of two types of filament: ABS or PLA. ABS stinks and warps but is pretty strong like legos and PLA smells like waffles and is biodegradable (supposedly - I've heard that you'll have to put it in the middle of a super hot compost pile before it even tries to degrade)
Notes on PID
Sometimes you'll hear people talk about PID when discussing extruders. PID is a feedback algorithm that engineers have been using for years. It's basically an equation for evening out something that tends to oscillate.
For example, if you're driving your car down the highway, you're doing PID because you're constantly adjusting the steering wheel a little bit at a time so your car maintains a straight line. If you do it a little bit at a time, it goes pretty straight. But if you wait until you hit the lines on either side of the road, people will think you're drunk and you'll oscillate all over the road. You'll still get where you're going but it won't be pretty.