Introduction: 3D Printed Syringe Pump Rack

This instructable serves to document the build process of a 3D Printed Syringe Pump Rack. The rack is composed by 5 Syringe Pumps, with this set-up you can have 2 continuous flow systems and one remaining pump (if you have the proper tubing's and valves).

A Syringe Pump is normally used to gradually administer small amounts of fluid to a patient or for use in chemical and biomedical research. Normally they allow for infuse and withdraw capabilities.

Here are the main features of this particular 3D printed Syringe Pump Rack:

- Open hardware/software

- Extremely compact size ( 7cm movement range )

- High precision lead-screw and nut

- Low cost (300€ for the 5 syringes)

- Simple to use (command line interface)

- Simple to replicate

- Minimal clean Design

Check out the videos:


With loud disco music :)

Without the loud disco music :)


Step 1: 300 USD Vs 30000 USD Syringe Pump Rack

"The most popular use of syringe drivers is in palliative care, to continuously administer analgesics (painkillers), antiemetics (medication to suppress nausea and vomiting) and other drugs. This prevents periods during which medication levels in the blood are too high or too low, and avoids the use of multiple tablets (especially in people who have difficulty swallowing). As the medication is administered subcutaneously, the area for administration is practically limitless, although edema may interfere with the action of some drugs.

Syringe drivers are also useful for delivering IV medications over several minutes. In the case of a medication which should be slowly pushed in over the course of several minutes, this device saves staff time and reduces errors.

Syringe pumps are also useful in microfluidic applications, such as microreactor design and testing, and also in chemistry for slow incorporation of a fixed volume of fluid into a solution. In enzyme kinetics syringe drivers can be used to observe rapid kinetics as part of a stopped flow apparatus. They are also sometimes used as laboratory media dispensers."

http://en.wikipedia.org/wiki/Syringe_driver

The 30000 USD Syringe Pump Rack

The neMESYS syringe pump system is probably the most advanced system on the market, extremely smooth and pulsation free fluid streams in the range of millilitres or even nano-litres per second.

A rack of 5 pumps and software cost around 30.000USD, i have already seen one working and it looks and performs outstandingly , have a look this promotional video .



The 300 USD 3D Printed Syringe Pump Rack (5 Syringes)


Costing 100 times less, i present the 3D Printed Syringe Pump Rack, featuring a very compact system, a Teflon coated threaded screw for precision, easy to replicate and is open hardware/software. For most application this units work fine, it has 0.5ul resolution on a 5ml syringe.

NOTE: The neMESYS system outperforms the 3d printed version in all aspects. This is just a price comparison to get some perspective.

Step 2: The Open Hardware Design

DOWNLOAD THE 3D SKETCHUP FILE FOR ALL THE DETAILS


The Design of the System is minimalistic, and thought out having in mind it would be 3D printed, so for that reason the pump is composed by 2 main parts, the pump's body and the pump's carrier. The idea is to 3D print as few as possible components, and by doing so, maintaining the lest possible mechanical misalignment's.

The 3D printed Syringe pump is very small compared to other commercial syringe pumps.

A single Pump is designed to operate independently from the other pumps on the rack. Simultaneous pump movements are done using software scripts.

The designs allows for 5ml 10ml and 20ml syringes to be lodged onto the pump. The design as a open hardware logo on the front.

Step 3: List of Materials

In order to build a 3D Printed Syringe Pump Rack you will need the following items:

- Filament for the 3D printer - 10€

- 5 USB mini Cable (1 for each pump) - 10€

- 15 cylindrical 5mm diameter Neodymium magnets ( 3 for each pump) - 2€

- 5 Small Nema Stepper 17 Motor 38mm length 4000gr/cm torque ( 1 for each pump) - 50€

- 10 Small hall effect sensors (2 for each pump) - 4€

- 5 Arduino Nano V3 ( 1 for each pump) - 15€

- 5 Pololu Micro stepping driver ( 1 for each pump) - 10€

- 5 Perception Teflon coated Miniature Lead screw (1 for each pump) - 80€

- 5 Lead Screw Nut (1 for each pump) - (80€)

- 10 10cm grounded hardened (H7 or H6) 6mm precision round rod (2 for each pump)- 20€

- 10 copper bearings 6mm interior (2 for each pump)- 10€

- 15 M3 screws and nuts (3 for each pump) -1€

- 1 meter Shrink sleeves -1€

- 4mm inner 6mm outer diameter Vinyl Tubing (5cm) -1€

- 1mm wire (for the motor lead-screw coupling) - 1€

- 12V power supply 2 amps per motor - 13€

- 5 Syringe 5ml 10ml or 20ml (1 for each pump)- 2€

- 10 10K ohm resistors (2 for each pump) - 1€

- 5 100uf Capacitor (1 for each pump) - 1€

Step 4: Tools and Machines

Here is the list of tools and machines necessary to help build the pumps:


- A 3D Printer or a 3DHUBS near you

- Cutting saw (to cut the motor shafts and lead screw)

- A kit of files (to file down some plastic from the 3D printed parts)

- A set of Screw drivers

- Soldering iron and wire

- Multimeter

- Computer

Step 5: 3D Printed Pump Parts

The 3D printed parts are printed with 80% infill for toughness and durability. They where printed using PLA, but can be printed using any other plastic.

Here is the list of 3d Printed parts that constitute a single Syringe pump:


- Pump Body

- Syringe Carrier

- Cable Enclosure

- Motor Enclosure

- Electronics Enclosure

Step 6: Pump Body

The Pump Body is the main part of the Pump. It holds the motor and the guide/transmission systems.

The body also holds the front part of the syringe.

The design of the body allows for 2 hall sensors to be inserted inside its chassis.

On the side of the body, there is space for inserting the cables from the hall sensors.

Print notes:

- 80% infill

- 6 external perimeters (0.4mm nozzle)

- support on


Step 7: Syringe Carrier

The Syringe carrier is the moving part of the system, it serves the function of moving the syringe back and forward.

It has a small hole on its top right corner where magnets will be inserted.

It has two holes for copper bearings and one for the nut screw.


Print notes:

- 80% infill

- Pint's best with face down

- 6 external perimeters (0.4mm nozzle)

- Support on

Step 8: Cable Enclosure

The cable enclosure is just a piece of plastic to glue or melt onto the pump body in order to hide the cables.


Print notes:

- 20% infill
- 3 external perimeters (0.4mm nozzle)

Step 9: Motor Enclosure

As the name suggests, the motor enclosure function is to enclose the motor, it has a nice open hardware logo on its front.

Print notes:

- 20% infill

- 3 external perimeters (0.4mm nozzle)


Step 10: Electronics Enclosure

The electronics enclosure has a USB mini door and a circular hole for powering the motor with 12V. It is just the right size to fit an Arduino Nano without the need of screw or glue.

Print notes:

- 20% infill

- 3 external perimeters (0.4mm nozzle)

Step 11: The 3D Printed Syringe Fixation Parts

The 3D printed syringe fixation parts are composed by 2 parts, the rear and front syringe fixation parts that we shall identify from here onwards as:

- Syringe_holder_A

- Syringe_holder_B

The rear fixation part serves the purpose of fixating the rear part of the syringe to the syringe carrier part.

The front fixation part serves the purpose of fixating the syringe to the body of the pump.

These fixation parts fit tightly fit the inside the space between the syringe and the pump.

They are fixated by using pressure, in order to fixate the syringe on-board the pump.

These parts can be modified to suit different syringes, the only modification necessary is the width of the vertical walls.

Print notes:


- 40% infill

- 3 external perimeters (0.4mm nozzle)


Step 12: Inserting the Magnets

The 3D Printed Syringe Pump was designed to have end-stop protection at the limits of the pumps movements, this is done using a magnet on the moving part and 2 hall sensors on both ends of the movement limits.

Instructions:

- Using a set of pliers push 3 neodymium magnets into the magnet socket as shown on the photos.

- Remember to align the magnetic poles always facing the same side on all pumps

Step 13: The Guide System

The guide system used is composed by two round rail calibrated reinforced shafts and two oil impregnated brass bearings.

Instructions:

- The 100mm shafts are inserted inside the passages of the pumps body, as seen on the figures.

- The next step is to insert the central pump part with the bearings in place, and lock the shafts in the housing in front of the pump.

Step 14: The Transmission System

The transmission system is composed by a motor a lead-screw and a nut.

Instructions:

- Insert the nut screw inside the syringe carrier

- lock the nut with 2 threaded screws (M2 20mm) and 2 M2 nuts

- Make sure the nut is perpendicular aligned with the syringe carrier (if not, use the file to clean some support material)

Step 15: Shortening the Motor Shaft

Instructions:

- Using a saw, shorten the stepper motor's shafts to 1.5cm in length

NOTE: be careful not to shorten it too much or else you yell render your motor useless.

Step 16: Motor Shaft to Lead Screw - Coupling

The motor shaft and the lead-screw have to be "attached" to each other. This can be done using a flexible shaft coupler. Flexible shaft coupler are quite bulky, and the miniature ones are very expensive. So i implemented a DIY flexible shaft coupler using Vinyl Tubing and Wire.

Instructions:

- Cut 20mm of Vinyl tubing (4mm interior 6mm exterior diameters)

- Insert the Vinyl tubing on to the motors shaft

- Using a strong wire, spin several loops along the motor shaft and tighten using a pair of pliers

- Screw in the lead-screw onto the Vinyl tubing until the 2 shafts collide.

- Using a strong wire, spin several loops along the Vinyl tubing and tighten using a pair of pliers


NOTE: This solution works remarkably well, and results in a strong flexible motor shaft coupling.

Step 17: Stepper Motor Fixation

Instructions:

- After the motor shaft lead-screw coupling is done, you just simply screw the lead-screw inside the screw nut. After this you need to lock the motor in place using 3 M3 16mm screws.

Step 18: Wiring the Linear Hall Effect Sensors

The linear hall effect sensor has 3 pins, VCC GND and SIGNAL. We are using 5V for VCC. The hall sensor works great with the neodymium magnet, it can detect the magnet when it 0cm to 4 cm away.

Instructions:

- Solder 3 wires to the sensor

- Use shrink tube to isolate the pins from each other

- Insert the sensor inside their housings

- Careful align the wires inside the wire housing and attached the 3D printed wire enclosure

- Using a soldering iron, solder the wire enclosure to the pump body. (be careful not to melt the plastic in a ugly way)

Step 19: The Electronics Wiring Diagram

The pump circuit is very simple, here are its components:

- Arduino Nano V3 micro-controller

- Pololu Micro Stepping Driver

- Nema 17 Stepper motor 4000gr/cm 38mm length (2 coils 4 wires)

- 2 Hall effect sensors (3 pin Vcc GDN signal)

- 12V power supply

- 2 10K ohm resistors

- 1 100uf Capacitor

Step 20: Wiring the Electronics

Follow the diagram in order to make all the necessaries connections.

Instructions:

- Solder all connections from the Motor to the micro stepper driver.

- Solder all the connections from the motor driver to the Arduino Nano.

- Solder the hall sensor's to the Arduino Nano.

- Solder the external power supply connector to the Micro stepping driver.

Step 21: Motor and Electronics Enclosure

Instructions:

- First you need to insert the motor enclosure onto the motor, be careful with the wires.

- Next you need to solder all the necessary wiring.

- Than you just need to insert the electronics onto the electronics enclosure.

- The last step is to solder the plastic using a soldering iron (be careful not to melt the plastic in a ugly way.)

Step 22: Universal Syringe Mount

The 3D printed Syringe Pump can fit the following syringe sizes:

- 5ml

- 10ml

- 20ml

I speculate glass syringes have better performance than cheap plastic ones, i have not tried glass ones, so i don't know if the fit.

Step 23: 12V Power Supply

In order to power the pumps/stepper motors we are going to need 12V. A PC power supply is perfect for the job, because it has a lot of current, and we will be needing 2A per pump - 5 pumps 10A.

Instructions:

- Open the power supply using a screwdriver

- Cut off exterior cable connectors

- Solder the green and one black wire together in order to activate the Power Supply when turned on using the switch.

- Bundle together same colour wires and isolate using some electrical tape.

- Bundle together one black and one yellow wire (make 6 groups) and position them outside the Power Supply

- Close the Power Supply

- Solder connectors on the ends of the yellow and black wires.

Test for 12V, turn on the power supply and test for 12V on all 6 terminals.

Step 24: The Mathematics - Relation Between Motor Steps and Litres

Before we go any further i need to explain the relation between motor steps and litres of liquid pumped by the syringe pump.

The facts:

The NEMA 17 stepper motor we are using has 200 steps per revolution, this means that each step is 1.8º.

The micro-stepping driver allows 16 micro-steps (intermediate) in one stepper motor step.

The motor is attached to the lead-screw, the lead-screw has a 1.22mm pitch. This means that for each 360 rotation of the lead screw the nut screw will dislocate 1.22mm.

The relations:

The system resolution is given by the following equations:

200 steps per revolution x 16 microsteps = 1.22mm

1 step = Xmm

3200 steps = 1.22mm

1 step = X

X = 1.22/3200

1 motor step = 0.00038125mm

1 motor step = 381.25nm (nanometres)

The syringe inner diameter:

The area of a circle is given by the following equation:

PixRxR.

The volume of a cylinder is given by the following equation:

PixRxRxH

A 5ml syringe has 12mm inner diameter, this means that the radius is 6mm.

So if the motor moves 1 step (381.25nm) the total volume dislocated will be as follows:

3.14 x 0.06m x 0.06m x 0.00000038125m = 4.311x10^-9m3 (cubic meter) is the resolution for a 5ml syringe

Step 25: The Arduino Stepper Library

Stepper motors are great for precision, as we just calculated a single step results in nanometres of dislocation. In order to run a stepper motor we are going to use the Acellstepper library "developed" on a paper written by David Austin. More info here:

http://fab.cba.mit.edu/classes/MIT/961.09/projects...

The Acellstepper library is under a GPL license, and has it home here:

http://www.airspayce.com/mikem/arduino/AccelSteppe...

This library allows for extremely slow stepper speeds, with is perfect for any syringe pump. Without this library this project could not have been developed, so for that reason I would like to thank the developers.

Step 26: Instaling the Firmware

Now that you have the pump wired and everything connected, connect the USB cable to the Arduino Nano to you PC and upload the syringe pump's code.

Don't forget to import the Acellstepper library to your Arduino folder.

The final code should be non blocking and should constantly checking the hall sensors for safety reasons.

NOTE: This is not the final code, you can use it for testing, i will update the code as soon as i can.

#include <AccelStepper.h>

AccelStepper stepper(1, 9, 10);  // driver step direction

char  userInput[21] = {'d','0','0','0','0','0','v','0','0','0','0','0','v','0','0','0','0','0','d','1','\r'};

int deslocamento=0;  int volume=0;  int mspeed=1;  int mdirection=0;  int data=0; int microstepping = 16;  int   msg_lenght = 0;

void setup(){  Serial.begin(9600);   stepper.setMaxSpeed(1000.0);   stepper.setAcceleration(1000.0);   stepper.setCurrentPosition(0);}

void loop() {
    delay(500);
    
    if ( data==0 ) readuserdata();
    
    if ( data==1 ){
      deslocamento = char(userInput[1] - 48)*10000  + char(userInput[2] - 48)*1000  + char(userInput[3] - 48)*100  + char(userInput[4] - 48)*10   + char(userInput[5] - 48);
      volume =       char(userInput[7] - 48)*10000  + char(userInput[8] - 48)*1000  + char(userInput[9] - 48)*100  + char(userInput[10] - 48)*10  + char(userInput[11] - 48);
      mspeed =       char(userInput[13] - 48)*10000 + char(userInput[14] - 48)*1000 + char(userInput[15] - 48)*100 + char(userInput[16] - 48)*10  + char(userInput[17] - 48);
      mdirection =   char(userInput[19] - 48);
      
      if (mdirection==0)
        deslocamento=-1*deslocamento;   
      else
        deslocamento=deslocamento;   

      Serial.println(" "); Serial.print(deslocamento, DEC); Serial.print(" "); Serial.print(volume, DEC); Serial.print(" "); Serial.print(mspeed, DEC); Serial.print(" "); Serial.println(mdirection, DEC);        
            
      stepper.setSpeed(mspeed);        
      stepper.setMaxSpeed(mspeed);
      stepper.runToNewPosition(deslocamento*microstepping);
      //stepper.setCurrentPosition(0);

      data=0;       deslocamento=0;       volume=0;       mspeed=0;      mdirection=0;

      for (int i=0 ; i<=21 ; i++)      
          userInput[i]=0;
      }
}

void readuserdata(){
  char tmp;
     if(Serial.available()){     
        msg_lenght = Serial.available(); 
        Serial.print("Message lenght=");
        Serial.print(msg_lenght);
        if( msg_lenght == 20  ){ 
           tmp = Serial.read();
           if( tmp == 'd' ){
              userInput[0] = tmp;
              for (int i=1;i<=msg_lenght;i++){
                tmp=Serial.read(); 
                userInput[i] = char(tmp);                  
              }
              data=1;
              }
        }
     }
}

Step 27: Comand Line Inputs

Using the Arduino serial monitor, you can now send commands to your pump.

Here is an example of the syringe pump command line:

The character "d" for position (number of steps*16), following 5 digits corresponding to the position "00000"

d01000v01000v01000d1

The character "d" for the speed, following 5 digits corresponding to the speed "00000"

d01000v01000v01000d1

The character "D" for the direction, following 1 digit corresponding to the direction (1 for forwards and 0 for backwards)

d01000v01000v01000d1

Here is a couple of examples of several command:

d02000v01000v01000d1

P02000 for steps

S01000 for speed rate

D1 for forward direction

d05000v00100v01000d0

P05000 for steps

S00100 for speed rate

D0 for backward direction

Step 28: Controlling the Pump Rack

Multiple pumps can now be controlled be using a USB Hub, you will need to write code in order control all 5 syringes. Using Java C C++ or any other language, you only need to open the USB COM port an send the commands to the pumps.

Step 29: Analytical Weighing Balance Results

The 3D Printed Syringe Pump was put to the test using an Analytical Weighing Balance.

Here are some of the first results:

- 5ul pump command - measured value 5.5ul

- 5ul pump command - measured value 5.6ul

- 5ul pump command - measured value 5.6ul

- 5ul pump command - measured value 5.8ul

- 5ul pump command - measured value 5.6ul

- 5ul pump command - measured value 5.6ul

- 5ul pump command - measured value 5.8ul

- 5ul pump command - measured value 5.5ul

After this test we corrected the steps per mm of the stepper motor in order to pump 5ul instead of the 5.6 mean value. These shift in volume is due to the diameter of the syringe not being a precision glass syringe. We adjust the steps and got 5ul results with 0- 0.5ul error.

More tests where made using 10ul 20ul 50ul and 100ul pump commands, the error is in the range of 0.5ul below 1ul.

This is a very good result for a 3D printed syringe pump and even outperforms other pumps on the market with a higher price tag.

I speculate that a great part of the errors are due to the cheap plastic syringes used, overall the syringe has good repeatability results.

Comments

author
MechEngineerMike made it!(author)2015-05-30

This is very well documented, great job!

author
aldricnegrier made it!(author)2015-05-30

Writing is not my strong, i prefer the building part :)

I appreciate you comment on the documentation.

Thank you.

author
ArbeyS made it!(author)2017-04-21

Dear aldricnegrier, this it a great job!! my questionis is the code that appears is the final version? do you have a new actualization of this project?

that appears in the final version

author
vigeneus made it!(author)2016-04-21

The volume calculation has error.

Volume = 3.14 x 0.006m x 0.006m x 0.00000038125m = 4.311x10^-11m3 = 0.431 micro liter or 431 nl

author
martinspacek made it!(author)2017-03-20

Agreed, the microstep volume calculation has an error (it should be 0.006 m radius, not 0.06 m radius), but I think your above correction also has an error in the final units. Given that there are 1000 L / m^3,

4.3e-11m^3 x 1000 L/m^3 = 4.3e-8 L = 0.043 uL = 43 nL

author
Innovate4Change made it!(author)2016-04-28

Hi everyone, has anyone had issues getting the motors to run? I used a different micro stepper driver, the DRV8825 and used the alternate wiring diagram on the Pololu website that is similar to the A4988 (the one used here in the instructable). The motor makes a squealing sound, but isn't moving. Did anyone turn the potentiometer before running the code?

DRV8825 Wiring Diagram.JPG
author
Innovate4Change made it!(author)2016-04-28

Here is the link for the website and the data sheet.

https://www.pololu.com/product/2133

author
Dirk-JanC made it!(author)2016-05-04

Hi, it might be that the wires coming from your electromotor have to be attached to the stepper driver in a different order. I would recommend checking the order on your electromotor. As an example: On my stepperd driver the order of the wiring is 2B 2A 1A 1B, but on the steppermotor side the wiring is 2A 2B 1A 1B. This can differ per steppermotor.

author
vijaynbs made it!(author)2016-05-02

Did you connect sleep and reset?

I had problems running and called pololu. They directed me to a code https://www.pololu.com/blog/484/video-setting-the-... Test with that code and see if it works. It worked for me

author
Jared_danger made it!(author)2016-05-19

Excellent write-up! Do you have links to the parts somewhere? I can't find where you ordered the leadscrew, nut, the copper bearing, and the rod. Everything else seems straightforward.

author
aldricnegrier made it!(author)2016-05-26

Hi,

I got the screw and nut here:

https://www.reliance.co.uk/

author
martinspacek made it!(author)2017-03-17

@aldricnegrier,

We've decided to build a whole bunch of these, for two labs! We might add a 3-position switch for manual control, and an LED to indicate motor motion.

Could you please provide the specific part numbers you used for the leadscrew and nut sold by https://reliance.co.uk, and add that to the bill of materials?

In their leadscrew section and catalog (https://www.reliance.co.uk/en/Leadscrews-Informati...), they show quite a wide range of options. At the moment, all I can see here in the instructable is that the pitch is 1.22 mm (in step 24), but I'm not sure what the length or diameter are. Maybe 150 mm and 5.5 mm? From the pictures, it looks like it might be the LBF or LBY model, but others look similar.

Also, sourcing for the copper bearings and rods would be great too! Although I imagine those are more generic parts.

author
Jared_danger made it!(author)2016-05-27

Perfect. Thanks for sharing this.

author
mholub1 made it!(author)2016-08-22

Hello, thank you for the thorough description. I am making very similar pump right now.

Could you please explain what does "- 48" in your code stand for? Also if you already have the updated version of the code, that would be great.

Thanks!

author
zggtf211 made it!(author)2016-05-16

I have remade the files in solidworks for you to remove precision errors by sketchup. I didn't include the logo, but Im sure with some added time, I could. Not really a functional part anyways. contact for the file

author
Viropath made it!(author)2016-02-07

I am having trouble with the scale of the individual parts. I use Sketchup, stlViewer, and the Stratasys (CatalystEX) software. I have never have a problem like this before. Everything looks fine in both Sketchup and in stlViewer until I load the parts into CatalystEX. Help!!!!

author
aldricnegrier made it!(author)2016-02-17

Did you manage to get them open?

author
Viropath made it!(author)2016-02-18

The problem is the scaling, not opening them. Not sure what I am doing wrong. I am new to Sketchup, so it's probably something I am doing. Time for some reading. Sigh...

author
aldricnegrier made it!(author)2016-04-18

Rescale it by a factor of 0.1

author
DavidC597 made it!(author)2016-04-15

Hey there, Trying to make this part. I am unable to get the scale right, using a makerbot replicator 2x and the scale is huge, i tried reducing it by a factor of 10 and it looks right but not sure. Is it possible to get the part files and not just the stl files?

author
aldricnegrier made it!(author)2016-04-18

Hello David,

Yes reduce it by 10, i always work 10 fold in sketchup. Sorry for not mentioning this.

author
arturnoole made it!(author)2015-10-11

Very nice project. Been looking for a solution how to safely stop the plunger at the end of the screw. Any update on the code to include the hall sensors?

author
isotope32 made it!(author)2016-01-16

You could simply add a limit switch to the design which cuts power or flags the microcontroller to stop pumping.

author
nsuhackspace made it!(author)2015-10-02

Hello! Could you please tell me, what is the layer thickness that is good enough to print such parts? I just spent about 4 hours to print syringe carrier (0.1mm thickness, 80% infill, full support, 6 mm^3/s). And I am afraid of printing pump body which could be about 10-12 hours with same settings.

author
aldricnegrier made it!(author)2015-10-03

Hello nsuhackspace,

I used 50% infill, 0.3mm layer height. It is more than enough.

author
Innovate4Change made it!(author)2015-08-04

Hi aldricnegrier, what gauge wire did you use for wiring the pumps?

author
aldricnegrier made it!(author)2015-08-04

Hi Innov :)

I don't remember the diameter, it is a very strong wire i got from the garden and fence section at the store, you need to use a set of pliers to role it around the vinyl sleeve. In the end just tangle the start and end points like in the photos, this will give tension to the role of wire, and fixate the shaft to the threaded rod.

It works remarkably well. Practice a couple of times until you do the final version. With practice you get a better result.

author
Innovate4Change made it!(author)2015-06-28

Hi Aldric,

I have tried to run the AccelStepper.h file, and an error keeps repeating. Could post instructions on how to use the Accel Stepper library. I'm new to it.

author
aldricnegrier made it!(author)2015-06-28

Hello innovate4change,

Accellstepper is very well documented, try this simple tutorial to get a hand on things:

https://www.pjrc.com/teensy/td_libs_AccelStepper.html

Regards,

author
Innovate4Change made it!(author)2015-07-01

Thanks aldricnegrier, I think this will be helpful. I will go through the tutorial, and if I have any questions, I post them. Thank you for your help. Have a great day.

author
aldricnegrier made it!(author)2015-07-03

You are wellcome :)

author
Innovate4Change made it!(author)2015-07-21

Hi aldricnegrier, the tutorial was very helpful. It helped me understand the commands better. I also have another question. I have been looking for micro controllers and drivers online that would work for the pump. Do you think the SainSmart Nano V3 and Pololu A4988 stepper motor driver will be compatible with each other, and good substitutes for the parts you listed? Here are the links for the specs for each part.

https://www.pololu.com/product/1182

http://www.microcenter.com/product/437834/Nano_V3K...

author
RyanS16 made it!(author)2015-06-10

I may be missing something, but the provided code seems to have two issues:



  1. There doesn’t seem to be any support for the hall sensors

    • The sensors are connected to A0 and A1, but I don’t see any analog reads in the code.


  2. You mention that the code is non-blocking, but the runToNewPosition function you use does, in fact, block according to the AccelStepper Documentation

Is it possible that the most up-to-date code isn’t reflected in the above instructions??


Thanks for doing what you do!


author
aldricnegrier made it!(author)2015-06-10

Hi RyanS16,

Great observations :) you are correct in both counts.

I am still finishing writing the code that includes the hall sensors. The code version i submitted is not the final version.

In order to allow non blocking code you just need to remove the runtonewposition() and include the run() function inside the Arduino loop function().

I will update the code as soon as i finish, as well as upload a video of all the pumps working at the same time.

Keep tuned in for more updates.

author
aldricnegrier made it!(author)2015-05-26

Is it just me or the STL files don't show up on the 3D viewer on this instrucable page?

I have tried to upload the STL files in ascii and binary format without sucess:(

author
killercatfish made it!(author)2015-05-26

This is great! Could use this as a control center for a robot arm as well :)

author
aldricnegrier made it!(author)2015-05-26

:) thanks! Nice idea.

I would like to use this to inject some minerals and vitamins while i sleep. So i could wake up full of energy :]

About This Instructable

28,387views

216favorites

License:

Bio: Do not follow the ideas of others, but learn to listen to the voice within yourself. Aldric Negrier aldricnegrier
More by aldricnegrier:BIGLID - Big LED Interactive DisplayConverting CNC Electronics to ArduinoRooBee One - SLA DLP Aluminum Frame 3D Printer
Add instructable to: