XY Table

XY_Table.zip (1582Bytes)

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.


Excellent build as usual

Excellent build as usual Geir, looks great in the red!

Love the in-line belt tensioners too, I don’t think I’ve seen that approach before.

Thank you for your comment

Thank you for your comment TeleFox. And yes I’m quite happy with the belt tensioners. I had a hard time figuring out how to mount the belts and control the tension, and then this idea came to me and it works great.

Trying to 3D print me out of a job???

My employer’s schtick is making automated lab equipment like it’s some amazing thing. Well, they charge customers like it’s robotic gold. Great piece of work, yet again.

My brother actually sent me

My brother actually sent me this link http://store.clarksonlab.com/256-068.aspx
I can’t rely compare my DIY version with this commercial one, but still… mine is 1/100 of the price and fully hackable :slight_smile:

schematic and code

Can we get sum schematic and code

I don’t have any

I don’t have any schematics as this was a ‘solder as we go along’ type of project, but I have added the Arduino sketch if you’re interested.

Question about the 28BYJ-48

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. 

Thank you very much for this

Thank you very much for this information. And yes, it’s the same problems with the 12V version.
I have been struggling with this for quite a while and thought it was either something with my programming or my build (friction on the sliders, tension on the belts or something else…).
What puzzled me was the consistency of the errors, but it all makes sense now.
Luckily with the microwell plate I don’t need as sub-mm accuracy so it works fine, but for CNC or a laser device these motors are no good!

I think this problem should be stated on the YourDuino.com product page http://arduino-direct.com/sunshop/index.php?l=product_detail&p=126

Just realized I had not commented yet…

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.


Thank you for your kind words Chris

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.


This really cool!

This instrument is the

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

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 https://www.robotshop.com/letsmakerobots/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.

Thank you Geir- you might

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…

Sketchup models

Your project is great!
I’d like to take it as a starting point to make one for me, can you share your sketchup models please?

The files are over at

The files are over at http://www.thingiverse.com/thing:18678

Best of luck !


Thank you!

Running the micropump

I am in the middle of my Senior Design project here at Georgia Tech and am integrating a Bartels-Mikrotechnik mp-6 into my design.  could you share with me how you controlled the micropump with the arduino?



As I don’t have the pump

As I don’t have the pump any more this is by memory. But I used the mp6-OEM driver to control the pump. As I recall the driver was set up for full flow and I just switched it on and off for a period based on a setting from a potentiometer.
Best of luck with your project.