Getting to know the Thing-O-Matic
This post is mostly an apology for not having done anything blog-worthy in the past few months. As usual, life has been full of Things. Like Katamari Damacy. Kinda.
On the technical side, I’ve had a few interesting ideas bouncing around in my head lately:
- 3D Printing. Seems like a space ripe for DIY innovation, and besides, it’s really cool.
- Other sorts of odd CNC machines. Like a computer controlled sort-and-place for fabricating Perler Bead designs automatically.
- Electronic Jewlery, assembled at microscope-scale. Ropes of twisted 40 AWG wire with LEDs soldered along them in a Charlieplexed matrix. That sort of thing. And perhaps I can make something half as pretty as Zelle‘s stuff.
- You know, something actually important. Like solving world hunger, or making computers more efficient or more secure, or solving Big Problems in human rights. But who has time for that, let’s play with microcontrollers.
Starting at step #1 then, I recently got the Makerbot Thing-O-Matic kit that I preordered. It’s pretty cool- a relatively cheap way to get into 3D printing, and every single part is open source and hackable.
This is my first 3D printer, so I’m not really qualified to write a review of it just yet. But I can briefly list the things I like and don’t like about the kit.
Things that rock:
- It’s relatively easy to put together. I got my kit on a Friday afternoon and had time to get it printing by (late) Sunday night while also taking a day off to socialize.
- With default settings and pretty much no futzing with the belts or Skeinforge, the print quality is pretty fair. And with only a bit of tweaking, you can do decent prints at a 0.4mm layer height.
- From what I can see, the mechanical parts are fairly good. Feed rates seem relatively fast for a low-cost CNC machine, and while the machine as a whole tends to wobble and vibrate a lot, the machine is quite rigid where it counts.
- The MK5 extruder has a very solid mechanical design, and it grips the plastic filament quite heartily.
- The conveyor belt is cool, and it was fun printing several parts back-to-back without manual intervention.
Things that annoy me:
- The motor on the MK5 extruder. This motor bugs me. A lot.
- For starters, mine had a common problem in which the motor stalls randomly, overheats the H-bridge, and generally makes a mess of the whole system. I traced this back to a particular mechanical state in which the motor needs upwards of 2 Amps to un-stall, when it normally runs at less than 50 mA. Ow. This is more current than the H-bridge can handle, so it just gets hot and the motor goes nowhere. Right now I’m working around the bug by using a relay to drive the motor, but that’s a dreadful hack.
- Even when the motor works, the extrusion rate is unpredictable and uncontrollable. The extruder controller’s PWM is worse than useless (The docs warn of it damaging the motor?) and even at a constant voltage, the actual extrusion rate changes based on lots of factors- age of the motor, tension on the filament drive gear, phase of moon. So the thickness of the extruded plastic is, in turn, quite variable.
- The conveyor belt easily warps and twists. It’s really convenient, but for larger or high-res prints it just isn’t rigid enough. I think I could fix this by building a tensioner for the belt, but for the moment I’ve just taken my belt off. Right now I’d rather print one thing accurately than print 100 copies of something inaccurately

- The electronics and firmware seem a bit.. I hesitate to say this, but, amateurish? I can’t help but think that there’s a better processor for the job than an AVR, and I think the Arduino layers are getting in the way more than they’re helping. The modular design also seems like needless complexity. Six PCBs? Really?
- The software which generates toolpaths, Skeinforge, is actually quite nice and configurable. Now I’m just about the biggest Python fan of anyone I know in person, but I still get very frustrated by how slow this tool is on more complex models. It also seems to frequently do rather bizarre things- like generating toolpaths that could easily be one continuous segment, but are instead several disjoint plastic threads that are placed down in very suboptimal order.
So, naturally I have some plans to rectify these annoyances:
- I’ve already ordered a Makergear stepper extruder with 0.35mm and 0.25mm nozzles. Can’t wait to try this out!
- I’m tempted to try my own toolpath generator. I know everyone and their mom are writing Skeinforge replacements these days, but it seems like this could be a fun project to tie in with my interest in computer graphics and graphics-related algorithms.
- I’m also quite tempted to design my own all-in-one controller board for Makerbots and RepRaps. I’m picky about these sorts of things, so I really want some real-time guarantees in the motor controllers, and I want to never have to worry about the processor reading in g-code slower than the motors can move. So I’ve been thinking about doing something based on an XMOS, Propeller, FPGA, or ARM. And it’d be one PCB, with one processor, and all of the stepper drivers and FETs onboard. Anything else would just be a waste of board space and wire. I also kind of want a faster uplink to the PC, either Ethernet or USB 2.0.
So, we’ll see if these go anywhere… All of the above ideas are just ideas now, and their implementation or lack thereof is subject to my level of boredom!







The makerbot looks to me as if it’s a machine designed by committee and constructed in such a way that the whole is far less than the sum of the parts. I have never read about anyone that has put one together and said the equivalent of “This thing works great; there are no obvious glaring flaws.”
It’s the electronic equivalent of 80′s and 90′s Harley Davidson motorcycles: a machine for people who like to be forced to work on it more than they use it.
Well, if you want a printer that requires less tinkering you’ll be spending way more money. And besides, I rather like the tinkering most of the time.
I think the MakerBot does pretty well for the parts it has, I just feel like just a few sub-par components are holding the machine back from its full potential.
Also, long time no see
Indeed. Hope everything is going well.
I didn’t intend to mean the above as a severe criticism though; there are a lot of people who enjoy working on their MakerBots or motorcycles quite a bit. But although it is oft-repeated, I don’t really buy the cost/quality argument. For various reasons that I will admit are matters of my own opinion alone, I think that a higher quality and better performing machine could be built at equivalent or lower cost. You make the case yourself with the PCB’s… If they were to consolidate those boards you could probably change the CPU to an ARM or something and still save money. Or you could just interpret the gcode on the host like even a lot of expensive commercial machines do; there’s really nothing wrong with it.
Unfortunately I don’t personally have enough time or spare cash to try it out for myself, so I’ll have to keep my hopes up that the rather large community of MakerBot users will solve these issues in time. Certainly it’s encouraging to see all sorts of clever people buying them and immediately finding tons of room to make improvements. I think that’s the spirit of the device for sure, but I do think it takes time away from people using it for actual object-printing creative purposes.
Have you seen this project: http://hackaday.com/2010/10/15/3d-printing-with-visible-light/ Unfortunately his detailed blog appears down at the moment, but I think that is the way to go for an amateur/hobby machine.
I think I did see that project- it was the one that prints by using a DLP to expose liquid epoxy with UV light? Very cool. The hardware definitely looks simpler, especially for the resolution you get. My only concern is that the materials are more expensive and somewhat nastier than with FDM machines.
I’ve seen plenty of CNCs that just run off the parallel port… but I can’t imagine this being accurate enough for my tastes if you’re running any modern non-real-time OS. And really, parallel port? I like my USB too much
Though now that you mention it, I can totally see trying to design the hardware for optimum simplicity by pushing as much work into the host PC as possible. For example, I could use a Cypress FX2, a cheap microcontroller with USB 2.0. It can run some of the control-path operations (temperature control and monitoring, homing) in software, but for the common case it’d just be sending data straight from USB 2.0 out its high-speed FIFO into the stepper driver chips. So you’d still be generating the step timings entirely on the PC, and you’d have a pretty high-res clock for sending them out, but there would be a cushy buffer in the FX2 so that you wouldn’t lose your print in the event of a context switch