Component: Syringe Pump
The purpose of this component is to provide precise ~1µL metering of a liquid using a standard luer
lock 5mL syringe.
The syringe pump includes a stepper motor and a limit switch to home the device between uses. The
intention is that the user can include a syringe pump in a larger system and use it to dispense
liquid in a precise manner.
Ideally this tool is used with a fluid source, and a one way valve. On retraction [positive values]
in the source code, the syringe aspirates fluid from the source via the one way valve, and on
dispense [negative values] the syringe pumps fluid into your target system.
The pump can easily be integrated with 3D printers or other liquid handling systems.
File available at OnShape Link
Source Code
// warning: without a powered usb-hub, currentScale > 0.5 are likely to fail
await syringeStepper.setCurrent(0.8);
await syringeStepper.setStepsPerUnit(200);
// function that defines a homing command using homing workflow
async function home(vel){
// retract slide to limit switch
while (await syringeStepper.getLimitState()) {
await syringeStepper.velocity(vel);
}
// at limit switch, stop moving and set home position to 0
await syringeStepper.velocity(0);
await syringeStepper.setPosition(0);
// pause and move off the limit switch
await delay(500);
await syringeStepper.relative(2,5);
// pause and set home position
await delay(500);
await syringeStepper.setPosition(0);
}
// function that defines the homing workflow
async function homeSeq(){
// fast home to limit switch
await home(-10);
// slow home to limit switch for increased precision
await home(-1);
// dispense to prime
await syringeStepper.relative(2,5);
}
// run the homing sequence
await homeSeq();
// example code: aspirate 45mm, pause, and dispense all 45mm
await syringeStepper.absolute(45,5);
await delay(1000);
await syringeStepper.absolute(0,5);
![](IMG_9692.jpeg)
![](IMG_9689.jpeg)
![](IMG_9690.jpeg)