Let's Make Robots!

XY Table

Moves over a microwell plate
XY_Table.zip1.54 KB

I had my brother over for Christmas and as he is a scientist and I have done some work for him earlier, he asked me if I could build him an XY table to navigate over a microwell plate http://en.wikipedia.org/wiki/Microtiter_plate 

Everything seems easy late at night after some beer, and after all, he gave me this great 3D printer. So after a quick specification I started designing it in Google Sketchup. As most of the parts are from eBay and shipped out of China the project had a slow progress in the start but was quit fun once I got all my parts.

The parts I got from eBay were;

  • LM6UU 6mm Linear Ball Bearing
  • Step Motor DC 28BYJ-48 with ULN2003 Driver Board
  • T5 Timing Belt for RepRap Prusa Mendel

I’m not sure what the XY table will be used for but I have built in a bracket system so different devices can be mounted. For testing I had this Micropump mp6 and controller and it is hooked up to the Arduino. I’ll probably also add a bracket for a 9g servo so one can have some probes going in to the wells.

One requirement was to have it mounted on a clear acrylic plate so that one could add light from below (the protected film hasn’t been removed yet).

As driving two steppers from an Arduino would use lots of IO pins I added a shift register on a proto board so that the steppers only uses two pins (clock and data). One added bonus of using the shift register is that one can run both steppers at the same time.

Also on the proto board I added a trim pot and a extra tack switch.  These are used to run the pump both for priming and to measure the volume it pumps out. The volume is controlled by the trim pot.
Note. The trim pot is not hooked up to the pump. It only gives an analog value on A0 that is translated to the time the pump is on. So the pot can be used for something else on another probe. The same goes for the switches, they can be used for different things in the Arduino sketch.

All none essential switches are connected with jumpers so he can mix it up and change what he plugs in to the Arduino. I also avoided hardwiring the SPI as he might need an SD card later on. 

All in all a great project and I had great fun building it.

Here are some more pictures

The Sketchup model


From the build

 And some detail from the complete XY table

Here you can see the Micropump mp6 in the front and the controller on a small PCB

The bracket system

It uses about 2,4 sec. to address each well to the run for 96 wells takes less than 4 min.

The protoboard

Update 22/9-2012

XY-table Mark II

This summer I had another request for an XY-table. First I was a bit reluctant as building the same thing twice sounded a bit boring. But as I wasn’t completely satisfied with the first version this gave me an opportunity to build a better one and correct some of my first mistakes.

The first thing was to find some different stepper motors as the one I used is absolutely crap. So I went for these small NEMA-14 motors from Phidgets.com http://www.phidgets.com/products.php?category=23&product_id=3301_0
As these are different motors than the one I originally used I had to redesign some parts of the XY-table to fit these motors.

I also wanted to make my own driver shield for the Arduino so that I could build more if there should come along another request. That was really the fun part of this build and the first time that I used SMD components on my board.

All in all a fun build and probably the first time that I’m actually making some money from my hobby.
Some pictures from the new version.

This is the stepper driver board I made. So if anyone is interested I still have a couple left. The board runs two stepper motors via 3 Arduino lines leaving lots of the IO pins available for other stuff.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Thank you!

Thank you Geir- you might come to regret your generous offer- I was struck by the way the function of your machine is almost exactly the control needed for a scanner- except for the grid, which will be  60º triangular, and the pump, replaced by the camera. It looks like you could make a stage for the film (up to about 6x9cm) and use this as the positioning stage, with very little additional modification- well, except for the addition of the camera, and light source...

This is the Holy Grail of motion control for a DSLR Scanner...

This instrument is the reason I joined this site- it's a fantastic response to the brief yourself and your brother set for yourselves, and your post is very instructive and informative-

My motives for posting are not entirely selfless, however, I found this post as a result of a search for an x,y, stage, and since you mentioned that your stage could have other uses...

I'm working on an application that is very similar to this one - a large format film scanner, using a DSLR. It seems your machine could form the movement stage with very little modification, the pump head being replaced by the film holder- 4"x5" film, though it could be any size...

I've made a prototype, though with a manually positioned stage- you can see it here- http://www.largeformatphotography.info/forum/showthread.php?88697-DSLR-SCANNER-No-7 There are other versions being worked on too, you can see them in the DIY sub forum-

I'm afraid I'm more at home chopping up pieces of wood and pointing lenses than I am with electronics, though you have to start somewhere, and I've bought an Arduino Uno, and some 28 BYJ-48's to start off- and thanks also to Craig for linking to Dave's information about those... I think I might have to investigate the application of your sketch, though it looks like it could be written in Aramaic, for all I know- but it does perform the exact function I need to apply.

Apologies for the sidetrack, fantastic and inspirational design/build 



Thank you for your nice comments jb7 and good luck with you project. Like you it was photography that led me into the world of electronics. I started with building a high speed trigger to freeze drops of water hitting the surface  (not all that original..) Then I made this http://letsmakerobots.com/node/16230
I’m not all that in to robotics in the way of having something running around avoiding the walls, but there are lots of fun projects to do.
If I can help you in any way, please contact me via my profile.

This really cool!

This sir, is an amazing build. Period. And congrats on making the Thingaverse homepage.

I am about 90% done with the conversion of the CNC from computer (Mach3)/propeller control for printing to a dedicated Arduino to run both the extruder and the drive of the machine. All the wiring is done, I am just now working with all the step/unit settings, speed, direction etc. My prints with the old set-up were about 80% of the quality I wanted. I think with the new "All-RepRap" system, I will start getting the results I want. I am thinking that your little desktop unit here might just have to be one of my first prints with the new machine. I have been wanting to stick a QRD1114 IR sensor (or similar) to the end of a machine to see if I could make a flatbed scanner. I also have been wanting to make a dedicated drawing machine as well --A really fancy one with tool change capablilities (different color markers on a tool rack). Oh, so many ideas...

Now, in terms of these little $5 steppers, lash, belts and all-thread, etc.  I have tried adding some threaded rod to some of these guys and there is one simple outcome... It was really, really, really slow. Forget the lash in the system, torque, sloppyness of the gears --None of that matters when you are doing 5mm/minute. I mean, c'mon, we're talking about motors that cost less than 5 bucks including the driver board. In terms of money going in vs. funtionallity coming out, I think you have a very good ratio on this one, Geir. To start trying to remove any slop from your system here, is going to snowball like crazy. First off, you do better motors. We go from $4/motor to $20 motor. Motors just got bigger so you need bigger controllers. Another $10/driver. We got rid of the gear reduction so we now have to go to threaded rods. Oh, and we are going to need some bearing blocks for the ends, some kinda spring-anti-lash nut thing. Awesome, were are we now?...   Oh, we quadrupled the cost of the machine? Well that means our money in vs. usability out ratio just got worse by a factor of four. Offset this ratio against the small increase in usability (from the better accuracy we have now) and I dunno if that extra money can be justified. --I guess in the end, it is a simple question of "when/where  do you stop making it better?"

All in all, I think every drop of usablity was squeezed out of those little steppers and you ended up with a super-funtional machine, as accurate as it would ever need to be for what you are doing and it looks good too. At this point, if it ain't broke, don't fix it.

Gosh darn good.


You have my utmost respect both as a person and as a great builder. I’ve been enjoying your CNC build and are amazed that you actually made it print.
Most of us can assemble a MakerBot printer, some of you can build a RepRap printer from scratch, -but very few can build a complete MASSIVE cnc machine and use it as a 3D printer.

I understand that you’re using Mack 3 for the CNC part, but have you had a look at the http://replicat.org/ for the printing?

As for my XY table I have to quote you from one of your LMR live shows (I do miss those shows), and  it’s "Good Enough for Government Work" so I won’t change it for now. But if I ever want to build another one I would go for a different stepper, maybe something like this.

Hi Geir, love the project! I've been researching those 28BYJ-48 steppers as an option for a small and cheap CNC project and came across the following by Dave on the the Arduino forum for the 5V version and wondered if you had any similar problems with the 12V version?



I was trying to find a cheap geared stepper motor and found the 28BYJ-48 a number of places online and from the specs it seemed to fill the bill.  64 steps to the motor and 64X gear reduction 4096 steps per revolution.  I received it and wired it up and ran it for the better part of three days with various programs.  I kept finding that a full revolution was somewhere between 4072 and 4080.  Maybe I was slipping with acceleration and deceleration???  Slowed everything down. No change.  Finally I cracked the geartrain open and found the following gear teeth counts 9, 9, 10, 11, 22, 26, 31, and 32.  If you calculate this out it is: (22X26X31X32)/(9X9X10X11) = 63.68395...  Multipied by the 64X motor that is 4075.7728.. steps per revolution not 4096!!!  I was expecting an integral number of turns to return to zero.  If you reduce this to the lowest common denominator ( 283712/4455)  it means I have to go 4455 revolutions to get back to zero degrees!  I'm disappointed that it's not an integral number of steps to get 360 degrees.  It was cheap but now I'm looking for a stepper motor that is actually an integral number of steps per 360 degrees.  I'd like to find a stepper motor that's >1000 steps/revolution and returns to zero every revolution. 

If you want high precision then you should never use a gearbox on your stepper. Gearboxes always have play between the gears.

A screw drive will give you better resolution and by tightening two nuts against each other you can eliminate the play.

I totally agree with you that a gearbox on a stepper is a bad idea. But it wouldn’t be that bad if the gear ratio was 64 and not 63.68395..
But you state “A screw drive will give you better resolution and by tightening two nuts against each other you can eliminate the play” does that mean that you think my XY table (whith the current steppers) would work better with a screw drive? How can tightening the nuts compensate for the play already in the gear?