Tiny Drawing Robot Updates, Incremental Progress, and More!

This slideshow requires JavaScript.


It’s been about a week since my last blog post and I’ve really been enjoying working on all aspects of the Tiny CNC.  With the year winding to a close, I wanted to squeeze in one last update.

The really cool thing about working on a robotics project from the ground up is that you can work totally different aspects of the project, whatever happens to interest you at that moment.  Sometimes 3D design appeals to me, other times working on Arduino or Processing code.  And then sometimes working on making the project really real by contacting suppliers to source parts for kits.  Here’s what’s going on now:

  • Adventures with Online Ordering.  I pulled the trigger and bought 100 micro servo motors.  I’m hoping that once I get this tiny drawing robot’s designs a little more finalized some people will be interested in having me create kits for them.  I simply cannot tell you how much fun it was to open up a box fresh from China stuffed with 100 motors.1 I spent several days shopping around on Alibaba and trying to reach out directly to motor manufacturers and in the end I finally placed an order with a “distributor/middleman” because it was a decent deal and he could ship immediately.  I know I overpaid a little, but this is kind of a test run anyhow.  With 100 micro servo motors, and each robot taking 3 motors, I’ll be able to create at most about 30 bare-bones kits for sale.
  • Micro Servo Motors.  These are the really common, and reasonably cheap, TowerPro SG90 motors that you see for sale everywhere.  People who have printed the Tiny CNC on Thingiverse to date have had to try to get their more standard micro servos to work in my designs that were made for the more badass Batan 2122 analog feedback micro servos that I received courtesy of Adafruit and Make.2
  • Arduino Code.  With the gentle prodding of TechNinja42, I created a Github account where I’ve uploaded some of the Arduino code I’ve been experimenting with so far.  While I have uploaded my prior sketches to Thingiverse, Github does seem like a better place to share these files which are changing quickly.  If you grab this code and load it up, you’ll be able to control your Tiny CNC drawing robot just by using the Arduino’s serial monitor and the WASD for directional control and OL to raise and lower the Z axis.
  • Teaching Programming to a 6 Year Old.  Christmas day was the first time I wrote some Arduino code that actually made my robot do something interesting.  Long story short, I actually got my daughter on the first step to programming.  I had her draw a simple shape on some graph paper, we took down the coordinates, plugged the coordinates into the Arduino code, and then the little robot got to work.  We had a great time creating the program and an even better time watching the robot repeat her drawing, pause for five seconds, and do it again.  The reason for the five-second pause was so that we could slip a sheet of paper into the robot, have it draw something, then pull the paper out.  I can’t wait to get this robot drawing more complex pictures.  🙂
  • Tiny 3-Axis CNC Redesign, Again.  I’ve already started revising my designs to work with the Tower Pro SG90 motor form factors, so it will be easier for everyone to print and build their own drawing robots.  I’ve added lots of improvements based on feedback from those who have printed their own, and I’m very nearly done with this latest version.  So far it is shorter, probably uses less plastic, should be offer more stable and accurate drawing, and uses one more plastic piece than prior versions – all while slightly increasing the drawing area.  Since I offered a sneak peak at this design in progress in an earlier post, I’ll leave off with a glimpse of this design-in-progress.
Tiny 3-Axis CNC version 0.34

Tiny 3-Axis CNC version 0.34

  1. And one Arduino Uno of dubious authenticity []
  2. I call these motors badass because they’ve got metal gears inside rather than plastic, analog feedback so they can sense and report their position back to the microcontroller, and cost $15 each []

Competing Design Ideals in a Drawing Robot

New possible design direction for the Tiny 3-Axis CNC

New possible design direction for the Tiny 3-Axis CNC

I find myself at a design crossroads, as it were, with the Tiny 3-Axis CNC.  There are certain improvements that I think are necessary to make the overall robot more functional and reliable.  However, to adjust these designs to accomplish these improvements would require a compromise of some part of the design ideals I’ve been employing so far.

One unintended consequence of having a low number of interlocking parts is that when I make a design change to one part of the robot, the design implications ripple throughout the rest of the robot.  Thankfully, this is made slightly easier by using OpenSCAD which automatically adjusts parts depending upon changes to variables.  These changes also have the side effect of making each version of the robot unique enough that almost no parts are compatible with other versions.  As a result, I’ve got a pile of parts from intermediate non-functional versions which don’t really work with any robot version.

In order to overcome some problems with the last design1 , I basically now need to choose what I value most:

  • Elegance.  Design elegance is a very murky and personal topic.  I think of design elegance as incorporating the fewest possible number of parts, simplicity, and (when possible) symmetry or the reuse of parts.  Even “simplicity” is a convoluted and subjective ideal.  I think of this as the least amount of plastic and least amount of complex features.
  • Low Part Count.  I love the idea of a super low part count.  If I were to print parts with support structures or had a very complex design for injection molding, I could probably reduce the part count to the absolute bare minimum possible number of parts – 7.2 However, if I try to make the parts easily printable without overhangs or support structures I have to increase the number of parts.
  • Easy to Print.  Even if a 3D printer is capable of printing with mild overhangs and support structures, a design is more easily printed if it doesn’t include such features.  It is very important to me that the parts are easy for people to replicate on their own.  For me, part of being “easy” to print is having as little plastic as is required.  The most recent stable version of this design takes about 2 hours of printing on my Replicator.  I think I can do better.
  • Easy to Assemble.  Generally, I’ve found the more complex and numerous the parts, the more difficult and less intuitive a thing is to assemble.  I would really like this robot to be able to be assembled by my 6 year old with minimal adult intervention.  She’s pretty good at building Lego designs from the graphical instructions and I’d like to have something similar here.  Fortunately, OpenSCAD make it really easy to create Ikea/Lego style graphical assembly instructions.

After discussing these issues with some friends, I think I’m going to sacrifice the super low part count as I push the design forward.  I don’t anticipate this will cause the design to have a higher plastic content – just a few more pieces.  Overall, if I had to sacrifice one particular design ideal in order to adhere more closely to the others, I would have to choose the super low part count.  After all, I could always publish an additional version that combines two or more parts into a version that could be printed with support structures.  🙂

  1. Principally the XYZ carriage tipping out of the X rack []
  2. I think this would require: the X rack/base, the X pinion, X motor mount, Y pinion, Y rack, Z pinion, and Z rack. []