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.

Makerbot with thing-collection system

Starting a build (closeup)

Companion Cube

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!