Overview#
A single syringe pump connected to a controller
The aim of this project is to provide a capable, cost-effective, and easy-to-build syringe pump. This documentation includes hardware design files, software source files, and instructions for building and using a syringe pump and controller.
The design is modular, making it flexible and potentially compatible with a variety of pump hardware and control software. A single controller can connect to up to four pumps. The pumps can be operated manually via the controller’s built-in display, buttons, and knob, or controlled remotely from software using serial commands (e.g., pyControl).
Up to 4 pumps can be chained together and independently controlled
This project was developed in the Karpova Lab at HHMI's Janelia Research Campus.
Features#
-
Compact#
- 24 cm x 9 cm pump footprint
- Can be mounted vertically to DIN rail
-
Silent operation#
- The controller uses a TMC5041 motor driver which features StealthChop for silent operation
-
Spring loaded clamps#
- Securely holds syringes in place while also allowing them to be quickly and easily loaded and unloaded
-
Rich interface#
- 1.14" color display with 240x135 pixels
- 3 buttons for additional control
- Rotary encoder with built-in push button
-
Integrated Limit Switches#
- Pull limit prevents the plunger from being fully extracted from the barrel and making a mess
- Push limit detects when a syringe is empty, enabling automatic session termination or seamless transition to another pump.
-
Modular#
- The controller accepts connector modules that provide platform specific connectors for power and communication.
- A single controller can manage the electronics (stepper motor + limit switches) of up to 4 pumps via 0.1" pin headers.
-
Easy to source and build#
- Estimated cost of ~$175 per pump and ~$100 per controller. Only 1 controller is needed for up to 4 pumps.
- Less than 10 minutes to assemble
-
Open-source#
- Modify and customize to your needs
- Share improvements with the community for everyone's benefit
Specifications#
Flow rate#
The max plunger speed is 30 cm/min1. The max flow rate will depend on the syringe size used. Multiply the max plunger speed by the cross-sectional area (cm2) of the syringe barrel to determine the flow rate (mL/min). Details for some common syringes can be found here.
Below are the max flow rates for some plastic BD syringes.
Syringe | Barrel inner diameter (cm) |
Minimum volume2 (µL) |
Maximum flow rate (mL/min) |
---|---|---|---|
10 mL BD Luer-Lok | 1.45 | 1.7 | 50 |
30 mL BD Luer-Lok | 2.17 | 3.7 | 111 |
50 mL BD Luer-Lok | 2.67 | 5.6 | 168 |
Modifications for different syringe sizes
The frame design and limit switch positions are based on the dimensions of a 50 mL plastic syringe, however you may want to use a smaller syringe for increased precision. Alternaitve syringes can be used by adding an extension to the carriage for pushing the limit switch and modifying the 3D printed "clamp" parts to adjust to the different syringe thickness. Design files for 30mL parts are available here.
Accuracy and precision#
Below is a comparison between this open-source syringe pump and a commercial Harvard Apparatus PHD 2200 syringe pump.
Measurement details
The measurements were taken by dispensing liquid into a small beaker and then recording the weight using a digital scale. The liquid was dispensed in 50µL and 250µL increments through tubing and a 21 gauge needle that was submerged in the liquid (to avoid variations from droplet formation). For each pump, 50 samples at each volume were taken.
Additional information#
Other open-source syringe pump projects#
Project | Author |
---|---|
Open-source syringe pump | Moscow State University's Mass Spectrometry Lab |
Open-source syringe pump | Michigan Tech's Open Sustainability Technology Lab |
Poisedon | Pachter Lab |
3D Printed Syringe Pump Rack | aldricnegrier |
DIY Syringe Pump | Naroom |
OpenSyringePump | Electrolab Hackerspace |
Karpova Lab#
pyControl#
- official documentation
- forums / discussions
- GitHub
- ready to purchase hardware at Open Ephys Store and Labmaker
Documentation tools#
- MkDocs
- Material for MkDocs
- Interactive HTML BOM plugin for KiCad
- Excalidraw
- Markdown Tables Generator
-
When powered by a 12V supply, this is a safe value where we don't see any signs of missed steps. If you are pushing a viscous fluid, you may need to reduce the speed or increase the voltage up to 24V. ↩
-
Here we define the minimum volume as the volume that is dispensed from a single step rotation of the stepper motor. This volume is a function of the lead screw pitch, the number of steps per revolution of the motor, and the cross-sectional area of the syringe barrel. In this case, the lead screw pitch is 2 mm and the number of steps the motor has is 200, resulting in a carriage displacement of 10 µm per step. Theoretically, since our stepper motor driver uses microstepping where it further divides the step size by 256, the minimum volume is 1/256th of the stated minimum volume. In practice, other factors such as needle gauge, tubing properties (e.g. elasticity), fluid properties (viscosity, surface tension, etc.), and plunger properties (stiffness, friction, etc.) overshadow microstep size as the dominant source of variation. ↩