Ender3 3D printer kit transformed into open, programmable syringe pump set

Graphical abstract

nent. The only additional parts to be purchased are 5 Â 5 shaft couplers, M5 nuts and M5 threaded rods, available at any hardware store. The 3D printed parts are supplied in their original CAD format (.F3D) as well as .STL files ready to be 3D printed. Printable parts were designed using Fusion 360 from Autodesk. For this specific project, we used a Creality Ender 3 3D printer, as it is one of the cheapest FDM on the market, and it is open source/open hardware [36]. However, as all FDM 3D printers work by moving a XYZ stage, this method can be applied to any 3D printer by redesigning the 3D printed parts, while the G-code programming will remain the same.
In fact, the programming of the pumps is also easy as it leverages the Marlin firmware already present on many 3D printer motherboards, and G-code files for controlling the pumps can be easily written as text files. This means that even when the Creality Ender 3 becomes discontinued, the same conversion approach can be used for other i3 style 3D printers. This would require a redesign of the 3D printed parts, but the programming, control and mechanical principles remain the same. The same design here presented has already worked on the Ender 3 Pro, and the Ender 3 V2 with a small modification of the PSU 3D printed unit, now present in the GitHub. Moreover, the parts are off the shelf components (stepper motors, aluminum rails, control board). This means that in case of unavailability of the Ender 3, parts can be sourced separately, and the pumps can still be built. This may not be as cost effective or user friendly compared to the current work, but it does not render this setup completely dependent on Ender 3 availability.
This project comprises of an easy to assemble and program syringe pump set, which can be used for: Flow chemistry Microfluidics Biology and Microscopy (for example for automatic staining and fixing) Moreover, this project can be used as a blueprint to expand the possibilities of repurposing 3D printers for laboratory equipment. For example, in the 3D printer kit, there is a fourth motor, two heating units with thermistor controls and three end stops, which are not used in this project, but can be useful to build other instruments. The project files and description are available on github [37].

Print settings
All the design files listed in Table 1 were printed using PLA material, at 0.2 mm layer height, 20% infill, with two perimeter wall thickness. The designs are printable without using support structures. Table 1 Part denominations Some parts are not universal to all three syringe pumps and are denoted by 'E', 'X' or 'X Motor'. This refers to the sliding plates (with 3 roller wheels each) that are reused from the printer structure. One slide plate belongs to the extruder assembly ('E'), one to the X axis motor mount ('X Motor') and one to the X axis free running support ('X'). Some parts are shared between the X Slide Plate and X Motor Slide Plate and are denoted 'X X Motor <part name>'. The Clamp Bar is used to keep the syringe pressed against the End Mount frame, under pressure of a spring. Three lengths are available, in order to accommodate different syringe diameters, if the spring pressure is insufficient, or too great.

Dovetail Cap
A cap to lock the spring and Clamp Bar in place. It slides in with a dovetail-type mechanism.

E End Mount
The mount for the E Plate Pump in which the syringe body is clamped.

E Slide Mount
The mount that is installed on the E Slide Plate, which moves the syringe plunger.

E Stepper Mount
The E Stepper Mount is used to mount the stepper motor, driving the leadscrew.

Electronics Base
A base to support the Electronics Box when it is mounted on the Control Unit.

PSU Mount
A rectangular block that connects the PSU to the Control Unit.

Motor Slide Mount
The mount that is installed on the X Motor Slide Plate, which moves the syringe plunger.

Slide Mount
The mount that is installed on the X Slide Plate, which moves the syringe plunger.

X Motor End Mount
The mount for the X Plate and X Motor Plate in which the syringe body is clamped.

X Motor Stepper Mount
The X X Motor Stepper Mount is used to mount the stepper motor, driving the leadscrew. It is used in both the X Plate and X Motor Plate pumps.

Press Fit Pulley Extractor
This tool is used to remove the pulleys that are press fit onto the stepper motor shafts.

Bill of materials
As stated, this project aims to enable researchers to build an Open Hardware syringe pump system, with the need for purchasing as little externally sourced components as possible. The Bill of Materials therefore consists mainly of 3D printed parts, designed to construct this pump system. The threaded rod and M5 nuts should be readily available at a hardware store. The Ender 3 can be bought online. Some online vendors specialize in the sale of 3D printers, will also sell parts like the 5 Â 5 shaft coupler. The shaft coupler should also be available on major online stores.
A render of the three pump channels is shown in Fig. 2A. Also shown, is an exploded view of the system, with all parts numbered (Fig. 2B). An overview of these parts can be found in Tables 2 and 3, below. This gives the builder a general indi-  Table 2 The Bill of Materials, listing all the parts that need to be purchased, the amount, cost, vendor and material type.  Table 3 Overview of the parts in the exploded view (Fig. 2B). 3D printed parts, commercially bought parts and (sub)assemblies from the Ender 3 are included. cation of which parts are used and where. A detailed account of the construction process can be found in the build instructions in the next section.

Build instructions
In the following section, the build process of the Ender 3 based pump system will be explained. Assembly instructions, as well as indications of how to disassemble and reuse existing parts will be given. The guide consists of 37 steps and will result in three pump channels, as well as a Control Unit. Before starting the assembly process, make sure to print the pulley removal tool (https://www.thingiverse.com/thing:3593964) that is used in step 18. Without this tool, the build process cannot be completed. See step 18 for further instructions. Step 1: Layout Start with laying out all the parts and part bags included in the kit (Fig. 3A). All parts that used in the syringe pump system are shown Fig. 3B. Fig. 3B only serves as a general reference for the build process. Some of the parts shown will be extracted from the kit during the build steps, others are 3D printed.
Step 2: Collect the necessary parts for the E Plate Pump frame To build the Extruder Plate Pump frame, take the extruder head, the long 20 Â 20 mm rail, the bag of M4 Â 16 machine screws and the 3D printed parts for this pump channel (Fig. 4).
Step 3: Remove unused parts from the E Plate and mount To prepare the E Plate, remove all the unnecessary parts. Start by removing the two M3 screws (save these screws for later use) (Fig. 5B). Now remove the hotend shroud/fan mount. Next, remove the hotend (Fig. 5C). Finally, remove the two screw indicated in red circles (Fig. 5D). The E Plate is now ready to be used in the pump channel.  Step 4: Install the E Slide Mount on the E Plate Take the E Slide Mount and fit it on the Extruder Plate (Fig. 6A), by replacing the two removed screws from Fig. 5D. Note the eccentric hexagonal adjuster that will be used later to remove slop in rail guidance mechanism.
Step 5: Install the E Stepper Mount Install the E Stepper Mount using the M4 Â 16 screws (Fig. 4). Slide the mount onto the rail and tighten the screws on the bottom (Fig. 7C).
Step 6: Install E Slide Mount on rail Install the E Slide Mount assembly onto the rail, with the 3D printed mount facing away from the E Stepper Mount. Adjust the tension on the rollers by turning the eccentric hexagonal nut (Fig. 8).
Step 7: Install the E End Mount Finish the frame of the E Plate Pump by installing the E End Mount. Slide the mount on the rail (Fig. 9A) and use the remaining M4 Â 16 screws to attach the mount (Fig. 9B).
Step 8: Remove unnecessary parts from stepper motor Take the stepper motor shown in Fig. 10A. Remove the screws circled in red (Fig. 10B). Then, loosen the grub screws in red ( Fig. 10C) and remove the coupler. The stepper motor is now ready (Fig. 10D).
Step 9: Install stepper motor on the E Stepper Mount The stepper motor is now to be installed on the E Stepper Mount. For the installation, 4 M3 Â 6 screws are required. These can be taken from the Y stepper motor, shown in Fig. 11A. Save the Y stepper for later use. Fig. 11B shows the E Stepper Mount, the stepper motor to be installed and the M3 Â 6 screws. These screws can be inserted in the counterbored holes of the E Stepper Mount and tightened, to affix the stepper motor.
Step 10: Cut the M5 threaded rod to size Make sure to wear appropriate personal protective equipment when using cutting tools (eye protection, hearing protection, dust extraction). For the drive rod, an M5 threaded rod needs to be cut to size. This can be done using a hacksaw or a power tool such as a cutoff wheel. Before starting the cut, thread on an M5 nut onto the rod. Cut the rod and clean off the sharp end with a file or sandpaper. After cutting and filing, the nut can be threaded over the cut end. This will straighten out the threads. 2 rods of 27 cm and 1 rod of 22 cm are needed to complete all three pumps (Fig. 12).
Step 11: Install the threaded rod To install the threaded rod, take the 22 cm threaded rod, 1 M5 nut and a shaft coupler (Fig. 13A). Install the shaft coupler onto the stepper motor by tightening the two grub screws (Fig. 13B). Slide the threaded rod through the E End Mount, up to the E Slide Mount. Lay the assembly on its side and push in the nut, centering it with the through-hole for the rod (Fig. 13C). Thread the rod through the nut, all the way up to the shaft coupler. Tighten the grub screws to install the threaded rod (Fig. 13D).        Step 12: Collect the springs for the syringe clamp To clamp the syringes in place, the springs from the bed levelling mechanism will be used. Start by removing the clips and printbed cover (Fig. 14A). Unscrew the large plastic wheel (Fig. 14B). Next, remove the machine screw to free up the spring (Fig. 14C). The spring can now be removed (Fig. 14D). Repeat this process to collect 3 springs in total.
Step 13: Install the syring clamp mechanism The syringe clamping mechanism can now be installed. This mechanism consists of a Clamp Bar, Dovetail Cap and one of the springs (Fig. 15A). Slide the clamp bar into the slot on top of the E End Mount (Fig. 15B). Next, place the spring on top, in the square hole (Fig. 15C). Finally, close the top with a Dovetail Cap. The pump channel is now ready to be used. Different length Clamp Bars can easily be exchanged to accommodate different syringe diameters.
Step 14: Collecting the 40 Â 40 rails To build the X Motor Plate pump, a 40 Â 40 rail is needed from the Ender 3 frame (Fig. 16A). Loosen the two M5 Â 45 screws that are holding this piece and save the screws (Fig. 16B). Use one of the hex wrenches to push out the end cap (Fig. 16C).  For the X Plate pump another 40 Â 40 rail is need, from the other side of the base. Loosen the M5 Â 45 screws (Fig. 17A) and save them. Then, also remove the electronics case by removing the two screws (Fig. 17B). Save these screws as well. Remove the end cap on the rail like in Fig. 16C.
Step 15: Collect the parts for the X Motor Plate Pump To build the X Motor Plate Pump, take the X Motor Assembly, 40 Â 40 rail, X X Motor End Mount, X Motor Plate Slide Mount, X X Motor Stepper Mount, Clamp Bar, Dovetail cap and four M5 Â 45 screws (Fig. 18).
Step 16: Remove unnecessary parts from X Motor assembly The X Motor assembly consists of many parts, that need to be removed in order to use the X Motor Plate in the pump. Start by removing the sticker covering the screws (Fig. 19A). Next, remove the roller screws holding the two plates together (Fig. 19B). Remove the screws from the pulley cover (Fig. 19C). Save the stepper motor for later use (Fig. 19D). Next, remove all the screws indicated in red in Fig. 19E, remove the spring as well. Finally, remove the last two screws holding the filament clamping mechanism in place (Fig. 19F). Save four M3 Â 10 screws for later use (Fig. 20).
Step 17: Install the X Motor Slide Mount on the X Motor Plate Take the angle bracket X Motor Plate and mount the X Motor Slide Mount, similar to step 4 (Fig. 21A). Slide the mount onto the 40 Â 40 rail and adjust the tension. Make sure the countersunk holes on the rail are on the side of the single guide wheel (Fig. 21B).
Step 18: Removing the press-fit pulleys from the X and Y Motor Take the X Stepper from step 16 and Y Stepper from step 9. They have press-fit pulleys that need to be removed. This can be accomplished by using a pulley removal tool. A 3D printed version is available from https://www.thingiverse.com/thing: 3593964. Print this tool at 100% infill (fully solid). To use the tool, an M5 nut and M5 Â 45 screw can be used (Fig. 22A). Press   the M5 nut into the hexagonal slot (Fig. 22B) and thread in the screw. Slide the tool around the pulley and align the screw with the stepper shaft. Turn the screw to apply pressure on the shaft (Fig. 22C). With the pulley removed, the stepper is ready to be used in the pump (Fig. 22D). Repeat this process for the second stepper.  Step 19: Install the X X Motor Stepper Mount Slide the X X Motor Stepper Mount on the 40 Â 40 rail and insert the M5 Â 45 screws (Fig. 23A). Fasten the screw, the X X Motor Stepper Mount is now attached (Fig. 23B).
Step 20: Install the X X Motor End Mount Place the X X Motor End Mount on the opposite end of the 40 Â 40 rail. Fasten the part with two M5 Â 45 screws (Fig. 24).
Step 21: Install the stepper motor Install the stepper motor on the X X Motor Stepper Mount. Take 4 M3 Â 1-screws by dismounting the Extruder Fan from the shroud (Fig. 25A). Use these screws to install the stepper motor (Fig. 25B).   Step 22: Install the threaded rod Take one of the 27 cm threaded rods from step 10 and install it in the X Motor Plate pump, follow the procedure from step 11. The end result looks like Fig. 26.
Step 23: Install the syringe clamp mechanism Follow step 13 and install the syringe clamp mechanism. The X Motor Plate pump channel is now finished (Fig. 27).
Step 24: Collect the parts for the X Plate Pump To build the X Plate Pump, Take the X Plate, 40 Â 40 rail, X X Motor End Mount, X Plate Slide Mount, X X Motor Stepper Mount, Clamp Bar, Dovetail Cap and bag with four M5 Â 45 screws (Fig. 28).
Step 25: Build the X Plate Pump according to previous steps The X Plate pump construction is very similar to the X Motor Plate Pump. Mount the X X Motor Stepper Mount like in step 19 (Fig. 29A). Mount the X Slide Mount according to step 17, in the correct orientation (Fig. 29B) and slide onto rail (Fig. 29C). Install the X X Motor End Mount following step 20 (Fig. 29D). The X Plate Pump frame is now finished (Fig. 29E).
Step 26: Install the stepper motor Install the stepper motor using the four M3 Â 10 screws that were saved in step 16, according to the procedure of step 21 (Fig. 30).     Step 27: Install the threaded rod Take one of the 27 cm threaded rods from step 10 and install it in the X Plate pump, follow the procedure from step 11. The end result looks like Fig. 31.
Step 28: Install the syringe clamp mechanism Follow step 13 and install the syringe clamp mechanism. The X Plate pump channel is now finished (Fig. 32).
Step 29: Detaching the Electronics Box Take the remainder of the Ender 3 base and flip it over (Fig. 33A). Detach the cable from the Y limit switch (Fig. 33B). Remove the M5 Â 45 screws to free up the 40 Â 40 rail (Fig. 33C). Keep the rail for later use. Remove the screw on the   fan-side of the Electronics Box (Fig. 33D). Remove the screw on the other side of the Electronics Box (Fig. 33E). The Electronics Box is now ready to open up.
Step 30: Removing the Electronics Board and cable restrictions All the redundant cables from the Electronics Board have to be removed. These are cables for the limit switches, bed and hotend heater, hotend fan and extruder motor, which are all not used in this project. To do this, open up the Electronics Box (Fig. 34A). Remove the screws holding the board in place (Fig. 34B). Note the yellow circle, indicating the fan connector. The fan is temporarily removed to facilitate this and the next step. Next, cut the zip tie on the cable assembly (Fig. 34C). Finally, remove the tape at both ends of the braided cable shield (Fig. 34D).
Step 31: Removing redundant cables As mentioned in the previous step, there are several unused, redundant cables that are not used in this project. These include the cables along the top row of the Electronics Board which can be removed, as well as the blue/yellow cable. These are indicated in red (Fig. 35A). The board after removal of these cables is shown in Fig. 35B. Next, remove the short Z stepper cable and replace it with the long E stepper cable.
Step 32: Collect the components for the Control Unit To build the control unit, take the Power Supply Unit (PSU), LCD Screen, 40 Â 40 rail, Electronics Box and Board, bag of four M5 Â 8 screws, bag of two M4 Â 20 screws, X Belt Tensioner, six M3 Â 6 screws from the Electronics box, the PSU base 3D print and Electronics Base 3D print (Fig. 36). Step 33: Install the LCD on the 40 Â 40 rail Using 2 M5 Â 8 screws, install the LCD on the 40 Â 40 rail (Fig. 37).
Step 34: Install the PSU on the 40 Â 40 rail To install the PSU Mount on the 40 Â 40 rail, take the M4 screws and M4 T nuts from the X Belt Tensioner (Fig. 38A). Slide the T nuts into the bottom track of the 40 Â 40 rail and put the screws into the counterbored holes (Fig. 38B). Tighten the screws to affix the PSU Mount. Next, put the M4 Â 20 from the plastic bag into holes to mount the PSU (Fig. 38C). The PSU is now fixed to the rail. Do not open or modify the PSU in any way to prevent the exposure to line voltage. Doing so would risk getting a severe or lethal electric shock.
Step 35: Reassemble the Electronics Box The Electronics Box needs to be reassembled before mounting it on the Control Unit, since it was disassembled for removal of redundant cables. Put the board back in the case using the previously removed M3 Â 6 screws. Reattach the fan connector (Fig. 39A). Put the cover back in place with the remaining M3 Â 6 screws (Fig. 39B). The (low voltage) electronics are now properly rehoused so the user cannot touch live parts, preventing the risk of electric shock.  Step 36: Attach the Electronics Base and Electronics Box To attach the Electronics Box and Electronics Base, sandwich the mounting plates and attach them to the free end of the 40 Â 40 rail (Fig. 40A) using two M5 Â 8 screws. Attach the Electronics Board to the PSU (Fig. 40B). Attach the rainbow colored cable to the rightmost LCD connector (above the 40 Â 40 rail) (Fig. 40C).
Step 37: Attach the stepper motors to the Control Unit The final step in the assembly process is to connect the stepper motor cables to the stepper motors themselves. The final result is shown in Fig. 41. The pump system is now completely built and ready to use.

Operation instructions
The syringe pumps are controlled by the 3D printer motherboard, which is already flashed with Marlin software and therefore works with G-code. There are two ways of controlling the pumps: a) using a computer connected to the board via USB and using direct control software such as PronterFace [38] or Octoprint [39], with the latter able to be used remotely via network. B) Writing the G-code file, uploading it on a microSD card and using the printer interface for printing the file without the need of a computer attached to the pumps. For more experienced users, a Python based grbl interface can be used to program the pumps [40]. Grbl is another G-code based motion control firmware, from which Marlin was originally   derived. Grbl has also been shown to be useful in Open Hardware motion control [41]. Please note that when using these pumps, moving parts are involved, which may pose a pinching hazard. This is similar to commercial syringe pumps, but users need to be aware of potential risks.
A G-code file is a set of instruction which Marlin interprets line by line and passes the operations to the motors. The file is a simple text file saved as .gcode. For controlling the pumps, a few G-code commands are needed: M92 X <Steps per mm> Y <Steps per mm> Z <Steps per mm> M92 should be at the start of the G-code, as this command will set the number of steps required for moving one axis one millimeter, which in the case of the Ender 3 motors/drivers and the M5 Â 0.8 mm threaded rod is 4000 steps per mm. The Ender 3 uses stepper motors with a step angle of 1.8°, or 200 steps per revolution. The TSMC2208 stepper drivers are set to 1/16 microsteps, which is the default setting for the Ender 3. The pitch of the leadscrew is 0.8 mm. This gives the value of 4000 steps per mm. However, as we are dealing with flows, we found that it is more user-friendly to change this command from steps per mm to steps per mL. This can be easily done by calculating the distance required to push a volume of 1 mL depending on the diameter of the syringe used. To do this, the inner diameter (I.D.) of the syringe needs to be determined. Next, the area of the plunger can be calculated. The linear syringe travel to deposit 1 mL can be calculated by dividing 1 cm 3 by the plunger area (cm 2 ). Divide this number by the steps per mm value (4000) to get the steps per mL. We have attached a simple calculator in the supplementary material to calculate the steps per mL using the diameter of a syringe as input. As an example, a 10 mL syringe has a diameter of 15.6 mm and the calculated steps required to move 1 mL are 20927, a 5 mL syringe has a diameter of 12.3 mm and the calculated steps are 33663.
Another thing to take note of, is that in the normal configuration, the X and Y motors are inverted, so this should also be set in the M92 command by giving negative step/mm values.
A M92 set up using two 5 mL syringes on the X and Z axes and a 10 mL syringe on the Y is therefore: M92 X-33663 Y-20927 Z33663 This will set the number of steps per mL in such a way that the rest of the G-code will use this to calculate the pump movements.
M302 S0 This command will set the printer to move the motors without checking the temperature of the hot end. This is usually a 3D printer safety check for avoiding extruding material when there are some problems with the hot end. In this case the hot end is detached, so there is no risk of thermal runaway.

M211 S0
This command will disable the endstops which may cause problems as they are not connected. G91 Use relative positioning. This is important when multiple movements are used, otherwise the motors will start from a 0.0.0 position and use that as reference point.
G4 S <time in seconds> Pause the commands for a set amount of time. G1 X <mL> Y <mL> Z <mL> F <mL/min> This is the command to move the syringe pumps at certain flowrates. As we set up the steps/mL in the M92 command, now all the G1 codes are in mL/min. This can be a positive number or a negative number, positive for pushing and negative for retracting.
For example: G1 X0.5 F1 Will use syringe pump X and will deliver 0.5 mL of liquid at a speed of 1 mL per minute. Multiple syringes can be used at the same time: G1 X0.5 Y0.5 Z0.5 F1 Will deliver, at the same time, 0.5 mL of liquid from the pumps on X, Y, and Z at a speed of 1 mL/min For using different flow speed for different pumps, the total amount of liquid should be calculated taking in account that all the pumps will reach the end at the same time. For example: G1 X2 Y1 Z2 F1 Will deliver the set amount of liquid at different flow speed, using 1 mL/min on Y, and 2 mL/min on X and Z. For commenting on G-code files the '';" character should be used. This can be useful in commenting the G-code with metadata.
An example of full G-code: (Video S1, using 1 mm OD, 0.8 mm ID silicon tubing, press-fit in the PDMS device) ; Experiment 01 20/05/2021 ; 10 mL syringes on the three pumps M92 X-20927 Y-20927 Z20927; set the proper steps/mL for the 10 mL syringe M302 S0; print without checking temperature G91; relative positioning ; deliver 1 mL at 2 mL/min sequentially G1 X1 F2 G1 Y1 F2 G1 Z1 F2 ; wait for 10 s G4 S10 ; deliver 1 mL on X and Z at 1 mL/min, 2 mL on Y at 2 mL/min G1 X1 Y2 Z1 F1 ; wait 10 s G4 S10 ; deliver 1 mL at 2 mL/min sequentially G1 Z1 F2 G1 Y1 F2 G1 X1 F2 Without previous knowledge in programming and in a few lines of G-code it is possible to program the syringe pumps to do multiple operations. This file can now be saved as .gcode, uploaded on a microSD card, and run on the Ender 3 syringe pumps. Or it can be sent using a computer connected to the USB.
G-code files can be easily shared between labs for improving reproducibility of experiments.

Validation and characterization
Pumps using designs for translating rotational motion to linear motion using a lead screw, are affected by the quality of the motors/drivers and by the structural stability of the apparatus. The motors and drivers used here have been used in 3D printing since many years, and usually a failed 3D print can be traced back to a failure in the hot-end or the extruder, and only rarely to the XYZ motion of the printer.
The linear rail and the bearings system are also directly translated from the 3D printing motion to the syringe pump motion. And in this case, if the wheel pressure is properly calibrated to the extruded aluminum frame, there are no possible failures.
As shown in the build instruction, we screw all the 3D printed parts on the frame and checked that there was no loose movement.
With this set-up we managed to reproducibly deliver 10 mL of water using a 1 mL syringe pump. We repeated the command 10 times, using an analytical balance to weight the delivered liquid. We measured an average of 10.4 mg with an error of ±0.3 mg, which is indistinguishable from the error of the analytical balance used.
The amount of delivered liquid, as explained in the previous section, is dependent on the steps per mL, and this can be finely tuned using an analytical balance and changing the values in the command M92.
Another important thing is not only the amount of liquid delivered, but the flow stability. This is especially interesting in microfluidics, where the flow at low speed, should be as stable as possible.
We show how the flow from two or three pumps is stable in at low flow speed and in microfluidic devices. In Video S2, we used two 5 mL syringes for delivering 50 mL at a speed of 5 mL/min in a PDMS/Glass microfluidic Y-channel 2 mm wide and with a height of 0.5 mm. Even using such a large syringe, the laminar flow between the two flows is barely disturbed during the experiment.
Similarly, we used three 10 mL syringes for flowing 50 mL at 25 mL/min in a three-way-in single PDMS microfluidic channel 1 mm wide and 0.25 mm height. Also in this case the three flows are barely disturbed at their interfaces.
We also succeeded in forming a multiphase system using the same three way in microfluidic device, where two inlets were used for flowing oil, and the central channel was used for the water phase (Video S3). In this case, we used three syringe pumps delivering 50 mL at a speed of 25 mL/min.

Declaration of Competing Interest
The authors declare that they have no known competing financial interests or personal relationships that could have appeared to influence the work reported in this paper.