Openpump is an open-source syringe pump that dispenses fluids over a set period of time. Syringe pumps are used to administer medication in hospitals, but also in laboratory environments performing chemical or biomedical research. Maybe you'd like to use syringe pump to extruding paste (e.g. chocolate) during 3D printing, or as part of a bioprinter when printing with biological materials?
Openpump is a collaboratively designed general-purpose syringe pump platform that can be customised for different domains. Making the hardware design available under an open source license allows anyone to improve and contribute to the device design. It also enables the design to be modified for very specific use cases and makes the devices easy to repair.
The mechanical/CAD design of Openpump is based on work by Bas Wijnen, Emily Hunt, Gerald Anzalone and Joshua Pearce of Michigan Tech Open Sustainaibility Lab. The 3D-printed parts were designed in OpenSCAD. (To learn how to use OpenSCAD, see the Openpump blog). To render the different 3D parts in linear_actuator_v0.scad
:
- Install the MOST SCAD libraries by downloading them as a zip file and adding to OpenSCAD path using
export OPENSCADPATH=
<your local path> (in~/.profile
on Ubuntu), or usingFile->Show Library Folder
to add them to your OpenSCAD library. - Change
render_part()
to the 3D part you want to render. You needend_motor
(1),end_idler
(2),carriage_syringe_pump
(4),clamp_syringe_pump
(5) andsyringe_plunger_retainer
(7) at a minimum. - Before printing the syringe holder (part 5,
clamp_syringe_pump
), set the variabled_syringe
to the be the same as the diameter of the syringe body you're using. - Before printing the motor end (part 1,
end_motor
) set themotor
variable to the size of stepper motor you're using, e.g.NEMA17
- I had best results printing the idler end (part 2,
end_idler
) with support material.
The step-by-step build instructions with pictures are in the Building the syringe pump guide.
To build the electronics, you need the following components:
- Arduino Mega 2560 (You can also use another Arduino, but you'll need something like the Sparkfun ProtoScrewShield to connect the other components as the Gameduino 2 shield covers all the pins of the regular Arduino)
- Gameduino 2, an open source hardware touchscreen (480x272 pixels) with embedded GPU
- Pololu DRV8834 Low Voltage Stepper Motor Driver Board (You're welcome to replace this with another board if you know what you're doing)
- ELMA E37 dual concentric rotary encoder (kinda optional, used for number entry)
Because the Mega2560 has its SPI pins in a different place, you need to make 3 wire hookups. Connect:
- pin 11 to pin 51 (MOSI)
- pin 12 to pin 50 (MISO)
- pin 13 to pin 52 (SCK)
You can solder these three wires directly to the pins underneath the Mega.
To view the circuit schematic (with breadboard views), use the awesome open source hardware design tool Fritzing.
To get the firmware running on your Arduino, have a look at the documentation in the firmware folder.
The software and firmware of this project is Copyright (C) 2014 Swansea University and made available under the GNU Affero General Public License (AGPL 3.0). See LICENSE.txt in the firmware folder for more information.
The CAD design file (linear_actuator_v0.scad) is Copyright 2013 Michigan Technological University and licensed under the [CC-BY-SA](Creative Commons Attribution-ShareAlike 4.0 International License) by Jerry Anzalone, developed as part of a project with the Michigan Tech Open Sustainability Technology Research Group.
The circuit schematics of this project are made available under the CERN Open Hardware License. See LICENSE.PDF in the schematics folder for more information.