R Zach



Slowpoke project

The Slowpoke is a research grade microscale sliding stage that I built for the Ullal research group at RPI.

Prof. Chaitanya Ullal graciously invited me to come as a Visiting Researcher to Rensselaer Polytechnical Institute in Troy, NY. Among other tasks, Dr. Ullal asked me to build a stage that could be used for a nanofabrication method called discontinuous dewetting that requires a very steady, slowly moving linear stage (1–100 microns/second) traveling relative to a fixed glass slide.

I drew up designs, ordered parts, machined, failed, tested, sweated, coded, failed, patched, and eventually succeeded. It took a few months!

The design came first. After I did a lot of research on the desired parameters, I drew up a simple plan to serve as a guide:

After I further refined the plans, I ordered a bunch of parts (some of which are here):

I machined many parts to mil (thousandth of inch) tolerances:

The base had to be solid, and I chose shafts well over spec to help ensure a solid working base for the sliding stage.

Why are there two different colors of linear bearings? Because the two darker bearings give you a degree or two of error in the angle, while the two lighter ones don't. You use them in pairs like this to allow for deviation from parallel in the shafts. (Without allowing for a bit of error, if the shafts aren't perfectly parallel the stage will lock up during travel.)

Ever tried doing fraction math in decimal inches? I don't recommend it. Some values ended up going out to the fifth decimal digit.

Sorry I'm holding my notebook upside down in this picture, but you get the idea. When the parts you buy have dimensions with sixteenths in them, you end up with some ugly numbers. The page pictured was the plan for drilling holes in the main plate.

The linear motion is driven by a precision ball screw that advances 1mm/revolution. At ~$245 this was easily the most expensive component in the machine!

A stepper drives the end of the leadscrew.

The LCD screen came from Adafruit. (Recognize it from the Tide Tank project? These screens make things easy.) An Arduino talks to an Adafruit motor driver. Source code at the bottom of the page if you're interested. Things got a bit ugly while on the table...

but much prettier once crammed into a nice enclosure. Well...perhaps not prettier so much as mostly hidden. (The buttons on the panel front are broken out from the LCD screen.)

I built a heating element by putting a simple resistance fabric pad into a sandwich—an aluminum plate on top pulls the heat upwards and a plastic plate on bottom resists heat flow downwards. The entire thing has those protruding bolts intentionally; they fit into holes on the main stage so the heating unit can be dropped in and removed easily. A thermometer, not pictured, provides temperature feedback to the Arduino to enable precise control of the bed temperature.

Here's what it looked like as I was approaching completion. A borrowed manual Z-stage meant for an optics table provides the Z-control. (That's the black aluminum thing with the long arm mounted on the crossbar.)

And from the front:

Here's an early dewetting test. The motor runs so slowly that you actually can't tell it's even on when it's running at a low speed—but when you come back 15 minutes later you've got something like this:

Of course the magic is only visible under magnification because this is after all a nanoscale fabrication method! Here's a picture showing some of the structures formed by the evaporation process:

My sincere thanks to Sarah for showing me the ropes, and of course to Prof. Ullal for inviting me into his lab and entrusting me with this project. Keep an eye on the Ullal lab for the actually meaningful results of the Slowpoke—I hope it will contribute to their research output! ⁂


Arduino source code.

System schematic (right or control click to download):

Fritzing schematic file that above image is taken from. (Please note that this was made in an earlier version of Fritzing and you may get a warning when you open it in a recent build.)

Plot showing acceptable reproducibility of output speeds in the desired range:

I used Eureqa to relate a key motor speed driving value in the code with the actual motor speed output, in case you're wondering about the green line and the x axis.
Creative Commons License  2014 Robert Zacharias