Something has to do the actual work of driving your 3D printer. Your windows PC doesn’t have enough input and outputs on its own. It’s possible to find crazy expansion boards, but at the end of the day, neither windows nor mac were built for this. It’s not worth it to build a fully custom solution either, that means getting into chip foundries, logic design, and so many more headaches.
We can walk out and buy ready-made solutions for everything. You can get a million boards to fly a quadcopter, find countless AI platforms, and make a raspberry pi do everything else. Someone, somewhere made an off the shelf solution to driving a 3D printer decades ago. This solution needs to be standardized, accessible, affordable, and usable in an open-source context. It’d also be nice if it had all the inputs and outputs to drive a 3D printer.
3D Printer Microcontroller = A Simple Computer
The easiest solution is to use a MicroController. There are far too many microcontrollers to name them all, too many different feature sets to cover quickly. The base concept is a device with a simple processor, ram, input/output, and often low power. Generally speaking, these limitations make microcontrollers single-use devices. Your desktop computer is a gaming machine, web browser, media creation and consumption device and more. A microcontroller is typically programmed with a narrow range of functions: collect input, produce output. That could be gathering weather data and opening a solenoid for the sprinklers, or driving a 3D Printer.
These devices allow for incredible, direct access to everything that’s going on. On a normal computer, stability and security considerations limit your access. You can’t just sit down and write a random value to anywhere in ram or send instructions to your GPU all willy-nilly. There’s too much going on. For a microcontroller though, it just follows one program from start to finish. It loads up, runs, and that program has free reign to do whatever it was coded to do. It can tamper with the memory, send any IO it wants, use interrupts, it has free reign.
The inherent freedom and limitations of a microcontroller bring their own kind of security. We know you’re not going to browse the next Limewire on your 3D printer. That little brain doesn’t have the ability to go there and get itself in trouble. You wouldn’t try to use your coffee maker as a gokart. If you do, we really can’t help you. Second, we know this device is going to be put somewhere for a dedicated purpose. Your computer is a general-purpose machine and it has a lot of general-purpose code of varying quality. On old computers, the whole thing could crash because one bad app and a bad developer tried to write over another program’s space in memory.
This isn’t possible on a modern PC, there’s memory protections. This is possible on a microcontroller, but we know you’re not going to install a bad build of Firefox on your 3D printer (good luck). We know it’s only ever going to do one thing. If it does more than one thing, well, you’ve probably had a bad idea and we couldn’t stop you.
Why This Matters
The use of microcontrollers in 3D Printers has allowed for a massive, diverse ecosystem to spring up overnight. Earlier 3D printers outright used Arduinos. These machines either had Arduino boards like early Ultimakers and the Mega 1280 and 2560 boards or they used a custom board, with Arduino parts. If a developer knew how to code for an Arduino, they could work on a 3D printer. This immediately created a massive pool of developer to fuel the 3D printing fire. It also meant if you wanted to add support for a new feature, it was just a matter of tweaking the opensource firmware and uploading it. When you outgrew that first microcontroller, it was just a matter of buying a better one. Is the 8bit, 80mhz processor holding you back? Buy a few models up and retain support for everything you’ve already tweaked.
RAMPS 1.6 Controller Mainboard
If you can expand on something, an entire ecosystem is going to follow. Developers created addons, expansion boards, and all new approaches to 3D printing. There’s guides to turn a $200 piece of junk into a serious competitor to a $2000 printer. The wide availability and variety of micro controllers is a key part in that. In other industries, proprietary equipment powers everything.
Your smart TV uses a fully custom board. Your laptop is made of custom hardware. It’s not possible to wake up and replace the guts in most other devices unless there’s a massive base of developers already tinkering away. We have this open-industry where it is possible to modify extensively without fear of limitation. A big company like Lulzbot will probably never make a 3D printer that sings the 1812, but you can build it any time you want. There’s nothing in the hardware to stop you from pulling it off as there are in other markets. The code and tools are there and incredibly cross compatible with other bits of hardware.
Now you know what a microcontroller does. I wouldn’t say you know what a microcontroller is yet. In the coming posts we’re going to look at what makes a microcontroller so awesome. It’s a diverse industry and it’s changing all the time. Things like the Raspberry Pi are even making us question where to draw the line between a computer and a microcontroller. Hardware aspects like 8bit vs 32 bit play a huge role in what our little boards can do. It’s not quite the same as the old 8, 16, and 32bit console wars (my PS1 does what your Nintendont). It’s a matter of how code is executed and how we obtain precision. Factors like input and output, I2C vs SPI vs UART, and even the cost all matter in picking a good board. Stay tuned as we go deeper in the Microcontroller rabbithole.
You might also be interested in this article about stepper drivers: http://3daddict.com/stepper-drivers-guide-for-3d-printer-mainboards/