Introduction: Peristaltic Pump

This project was inspired by the Waag Society's Biohack Academy:

One of the Biohack Academy's components is a peristaltic pump. This Instructable builds on the model provided by adding a couple of improvements and features.

Step 1: Step One: Design Considerations

The changes made to the Project are:

  • Instead of a direct drive mechanism a belted reduction drives the pump rotor, increasing torque fourfold;
  • The pump now uses several 3D printed parts;
  • 3D printed brackets connect the various case panels instead of standard laser cut joints;
  • Use of the Arduino / Atmel timer to generate the stepper motor pulses;

The belted reduction is based on a 200mm long / 100 dents closed GT2 belt and pulleys.GT2 belts and pulleys are widely used in 3D printers and are readily available.

The pulley on the stepper motor is a standard 16 tooth pulley, The pulley on the pump rotor has 64 teeth, providing a 4 : 1 reduction between the stepper motor and the pump rotor.

The rotor pulley was 3D printed based on the OpenScad pulley generation script available on Thingiverse:

The script's 'tuneable constants' were: teeth = 64; profile = 12; The generated STL was further modified in SketchUp.

The distance between the two pulleys was calculated with Steve Glennie-Smith's ultra useful 'Pulley, Belt and Chain Information Calculator':, See image above for the parameters provided.

Knowing the distance between the pulleys and their diameters a basic drawing of the various rotor parts was made in DraftSight.

Parts of this drawing were then imported into SketchUp (Make Edition) using the FreeDXF plugin and extruded into the various 3D parts.

Step 2: Bill of Material

    • 1 Latex or Silicone Tube;
    • 1 52mm long 5mm stainless steel shaft;
    • Several 3mm lasercut MDF and acrylic parts;
    • Several 3D printed parts;
    • 4 75mm long M4 threaded rods (stainless if possible);
    • 2 625zz ball bearings;
    • 6 608zz ball bearings (Skateboard bearings);
    • 1 Arduino Uno;
    • 1 16 x 2 LCD Display;
    • 1 Easydriver stepper driver;
    • 1 0.25 Nm Nema 17 Stepper Motor;
    • 1 16 tooth GT2 pulley;
    • 1 200mm long / 100 dents closed GT2 belt;
    • 1 12V 1A power adaptor;
    • 1 Power plug;
    • 3 Push buttons;
    • 3 M3 10mm long hex head screws + washers;
    • 2 M3 16mm long hex head screws + washers and nuts;
    • 4 M3 20mm hex head screws, spacers and nuts;
    • 7 M4 x 20mm screws, washers and nuts;
    • 11 M4 x 25m screws, washers and nuts;
    • 10 M4 x 30mm screws, washers and nuts;
    • Several jumpers and cables;
    • Some heath shrink;

    Step 3: Laser Cut and 3D Printed Parts

    The pump's case is made of laser cut panels. Attached seperated files for the 3mm mdf and acrylic parts.

    Attached also the STL files to be 3D printed. Print one of each, except for the Spacer, Left and Right Brackets, of which you should print two of each.

    Our pump was printed with many different types of filament, but either PLA or ABS is suitable.

    Step 4: Rotor Assembly

    To assemble the rotor you'll need:

    • 1 3D printed 64 tooth pulley;
    • 2 3D printed rotor parts;
    • 6 608zz skateboard ball bearings;
    • 1 52mm long 5mm shaft;
    • 3 M4 x 20mm screws + washers and nuts;
    • 3 M4 x 25mm screws + washers and nuts;

    The 5mm stainless shaft was purchased on ebay, they're used in RC models.

    Holes for the M4 screws were drilled to size with a 4.1mm drill bit. The holes for the shaft were reamed with a 5mm manual reamer to guarentee a good fit, if you don't have a reamer just use a 5mm drill bit .

    First insert the M4 hex nuts in the pulley and the lower rotor part. It is supposed to be a tight fit, if necessary use an M4 screw and washer to pull them in place.

    Assemble the parts as in the images.

    Step 5: Base Plate and Lower Bearing Support

    In this step we'll use:

    • 2 mdf base plates;
    • 1 3D printed lower bearing support;
    • 2 3D printed brackets;
    • 2 3D printed 16mm bushings;
    • 1 625zz ball bearing;
    • 4 75mm long M4 threaded rods;
    • 2 M4 x 30mm screws;
    • 10 M4 washers;
    • 10 M4 hex nuts;

    Put hex nuts in the brackets and bushings. Carefully press the ball bearing in the bearing support.

    The 4 75mm long threaded rods were manualy cut from a longer piece.

    Assemble the parts as indicated. Note that the two base plates are stacked together, forming one 6mm thick piece.

    Don't overtighten the threaded rods just yet, but make shure there are nuts on both sides and washers under the bearing support.

    Step 6: Adding Motor and Rotor to the Base Plate

    Parts needed in this step:

    • Mounted base plate from the previous step;
    • Mounted rotor;
    • Laser cut acrylic panel;
    • 1 5mm washer;
    • 1 0.25 Nm Nema 17 Stepper Motor;
    • 1 16 tooth GT2 pulley;
    • 1 200mm long / 100 dents closed GT2 belt;
    • 3 M3 10mm long hex head screws + washers;

    Mount the pulley on the motor and mount the motor on the base plate. Dont't tighten the M3 hex head screws, allowing the motor to move freely along the screw slots.

    Add the belt and rotor, leave the M5 washer between the rotor and lower bearing.

    Slide the acrylic plate over the 4 threaded rods and screws, taking care to lower it evenly.

    Step 7: Finalizing the Pump Mechanics

    Let's finish the pump's mechanics, we'll need:

    • 1 3D printed ring;
    • 1 3D printed upper bearing support;
    • 1 latex or silicon tube;
    • 1 625zz ball bearing;
    • 4 M4 washers;
    • 4 M4 hex nuts;

    Press the 625zz bearing in the bearing support.

    Slide the ring over the threaded rods (on top of the acrylic plate). Squeeze the tube between the ring you just mounted and the rotor bearings, manually turning the rotor back and forth as necessary.

    Mount the bearing support, making sure the rotor shaft enters the bearing.

    Fasten the bearing support on the threaded rods with the M4 washers and nuts, don't overtighten the nuts.

    Lastly we'll tighten the motor and belt. Press the motor to the left from below with your thumb while you tighten the 3 hex head screws. No need for a super tight belt, just stretch it enough to avoid it skipping over the pulleys.

    Step 8: Side and Rear Panels

    To mount the two side panels we'll use:

    • 2 3D printed brackets;
    • 2 laser cut mdf side panels;
    • 1 wired power plug;
    • 8 M4 x 25mm screws, washers and hex nuts;

    Insert the hex nuts in the brackets. Screw the power plug into the left side panel. Mount the panels.

    For the back panel we'll use:

    • 1 laser cut mdf back panel;
    • 1 40mm 12V fan;
    • 2 M3 x 16mm hex head screws, washers and hex nuts;
    • 4 M4 x 30mm screws, washers and hex nuts;

    Mount the the 40mm fan so that it blows inside the pump. Mount the back panel to the back of the pump assembly.

    You should now have an assembly lacking just the bottom and front panel. Let's move on and install / wire the electronics and complete our pump.

    Step 9: Mounting and Wiring the Electronics

    Components needed:

    • 1 laser cut mdf bottom panel;
    • 1 Arduino Uno;
    • 1 Easy Driver;
    • 1 16 columns, 2 rows 5V LCD Display with 10k contrast potmeter;
    • 4 M3 20mm hex head screws, spacers and nuts;
    • 1 4 wire stepper motor connector cable;
    • several wire jumpers (including some custom made);

    Fasten the arduino and the easy driver each with two M3 screws, spacers and nuts.

    With the electronics mounted on the bottom panel, we're ready to wire the LCD display. Parts needed:

    • 1 Custom red / yellow power jumper cable;
    • 1 Custom black ground jumper;
    • 7 15cm male-female jumpers;
    • 1 16 x 02 5V LCD Display with contrast potmeter;
    • Connect the custom made ground jumper to a GND pin on the Arquino, connect the other ends to pins 1 and 16 of the display;
    • Connect the red custom jumper to the Arduino's 5V pin, connect the red end to pin 2 and the yellow end (the one with the current limiting resistor) to pin 15 on the display;
    • Connect the male-female jumpers between the DIGITAL/PWM section on the Arduino and the display:
      • 0 to pin 4 on the display, 1 to 5 and 2 to 6;
      • Skip 4 pins on the display;
      • Connect pin 3 on the arduino to pin 11 on the display, 4 to 12, 5 to 13 and 6 to 14;

    Notice that it would be easier to use a serial display with a buildin potmoter, such as this one:

    Parts needed to connect the Easydriver:

    • 1 4 lead motor cable;
    • 1 2 lead power cable;
    • 3 15cm male-female jumpers;

    Let's connect the lower part (closest to the Arduino) of the easydriver first:

    • Connect the black wire of the power cable to ground and the red wire to +5V on the driver, connect the other side of the power cable to the Arduino, the red wire to the Vin pin and the black wire to the GND pin next to Vin;
    • Use a jumper to connect the driver's STEP pin to pin 11 on the Arduino;
    • Connect the drivers DIR pin to pin 10 on the Arduino;

    Make the following connections between the upper part of the easydriver and the Arduino:

    • From the A/B/Motor pins to the stepper motor using the 4 wire motor cable;
    • From the ENABLE pin to pin 9 on the Arduino;
    • From the power plug to the GND and M+/Power in, make sure you connect the ground wire to GND and the +12V wire to the M+ pin;

    SparkFun has a nice tutorial on the Easydriver:

    The buttons are the last parts to be connected to the Arduino. You will need:

    • 1 laser cut mdf front panel;
    • 3 push buttons;
    • 1 custom ground jumper;
    • 3 15cm male-female jumpers;

    Mount the 3 buttons in the front panel. Connect one end of the ground jumper to each button, the other end to a GND pin on the Arduino. Using the male-female jumpers connect the buttons from left to right to the A0, A1 and A2 pins of the Arduino;

    Connect the 40mm fan to the power plug.

    Step 10: Finishing Asembly

    Before we close the case lets:

    • Double check the wiring;
    • Program de Arduino with the attached sketch;
    • Test the pump;

    Wrapping Up

    Mount the Display in place with 2 zip ties.

    Mount the bottom panel in lace with 4 M4 20mm long screws and washers.

    Close the front with 4 M4 30mm long screws and washers.