Category Archives: Uncategorized

Quick Update

OK, so, I’ve been very busy with work and other projects lately, but in the past week or two the traffic here has picked up and a bunch of new people have asked about boards and project files. So, I am going to try and get some things wrapped up and ready for release. Among other things, I want to address a few nagging issues in the firmware, and get the project files up on Github. I also want to write up a proper BOM to make it easy for people to buy parts.

Anyway, this project/blog are definitely not dead, and for those of you who’ve asked about getting a board, I will definitely be getting things together over the next few weeks. In the meantime I appreciate your patience and happy machining!

Hey mister, wanna buya board?

OK. So, I have been using my pendant for a couple weeks now with both my mill and lathe. There are a few significant things still to do, but the basics have all held together very well so I think it’s time to move things forward. To that end, I’m going to offer the prototype PCBs I have left for sale, for those of you who don’t mind the alpha-ness of this.

The big things which are still open:

  • Make DRO use current work-system coordinates rather than machine coordinates
  • Implement the Pause and Block mode buttons
  • Implement spindle control
  • Implement adjustable speed setting for continuous-feed buttons

None of these are hardware questions, nor particularly difficult. This was really meant to be a platform for people to build what they wanted in a pendant anyway, so hacking your own is integral.

At this time I don’t have any plans to sell kits. I will provide a BOM and all parts are very common items available from the usual suppliers. I’ve thought about commercializing this more aggressively, but I’m not sure if the demand is there to justify it right now. The messiest part of this project is the enclosure. The approach I’ve taken works, but it’s a bit demanding on the builder. I can’t machine the enclosures myself at a reasonable cost, and sending them out would add a lot of cost unless I did a lot of them. A membrane keypad would be much better in the long run, but also has a large upfront engineering cost.

At some point I might try getting this to work with Mach 3, since the user base for that seems much larger, and more inclined to spend money on things. If I could get that to work, then I might look into doing a Kickstarter project to get some membrane keypads made. Price estimates for those range from $500-$2000 in tooling plus $5-$20 per keypad in quantities of 100. The low end is a shady supplier in some back alley in Shenzhen and the top end is a company in Peabody, Mass. Draw your own conclusions.

Anyway, here’s the deal: boards are $20 each including USPS shipping anywhere in the US. I’ll take international orders, but the postage will be extra, and you’ll have to send me a money order. I’ve just read too many horror stories about PayPal scams and international shipping and don’t want to deal with it. I will provide a BOM and suppliers list and do my best to help build it and get it running. THIS WHOLE THING IS BETA.

If you’ve never used the Arduino or edited a HAL file by hand, you will need to learn a few things to get this to work. I originally spent $130 for 13 boards. Shipping will cost five bucks, and going to the Post Office and back will take me twenty minutes during my lunch break. If these sell out quickly, I might order more, or I might not. I’ll provide the Eagle files to anyone who wants them and you can make your own. I’ll provide the Arduino and Python EMC code too.

Anyway, if you’re interested, just leave a comment and I’ll mail you a PayPal invoice.

Procunier 1E Tapping Head for sale

In case anyone out there is looking for an automatic tapping head, I am selling Procunier 1E on eBay:

The head itself works great, it just has a little bit of cosmetic wear. It comes with a full set of collets for #6-1/4″ and a replacement clutch set. Selling because it got almost no use and I’m hoping I can get at least a good part of the way to the cost of a rotary table for my mill.


A few months ago I was over on the CNCZone and found myself reading the roughly 10,000th post asking the same dozen questions about how to do a CNC conversion on one of the ubiquitous Sieg X2 mini-mills. Discussion boards like the ‘Zone are wonderful resources for many things, but for a newbie looking for a roadmap, they stink*. Hundreds of good ideas lie buried deep in threads with dozens or hundreds of posts, often on unrelated subjects, and with no particular system of organization. Part numbers, preferred suppliers, and recommended approaches likewise change over time, while forum posts remain frozen in amber. What people really need is a wiki, so a few months back I decided to set one up:

My goal for this site is to serve as an index of links to the great sites and info sources out there, as much as a source of original content. I’m not looking to steal anyone’s thunder, but rather to give newbies a single place from which to start their exploration. Anyone who’d like to help fill out the content is welcome; all you need to do is register to be able to add or edit pages.

* If discussion boards are problematic for long-term knowledge transfer, mailing lists and IRC channels are vastly worse. IRC has its place as exactly what it is–a real-time chat system–but the lack of any thread-type organization greatly reduces the findability of knowledge that changes hands over it. Likewise, there is nothing that mailing lists are good for that a discussion board doesn’t do better.

Let’s Shave a Yak Together

Have you ever heard the expression “yak shaving” before? Allegedly invented at the MIT AI lab a decade or so ago, it’s what you call all the stupid, annoying work you have to do first in order to be able to do what you’re trying to get done. When you find yourself looking for a tool to make a tool that you can use to make the tool you need (and which you could buy from Enco for $25), you’re shaving a yak.

Anyway, I spent a good six hours today trying to figure out the best way to cut a hole in a piece of plastic. To be specific, to cut out two holes in the face of the enclosure for the keypad and the LCD display. In order to do this, I need a way to clamp the enclosure securely. Neither a vise or double-sided tape would work, and there’s not enough room to get step clamps snug enough. So, it was going to require a fixture.

The enclosure front panel luckily has a bunch of holes with threaded inserts (to hold the two halves together), so I figured I could just use these to screw it down to a piece of tooling plate. So, all I had to do was precisely drill 12 holes (4 for dowel pins to locate the fixture, 4 1/4″ holes for screws that hold the fixture to the mating plate on the mill, and 4 for the screws that would hold the enclosure to the fixture). As this was one of those cases where every .001″ counted, it was slow work.

Nonetheless, I happily test-fitted the hold-down screws for the fixture (spot on), the hold-down screws for the enclosure (3 perfect, one hole needed to be drilled .010″ oversize), and the dowel pins (one came out oversize due to cheap drill bit, but 3 pins should be plenty). The screws that hold the fixture to the mill come down from the top. The screws that hold the enclosure come up from the bottom. So, you need to screw the enclosure to the fixture, then screw the fixture down onto the mill. Easy enough, if time-consuming.

Can you see what’s coming? When I tried to actually put it all together, I realized that once I screwed in the workpiece, it covered the holes where the hold-down screws for the fixture went. If I screwed the fixture down to the table first, there’d be no way to attach the workpiece. So, this would be me:

So, long story short, I’m going to have to make some clamps to go around the edges that can be secured from the top. The earlier efforts weren’t entirely in vain as they’ll make it easier to attach straightedges to locate the workpiece properly, and the end result will be a fixture that’s easier to use as I’ll be able to swap workpieces without having to unmount the fixture. Still, I’ve probably got another 4-5 hours of work ahead before I can even *try* the CAM program I wrote to mill out the two holes. Anybody need some extra yak hair?

Lucky 13

After spending nearly 3 weeks (!) in Chinese customs and a day waiting for the most recent snowstorm to blow over, the first run of boards finally landed on my desk. The order said 12 pieces, but as sometimes happens, I actually ended up with 13 boards. Now I get to find out if I got everything right–wish me luck!

EDIT: WOOHOO! Assembled the first board, and after chasing my tail with what turned out to be a software bug (I reversed some pins from the perfboard prototype), the board appears to be working! All the pins line up where they’re supposed to, and the switches are being read properly, and the LCD works. Now I just have to hook up the encoder….

Board Design Sanity Check

So things have been a bit quiet lately while I was focused on designing an Arduino shield based on my stripboard prototype. This includes:

  • Arduino shield pattern for easy mounting
  • 25-key matrix with diodes on all switches to minimize ghosting problems
  • headers and trimpot for connecting a standard parallel LCD
  • header for encoder +5V, GND, PhaseA, PhaseB

I decided not to incorporate any encoder-specific circuitry so people could pick their own. There’s a wide variety and this design pretty much just provides power and the two Arduino interrupt pins on a header so you can roll however you want. My Grayhill encoder needs a couple resistors which can be attached on any little bit of stripboard.

I’ve attached a couple of PDFs with the schematic and board layout. If anyone finds any bugs, please leave a comment. I’m going to order one or two boards this week to verify the design, and then I’m planning to order a small batch of a dozen or so which should sell for ~$15-20 or so just to cover my costs. Any commenters will get dibs on the first boards of course!

Looking towards a final version, I’m seeing a cost breakdown something like this, based on single-piece retail pricing for the components:

  • Arduino board: $30
  • Encoder: $26
  • LCD Module: $18
  • Raw PCB: $17
  • Small components: $15 (switches, pin headers, resistors, diodes, etc.)

That gets you to a total price of $106. The Arduino is optional if you have one already, and you could omit the LCD as well, but it’s pretty cheap for what it gives you. If there’s demand, though, I might do a different design either with more keys or with LEDs for more simple feedback. Another option is to go with either a cheaper encoder (I’m testing a $3 Panasonic one now) or a more expensive one made for use as an MPG.

I’m also starting to design out an enclosure strategy for this. One lesson I’ve learned over and over is that the least fun part of most electronics projects is finding a place to put the $#@! board. This project by its intended use really demands a well thought-out approach in order to be usable. I’ve seen some nice “grabber” hand-held instrument cases for about $30.

Where all this gets interesting is if demand is decent, I might look to offer complete parts kits. As it is, the parts for this come from at least three different places, so you’re going to get hit with close to $30 in shipping and handling charges. If I could order in quantities to do at least 25 at a time, it would make it possible to do a full kit for the same or less than buying all the parts yourself, and of course save the hassle of navigating the Mouser and Digikey ordering systems. So if you’re interested, please leave a comment–no commitment!

Schematic (PDF)
Board (PDF)

Arduino, EMC2, and the open-source conundrum

I was flattered to receive a thumbs-up from Bob Warfield on my previous post. Bob is in my mind one of the leading figures in the new wave of CNC practitioners, and his new product, GWizard, is among the most interesting out there. Bob asked a question I’ve heard dozens of times since putting this project online: “what about using an Arduino to generate steps?” As my reply to Bob got longer I decided to make a post of it.

Basically, my position on this question has long been, “why would you want to do that?”

While it’s true that you don’t find parallel ports on laptops or new Dell cheapo boxes, you can easily assemble a brand-new Intel Atom system capable of running EMC2 very nicely for less than what a Mach license costs. These motherboards are so cheap, they come with the CPU and sell for about $75, retail. If you can still get a parport header on a $35 motherboard, where they are going to wring every fraction of a penny out of the manufacturing cost, my sense is that we probably have many years left before they disappear from the earth.

There are a couple of projects I know of in this vein: RepRap uses drip-fed G-Code for its main control chain, and as I understand, there are some issues with the interpretation of arcs that have yet to be addressed; they may not be problematic for RepRap’s own use. There’s another, seemingly more sophisticated effort in the GRBL Project, which uses optimized AVR-native C code to turn an Arduino into a proper interpreter. However, it can’t do trajectory planning, homing, or spindle control, let alone threading, rigid tapping or control of auxiliary mechanisms. Like most open-source projects, it’s the pet project of one or two guys, and with no updates to the website since this past summer, it’s quite likely it’s reached the end of its evolution.

Part of the reason why I feel compelled to rain all over this idea is that the open-source CNC community is tiny and yet has plenty of overlapping and duplicative projects underway. In the past year, we’ve seen two separate groups of people launch new GUIs for EMC. One of them, Touchy, doesn’t provide a toolpath preview, and according to the author, there’s no plans to add it, presumably because he doesn’t want it. The other, Mocca, has all that and more, but is built in OpenLazlo, which one commenter memorably referred to as a “bizarre moon language,” virtually guaranteeing that no one but the original developers will ever touch it. Meanwhile, other people are finding ways to adapt Axis to use a touchscreen despite it being a mess of spaghetti code even the original developers are reluctant to go near.

In fairness to all involved, they’re giving their efforts to the community freely, and one of the points of open source is precisely to enable individuals to scratch their own itches, their way. I’m not complaining. But fragmentation brings costs. HAL files of more than trivial complexity remain byzantine, and GUI customization remains largely an unfulfilled goal. A trip to the EMC forums or mailing list shows dozens of people trying to figure out how to get some part of their machine to work. Meanwhile, a trip to the Mach forums finds hundreds of people writing macros, wizards, or screen layouts. It makes one wonder if the vision of openness and flexibility has it all backwards.

Now it’s true that above a certain level, Mach doesn’t cut it. If you happen to have some seriously large iron around with a dead control, it’s EMC or something far more costly than a Mach license. And there is the little bit of uncertainty that Windows will cause your machine to have a “senior moment” once every so often–while EMC seems rock-solid. But these points are arguing over the area between the 99th and 100th percentiles, when large gaps remain between 50 and 75.

I’ve had numerous people ask me about why I chose the Arduino when there are “better” options available that have more IO pins, true USB, better CPU speed, etc. The simple reason is that Arduino is far and away the most widely-known, used, and supported platform out there, and platforms have enormous value beyond the stuff that fits on a spec sheet. Pretty much the entire history of the PC is a story of platforms beating technologies, and I am not going to fight that.

Likewise, while I do intend to commercialize this project in the form of PCBs, kits, or instructional DVDs, I’d rather capture 10% of several thousand users than 90% of a hundred or so. My biggest marketing problem is going to be to get people to notice, and if the cost of doing that is helping 90% of people to do it for free, I still think the remaining 10% will more than make up.

Hello, World

About three years ago I was hit by a sudden and overwhelming urge to start building stuff again. Growing up, my favorite part of the house was the garage, from which it seemed almost anything could emerge. But college and the career path that followed took me to Boston, where garages have attendants and apartments have neighbors who don’t necessarily take kindly to soldering on the kitchen table or bandsawing a few pieces of 2″ 6061 round bar.

Along the way I started a software company, now in its 6th year, and eventually ended up in an apartment building whose owner thought it was perfectly reasonable for me to rent a piece of the basement to use as a shop. There’s no 220V service, the ceiling is under 6′, and the only way to get anything in is to carry it down a narrow flight of stairs, but it was more than enough to get a benchtop mill and lathe and start causing real trouble. I quickly discovered the home-shop CNC community, and now have a CNC’d X2 mill, 7×10 lathe, and two smaller scratch-built routers (the Brute and 7th Sojourn) based on John Kleinbauer’s excellent plans.

As an entrepreneur, I think the small-scale CNC space is still in a fascinatingly early phase of its development. As in other areas, the Internet has made a wealth of information available to interested amateurs, who are routinely doing things considered state of the art not all that long ago. At the same time, there are a couple of feelings/suspicions I cannot shake:

  • Many, perhaps most DIY builds fail: Following threads on CNCZone, I get the sense that a very large number of people who start DIY CNC projects never finish them. While this is probably true of every hobby, DIY CNC faces some steep challenges. Even the prosumer turnkey machines like Tormach leave you largely on your own to integrate the control system with Mach or EMC. Between the mechanical, electromechanical, electronic, and software layers, there’s an enormous amount to do and a lot that can go wrong.
  • Of those that succeed, many (most?) gather dust: As complex as building a machine is, it’s still only a ticket to the world of CAD/CAM. My father jokes about guys who buy $10,000 table saws and build nothing but birdhouses to test how well-aligned their fence is. For a lot of guys, building the machine is the hobby, and that’s fine. But, I think a lot of the lack of useful output is due to the fact that these machines are just not at all easy to use.

In just the past few years, we’ve seen a number of great new options addressing the first point. At the high end, there are more choices in turnkey machines under $10k than ever before (a product category that didn’t really exist 10 years ago), while the number of proven plansets and suppliers for the 100% homebrew crowd grows even faster. For the most popular machines and designs, there are known-good paths that builders can follow with high assurance of success.

The software side, though, still feels deeply problematic to me. As I’m more of a software guy than anything else, this is where I’ll be focusing my attention.