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.

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 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.

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 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 :-)

Can we get sum schematic and code

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.

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 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

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.