I’ve been intrigued by 3D printing for quite a while now. Whilst I’ve liked the idea of playing with a 3D printer, I have not wanted to expend the time and effort required to individually source parts and, as I haven’t really had a good plan of what to do with one once I’ve got it, the cost of buying the more consumer focused, pre-assembled ones has been just not been financially viable. After looking again a week or so ago I noticed that the cheaper kits, which (should - more on that later) contain all the parts needed, but require assembly, were reaching a price that I was prepared to pay on a whim. So after some limited research I decided to buy a “2016 Upgraded Full Quality High Precision Reprap Prusa i3 CTC DIY 3d Printer” from eBay.
At £147, my research suggests that this is at the lower end, if not at the bottom in terms of price. I’m a firm believer that you get what you pay for, so I entered this fully aware that I wouldn’t be getting the best quality prints out of this device. That said, this kit is a version of a fairly popular 3D printer design, the Prusa i3. I figured that it would print something, provide me with plenty of opportunity to tinker and give me some experience with the basic 3D printing workflow.
The kit arrived fairly promptly as I’d bought from a UK based stockist and upon opening the kit I discovered that the printer had already been assembled into a small number of large sub-assemblies.
The kit also came with a “starter” real of filament which, I’d estimate, contained about 0.5Kg of PLA. Whilst the kit being partially assembled may suit those less inclined towards assembling such kits, it did take a bit of the fun out of the initial build for me. That said, I quickly discovered that the assembly instructions were a bit ropey and also don’t seem to open well in LibreOffice (or Google Docs for that matter), so having the unit partially pre-assembled made it much easier to start getting it into something that resembled a 3D printer. Thankfully as this is essentially a Prusa I3, I could also look at the assembly instructions for that device online in addition to the supplied instructions. This is where the first issue arose. The kit had been supplied with a number of M3, 13mm bolts that are used to join the parts together, using techniques that will be familiar to anyone who’s looked at assembled laser cut items before. The kit was supplied with an insufficient quantity of bolts to get the unit fully constructed. I contacted the supplier both about the manuals and lack of bolts and was sent a further copy of instructions, which appear to be for an older generation of the kit and was told to buy some bolts locally and they’d do a partial refund. After obtaining a suitable quantity of extra bolts construction continued.
After looking at the Prusa I3 instructions online I noticed that the original had bolts where the Y axis threaded support bars pass through the main Z axis framework. These were not provided with the kits I had, so I decided to buy a pack of M10 nylock nuts to use to replace the end bolts of the Y axis frame and to enable me to add these missing bolts. This greatly increased the rigidity of the frame.
Once I had the device basically assembled, I started to slowly test out it’s operation. At this point I noticed that the Z axis min microswitch was badly aligned to the bolt which should operate it. Luckily a few extra nuts in the kit resolved that by spacing the microswitch better under the bolt that meant to press it.
With some confidence that the axis were moving correctly and with the height of the print bed calibrated, I decided to attempt my first print. To try and save a bit of time, I tried downloading some gcode from the web. The printer had been provided with some gcode on a SD card, however I was unsure what they would print. I quickly discovered that downloading random gcode from the web is a bad idea. Differences such as filament diameter and hot end temperatures are specified in the gcode and the first attempt didn’t start well. Before my second run I decided to find a gcode viewer and have a look at what the gcode files on the SD card did. I was quickly able to do this using the online gcode viewer. It turned out that the gcode was for the 3 3D printed parts of the 3D printer. So for my next run I picked one of these to print. My second and third attempts at printing something on the printer unfortunately didn’t lead to much more success than the first, the print head kept blocking, resulting in the feed stepper motor skipping steps and being unable to feed the PLA. A bit of research suggested that cheap PLA has a tendency to clog, taking apart the hot end showed that the PLA seemed to be getting soft in the PTFE tube leading down to the print nozzle, expanding and jamming in the tube. I decided to order some different, modestly priced PLA (1Kg of White PrimaValue PLA) to attempt to rule out PLA quality issues.
I’d noticed during the initial print attempts that the filament wasn’t feeding cleanly into the print head. Looking a little closer I noticed that the output of the feed block was very poorly aligned to the input of the print head. A few of the spare washers which came with the kit were quickly added to improve the alignment and the PLA started feeding into the head much smoother.
Whilst waiting for the new PLA to arrive I decided to look into an issue I’d noticed whilst attempting my first few prints and look at software so that I could drive the printer from my (Linux) PC rather than having to load designs onto an SD card. After looking at a few options for print software, I have decided to use Cura for now. Ultimaker do provide a deb packaged version for download, after filling in a little survey, however I found that this didn’t want to run on my 64-bit Debian Jessie install, but an alternatively packaged version of Cura for the Lulzbot installed and ran just fine (and didn’t need me to fill out a survey). Cura is a print and slicing software, supported by Ultimaker, that provides a very simple mode for novices and an expert mode for those that want more control over the build. It supports a number of 3D printer models, in addition to the Ultimaker printers, including the “Reprap” family of printers that mine is a part of. This software takes various formats 3D models, including the commonly used STL file format, creates the detailed gcode to be sent to the 3D printer (commonly known as “slicing”) and can either export this gcode to be put on an SD card or send it straight to the printer.
One thing Cura doesn’t provide is 3D model design. When talking about my early steps into 3D printing to a friend, he suggested that I look at OpenSCAD. OpenSCAD, eschews the normal mouse driven drawing approach to modelling and instead provides a markup language allowing 3D primatives and extrusions of 2D shapes to be arranged in additive and subtractive combinations. As I work as a software engineer, this approach to developing 3D models came quite naturally.
In fact, the very first OpenSCAD tutorial, creating a simple 3 dimensional cuboid, was very quickly modified to provide me with my own 10mm cube as a test print. When tuning a 3D printer, a simple 10mm cube can be quite useful as it’s dimensions can be measured to see if the 3 axis of the printer are printing to scale.
After struggling to even print a 10mm cube with the “starter” real of filament, and squishing the first one I did manage due to being overly keen to measure it and not letting it cool long enough before trying to remove it from the print bed, the new PLA filament I’d ordered thankfully arrived. I quickly swapped over to the new filament and purged the old filament from the print head. After a few adjustments to the print temperature I managed to get 2 10mm cubes printed. Whilst not perfect, these small prints have provided me with a bit of information that will help me improve future prints. After a bit more research and reflecting on what I saw whilst watching the first few prints from my printer, it looks like I need a bit of air cooling for the object being printed. Some cool air blown on the print apparently greatly improves PLA print accuracy, especially when printing spans and overhangs. It’ll also help keep small prints in shape, as without it lower levels of the print may not have sufficiently cooled before upper levels are printed leading to distortion.
I’ve looked through my box of bits but unfortunately haven’t got a suitable fan (the only one I do have lying around is a bit big and a bit lacklustre. After pondering on this for a while, I realised that I have a fish tank pump which I have for aerating my PCB etch tank and some spare tubing.
Strapped to some wire, this provides a stream of air that can be accurately directed at the end of the print head and also leaves the area around the print head quite open so that I can still easily see what’s being printed.