Low cost laser cut syringe pump

Here’s a yet another design for a cheap-ish open source syringe pump. There are many designs for these out there already, including 3d printed ones, and ones made from lego.

This one is designed to be fast to build, robust, mechanically stiff, and precise. I’ve used 16 of these for over a year now to deliver water rewards and had no issues. I use them to give small water rewards of around 0.003ml, but the precision of these is mostly determined by the mechanics of the syringe, not the pump.

The total cost per pump is under $100 when making over 10. See the bill of materials (BOM) here (This should have everything you need to order and build these), and the github repo with the design files here.

An array of the pumps in action.

I’ve used both gravity fed solenoid and syringe pump systems and I’ve come to vastly prefer the latter. The main benefits of using syringe pumps over solenoid valves for reward delivery are:

  • Independence of flow speed. With a gravity fed system, the reward size is controlled by timing the valve opening. For small reward sizes and low (gravity fed) pressures, changing the length of tubing can affect the reward size as much as changing the mounting position etc.  You can also use very long tubing with pumps and still reliably deliver small rewards.
  • Liquid compatibility. Valves are notoriously hard to implement reliably with sticky liquids. Syringe pumps can deliver almost anything.
  • Easy filling/cleaning. Pulling the plunger back all the way on a syringe pump creates a small opening in the back of the syringe, which makes it possible to flush the tubing and syringe, and/or conveniently fill the system from the other end. Simply pushing the plunger forwards a bit closes the system, so that water can be filled easily without air bubbles.

The main downside is size, and possibly the slightly lower delivery speed, though depending on the motor and threading on the driving screw this could be made almost equivalent to a solenoid.

Rendering of the design – the M8 threaded rod is not shown here.


This design is built around a few simple ubiquitous components that can all be ordered online and assembled with very few tools:

  • A pair of extruded aluminum profiles to form a stable base.
  • A standard stepper motor, with some coupling and a standard M8 threaded rod and M8 nuts for creating precise linear motion (these are pretty terrible for running smoothness, but we’re not making a 3d printer here, so it doesn’t matter). An acme thread and nuts could be substituted for faster travel, but the M8 seems perfect for getting enough speed and very high precision, and the threaded rods are cheap.  By using two M8 nuts that are pre-loaded against each other, backlash is eliminated, and the pair simultaneously holds the sled assembly together (you should still apply some hot glue).
  • A pair of round precision rods and 4 standard linear bearings to ensure clean linear motion of the sled. I used 10mm rods here, but 8 or even 6mm should work just as well, this would just require changing the hole sizes for accommodating the bearing OD.
  • A set of laser cut acrylic parts that hold everything together and form the clamps for holding the syringe. Apart from some screws, no other custom parts are required. The laser cut parts that are screwed together, and the linear bearings can be fixed with a hot glue gun. If you want to modify the design you can do most edits just with illustrator.
  • Pro tip: Ask your laser cutting place to peel the backing paper before cutting the parts. No one is going to judge you for some burn marks on the pumps, but peeling the paper off all the parts is easily the most annoying part of the assembly process.
  • Pro tip 2: If you’re getting your M8 threaded rods and precision linear rails in longer sizes, which is likely, you will want to borrow someones angle grinder, or buy one, to cut them to length. This is not a job for a dremel.

The control software is very simple, I just use a teensy with the accelstepper library and a standard stepper driver. Once the volume/step is calibrated, delivering reward boils down ot just issuing forward backward commands, for example via a serial interface from a python program , or matlab etc.

As an extra flourish, it is nice to turn off the motor current when the motor is not moving – this keeps it from heating up. Also, when running multiple pumps on the same rig this might be required to keep the power supply fuse from tripping, as each stepper motor can consume ~1A when energized regardless of whether it is moving or under load. The stepper driver I used here, as do almost all of them, has an EN pin that can be used to de-energize the motor. One important caveat for this is to not simply de-energize the motor immediately after it was moved, but to wait ~100-500ms or so. This is because if an accelerated motor is de-energized, it can continue to spin for a few steps. Keeping the field on for a while serves to brake the motor, so it can then be safely de-energized without accidentally delivering more liquid than intended.


This entry was posted in Technical things. Bookmark the permalink.

Comments are closed.