Have you ever wished that you could type your thank you letters while maintaining a convincing image of handwritten thoughtfulness? Machinewriting is a first step towards realizing the dream. Running within the virtual machine environment , Machinewriting converts your Multifab into a CNC typewriter by drawing characters with a pen as you press keys on your computer keyboard. Currently, the only font avaliable is Eurostile 18pt. The next natural step is to create toolpaths of sampled handwriting.
A (secondary) motivation for this project has been to demonstrate the power of interpreting Python instead of G-Code. Full Python apps, such as Machinewriting, can be run within the context of the virtual machine environment. A couple apps soon-to-come will be RML and G-Code interpreters. An alternative approach is to package the VME as a Python module which could be imported by any Python program. I'll explore that possibility in the near-ish future.
One of the limiting factors in generating smooth motion at high speeds has been network latency between the virtual machine running on the computer and the stepper motor controller. The latest version of controller firmware, 076-001e , implements a circular queue which buffers motion commands to dampen the effects of latency. The firmware supports a queue size of 255 slots, but the SRAM avaliable on an atmega88 limits the queue to 14 slots. Replacing the atmega88 with an atmega328 increases the queue capacity to 99 motion commands.
This morning I presented the Fab-in-a-Box to the Fab Academy. The Academy is a learning program based in the Fab Labs, and taught by instructors around the world using a video conferencing system. Along with David Carr and Jonathan Ward, I helped teach a three-hour lesson in machine-building. Over the course of the next month, six Fab Labs around the world will be building David's MTM Mantis and the Fab-in-a-Box control system. You can view my presentation here.
Spurred on by my trip to Manchester, England, I just finished assembling the Multifab 1. This is a rather fast 3 axis multipurpose personal fabricator. Resolution in all three axes is around 0.001", although the precision and accuracy are yet to be tested. The working volume is an 8" cube. This unit has a rigidly attached Z axis and frame for simplicity. However, the upcoming Fab-in-a-Box version will collapse for travel. There have been several previous iterations , including a version which was made in Fab Lab Pune, India.
I just finished an initial pass at a vinyl cutting head. The blade is held in place by two bearings and a magnet. The blade holder is spring-loaded against a bushing, which sets the cutting force. Variations in table height are OK because the spring has a relatively low force constant (0.3 Lbs/In.)
Still need to tweek the cutting force, and find a bushing with a tighter fit on the blade holder. The design is up, here.
As an excercise for MIT's Innovations in International Health program, I worked with Director Jose Gomez-Marquez and UROP Amber Houghstow to build a repeating pipetter attachment for the Multifab. This isn't directly applicable to Fab-In-A-Box, but maybe for Lab-In-A-Box... Another side benefit of the one-day effort is that there's now an RC servo controller which can be run over FabNet. Check out the video here!
The new multifab frame is progressing. I just received the tubeset back from the anodizer, and then did a little laser etching. New motors arrived yesterday, which I'll install soon. The limiting factor presently is designing a properly constrained shuttle. Oh... the motors draw 1.2 amps per phase, which is going to require new driver boards. More on that soon.
I've been curious for a while why computer controlled machines havn't become more ubiquitous in art practice. This doesn't answer that question in the slightest, but I recently printed some cards by milling artwork into a linoleum block. I also made the amateur mistake of forgetting to mirror the artwork, but photoshop has my back for the purposes of the blog. I'd like to find an easy way to convert color images into a series of blocks which, when overlayed with different colored inks, recreates an approximation of the original image.
Another milestone achieved thru this task was implementing packet recovery code. The toolpath consists of well over 30,000 movement commands, and packets are occasionally dropped (perhaps due to bugs still needing the swatter.) There were five lost packets over the course of milling this block, all of which were successfully recovered by the control software.
I just milled a 3-axis stepper controller on the Multi-Fab. This is the first time that one of my control boards has replicated itself. The intention was to fully remove all non-trace copper, but the network had an error around half-way thru the file. This has been a repeated issue, but difficult to isolate and fix. Will try purposefully inducing network errors and then make the controller tolerant. Anyways, the reason for making this extra control board is to install an Atmega328 with 2K of RAM, and then to try implementing a real queue.
The first rev of the Multifab machine (which is the 5th revision of the Lincoln 5 design - named after the logs) is in the works. Goal is to finish the frame today, and then send it out for anodize tomorrow morning. Then get it running by the end of the week. Some new badass motors will arrive in two weeks.
One of the important goals of the Fab in a Box networked control system is to synchronously control multiple network nodes. As a fun test case, I built a 4th and 5th axis "trunnion" for the Multifab. This version isn't fab-lab-able; rather it was an outlet for my pent up desires to do some real machining. But if it's useful, a laser-cut version might end up in the works. More later once the control system catches up.
Recently, Maxim Lobovsky and I got the Makerbot extruder functioning on an earlier Multifab prototype. One skull and cross-bones, singed but not burnt. Future work is to make the extruder less cumbersome, and to design our own controller board.
If you check out the "debugging with SVG" entry, you'll see that the traces generated by the machine have not always lined up. Now they do! By estimating how much backlash, or free play, is present in the machine's mechanisms, the controller is able to remove that play at the start of each move. New firmware has been posted here.
Brushed DC motors can now be controlled over Fabnet. A future experiment will be to build an extruder controller from multiple independent boards, and control them via a single "extruder" virtual machine.
There's many problems with this board. The biggest issue is that some traces are too thin, which I've isolated to some form of backlash. This will be a major focus for me over the course of the next couple days, as I need (and hope for) better accuracy if I'm to continue using the Multifab's current kinematic design. Another issue with the board is the cut quality - which is not clear in the picture because the flash has penetrated through all of the fuzz hanging onto the edges of the traces. Finally, the cutter didn't fully break through the copper in some places.
I'm going to clean up the board by hand and stuff it, just to see how bad a board can be and still be useful for something.
As I've been debugging the motion system these past couple days, I've been in need of of a way to quickly locate specific move commands and the responses sent by the control board. The difficulty is compounded by the 13000 movements which comprise the toolpath for the H bridge test piece. I just finished writing debug code which outputs the final microstepping commands sent to the controller as SVG paths. Each path is named with an identifier which can be located in both the toolpath and the debug file.
By overlaying the SVG file with a scan of the drawn path, I can visually locate where the tool went awry, and try to find patterns. Much more fun than staring at motion code.
One of the first improvements to the multifab will be a variable-speed spindle. It isn't necessary - just an on-off switch is sufficient. But it would be cool. The motion code is mostly working, so I designed this H Bridge as a first test of the machines capabilities... can it make its own upgrades?
Before cutting copper, I've been finding bugs in the control software by drawing on paper.
There are still some bugs, which I'll hopefully fix today. New firmware has been posted here.
Today I milled and stuffed the controller and three driver boards. Next steps are to refactor microcode for the controller and test the driver boards.
Just finished the 3-axis motion controller layout. Also finished an Allegro A3967-based stepper motor driver. Layout is single-sided, and two driver boards will fit on a single 2"x3" panel. Both controller and driver boards are slated for fab tomorrow. Then on to stuffing and debugging! More later.
Today I came close to completing the 3-axis motion controller which will drive the multifab tool. Because it's networked, adding a fourth and fifth axis is as easy as plugging an extra 1-axis board into fabnet and modifying the control software (soon to support arbitrary # of axes with different physical "partitions.") The board layout is single-sided for easy fab on the multifab, and uses only one 0-ohm resistor (the only point of pride avaliable when returning to the stone-age of pcb layout).
Firmware is in the works, as is documentation. More in the next couple weeks.
A bit of background and explanation: I've been building things for a while. Many times the act of creating something gives me tremendous satisfaction. Precisely why this occurs is something I'd like to explore. But regardless, it seems that many people derive a similar excitement from transforming their visions into reality; causing the world to echo their conception of how it should be. Resonance is a powerful phenomenon. Personal fabrication is about empowering individuals to express themselves and to shape their own worlds, independent of the mass-manufacturing system. It's the "teach a man to fish" in that Chinese proverb. I'd like to remove many of the remaining frustrations still inherent in personal fabrication. Hence Fab-in-a-Box.
In the spirit of the day, a few New Years resolutions: