Syringes pumps are classic elements found in most labs that involve some fluidics. They allow very accurate and stable flow rates over a large dynamic range from a few nanolitres per second to a few millilitres per second in both withdrawal and injection modes. Under some circumstances they also tolerate strong acid and bases as well as solvents. Their only problem is their price that can easily go up to $5,000US for a single unit. Some manufacturers make cheaper models, but they are still pretty expensive.
In this post, I will show how I have successfully built my own syringe pump for less than $50US using a 3D Printer. I have included the stereolitography models at the end of this page, under the “resources” section. Just be aware that the tolerance might change a little bit with your own 3D Printer and that it may require some tuning during assembly. The accuracy of your pump will depend on how much attention you put to the small moving parts.
Check Figure 1 for assembly instructions.
Step 1. Print the 3D models with 200 µm layers and glue some M6 nuts into the various holes. Be careful not to put glue into the threading itself. You will also need a 100 mm M6 threaded rod with two nuts, two M4 bolts, a ST35 stepper motor (check your local distributor, they cost less than $30US) and two push buttons. Finally, you will need two rods of 4 mm diameter and a 6-4 tube that you will cut into two 10 mm pieces to act as guide for the rods. This may require some careful checks at your local DIY store because you want the rods to freely move into the cylinder without friction but there should not be too much freedom as well. Here, I have found brass rods that nicely fit into an aluminium tube. Not all rods behaved the same and I had to test a couple of them to find the best one (basically, this is how you manage to look like an idiot in the middle of a store ;-)).
Step 2. Take the stepper motor, the shaft adapter that you have printed and the threaded rod. Fix the two nuts at the very end of the rod using the nut-against-nut technique. To do so, you will have to use two wrenches to drive one nut clockwise and the other one counter-clockwise. When firmly adjusted, glue the rod into the shaft adapter by taking care that it goes straight. One technique is to assemble your pump while the glue is still wet without the moving piece at the centre. Put your pump vertically and make the motor turn until the glue sets completely (about 24 hours). That way, your rod will be perfectly centred and the glue will be evenly distributed.
Step 3. Glue the two guides into the sliding part as the parts from Step 2 are setting. Be careful not to split glue inside the guides. I had to use a file (tool) to nicely adapt the guides into the 3D model. Don’t try to melt your model with heat to glue the two guides as it does not work very well in practice.
Step 4. Once you have applied the glue in Step 2, attach the motor to the base using the two M4 bolts. Put the push button in place, it will later allow you to know when to stop the motor.
Step 5. Glue the two rods inside the model. Once again, you may skip Step 6 in a first place to ensure good alignment. Do not glue the last plastic piece because you will have to remove it later.
Step 6. Once the glue from Step 2, Step 3 and Step 5 has set, you can remove the last piece and insert the sliding model from Step 2. Simply make the motor turn using any stepper controller you have on hand and let the nut take the threading. Take care that the side rods fit nicely into the guides.
Step 7. Complete your pump by inserting the last piece with its push button. I advise that you to fix the pump onto a support like a steel plate using four M6 bolts. You will also have to adjust the position of this last piece such that the pump will cover the full spectrum of your syringe. For the syringes, ask your local supplier (or pharmacy) for 5 ml syringes and eventually show them the picture from Figure 1 if they have different models. Mine were 12.2 mm wide (inner diameter) and the piston travel was 45 mm for 5 ml.
Let’s now get back to how the syringe pump is working.
The concept of a syringe pump is to drive the piston of a syringe back and forth to produce withdrawal (pulling) and injection (pushing) modes of operation. Due to the shapes of syringes, the pump is composed of only a few pieces: a frame that holds the main part of the syringe and a moving piece that is attached to the syringe piston. The linear travel is ensured by a linear actuator that can be made by attaching a threaded bolt to a precision motor. By including a threaded nut into the moving piece, the rotary motion of the bolt is transformed into a linear movement of the piston. You may worry about the motor and think it will be an expensive piece of equipment but it’s not: a simple stepper motor will do the job.
Stepper motors work by rotating in steps (hence their name) instead of a continuous motion. Ideally, each step will result in a small rotation of the shaft that depends on the number of poles of the motor and whatever it is geared or not. In practice, some steps will be slightly larger than others and the performance of our pump will be limited by the performance of the motor used. Here, I have built the pump using a ST35 stepper motor that rotates 15° per step, with an additional reduction ratio of 1:85 thanks to a beautifully made integrated gear box. As a consequence, each step of the ST35 stepper motor will result in a rotation of about 0.18° and it takes 2040 steps to make a full 360° turn.
Because the M6 thread used to drive the piston has a pitch of 1 mm, each full revolution of the stepper motor will make the piston moves 1 mm and so a single step correspond to a movement of 1/2040 mm (~0.5 µm). The syringe used has an internal diameter of 12.2 mm and so the volume displaced by the piston for one step is on the order of 60 nanolitres. Finally, the ST35 datasheet gives a maximum speed of 800 steps per second which translates to a maximum flow rate of 46 µl/s (about 165 ml/h). Using different syringes, gear ratio or maximum step speed will result in different maximum flow rate. On the other hand, technically speaking, you can lower the flow rate to any value you want by using longer idle times between steps but you will ultimately be limited by the fluidic part of the pump. You will have to experiment with your own pump to check how slow it can go. Commercial syringe pumps have dynamic range on the order of 1:10000 so this gives you an order of magnitude to compare with professionnal devices.
Let’s now check how our pump performs!
In a first experiment I have run the pump at 41.25 ml/h (5 ms between steps) with the syringe full of water. I used the syringe pump to inject water into a beaker that I had weighted first. After a measured period of time (192.19 seconds), the pump was stopped and the beaker weighted again. By measuring the mass change (2.190 grams) I was able to compare the experimental average flow rate with the expected one (got from the design specification) which lead to an accuracy of ±0.5%. Because the scale itself had an accuracy of ±0.3%, we can estimate that the total accuracy of the pump was better than ±0.6% (square root of 0.52%+0.32%). This is extremely satisfactory for our first prototype!
But the average accuracy is not everything; it does not tell you how the flow rate eventually changes during operation at given moments. To understand this, remember that the step angle is not as regular as we would like and that the mechanics of the pump itself may produce some deviation. You may argue that it is not that important as long as the flow rate on a sufficiently long period is accurate but it is not always the case. For instance, if you want to use the syringe pump to mix two chemicals with a precise ratio, you will want the ratio to be constant at all time and not only on a sufficiently long average time. Mixing one part of alcohol with two parts of oxidizer followed by 2 parts of alcohol with one part of oxidizer is really not the same as keeping a 1:1 ratio for all the experiment and you will get very different products at the end!
The only way to check the flow rate regularity is to record it at a fast enough rate and watch how it deviates from the mean value. The easiest way to get a flow rate reading is to [»] measure the pressure drop using a [»] data logger. At such low flow rates, we can use a small tube to create a Poiseuille pressure drop that will be directly proportional to the flow rate. I have used a 1 mm (inner diameter) silicon tube of 3 meters long to create the pressure drop which was expected to be about 15 mbar at 42 ml/h. Accordingly, I have used my 35 mbar differential pressure sensor PCEFA6G. The results of withdrawal and injection tests are given on Figure 2 and Figure 3 respectively where about 2.1 ml of water were pumped.
They both show a relatively stable behaviour with some cyclic patterns that are more regular in the case of the withdrawal operations. The withdrawal test showed a deviation of about 5.5% (for 80% of the points) and the injection test showed a deviation of about 3.0% (for 80% of the points). The maximum figures were 12.4% and 9.3% deviation respectively. Also, some linear drift was recorded: about 0.6% for withdrawal and 3.3% for the injection tests. It is not clear however if the drift is mechanical or due to the pressure sensor that is known to present some drift in time. This has to be investigated further.
The instantaneous flow rate is therefore less accurate than the average one but this was expected. Analysis of Figure 2 clearly reveals a cyclic pattern that occurs at every full rotation of the motor shaft. This can either be due to non-regular step angles but also to excessive freedom of the pump moving piece. I doubt the setup could be stiffened more because I have already used the best guide parts I could find. Tests should then be performed with a stepper motor that has a better linearity and step angle regularity.
The overall behaviour is still extremely satisfactory and I am currently building an Arduino based solution so that everybody can build one at home :-) Be sure to stay tuned for updates because more is to come!
You may download the stereolitography (.stl) files for your own printer here. Be sure to use 0.2 mm layers to prevent as much as possible issues. You will also have to rotate the models to adapt best to your printer.
You may also like: