Will Patrick

How to make almost anything

Open source syringe pump

open source syringe pump open source syringe pump open source syringe pump open source syringe pump

We (Will Patrick, Taylor Levy and Che-Wei Wang) have built an open source syringe pump to run microfluidic chips. Other than a few off the shelf parts, the pump is entirely fabricated using a 3D printer and a tabletop CNC mill. A custom circuit board powers and controls the pump via USB. We hope you download the software and design files in the GitHub repository and make your own.

A note on the collaborative nature of this project. Will Patrick completed the electronics and hardware, which encompass the top several sections of this project. Taylor, Will and Che-Wei together wrote the software (bottom section).


Written by Will

Biological computation occurs in an aqueous environment. The control of small volumes of liquid is critical to biological experimentation. Thus, biology researchers spend a large portion of their time using manual liquid handling tools, such as the pipette, to move around liquids microliter by microliter. Errors in using pipettes plague new and old researchers alike, causing experimental errors and making experiments difficult to repeat.

To overcome these problems, engineers have developed new tools such as automated liquid handlers and microfluidic chips. Automated liquid handlers use a computer controlled pipette tip to suck, move, and dispense nano to microliters of liquid. The tabletop devices can be programmed by a biologist to move liquid well-to-well. Microfluidics are the semiconductor chips of biology. They use small channels (typically 1 - 200 micrometers in width) to mix, separate, and incubate small amounts of liquid. Various micro-devices have been implemented within these chips in order to replicate many of the functions of a lab on a single chip.

These technologies have the potential to enable rapid prototyping in biology by automating liquid handling, multiplexing hundreds of experiments at once, and lowering costs. However, if you walk into a typical biology lab, you'll rarely see these tools being used by researchers.

Why haven’t these technologies been widely adopted when there is so much potential benefit? We spoke to several biological engineers to find out, including Dr. David Kong at the MIT Lincoln Lab and Alec Nielsen and Octavio Mondragon-Palomino at the MIT Synthetic Biology Center. These folks cited many issues with existing microfluidic chips and automated liquid handlers: Existing microfluidic chips require expertise to manufacture and operate. Microfluidic chips may be less than an inch in size, but require an entire benchtop of tubing, pumps, and electronics to move liquid in and out. Commerical tools to move liquid in and out of microfluidic chips, including syringe pumps, can be expensive and difficult to program. Automated liquid handlers can require as much time to program a task as it takes to do the task by hand. The protocols and programs for running both these technologies are not typically shared between labs. These issues (and probably several more that have not been identified here), impede adoption of these technologies and create opportunities to design new technologies that are better suited to meet the needs of researchers.

In order to take a small step towards overcoming these issues, we’ve designed an open-source syringe pump that can be fabricated with low cost prototyping tools and operated by a computer program via USB. Syringe pumps are used for many applications, including moving liquid in and out of microfluidic devices. Commercial syringe pumps (example, example, example) tend to be expensive ($500 to $2000) and have limited user interfaces and functionality. As a result, many people have created their own DIY syringe pumps (example, example, example). We’ve tried to build on these design to create a pump that is easy to assemble and use and is extensible to new applications. We hope that this project is one of many examples of open source liquid handling technologies which enable greater adoption of these tools.

How it works: Mechanical and Electrical Components

Worked completed by Will Patrick

Snap fit syringe loading

open source syringe pump

Powered by USB

open source syringe pump

Modular parts create new functions

open source syringe pump

The syringe pump is designed for ease of use and assembly. All of the parts snap and screw together and the pump is powered and programmed via USB. A processing-based user interface controls the pump allowing the user to change the desired flow rate and the fluid volume to move.

The system pictured above pushes or pulls fluid using finite, discrete steps. The step size is a function of the diameter of the syringe, the thread size of the lead screw, and the number of steps per revolution of the stepper motor. The minimum step size of the system pictured above is 94 nL. The syringe is a 1 ml (1 cc) syringe with a diameter of 4.78 mm. The lead screw has 12 threads per inch. The stepper motor is a bipolar NEMA 17 with 200 steps per revolution and is being half stepped by the microcontroller (for a total of 400 steps per revolution).

The stepper motor is being controlled using a custom fabricated circuit board, which is pictured above. The circuit board uses a Atmel ATMega 328p microcontroller which takes in commands via USB serial to control an Allegro A3909 low voltage (4-18 V) dual stepper motor driver. The board is powered and communicates via serial using a FTDI USB cable. The ATMega 328p is boot loaded with Arduino. Firmware on the ATMega takes in G code commands via serial and then moves the stepper motor the specified number of steps at the specified speed.

The 3D printed parts screw together and the syringe and motor press fit into them. This allows the entire system to be modular and adaptable to the desired function. Thus far, pieces have been designed to operate 1 cc , 10 cc, and 100 cc syringes as can be seen in the lower image above. All of the STL files for these designs can be found in the GitHub repository.

Hardware Assembly

Completed by Will Patrick

assembly of the syringe pump assembly of the syringe pump assembly of the syringe pump

The syringe pump is composed of the following parts, which can be seen in the second image above (left to right): A FTDI USB cable, top and bottom pieces of the electronics housing, the milled circuit board, a NEMA 17 stepper motor, a 3/8 inch lead screw with 12 threads per inch, a motor housing, a lower syringe holder, an upper syringe holder, two 1cc syringes, 1.5mm OD tubing, and an exemplary microfluidic chip built using a Form Labs, Form 1 machine. The electronics container, the motor housing, and the lower and upper syringe holders are all 3D printed. These pieces were designed in SolidWorks and printed on the Makerbot Replicator 2 using 1.75mm white PLA filament (0.400mm z resolution). The milled circuit board was designed using EagleCAD and milled using a Roland Modela desktop CNC machine. The Eagle design files for for the circuit board can be found in the GitHub repository.

Assembly (GIF above) begins by screwing together the motor housing and lower syringe holder. The stepper motor then press fits into place. The upper syringe holder spins down onto the lower syringe holder. Eventually the square extrusion on the upper holder is fed into the square bushing of the lower holder. Up to 6 syringes can be inserted into the press fit grooves.

Hardware and Electronics: Development and Iterations

Completed by Will Patrick

city of parts

Circuit board

assembly of the syringe pump

Designing, fabricating, and stuffing the milled circuit board required many attempts and re-designs. The image abive shows a handful (not all!) of the circuits boards fabricated during the project. From left to right in the image, some problems included: (1) using a AT Tiny 44, which did not have enough memory to run the Arduino program, (2) failing to mill the boards correctly, (3) wiring RX:RX and TX:TX instead of RX:TX, (4) not wiring all of the FTDI pins to the correct ATMega pins, (5) not connecting all ATMega ground pins to ground and VCC pins to VCC, (6) incorrectly masking the .010" traces needed for the 8 mil leads on the A3903 motor driver, (7) overheating the A3909 before using a heat sink, and (8) milling thin leads for the 4 pin JST connector for the motor, leading the connector to rip off the board.

The board was bootloaded with Arduino by following a great tutorial written by Amir Lazarovich for his project. Thanks, Amir!

Evolution of parts

assembly of the syringe pump assembly of the syringe pump

One of the greatest benefits of 3D printing is allowing rapid prototyping during product development. In this project, many iterations of pieces were printed in order to arrive at the final design.

Screw and press fits

assembly of the syringe pump assembly of the syringe pump

In order to create proper fits between pieces, many test pieces were printed in order to find the precise dimensions.

How it works: Software

Completed by Will Patrick, Che-Wei Wang and Taylor Levy

Controlled using Arduino and Processing

Completed by Taylor, Will and Che-Wei

The NEMA 17 stepper motor is controlled by firmware written in Arduino and loaded on the ATMega chip. The code parses G code commands and pulses the stepper motor the specified number of steps at a specified speed. An example G code is "G00 S100 X200" where "S100" tells the microcontroller to move at 100 steps per second and "X200" tells the microcontroller to move clockwise 200 steps. These codes are generated by the processing script running on the computer and are communicated at 9600 Hz. The latest processing and Arduino sketches can be found in the GitHub repository.

processing user interface

Controlling two pumps at once

Completed by Will Patrick


This project was completed in partnership with Che-Wei Wang and Taylor Levy of the Playful Systems group at the MIT Media Lab and CW&T. We decided to make this pump while in an IAP course taught by Dr. David Kong, Open-source microfluidics for synthetic biology.

Many folks were crucial in the development of this project. Alec Nielsen, David Kong, Octavio Mondragón-Palomino, and Jaime Rivera provided important insights about the issues with existing syringe pumps. Dr. Neri Oxman and Steven Keating provided wisdom and advice throughout the project. Jean-Fraocois Duval helped debug faulty boards. Amir Lazorvich helped with bootloading AtMega 328p with Arduino. Neil Gershenfeld provided the electronics and CNC milling resources and provided the inspiration to try to make (almost) anything. Thank you, everyone!