This week’s 3D Printing 101 post focuses on the electronics aspect of 3D printers. The electronics required for motion control will be familiar to CNC machinists (but even that has a few new twists) and some other areas are unique to 3D filament extrusion printing.
>> 3D Printing 101: Part 3: Electronics
Although most 3D printing aficionados use the term “electronics” to refer to the hardware controller that operates the printer, for the purposes of this post I am using the term to refer to all electronic components necessary to operate a 3D printer.
The required electronic subsystems are:
- a stepper motor controller – the hardware and software (or firmware) that controls, at a minimum, the X, Y, Z and extruder stepper motors. More advanced, dedicated 3D printer controllers have more capabilities. The extruder is powered by a stepper motor and is responsible for delivering a metered amount of filament through the print head.
- the print head or “hot end” – is made up of a nozzle where the filament is melted with a thermostatically controlled heater.
and a few optional (but highly recommended) subsystems include:
- a heated build surface – this is an optional component that can help minimize part warping and improving filament adherence to the build surface.
- one or more fans – proper use of fans is frequently misunderstood. Two different types of fans are useful. The first is to cool the barrel, the tube above the heated nozzle that the filament passes through, and the second is to cool parts as they print to minimize distortion and warping. Proper use of these fans is dependent on the print material (more on printable filaments in a future post) and the geometry of the part. I’ll also address fans in a future post.
The controller is really the heart of a 3D printer or CNC machine. With a few simple additions, standard CNC control solutions like Artsoft’s Mach3
or Open Source LinuxCNC
(aka EMC) with parallel-port based stepper hardware motor controllers like the popular Gecko G540
can be used to drive a 3D printer. The primary requirement is four axis motor control; three axes are required for X, Y and Z movement and the additional axis controls the filament extruder.
3D printers require a heater circuit to melt the filament in the print head, also called the hot end. Temperature control is unique to 3D printers so it is not surprising that off-the-shelf solutions for Mach or LinuxCNC based systems are not common and can be complex and expensive to add. A programatic controlled heater has advantages but it is not an absolute requirement. A simple manually controlled thermostat using a common thermistor to measure temperature and a high watt resistor as the heating element is inexpensive and effective. But, as you gain 3D printing experience you’ll discover that control over other components like a heated build surface and fans is desirable. These devices can be controlled manually but programatic control is more convenient.
Enter the Arduino-based 3D Printer Controllers
In parallel to the RepRap 3D printer hardware project, the community latched on to the cross-platform Open Source Arduino
hardware and software as the basis for a dedicated 3D printer controller. Arduino is a simple, but powerful, hardware architecture with built in I/O support for sensors, digital to analog convertors, analog to digital convertors and other features. Arduino includes a powerful IDE (integrated development environment) and a programming language that is very similar to “C”. The development process for creating both software (i.e. firmware) and hardware extensions on Arduino is seamless and easy to master.
Several Open Source 3D printer controllers developed rapidly. Of these, the RAMPS – or RepRap Arduino Mega Pololu Shield
– platform has gained widespread acceptance. RAMPS plugs on to a standard Arduino (add-on Arduino modules are called “shields”) and provides control for up to 5 stepper motors, with three thermistor inputs, and three MOSFET outputs to control heaters and fans. It is also expandable to control other devices and interface to LCD displays and features replaceable stepper drivers. A RAMPS with an Arduino can be purchased pre-assembled for less than $200 and since these run Open Source firmware, there are no additional software costs. More recently, integrated designs like RAMBo (RepRap Arduino-compatable Mother Board
) have emerged that offer lower prices and additional capabilities.
RAMPS on an Arduino
While it might be tempting to use traditional CNC controller hardware and software to power a 3D printer (in fact, this is how I got started), a general purpose solution for temperature and fan control is not available currently. A few hardy explorers have gone down this path (myself included) and soon realized that the capabilities and cost of an Arduino-based solution is pretty hard to beat – and there is a vibrant community offering support and help when you need it.
In the next post in the 3D Printing 101 series I’ll discuss the software chain, including the firmware that runs on the Arduino-based controllers.