Which parts do you need for 3D printer? This of course depends on the type, and as my project will most probably be of the extrusion (warm plastic) type, though the sandcastle kind is not yet eliminated, I’ll assume that.
This page will discuss both the theoretical thoughts and my implementation in particular. There are pages under this one (see Content list on right) where the various components are described in more detail.
A frame to hold the machine together. Industrial models are usually enclosed in the unimaginative gray plastic, but my home model need not. One choice could be to make the printer to “look sexy”, sort like a pimped up car where the engine is visible and chrome plated. Suited for display in the living room (yeah, sure). The system that moves the head can be the frame or part of the frame.
The home models I have seen on the web : The BitsFromBytes printer looks cool, RepRap almost so, CupCake looks like a cardboard box, and the 2nd generation Fab@home is definitely made to look “fab”. I would like my machine to be “sexy”, but it greatly increases costs and difficulty, like cutting acrylic sheets for the walls.
The frames primary purpose and most important design is it must be solid. As the head moves to and fro, the machine will shake, and if the frame is wobbly, then accuracy suffers and it will eventually break.
If the looks do not matter, the really cheap and effective solution is to find a box that belonged to something else (like an old microwave?). That would give a relatively accurate (as in, corners are square, sides are parallel) frame to bolt the other parts to.
Head movement mechanics
The head must be able to move relative to the bed in all three spatial directions, typically X, Y and Z. It does not matter if the head or the bed moves. If the bed moves, though, the frame needs to be double the width/length. All the designs I’ve seen so far are cartesian, ie. X and Y are a horizontal movement and Z is the height. One might also use polar coordinates. This of course makes drawing a straight line a bit harder, but that is just a small matter of calculation, and is no harder than the square cartesian system drawing a circle.
The challenge for me is that construction of this requires some mechanical engineering, in particular access to workshop and tools to make it. Some precision is required so angles are exactly 90° and parallel tracks are parallel where required. A bench drill would be a good start. Hand tools won’t make it.
Some components will be difficult to buy in the small quantities required. There is a need for at least two “carriages” to run on rails, driven by the motors with some precision and smoothness. Whilst the head movement is slow and controlled during extrusion, it should also be able to move out of the way, or move to defined position with some speed. If the extrusion is hard to start/stop then the head needs to move much faster between points to extrude (thus leaving only a thin filament perhaps between such points)
Motors are needed, four at least – three for the spatial movement (irrespective what mechanical arrangement is chosen), and one for the extruder. A major design choice is if they are “ordinary” DC or “stepper” (which also uses DC, but you have to pulse it on several wires).
The print head/extruder
The “print head” (typically) extrudes the warm plastic. Or something else. (Fab@home ‘s idea with syringes for doing sugar extrusions sounds fun). Whilst every component needs to work for the printer to function, I feel this component is most vital, and under the heaviest stress. In other words, it would be first to fail if not build correctly. The design thoughts right now is to buy one from one of the home printer groups, also because the parts are special.
The plastic extruder parts are: A motor to push the raw material, a chamber/nozzle, a heating coil, a temperature sensor, and, something to hold it all together.
In an ideal world, the head should be easily exchangeable; a second head could be syringes
There will be “computer” or “controller” that controls the whole printing process. The Electronics component is two parts; the controller itself and the electronics converting the controllers relatively weak electrical signals powerful enough to drive the motors. Lastly, not to forget, power supplies for all.
At this juncture I have decided to get the Arduino board. This is based on the microcontroller chip Atmel ATmega328 which has “everything”; a CPU with the memory for its programs and data, I/O pins that can give the commands and input signals from the sensors, Serial interface, timers, ADC to work with analoge input. The board consists of this chip plus a few driver components, power circuitry and a direct USB connection to a computer. It has some firmware onboard in the chip already to enable loading programs from the USB onto the chip. (Also supplied are the necessary compiler, libraries and loader programs to run on the pc)
The (weak) TTL signals need boosting so they can drive the motors. This will be straight amplification, all the logic should be in the controller. The controller can output a quasi-analoge, a PulseWidthModulated output, on some pins to control motor speed of ordinary motors.
For safety endstop switches must be fitted or other mechanical arrangement so a software fault will not allow the carriages be driven beyond the end, or otherwise cause damage. That logic has to be outside the controller to be failsafe. After power up the machine must be able to calibrate its position by moving to startpoint, where switches stop it (unless position can be measured by an absolut sensor)
The Arduino has a highlevel compiler running on the pc, which generates the code that then runs on the controller. This program has to be written. It needs to perform several actions. Open source code is available from the CupCake and RepRap projects. I will probably modify it or even write my own from scratch.
The design of the firmware is partially constrained by the language/system of the Arduino language which is C/C++. A main loop is continuously executed, and it needs to call or poll each subcomponent to let it do a piece of work. All components must be short in nature (no “wait” instructions) doing work incrementally so that each subcomponent gets called often enough. It is not suited to interrupt driven code.
These routines would count pulses or otherwise be aware of the absolute position and state of the motors and mechanics. They would also take care of the communication with the pc.
There will be a loop that takes care of temperature of the extruder, to take care of the feed motor of the extruder. Depending on the motor type a loop needs to take care of the feedback switches/encoders.
High Level control
These routines work in slightly more abstract entities, f.ex. move diagonally.
A file format standard is G-Code. This stems back from the original CNC machines, still going strong. It is ASCII in nature and very simple in structure. A 3D model description in G-code is every movement the print head has to make, and may therefore be large in size, and definitely exceeding he controllers memory. So the pc has to send it to the controller as it works. As the transformation from a 3D model to Gcode is handled by other software, the Gcode interpreter has to be “tuned” to use the subset of Gcode commands that software produces.
The command interpreter then calls the high level commands to do the decoded action, which are handled by the lowlevel, which change the state of output pins, which the electronics amplifies to drive the motors … and so on
Not part of the printer, but the printer is useless without a companion pc with software that can:
- create/manipulate 3D models, view on a pc.
- convert these models into “slices” for the 3D-printer In some cases to automatically cope with making “support” for overhangs.
- convert slices into motion commands that give good edges and fill areas.
The required pc software is a whole “chapter” of its own. See pagelist on right menu.