Drinks Dispenser

This is a 3D printed drinks dispenser, used for the Drink Serving Robot to dispense different drinks. 

It uses small 12V DC pumps, used for fish tanks and fountains, to pump liquid in to a cup below.

The CAD file contains:

Nozzle Rack (Green on photos) 

Display Unit (Purple)

Legs (White) 

Pump Holder - Red


STL files for 3D Printing: Thingiverse

TinkerCAD Model: Coming soon.

Costs: £2 PLA, £30 Parts

Parts Required


(4x) 12V DC Pump - AMAZON

(4x) 5V Relay Module - AMAZON

(1x) Arduino Uno (can be any microcontroller) - AMAZON


12V power supply - AMAZON or Bench power supply - AMAZON

Breadboard - AMAZON

Glue gun / silicon gun AMAZON






Build Instructions


Step 1

Cut a hole in the center of a bottle lid approx 6mm wide. Ensure it fits over the top of the pump, as seen in the picture.

Step 2

Using a hot glue gun or silicon gun, attach the bottom of the lid to the pump. Once set, fill in the center of the lid to create an air-tight seal.

Step 3

Using 8mm tubing (8mm internal, 11mm external), cut a piece about 50cm long. Connect one end to the outlet of the pump. 

Step 4

Attach the nozzle rack to the display unit (purple and green pieces in photo). Feed the tubing through each and cut off the excess tube. 

Step 5

Remove the pump from the mount and screw on a bottle, flip it upside-down and put it back in the mount. 



To connect this to an Arduino you need to build a circuit to drive the 12v pumps. You need to use relays to drive these using an Arduino. Here is a diagram for how to wire up the pumps to the Arduino:



The example code below shows how to turn on and off each motor. You can choose the length it stays on for by changing the delay functions. When I tested it took 1100 ms for the water to exit the tube and then 100 for every 20ml of water. 

Arduino Code

int P1 = 3; int P2 = 4; int P3 = 5; int P4 = 6; //connect to relay in

void setup() {
    pinMode(P1,OUTPUT); pinMode(P2,OUTPUT); pinMode(P3,OUTPUT); pinMode(P4,OUTPUT); //set up pumps
    digitalWrite(P1,H); digitalWrite(P2,H); digitalWrite(P3,H); digitalWrite(P4,H); //turn off pumps
void loop() { 
    digitalWrite(P1,LOW); delay(1000); digitalWrite(P1,HIGH); //turn on pump 1 for 1s
    digitalWrite(P2,LOW); delay(1000); digitalWrite(P2,HIGH); //turn on pump 2 for 1s
    digitalWrite(P3,LOW); delay(1000); digitalWrite(P3,HIGH); //turn on pump 3 for 1s
    digitalWrite(P4,LOW); delay(1000); digitalWrite(P4,HIGH); //turn on pump 4 for 1s