Resin printing!

It's been a long time since I posted anything to this blog.  What else more suiting than a quick blurb about 3D printing?

About 2 weeks ago, I put in an order for MakerGear's Mosaic Plus printer.  I've very excited to having something that I believe will be mechanically more robust than a Cupcake and produce prints as beautiful as my UP! printer.

I got excited about firmware hacking, but really didn't feel like using Arduino, so I started an open source project on Github that is loosely based on Sprinter.  I used the Sprinter source as a sense of direction, but the code is completely new, as I am developing something for the .NET Micro Framework.  Here's a link to my project in its current (and very incomplete) state: https://github.com/dmatsumoto/SprinterMF

And finally -- my colleagues and I have been following Jr. Veloso's 3D printing project for some time and got really excited about it.  But he's not releasing any details, so one of my colleagues found a mixture published online and ordered the chemicals.  Today, we experimented with a quick and dirty project rig and produced our first single-layer print!  We have already started to build the motorized Z stage out of (of course) printed parts and 80/20.  Check out my flickr stream to see the first results!  http://flic.kr/s/aHsjvkVcih

Whuzzat?

It's funny how something that started out as a simple toy replacement turned into... Whuzzat?  My son loves Ben 10, and has that Omnitrix toy that's a huge watch that's impossible for a kid to put on himself.  My goal was to create something that made him feel sort of like Ben Tennison, but also something he could put on himself.  Thus, I came up with this:

Media_httpfarm6static_xbobp

I made it with OpenSCAD because I wasn't sure if I would get the dimensions correct, or if I'd need to make small changes to make the wristband fit more comfortably.  I modeled it in such a way that I could specify the wrist width and thickness, since these are pretty easy measurements to take.  Then of course, you would want to specify the thickness of the band, as well as its length.  There also needs to be an opening on one side in order to put on the band.  With those parameters, I created Whuzzat.

By now you're probably wondering how a Ben 10 wannabe toy could be called something like Whuzzat.  Well, when I thought about this design, it was more than just a simple Omnitrix.  It was also a simple bracelet that you can print for your daughter.  Using tricks from Tony Buser's parametric nametag, or the the OpenSCAD code for my Parametric Cup Name Tag, you can put a name on the bracelet!

My wife uses a hook in the closet to hold wet towels on a hanger if there isn't enough room on a towel bar.  Well, by modifying the parameters for the Whuzzat, you can have one, too!

Media_httpfarm6static_xbobp

Media_httpfarm6static_aiemh

How about Halloween decorations?  Narrow the "wrist thickness", lengthen the "wrist width", thicken the band, and narrow the "opening width", then print a bunch of Whuzzats in black, and you have a chain!

Media_httpfarm6static_dbhec

What about cable organization?  Why buy an expensive cable track, when you can print a few Whuzzats that fit inside of each other?  Screw the smaller one to your desk, then snap the larger one over it!

Media_httpfarm6static_deelj

Media_httpfarm6static_xwasd

It's amazing how such a simple design can be used in so many different ways.  Can you think of any others?  If so, please post your derivatives on Thingiverse!

My first good print with the UP! printer

Img_20101223_123129

Right after calibration, I tried to print the Mecanum Wheel MK2 by Zaggo, on Thingiverse.  The print wasn't too bad, but one notable problem was the missing outer walls.  The top and bottom of the wheel was open to the mesh inside, so the part wasn't as rigid as it should have been, nor was the finish as nice on the bottom.  After posting in the UP! forum, someone was nice enough to evaluate the STL file and found out that the part was invalid.  I need to read up on this, but it has something to do with the normals facing the wrong direction.  I guess they were facing away from the part, rather than toward the part.  I downloaded the fixed STL file he provided to me, and it printed beautifully!!!

I also printed out my towel clip on Thingiverse, and there is a day and night difference between the quality of the UP! print vs. my Cupcake.  To be fair, my Cupcake has never been calibrated properly.  I had so many problems with it that I still haven't gotten around to learning the calibration process.  But the UP! printer is so good at printing, I'm not sure I will ever get around to messing with the Cupcake in the near future.

Finally took some time at work to mess around with a new microcontroller and RFID

Img_20101215_072605

I rarely find time to play with new toys at work.  For a while, I was fiddling with the Cupcake here and there, but I honestly haven't touched it in a long time.  It's just sitting on my desk collecting dust at this point.

Anyhow, recently I found out about a little microcontroller called mbed.  It was designed for rapid prototyping -- I assume like the Arduino.  But what really caught my eye was the ease of setup and set of online tools.  This includes documentation, wiki, your source code, and the compiler.  Yes, the compiler is hosted on the mbed server.  It's a neat little concept that isn't without its downsides, but in general, I'm always connected so this shouldn't be much of a problem for me.

The mbed hardware is pretty comprehensive.  It has PWM outputs, digital I/O, SPI, I2C, serial ports, analog I/O, ethernet, and CAN.  That is an enormous amount of features IMO, and covers pretty much everything I'd ever need to have at my disposal for playing with peripherals.

Setup truly was a snap.  I hooked up the USB cable, opened the webpage stored on the device, created my account, and ran the boilerplate Hello World code.  "Running" entails clicking Compile, which then automatically downloads a file to your computer.  You then copy the file to your mbed (which looks like a USB flash drive to the OS) and hit the Reset button.  The most recent version of code automatically starts.  I will likely start running a separate, portable browser where I can configure it to always download the file to my mbed device.  The advantage here is that then I can just click Compile and hit Reset.  You just have to be sure to allow file overwriting, or you'll end up with filename(1).bin, filename(2).bin, etc.  By the way, the mbed can be programmed in C and C++, which is pretty cool.  I haven't tested out the C++ yet, but will get to that shortly.

I then slightly modified the HelloWorld program to use PWM outputs instead, and got my LEDs to slowly brighten, then dim.  Easy!

The next step was to interface the mbed with a peripheral to see how well it works.  I happened to order an RFID tag reader to present a concept at work, so I figured that this was a good first test.  I am using a Parallax Read/Write RFID device.  First of all, when debugging embedded devices, it's nice to be able to output debug messages to a console.  How do you accomplish this with the mbed?  It's really easy -- first, (if you're on Windows only) you need to install a device driver.  This allows the mbed to look like a USB composite device -- in this case, it will act as a flash drive and a serial port!  Just by doing this and declaring your serial port object, you can now printf() anything you like to your PC.

In addition to this USB serial port, the mbed has up to 3 other serial ports (which happen to share the pins with I2C and SPI).  I used one to talk to the RFID tag.  The default serial port parameters are 9600,8,N,1, which is pretty typical, and this matched up with the RFID tag reader's parameters, so I didn't have to do any setup here.

The serial protocol is ridiculously simple.  There are 7 commands -- one of which is a "legacy" command and doesn't seem to work with the RFID tags that I had purchased.  To read the serial number from the tag, you send the command "!RW\x01\x20", where 0x01 is the RFID_Read command, and 0x20 is the address that contains the tag's serial number.  I tested it out with two tag types and they worked great!

This isn't to say that I didn't have any problems.  Actually, at the beginning I was extremely frustrated with the RFID reader.  No matter what command I sent to it, it would respond with one or two different byte codes, and the number of bytes returned never matched the datasheet!  I scratched my head for an hour or so yesterday and eventually gave up.  This morning, I decided to check the 5V bus.  You see, the RFID reader should use a max of 200mA when active.  The mbed should use a max of 100mA when it's not using Ethernet.  So I figured that the 500mA that the USB spec requires would be plenty to drive both devices.  I was wrong!  Today, I ended up putting the RFID reader on its own power supply, and the problem went away immediately.

I'm really liking this new microcontroller so far, but we'll have to see what happens when I tackle a more difficult project.  After I rewrite my code so that the RFID details are in its own module (so I can share it with the community online), I'm going to try to tackle the Amulet Technologies color touchscreen.  I had written a full-featured Rabbit library for their touchscreen about 7 years ago, so I think I won't have any issues implementing their protocol again on the mbed.

MakerBot's days are numbered.

Ok, sorry, I just had to use that title to reel you in.  I don't honestly believe that statement one bit.  But I do have to say that the Cupcake and Thing-o-Matic have some serious competition.  I don't know how many of you have had the pleasure to use an UP! 3D printer, but my friend just got one and printed some parts on it today.  Let me just say that it is very, very, impressive.

The following information is 2nd hand, of course, but after actually seeing the machine in the metal, I have no reason to believe otherwise.

First of all, the setup is dead simple.  There isn't really any assembly other than putting in the screws that hold the heated build platform to the Z/Y axis.  For prep, you just brush on this green stuff.  I have no idea what it is, but it certainly works.  During the multi-hour print of the A-mazing Box from Thingiverse, there was zero warpage.  The next beautiful thing about this printer?  Aside from the mini cooling fan on the extruder assembly, the motors are dead silent.  You can't hear anything.  No vibration transmitted down to your desk.  No coworkers asking WTF is the racket about?  It's just that quiet.

Another awesome feature is the intelligence behind support features.  During the A-mazing Box print, we thought for sure that something was messed up.  But as we thought about it more, we realized that there was a ton of support required to make the maze work.  And indeed, at the end of the print job, the crazy junk all over the place really was support material!  And it just snapped off with our bare fingers... so easy.

After witnessing the beauty of the UP! printer, I have to say that it is far superior in many ways to the Cupcake.  Print quality and build quality far exceed that of the laser-cut wood and plastic bushing, and cheap threaded rods.  If you want to just design stuff and print it, then this is the printer for you.  But if you like to tinker, and can't take advantage of their "magical seed" offer (which reduces the steep $3k price to roughly half that), then the Cupcake will suffice.  It's big advantage is that it's open source, and you can mess with the internals and improve them.  You can't do that with the UP! printer without voiding the warranty.  Because the Cupcake and Reprap projects are supported by a huge group of very capable and ambitious folks, over time it will get to where it needs to be.  And these same folks are always willing to help out the rest of the community with support issues.

Will you be able to get that sort of support from a company in China?  Will you be able to get new features added as quickly as the open source community provides them for Cupcake / Reprap users?  Only time will tell.  I haven't got lots of time, so I'll be printing on an UP! printer myself in the very near future.

Hopefully I can find time to build this

I haven't had time to get the Cupcake running again, but the good news is that I got a replacement SMT cap for the MakerBot HBP, as well as an SSR to drive it.  While we wait for all of the tools to arrive at the new office, I figured that I would unpack my MK1 spindle kit that I have been sitting on for a while.  Hopefully after measuring the parts and comparing with the DXFs on Thingiverse, I will be able to convert it to work on the Epilog lasers.

(download)

Having problems with the Pololu board

2010-08-06_06

I decided to finish the wiring on my Pololu board and do some quick testing, and met immediate failure.  I wired up everything as indicated, and the motors wouldn't step correctly.  I then double checked the Pololu datasheet, and *thought* that I had screwed up the labeling.  I had my motor inputs from the top down labeled 2B, 2A, 1A, 1B, but the schematic showed 1B, 1A, 2A, 2B.  I tried this configuration and it was much worse -- zero holding torque.  But then I realized that the schematic and PCB weren't labeled the same, and I actually did have my labels in the right order.  Phew.  But I still don't get any stepping.  I'm currently testing the full-step mode, and have used a variety of current settings via the potentiometer.

I'm not sure what to do at this point, so I'll have to spend some time later on the web to try to figure this out.

UPDATE: I guess it's just the full step mode that works really weird.  I don't get it.  I switched to half step mode, and the new board seems to operate just like the standard MakerBot board.  I then went to 1/16th stepping just for fun, and it didn't seem like anything special.  I had to crank up the jog size because the total number of steps sent is calculated based on half-stepping.  Z speed was all of the way up, and I can't go any faster.  Guess I'll have to look into changing the step size or gear ratio in ReplicatorG to make this all work.  Maybe if I have time later, I'll build up the X and Y boards to see what the differences are.  I also need to come up with a cooling solution, since the word on the street is that the Allegro chip will get hot and then malfunction.

Pololu boards are a good fit, but will they work?

All of my parts from digikey arrived yesterday, and I soldered everything up.  The headers I ordered for the Pololu board fit perfectly, but I did have to use a small press to get the jumper block installed.  I think the best way to do this is to first install the three jumpers, then press.  This will prevent you from overpressing and pushing the pins too far through the PCB. 

The only hiccup I had was in verifying the pin 1 location on the Makerbot stepper driver.  It was clearly marked with an arrow on the IDC header, but I wanted to double check with my multimeter.  Unfortunately, I only had right angle IDC receptacles, and my board wasn't laid out in the right orientation.  I got some pliers, straightened the pins, and then everything went in fine.

Some layout observations -- pins 8, 9, and 10 on the IDC receptacle should have been grounded, so I just solder-bridged them.  Also, the power terminal block is slightly obstructed by the head of the mounting screw.  And the pull up resistor is a bit close to the other mounting screw.

I hope to do some basic tests soon!

(download)

Pololu boards came in!!!

I'm excited, my first PCBs made in a very long time arrived today.  They look fantastic for the price...  I paid just under $145 for 16 boards!  Sure, they didn't have silkscreening or soldermask, but the conductive writing approach worked very well.  It's actually pretty easy to see where all of the parts go.

The only bummer was that ExpressPCB doesn't allow larger holes than 0.251", so that hole I added for the cap to poke through was too small.  I'll give it a scrape or two with a deburring tool tomorrow to see if I can make it fit through.  If that works, it'll be pretty sweet.  Otherwise, I'll just have to mount the boards on top, or make a fixture and program one of the CNC tools at the TechShop to enlarge the hole.  Now where is that Digikey order???

I'm going to have to send one of these to Tony Buser to test, because I doubt I'll have time to stuff the boards and test them on the Cupcake.  Thanks, Tony!  :)

(download)