Fraction Collector

I haven’t posted much about my builds- mostly because I’m swamped with work and family. But I can’t resist with this one.

Our flash chromatography system was acting up, and so the saying goes: necessity is the mother of invention. Rather than try to coax the equipment to keep eeking out 48 samples with the occasional hardware failure, I just decided to program my own system that could do exactly what I wanted. More sample collection capacity, more control, and more arduino!

I hijacked my XY plotter (purchased a few years ago to build a microbial biopointilism plotter), and coded a relatively simple XY coordinate grid that was based on a cheap test tube rack (Amazon/Ebay). In doing so, I now have 5 racks of 24 tubes, for a whopping 120 tubes at 50ml each. That’s a grand total of 6 liters of fractionation capacity. Oh yeah.

The plotter already had simple limit switches on the X+/X- and Y+/Y- planes, so I started out writing a simple “homing” sketch to get to (0,0) at the bottom left, then basically just placed the first tube rack under that first coordinate. The collector head will stay over the tube for a defined period of time, which is linearly proportional to the volume that we want to collect. Once that time is up, it moves a specified number of steps to the next tube. The spacing between the row of 8 tubes is constant, but then it needs to move to the next row like a typewriter- same movement between racks. The movement is actually pretty easy, and it only took some minor tweaking to get all of the tube racks aligned with the code.

Next I implemented a 12vdc pinch valve to be able to close the flow while the collector head moves between rows and racks. Tube to tube didn’t suffer any sample losses, so it only turns off the flow while zig-zagging from one row to the next.

I then made a custom 25-pin din cable end to plug into a masterflex digital peristaltic pump, and this allows us to remotely control the solvent flow on vs off. No need to change the flowrate, just keep it at a nice simple isocratic flow. (or one thing I am considering is altering the flowrate based on the column backpressure, so the fraction volume doesn’t tail off as pressure increases).

There is a serial interface with a computer, so the collector head can be steered manually, the valves and the pumps activated, etc. The software/code is arduino-based, and I hosted it over on Github here. Please be kind, I’m a biochemist not a programmer. 😉

Regarding the code… Right now it is only using a delay function to set the time for each sample. I have a draft program coded that uses the system clock to keep track of the fraction time, so the microprocessor can actually think and do other things- like pause, or modify the program while it is running. I’ll upload that when I get it working, but for now the delay is working well. Also I have considered abandoning the laptop and just using a LCD screen or some form of readout, with buttons or some human interface to control the robotic arm and program, but the serial interface is easy and convenient, and it works. Done is better than perfect!

Hardware involved:

  • Makeblock XY plotter kit- with electronics
  • BioChemValve Pinch valve, normally closed, 12vdc
  • A masterflex peristaltic pump and tubing
  • Chromatography column of your liking
  • Luer lock fittings for the pump tubing
  • Zipties to hold the tubing to the cables and the fraction head
  • 5vdc 2x Relay board (or suitable setup to control the pinch valve)
  • 25 pin din, male, solder cup adapter (or as needed for the pump interface)
  • rj11 6 wire data cables to tap into the MakeBlock Orion (Arduino) board
  • A 12vdc 2A power source for the pinch valve
  • And a laptop or computer with Arduino IDE installed on it

I have programmed our Tecan and have done some other small robotics projects in lab, but this is my first project that has become a workhorse of the lab. With my initial success, I’m now trying to hijack a $22 ebay robot kit for fraction collection.

The number of fraction collectors that one needs is always n+1…