Skip to content

FirePump10

firepick1 (localhost) edited this page Jun 30, 2016 · 21 revisions

10ml Syringe Pump

FirePump10™ is a cost effective 10ml syringe pump that can dispense microliter amounts of liquids with low or high viscosity. The pump accepts standard 10ml syringes (e.g., EasyGlide 10ml), which can be changed easily with a combination of M2.5 and M3 hex wrenches.

Function

The pump is driven by a NEMA14 200steps/revolution stepper motor that engages a 3D-printed herringbone gear train to turn a pair of M6 bolts that act as synchronized lead screws to provide symmetric force for pushing and pulling the syringe plunger. The pump frame is simply a length of standard 20x40mm aluminum extrusion (e.g., Misumi) that affords many customization options and also lends itself to integration with a dispensing robot.

The syringe pump stepper can be driven with a standard RepRap setup. For example, RAMPS 1.4, DRV8824 at 8microsteps, motor supply 12V, Arduino Mega2560 works fine. Smoothie, TinyG and other stepper drivers should also work fine.

Pump testing is conducted with FireStep software but similar results can be obtained with other software. As of this writing there is no application software for the syringe pump, but that is planned as an extension to firenodejs.

An optional optical minimum limit switch can be added for homing.

Calculating Dispensed Volume

Dispensed volume is dependent on syringe dimensions. If your syringe is not shown in the table below, simply measure the 10ml gradation distance and calculate the steps/mL as follows:

Syringe 10ml distance Steps/mL
EasyGlide 10ml 57mm 1140
  • StepsPer_mL = 200 * 10mL_GradationDistance / 10

For example, with an EasyGlide 10ml syringe and 8 microsteps/step, we need 9.12 microsteps to dispense 1 microliter.

NOTE: The above equation is based on the 1mm pitch of M6 coarse bolts. If you use a different pitch, use the appropriate equation.

Dispensing Viscous Liquids

Viscous liquids do not respond instantly to syringe plunger advance. For viscous liquids, use the "push-hold-retract" cycle for a controlled pressure/time dispensing process:

  1. Push the syringe plunger to a position beyond the desired volume. This creates a pressure wave that initiates flow.
  2. Hold the push position for several milliseconds to allow the flow to reach desired volume.
  3. Retract the syringe plunger to a position that corresponds to the desired volume. This cancels the applied pressure and halts the flow.

For example, with FireStep we might dispense 1mL as follows:

  1. {"systv":0.1} set acceleration time to 0.1 seconds
  2. {"sysmv":4000} set maximum pulse frequency to 4000 microsteps per second
  3. {"zpo":0} set z-axis position to zero
  4. {"movz":400} push plunger beyond desired volume to apply pressure and initiate flow
  5. {"idl":0} hold 0ms
  6. {"movz":10} retract to dispensed volume (~1 microliter)

For viscous liquids, you may need to prime the syringe pump before use with several empty push-hold-retrace cycles until liquid dispenses.

Each dispensed liquid will require different parameters:

  • push acceleration time should be just short enough to prevent step loss caused by fluid backpressure. Insufficient acceleration time will cause step loss
  • push velocity should be low enough to generate required torque. Excessive velocity will cause step loss
  • push position should be large enough to create pressure sufficient to initiate flow. Excessive push distance will cause step loss
  • hold time should be long enough to allow liquid time to dispense desired volume
  • retract position is determined entirely by desired dispense volume

Additionally, note that some parameters such as push position may need to be adjusted slightly according to how full the syringe is. Full syringes may require more pressure to initiate flow.

Required

TBD

Clone this wiki locally