Introduction: Low Cost Bioprinter

We are an undergrad-led research team at UC Davis. We are a part of BioInnovation Group, which operates in the TEAM Molecular Prototyping and BioInnovation Lab (Advisers Dr. Marc Facciotti, and Andrew Yao, M.S.). The lab brings together students of diverse backgrounds to work on this project (mech/chemical/biomed engineering).

A bit of background on this project is that we started printing transgenic rice cells in collab with Dr. Karen McDonald of the ChemE department with the goal to develop a low-cost bioprinter to make bioprinting more accessible to research institutions. Currently, low-end bioprinters cost approximately $10,000 while high-end bioprinters cost approximately $170,000. In contrast, our printer can be built for approximately $375.



  1. Ramps 1.4:
  2. Arduino mega 2560:
  3. Stepper motor drivers:
  4. Additional stepper motor (optional)
  5. Maker beam 2 in X 1 in
  6. Maker beam attachment hardware
  7. M3 screws assorted sizes
  8. M3 nuts x2
  9. 8 mm threaded rod
  10. 8 mm nut
  11. 608 bearing
  12. Binder clip
  13. Filament
  14. Monoprice V2
  15. Zip ties
  16. M3 heat set nuts 2mm width


  1. Drill bits of various sizes
  2. Hand Drill
  3. Drill press
  4. Hacksaw
  5. Soldering iron + solder
  6. Wire stripper
  7. Needle nose pliers
  8. Hex keys various sizes

Lab supplies:

  1. Petri dishes ~70mm diameter
  2. 60 ml syringe with Luer-lock tip
  3. 10 ml syringe with Luer-lock tip
  4. Luer-lock fittings
  5. Tubing for fittings
  6. T Connector for tubing
  7. Centrifuge
  8. Centrifuge tubes 60ml
  9. Scale
  10. Weigh boats
  11. Autoclave
  12. Beakers
  13. Graduated cylinder
  14. 0.1M CaCl2 solution
  15. Agarose
  16. Alginate
  17. Methylcellulose
  18. Sucrose


  1. Fusion 360 or Solidworks
  2. Arduino IDE
  3. Repetier Host
  4. Ultimaker Cura 4

Step 1: Selecting a 3D Printer

We chose the Monoprice MP Select Mini 3D Printer V2 as the starting 3D printer. This printer was selected because of its low cost and high availability. Additionally, a highly accurate 3D model of the printer was already available which made design easier. This instructable will be tailored for this specific printer but a similar process can be used to convert other common FDM printers and CNC machines.

High accuracy model:

Step 2: 3D Printing

Before disassembly of the Monoprice printer, several parts need to be 3D printed for the modification of the 3D printer. There are versions of the paste extruders, one that requires epoxy and one that doesn't. The one that requires epoxy is more compact but more difficult to assemble.

Step 3: Prepare Printer for Modification

The front tower panel, bottom cover and the control panel should be removed. Once the bottom has been removed, disconnect all electronics from the control board and remove the control board.

Step 4: Interchangeable Mount

Body 1 and Body 14 each require two heat set nuts. Body 1 is mounted to the printer frame by the two M3 bolts hidden under the belt. The bolts can be revealed by removing the belt tensioner and pulling the belt to one side.

Step 5: Z Axis Switch

The Z-axis switch is repositioned so that any length needle can be used during the homing sequence without compensating in the software. The switch should be mounted with 2 M3 screws to the printer chassis directly under the printhead as close to the print bed as possible.

Step 6: Wiring

The wiring is done in accordance with the Ramps 1.4 standards. Simply follow the wiring diagram. Cut off and tin wires as needed for the terminal blocks. Some wires may need to be extended.

Step 7: Epoxy Extruder

While this extruder takes less time to print, it does use epoxy which increases the total build time to over 24hrs. The 8mm threaded rod should be epoxied to the 608 bearing and the bearing should be epoxied to the 3D printed piece Body 21. Additionally, the nut for the threaded rod should be epoxied to Body 40. Once the epoxy has been fully cured, the rubber tips from the 60ml and 10 ml syringe plungers can be fitted over Body 9 and Body 21, respectively. An appropriate T fitting couldn't be found so a crude one was made from 6mm brass tubing and solder. The extruder acts as a hydraulic system which pushes the Bioink out of the lower chamber of the 10 ml syringe. Air can be evacuated out of the system by vigorously shaking the tubes while holding the T fitting at the highest point.

Step 8: Regular Paste Extruder

This extruder can simply be bolted together. The downside to this extruder is that it is bulkier and has high backlash.

Step 9: Step 9: Arduino Firmware

The Arduino needs firmware to run the stepper drivers and other electronics. We chose Marlin as it is free, easily modified with Arduino IDE and well supported. We have modified the firmware for our specific hardware but it is quite simple to modify for other printers because all the code is commented and clearly explained. Double click the MonopriceV2BioprinterFirmware.ino file to open the marlin configuration files.

Step 10: Cura Profile

The Cura profile can be imported into Ultimaker Cura 4.0.0 and used to make high surface area meshes for use in a profusion reactor. The generation of Gcode for the printer is still highly experimental and requires much patience. Also attached is a test gcode for a circular profusion reactor.

Step 11: Changing Start G-code

Paste this code into start G-code setting:

G1 Z15


G1 Z20 F3000

G92 Z33.7



G92 E0

In Repetier, to modify start Gcode go to slicer->Configuration->G-codes->start G-codes.It is necessary to modify the G92 Z value for each particular case. Slowly increase the value until the needle is the desired distance from the Petri dish surface at the start of the print.

Step 12: Making the Bioink

The process for developing a Bioink suitable for an application is complex. This is the process that we followed:


The hydrogel is suitable for shear-sensitive plant cells and has open macropores to allow diffusion. The hydrogel is made by dissolving agarose, alginate, methylcellulose, and sucrose in deionized water and adding cells. The gel is viscous until it is cured with 0.1M calcium chloride, which makes it sturdy. The calcium chloride curing solution cross-links with the alginate to make it sturdy. The alginate is the base of the gel, the methylcellulose homogenizes the gel, and the agarose provides more structure since it gels at room temperature. The sucrose provides food for the cells to continue to grow in the hydrogel.

A brief overview of some of the experiments to verify the gel

We tested different hydrogels with varying amounts of agarose and recorded its consistency, how easily it printed, and whether it sank or floated in the curing solution. Decreasing the alginate percentage made the gel too liquidy and it was not able to keep its shape after printing. Increasing the alginate percentage made the curing solution work so quickly, that the gel would cure before sticking to the top layer. A hydrogel that holds its shape and doesn’t cure too quickly was developed using 2.8 wt% alginate.

How to develop a hydrogel


Agarose (0.9 wt %)

Alginate (2.8 wt %)

Methylcellulose (3.0 wt%)

Sucrose (3.0 wt%)

Calcium Chloride .1M (147.001 g/mol)


cell aggregates

2 Washed & Dried Beakers

1 Mixing Spatula

Aluminum Foil

Plastic Weigh Paper

Graduated Cylinder


Making the Hydrogel:

  1. Measure out a specific amount of ddH20 based on how much gel solution you want to prepare. Use the graduated cylinder to obtain a specific volume of ddH20.

  2. The hydrogel solution will contain Alginate (2.8 wt %)), Agarose(0.9 wt %), sucrose (3 wt%), and methylcellulose (3 wt%). Proper portions of the components of the hydrogel solution will be measured using the plastic weigh paper.

  3. When finished weighing out all components, add ddh20, sucrose, agarose, and lastly sodium alginate to one of the dry beakers. Swirl to mix but do not use a spatula to mix because the powder will stick to the spatula.

  4. Once mixed, wrap the top of the beaker with aluminum foil properly and label the beaker. Add a piece of autoclave tape to the top of the foil.

  5. Put the remaining methylcellulose into the other dry beaker and wrap it in aluminum foil like the previous beaker. Label this beaker and add a piece of autoclave tape to the top of the foil.

  6. Wrap 1 spatula in aluminum foil and make sure none of it is exposed. Add autoclave tape to the wrapped spatula.

  7. Autoclave the 2 beakers and 1 spatula at 121 C for 20 minutes during the sterilize cycle. DO NOT USE THE AUTOCLAVE IN A STERILE & DRY CYCLE.

  8. Once the autoclave cycle is complete, allow the gel to cool down to room temperature and once it has reached it, start operating in the Biological Safety Cabinet.

  9. Make sure to wash your hands and arms and use proper aseptic technique once operating in the biosafety cabinet. Also MAKE SURE to not come into direct contact with objects that will touch the gel or be close to the gel (ex: the mixing end of the spatula, or the region of the aluminum foils that sits over the gel)

  10. In the biosafety cabinet mix the methylcellulose into the gel to get homogenous spreading. Once done mixing, rewrap the top the mixed gel solution and place in the fridge overnight.

  11. From here the gel can be used for introduction of the cells or for other uses like printing.

Adding the Cells:

  1. Filter the cells so they’re the same size. Our procedure for filtering is

    1. Lightly scrape the cells off the petri dish and use a 380 micrometer sieve to filter the cells.

  2. Gently mix the filtered cells in the hydrogel solution using a flat head spatula to avoid loss of the mixture (that have been autoclaved).

  3. After mixing the cells centrifuge out bubbles

  4. From here the hydrogel is complete and can be used for printing, curing, and future experiments.

How to develop the curing solution (0.1M Calcium chloride, CaCl2)


Calcium chloride


Sucrose (3 wt %)

Procedure (to make 1L curing solution)

  1. Measure 147.01g calcium chloride, 30mL sucrose, and 1L ddH20.

  2. Mix calcium chloride, sucrose, and ddH20 in a large beaker or container.

  3. Submerge the gel in the curing solution for at least 10 minutes to cure.

Step 13: Print!

In theory, Bioprinting is extremely simple; however, in practice, there are many factors that can cause failures. With this gel, we have found that several things can be done to maximize success for our application:

  1. Use small amounts of CaCl2 solution to partially cure the gel while printing,
  2. Use a paper towel at the bottom of the petri dish to increase adhesion
  3. Use a paper towel to evenly spread small amounts of CaCl2 over the whole print
  4. use flowrate slider in Repetier to find correct flowrate

For different applications and different gels, different techniques may need to be used. Our procedure was generated over several months. Patience is key.

Good luck if you attempt this project and feel free to ask any questions.

Arduino Contest 2019

First Prize in the
Arduino Contest 2019