It's been almost exactly a year since I first got a 3D printer, and a couple things have conspired recently to convince me to take it off the shelf and try using it again. The most pressing need is for more parts boxes for organizing SMD parts: I use coin envelopes for storing cut strips of SMD components, and then use some custom-sized 3D printed boxes for storing them:
I'm starting to run low on these, plus I wanted to have a slightly different design: the boxes are great, but the organizational unit of "a box" is slightly too large for some purposes, and I wanted to add some ribs so that there can be some subdivision inside each box. These part boxes are pretty much the only useful thing I've ever done with my 3D printer, so I was excited to have an excuse to try using it again!
Installing Printrbot upgrades
My printer is an "old" Printrbot Simple -- one of the first versions. 3D printers as a business is an interesting one: things are moving very quickly, so as a company, what do you do for your users that bought old versions? My guess is that most companies revel in the opportunity to sell you a brand new printer, but Printrbot has an interesting strategy: they will sell you upgrades that let you mostly retrofit your old printer to have new features of a new one. It's not as easy as simply buying one of their new models, but if you want to follow along with their latest trends it's cheaper to get the upgrades instead of a new model every time.
I bought some of their upgrades: a "build volume upgrade" and a "tower" upgrade. There were some issues installing them since apparently my printrbot is too old and the upgrade, even though designed to work with it, has its documentation written for a newer model. Anyway, I got them installed without too much trouble, and in the process installed the endstops and fan from the original kit (which were themselves upgrades).
And this is what I got:
So as I should have expected, there were a large number of issues.
Problem #1: slantedness
All the prints were coming out slanted on the x axis. It's hard to know exactly why, since there are a couple things that changed: there's a new printbed (what gets moved by the X axis), and I had re-fishing-line the X axis as well. I dealt with this problem for a long time in the past -- I spent several full days dealing with it when I first got the printer. The thing that ended up working originally was I replaced the provided polyfilament fishing line with monofilament fishing line, and it magically started working. Well, I'm using monofilament line, though it's not the same as on the Y-axis -- I think I'm using stronger, but therefore thicker, line, and I wonder if that's an issue. I tightened things up again and the prints are coming out better but still slanted (maybe 10 degrees instead of 30).
Problem #2: cable management
I had originally tried hooking up the fan from the original fan upgrade I got, and this required running another pair of wires through the cable harness. I also had to undo the cable ties I had set up to keep the cabling neat, in order to install the "tower" upgrade. The result of these two things was that the cable harness started running into the print! You can see that in the second picture in the back starting about 40% of the way into the print; the effects end about 60% of the way since I taped the wires out of the way as a proof-of-concept fix. I ended up sending the stepper motor wires over the stepper motor instead of under it as they suggest, and it started working magically.
Problem #3: print consistency
This one I don't really understand, but there are a couple symptoms: first is that the prints are visibly not very "full" -- you can see in the pictures that you can see the blue painter's tape through gaps in the bottom two layers. The second symptom is that sometimes I will hear some noises coming from the extruder; on investigating, I saw that it doesn't pull any filament in during those events, and also that there is some white dust (ground filament line) accumulating in extruder chamber, and clogging up the hobbled bolt. My first theory is that this could potentially be due to the filament: I haven't used the filament in about a year, and haven't done anything special to store it. There are reports on the internet that PLA will take on water over time, resulting in various issues; I didn't see anyone say that chipping the filament was one of them, but who knows it's possible. (Side-note: if something gets shipped in a bag with a desiccant, it's probably best to store it in the bag with the desiccant. Live and learn.)
So I switched to some different filament I had, and had some similar issues. It probably wasn't the best test since I got this filament from the same place (both came from printrbot.com), but it ended up not being too big a deal since I tried something else to fix the issue: I increased the temperature.
Unfortunately I lost pretty much all the settings that I had originally used, so I just started from scratch again, and I was using the default 185C PLA temperature. I tried increasing it to 190C and then 195C, and got dramatically better prints. You can see in this picture the difference it made: the left is with the original temperature (185C) and the new filament (pink), and the right print is the same exact model but with a 195C extrusion temperature.
The print quality at the higher temperature is, quite simply, amazing. There is far better adhesion between the layers, better structural strength, better layer consistency, you name it. There's only one tiny defect on the second print, and that's due to having to swap out the filament in the middle of the print (you can see it about 20% through the print). The right model is also taller since the print for the one on the left failed towards the end, and didn't complete the full model.
Not everything is perfect though; if you look closely at the top two prints in the following picture you can see that they're both slightly slanted. Interestingly, they're slanted in different directions! (you'll have to trust me that those are the orientations in which they were printed.) The top-right print is a slightly different model which I assume explains the different slant angle. It surprises me though how much the slant angle can remain consistent throughout the height of the object -- I would have thought any slippage would be random. (The deterministic nature of it originally led me to hunt down potential software bugs for a few days when I first got the printer, which is one reason it took so long to go back to investigating the fishing-line belt as the culprit).
Fortunately, these parts boxes are pretty forgiving of slant, especially in the X direction (the Y direction would have been harder since the envelopes would eventually start not fitting), so these two boxes are still entirely usable.
My new modeler: OpenSCAD
Previously, I had used Blender for creating my 3D models. Blender is a tool mostly designed for artistic 3D modeling, though it's still a very capable 3D modeler. Consider the problem: I know the inner dimensions of the box that I'd like, and I'd like to design a containing structure that respects the cavity dimensions. With Blender you can certainly do it, but it's a lot of adjusting of coordinates, which is not what the UI is designed for. There are also issues stemming from the fact that Blender is a surface modeler, and not a solid modeler: for graphics you don't need the notion of "this is a solid object with faces on all sides", but for printing out 3D parts that's critically important! The tools will try to figure all of that out for you, but I did have to spend a fair amount of time twiddling face normals in Blender any time I did a boolean operation.
OpenSCAD, in contrast, is extremely well suited for this kind of problem. It's all text-based; maybe I'm partial due to being a programmer, but it feels much easier to adjust the model when the coordinates are explicit like that. It also some limited programmability, so it was very easy to parameterize both the box thickness and the number of ridges: in the above picture, you can see that the second print is thicker and has 4 ridges instead of 3. OpenSCAD was also far simpler to get set up with; not that Blender is particularly hard, but it probably took me about 30 minutes to go from never having used OpenSCAD to installing it and having the model.
The downside is that the visualizations aren't as good -- go figure. I'm going to stick with OpenSCAD, but if I start doing more complicated models I'll have to learn more about their visualization interface. Also I'll want to figure out how to integrate it with an external editor (vim) instead of using their builtin one.
There are still a number of things that need to be fixed about this setup. First is the X-slant, clearly. Second is I need to figure out a good solution to the filament feeding problem. The "tower" upgrade comes with a spool holder on top of the printer which seems perfect, but I actually found it to be highly non-ideal: the printrbot is extremely susceptible to any Z forces on the extruder, since it is cantilevered out a fair amount. With the filament spool above the extruder head, there would be a varying amount of force pulling the extruder up towards the spool, resulting in the print head bobbing up and down as the spool wound or not. One would hope that the spool holder would result in low enough friction that the force on the extruder head would be minimal, but in practice it was a deal-breaker.
So I've gone back to putting the spool adjacent to the printer, using my 3D printed spool holder (the only other useful thing I've ever printed). I did buy the Printrbot discrete spool holder, but it varies between ok and terrible, depending on the spool that you try to use it with. They have a new hanging spool holder which seems promising; I may either buy it or try to design a similar one of my own.
I need to figure out what the deal is with the white filament: will the new temperature produce the same changes for that one as well? Or maybe I need to tinker with the extruder setup some more (too much idler pressure? not enough idler pressure?). Should I figure out some other way of storing all my filament?
I also want to upgrade my toolchain: a lot of things have moved on in the past year. Slic3r is now on a much newer version that hopefully fixes a number of the crashes I run into; PrintRun (prontrface) is apparently not the preferred print manager anymore, and I bet there are a number of improvements to the Marlin firmware for the printer itself.
3D printing feels much more like carpentry than printing. The tools are getting much more developed and the general body of know-how continues to build, but you still have to invest a lot of time and energy into getting the results you want. I wanted to say that it's disappointing that things are still there after a year, but then again I'm still using the same printer from a year ago so it's not clear what could have changed :P Printrbot has a new metal printer that seems like it could be much better, so maybe with a better printer certain aspects such as the cabling and the slantedness will be fixed. But there will still be the craft-like aspects of knowing what temperature to run your extruder at, your slicer settings, and so forth.
I'm going to give the X axis another go, and if I can get it printing straight then I think I'll be extremely pleased with where the print quality has ended up. I still have to find things that I want to print though; I think there could be a lot more cool opportunities around parts organization.
No real project to tie these together, just a common tool/technology:
SainSmart filament review
A while ago I bought, and received, this SainSmart 1.75mm PLA filament. Recently I've only been using my printrbot for making organization boxes; today I happened to need more, so I took this as a chance to test out the new filament. It has 4.5 stars on Amazon, which is pretty good, though there's a common theme to the upset customers. After using the filament I can see why: the filament has been printing fine so far (printed for a few hours), but the coloration leaves a lot to be desired. It's hard to describe, but it feels cheap and plastic-y as opposed to the printrbot PLA I've been printing with which feels svelte and matte. It's tough to tell from this photo, since the lighting is very different, but hopefully you can tell that the red filament is decently translucent, vs the black and pink objects on the table, or the white spoolholder.
Mechanically, and structurally, everything seems to be going great with it. I've only tried it on one print, a hollow box, and the printer accepted it fine (which is saying something since I've been having issues with the printrbot filament), and the resulting boxes are sufficiently structural. (Again, this is only after two hours of printing.)
Overall I'm definitely happy with the material, though I don't see myself using this color again. I'm happy enough that I checked out their website, where they offer their filament at lower prices and with free shipping, so I might buy another spool at some point.
I also ran into this comparison of different PLA suppliers; the only component to the analysis was from a cost perspective, which is how I'm looking at the problem, but some commenters make the legitimate point that quality can be really hit-or-miss with these cheaper guys, and even though some suppliers are as much as 25% cheaper than other "cheap" options, buying a single bad spool can be hard to recoup.
Printrbot Simple upgrades
While I was browsing for filament, I went back to the Printrbot site since their filament seems quite good and they sell it at very low prices ($30/kg), though they are currently out of stock, except for pink.
Anyway, while I was on the site, I noticed that they are now selling a Simple Tower, an integrated carrying case + spool holder. They're also selling a Simple Tower Tall variant, which works better if you buy the build volume upgrade.
Wait, the what upgrade? They should have featured it more prominently (or emailed me about it): the small (4" cubed) build volume is my biggest complaint about the printrbot, and I'd love to extend it. The upgrade costs $65, which feels a little steep given the base price, but I'm almost certainly going to buy it. Plus I've stocked up on the M2 and M3 screws they like to use, so I should be able to assemble it faster :P
Current printing accuracy
Right now I'm very happy with most of the accuracy of my printrbot; I haven't gotten around to installing the endstops or fan upgrade, but I think
if when I get the aforementioned build volume upgrade, I'm sure it will make sense to lump in the other upgrades at the same time.
The thing that I'm not happy about, though, is that right now parts are coming out too big. The problem isn't that one of my axes is mis-calibrated; the motors move the right amounts, and the issue is that printing two parts that should fit together (such as a socket and a plug), they don't. Also, if I put two parts close together but not touching, the print will usually end up with the two parts joined, which can be very difficult to fix for some more intricate models such as these captive planetary gear bearings.
At this point I'm not sure where the problem is; I don't think it's that I'm extruding too much material generally, since when creating solid layers I'll often get gaps between the fill lines, and even changing the "extrusion multiplier" down aggressively (0.75x), the rest of the print is clearly nonfunctional, but the close-together parts I was originally concerned about will still be conjoined. At this point I think I need to start manually "slicing" some test patterns, such as laying out straight lines of plastic and measuring the width; hopefully this doesn't take to long to solve, because this problem is blocking me from building any mechanical parts.
I'm late in writing this post since Hackweek was a few weeks ago now, but better late than never I suppose.
As I mentioned in my previous hackweek post my goal was to use my new 3D-printer to build some parts for a simple robot.
Unfortunately, getting the 3d-printer working took four out of the five days of Hackweek, so there wasn't much time to get the robot going. I was able to multi-task somewhat, since calibrating the printer involved many periods of waiting for test prints, so I was able to build a simple robot, though the "3d-printed" aspects were minimal. Getting a basic working is surprisingly simple: get some simple DC motors, and apply a voltage across the terminals and they go! These particular motors are small enough that they can be driven with a single LiPoly battery.
Using alligator clips to connect the battery and the motor is all fun and good, but eventually I wanted to control the motors from my ATmega. I used a single L298N motor driver to drive two H-bridges, one per motor, which was surprisingly straightforward (I just built the "typical application" circuit from the datasheet). For input, I used this joystick with the associated breakout board, and "mounted it" on a small breadboard as a simple control:
I used one of my ATmega328 Arduino-like boards to read the analog readings from the joystick (which is just two potentiometers), and use those readings to implement a differential drive control on for the robot. Here's another pic of the on-robot electronics:
So electronically, this set up is extremely simple, and not very innovative; once I had all the parts, it probably only took a few hours to have the wheels turning. Sidenote: maybe I'll write another post about this, but I'm learning that surprisingly, part-selection is where I spend most of the project's design time, since picking the parts involves knowing how they will all fit together, and verifying whether a part will work usually involves a relatively-complete idea of the design as a whole.
It was definitely educational to get the motors turning, especially as controlled by a joystick, but the hard part of the project for me was building a chassis for all the parts. There very first "chassis" I used consisted of just the three main parts (gearbox, breadboard, arduino) taped together, with no rear castor, so the breadboard was dragging along the floor. I decided I wanted a baseplate to mount the gearbox + castor on, so I came up with this T-shape:
Sorry this is the only picture I have; imagine that it's filled in and about 0.5cm tall.
What are those three squares, you say? Well, my idea was to mount the gearbox using self-tapping screws, screwing them directly into the baseplate. I've been printing most of my parts at low "infill density" -- ie while the part looks solid, the inside is only 20% full, to save on materials and printing time -- thus I was worried about whether there was enough material to actually screw into. Ideally I'd be able to print those three screw-areas at 100% fill density, and while the 3d-printer is certainly capable of doing that, Slic3r, my slicing program (the program that takes 3d models and produces a series of line segments) didn't seem capable of it.
So instead, I decided to try creating these small square holes, and to create square "screw plugs" that would fit into them, with small caps on the bottom so that the base plate could rest on them (sorry for the lack of a picture).
This design worked, though there were enough issues that I'm not tempted to do it again. Assembly became pretty complicated, since there was now an additional piece to hold in place while placing the screw. The plugs added a bunch of play to the base plate, both in the XY plane, but also in the Z axis (I think this could have been avoided by making the plugs shorter than the hole). In the future I think I'm going to try just using untapped holes, and use a nut+washer combination on the other side; I think this will be more reliable and not require separate parts.
The base plate let me attach the gearbox and the castor, and with some tape I was able to have a barely-structural robot. It quickly became clear, though, that I needed something to hold the pcb above the gearbox, since it kept on sliding around and would eventually hit the wheels and the whole contraption would fall apart. Here's the design I came up with; these are the three iterations of it, from earliest on the left to final on the right:
The first design had several issues, the worst of which was that it was the wrong size, and secondly that it required a fair amount of support material. The second iteration was the first that worked, but I realized that I wanted guard rails to hold the breadboard in place, which is the main change between v2 and v3. You can see how it mounted on the baseplate:
It had a fair amount of XY stability, but if I were to go back to it, I'd add a small piece on the bottom that would keep it attached to the baseplate, since right now it comes right off when pulled upwards.
Here's a video of it driving; this is before I created the breadboard holder, and you can tell it lacks structural integrity (though one could say it makes it up in spunk):
Overall, even though the 3d-printing aspect didn't turn out how I wanted, I found the experience of building a robot from scratch to be very rewarding, so stay tuned since there will be more robotics-related projects coming up :)
One of the many perks of working at Dropbox is getting to participate in Hackweek, a weeklong hackathon for everyone in the company. In the past I've worked on an AI project to predict user file accesses (fun but unsuccessful), a Python type analyzer and then a Python compiler built on top of the type analyzer (will be open sourced at some point), and a service-management service (in limited use inside Dropbox). I wasn't sure what I was going to do for this one, but last week I happened to be looking into 3D printers, bought one on a whim (yes, they are cheap enough now to do that), and it arrived on Monday the start of Hackweek, so of course I had to do something with it.
Low-cost 3D Printers
There are a tremendous number of low-cost 3D printers these days; I don't remember how I started looking into them, but I think I was reading some article about how much the prices have dropped, was intrigued, and started doing some research. This page is a good overview of the lowest-cost printers out there; one option that I had to quickly rule out is any printer that required me to print parts for it. This sounds like one possible way to obtain a second 3D printer, but it seems like it would only add to the difficulty of getting a 3D printer to work, plus there are some obvious bootstrapping issues. So I decided to only look into complete kits or products, which thankfully are quite well-represented even at this low of the spectrum. One option that caught my eye was the Makibox A6, which retails for $200, easily in the "for the hell of it" category. I managed to talk myself through the fact that the product is unreleased and it's from a new company, but what finally turned me off was that shipping is $36 for 6-8 week (!!) delivery, or $100 (!!) for 7-10 day shipping (this is from Hong Kong). The prospect of $100 of shipping charges seriously bit into the allure of a $200 printer, so I kept on looking.
There's another similar product called Pirate 3D Buccaneer which seems appealing as well, but seems to suffer from some of the same issues as the Makibox, primarily that it's not released yet and it's a new company. I decided to pass on this one too.
Then I looked into the $300 Printrbot Simple. This particular model is quite recent and doesn't have that many reviews, but it's by a company that has released several other models in the past with what seem like generally-positive feedback. The product page made no mention of any waiting for it to be available, so I went ahead and bought it along with some extra filament, for a total of $350. Based on the other options at this price-point, I expected this to be another Chinese company with long turnaround and shipping times, but to my surprise they're actually US-based, shipped my printer out the same week, and I received it exactly one week later.
Assembling the Printr
Here's a picture of the half-assembled printer -- for some reason, I never take a picture at the beginning of a project, only once it's already in progress -- with about half the parts on the desk, the other half still in the box:
This was definitely the most difficult thing that I've ever assembled, but thankfully the instructions were pretty good, and overall the whole thing made a lot of sense, but just required a lot of work to put together. You can definitely see what the difference is in buying a $300 printer vs a more expensive one: one of the primary construction tools here is the zip tie, and I'm talking about in a structural context! In the middle of the above photo, you can see how the linear bearings are held to the square board via zipties; at first I was turned off by this, but it actually works quite well. Overall I'd say I'm pretty impressed by the quality of the components, and the resulting printer definitely feels a lot sturdier than I thought it would. The only thing that was pretty annoying is that they shipped me the wrong set of screws; Printrbot was very nice when I mentioned this to them and shipped me the ones I'm missing, but I wanted to get this thing assembled so I ran out to a hardware store and bought the missing screws. They were pretty cheap, but I ended up taking a taxi to the store and this added to the effective printer cost; I took this as a call to stock some standard screw sizes myself.
I'm not going to go into build instructions since the Printrbot site does quite a good job with them, but the one thing I'll mention is that if you're thinking of getting a Printrbot Simple (which I would recommend after my experiences with them), one thing you should keep in mind is that the two upgrades they ship you (fan upgrade and endstop upgrade) are best installed while assembling the printer, since they replace existing components and require access that you won't have once the Printrbot is assembled.
Here's a pic of the finished printer:
All told, it was maybe about 6-8 hours from starting on the assembly to finishing it, though this included things like dinner and going to the hardware store.
There's a lot already written on this subject, so I'm not going to write too much about it. Suffice it to say, though, that calibrating the Printrbot Simple is not just important, it's necessary to get prints of any quality. In the above pic you can see the results of my early "prints", which are supposed to be cubes but are mostly just blobs. Here's a close-up:
I forget exactly what I had to do, but I'd say the most important things are to level the printbed, make sure you have your z-endstop installed and working (I originally didn't install it since I didn't have the screws to, but I was forced to jury-rig something to get the printer working), and calibrate the extrusion amount. ie the printing program will assume that when it says to extrude 1mm of 1.75mm filament, you'll get exactly 1mm*pi*(1.75mm)^2 filament out. My printer actually spooled out closer to 1.05mm of filament, so I had to adjust the extrusion multiplier to 0.95 to not have shapeless blobs at the end. I did this in my slic3r settings, but it would have been better to update the printer's firmware settings, though I didn't know how to do that at the time.
After doing all this, I could reliably produce recognizable prints:
This was a problem that took me a long time to solve; some prints look fine:
But most came out terribly:
It took me three full days of trying every single suggestion the internet had to offer; I tried tightening and loosing everything, I changed the firmware values and eventually started recompiling the firmware myself, I learned gcode so I could send manually-constructed test patterns to narrow down the issue, and many more things that I don't remember. One of the most informative tests I ran, which I wish I had thought of earlier, was to flip the y-axis stepper motor cable (the y-axis is the one with all the slanting), and print everything in reverse. Once I saw that this produced prints slanted in the same direction, ie the slant didn't flip as well, I concluded that the problem was mechanical and not electrical or in the firmware/software.
The thing that ended up fixing the issue was replacing the nylon string that was provided with some fishing line I was able to scrounge up (the instructions actually call for fishing line but I was shipped the string [Update: apparently there is something called "braided fishing line" which I didn't know about; I switched to the more-familiar "monofilament" fishing line]). I'm not 100% sure exactly what was happening, but I assume that there was some sort of slipping occurring and the finishing line simply didn't incur that. It was a pretty simple fix, but came just as I was about to give up after investing 40+ hours in fixing the issue; on the bright side, at the end I had a very good understanding of how my printer works, and how 3d printing works in general.
There's still a lot more I can do to calibrate the printer, but at this point I'm quite happy with the results; they're actually better than I was expecting from such a low-cost printer. Here are some pictures from things I've printed; most of them were on pretty low quality settings and without solid layers:
Overall, I'm very happy with the Printrbot Simple. I was worried that with a cheap printer I'd get sub-par print results, but in my experience the main limiting factor is that the printbed size is relatively small (100mm cubed, or about 4" on a side). I was worried that a cheap printer would be nearly unusable and that you really do need to spend $1k+ and get a "nice" one, but I think my experience is a evidence that 3D printing really is accessible to people who've never done it before, and even at low-cost if you're willing to invest time. My personal take is that 3d printing is in enough of its infancy that I think you need to be willing to invest a significant amount of time regardless of how fancy the printer is you buy, which partially negates the biggest selling point of the more expensive printers. For example, you have to have a good understanding of how the printing process works in order to know what kinds of structures you can build and what the limitations will be, or how and when you can reduce the quality (and thus increase the speed).
Where to go from here
One of my primary interests in buying the printer was to build functional and/or structural parts; it's been cool to print out sculptures that I've found online (see the pug figurine above), but I don't see that as being much more than a novelty since I won't be designing them myself. In general, I'm intrigued by the idea of being able to produce physical parts; I know this is possible using more conventional methods, but I never got into woodworking or machining, so this is another whole new world that's been opened for me.
In the third photo above, you can see some structural pieces, which are part of the robot chassis that I'll talk about in a future blog post :)