Making with atoms, part I

I have a Lumenlabs micro CNC machine which was purchased by my brother for some prototyping work. It turned out that I was more able to tinker with it than he was, and so I ended up taking it off his hands. I have the thing in working order, and while it didn't take quite as much tinkering as we originally thought it would, it has taken a bit of work. Of course, my skills as a machinist are extremely limited, so the whole thing has been (and continues to be) a learning experience.

When he bought the micro, my brother was intending to use it to make prototypes for our everyday carry pen and stylus. So far, that hasn't worked out. Most significantly, the design we're going with would be more appropriately fashioned on a lathe (or at least a 4 axis mill; the micro is a 3 axis machine) but also, the micro (as shipped) has a couple of deficiencies that make it hard to use for serious work. More about those in a minute. The last piece of the picture has to do with my (lack of) skills, and the learning curve I've encountered in working with this device. In that regard, the micro's deficiencies haven't hurt us that much, as they've been something I can learn from.

So, deficiencies. As far as my brother was concerned, the biggest problem was in the realm of documentation and customer support. Getting the wiring and the computer interface set up properly required a little digging. All of the information is supplied by Lumenlabs, but it's behind a pay wall. The purchase of the machine grants access for a year (in theory) but that wasn't made clear to us at first, and so we did a lot of stumbling around until we managed to get everything hooked up. That part didn't bother me as much: I figure a machine made for hobbyists has a certain amount of tweaking built into its design. My issues rest with some missing features of the machine.

First, positioning. After installing the limit switches, the machine zeros itself, and can locate positions in x and y with relative ease. The z location, however, is set at the top, rather than the bottom, and so zeroing in z doesn't give you a clear idea of the height of the end of the tool above the table. Furthermore, any time you change a tool, this (unknown) height will change in an unknown and probably unpredictable way. Also, moving too quickly in z will cause the motor to bind a little, and the z position gets lost. I don't know if the binding is a result of the design, or if it's an alignment issue that I can fix, or if some part of the z axis on our machine is bent or otherwise damaged. I haven't tried too hard to fix it, because the workaround (don't move too fast in z) is reasonably easy. I think that height detection/touch off is doable (and in fact, I've read a bit about people who are into pcb milling doing some fancy things with bilinear interpolation to get a good height map of the work piece) so that's on my list of projects. In any event, I can touch off manually, and have a pretty good idea of where the end of the tool is. So this is really more of an inconvenience than anything else.

The other, perhaps more serious limitation of my current hardware is that my spindle only has one speed, and it's too fast. Which is to say, it works fine in wood and plastic, but I run into serious chatter problems when milling aluminum, and I wouldn't imagine trying to do steel. I have three or so options here. The simplest would be to try a variac (... if I only had access to the stuff in my parents' basement!). Next, I could buy either just the speed control or a whole packaged flex shaft grinder; though I don't have any guarantee that a speed control for another grinder would work with mine. Last, I found a circuit schematic online that I could build. That solution has a certain appeal, but would be most time consuming.


django organization and templates

I'm building a django project to manage the research I'm doing on optimization. (I'll update this with a link when it's functional enough that a link would be useful). The project consists of a number of apps, each with their own models, views, and templates. I want the whole project to have the same look


Quiver plots in octave

As part of the Electricity and Magnetism course I'm teaching this semester, I assigned my students the task of making some vector field (quiver) plots. I told them they could use either Maxima or Octave, but that it is much easier to do in Octave. That's the subject of this post. The Process The general


Resonance, the PRC, and adaptation

Recently on the polyphasic google group, someone posed the question: Are there accounts of people who've attempted to adapt to any of these low-sleep schedules with what's generally agreed upon as the correct steps and still didn't adapt, or all evidence indicates anyone can theoretically adapt? A few months earlier (from this posting), I tried


Tool for viewing sleep data

The fine folks at Zeo invited me to participate in a polyphasic sleep experiment, and of course I was thrilled to do it. I've put together a little tool in python for parsing the output from their hardware. First, the pretty pictures: I'm nearly satisfied with the results (though I don't understand where the doubling


In which the optimizer eats itself, part I

A vanilla PSO algorithm has a handful of tunable parameters which affect the convergence rate. For our purposes, we're going to consider the set \{ \omega, c_1, c_2, n_{\mathrm{particles}} \} to be our set of adjustable parameters. It is certainly true that the bounds on both position and velocity for each particle will affect convergence,


Data plotting, three (or four) ways, part II

Having briefly covered gnuplot for interactive plotting, I'm now going to cover Octave. First, we might ask why anyone would need more than gnuplot. It does, after all, seem relatively powerful, and with a bit of coaxing it can produce reasonably good looking output. Consider, however, the case where you want to do some kind


Data plotting, three (or four) ways, part I

There are a large number of tools one can use to visualize data. I'm comfortable using a few of them, and there are a few more I could use if pressed. I generally separate visualization tools into three categories, based on how close they are to the source of the data we're trying to plot:


How not to present data

One of my students presented some data in our research meeting today, and it did not go well. It was essentially my fault, so I thought I'd take a look at the situation after the fact and try to see how to rehabilitate the presentation. The problem First, the graphs as they were presented: Looking


Termination conditions

One of the projects I'm supervising/working on this year is connected with optimization, and in particular, particle swarm based optimization algorithms. One of the things we've been struggling with is termination conditions, and so I thought I'd write a bit about it to clear my head. Any useful algorithm has to terminate at some point.