Skip to main content

Software

For getting a fully functional 3D Bioprinter out of a regular 3D Printer, adjustments in software and code are indispensable.

If you want to work with the Anet A8 3D printer and have converted it to a bioprinter, you are free to use our code. Our code is designed for precise execution for his tasks. For example, the code is responsible for driving the motor for the syringe and additionally it keeps the temperature of the hot bed at 0 degrees Celsius.

The following three-step instruction provides the necessary information for achieving this modification:

1. Step:

Replace stock firmware with current marlin version Marlin 2.0 LTS: https://marlinfw.org/meta/download/ also download current configuration files (used: Anet A8)

2. Step:

Open the Marlin.ino file (/Marlin/Marlin.ino) with Arduino and make following changes in the 'Configuration.h' file:

  • inverted Extruder motor in Firmware (#define INVERT_E0_DIR false -> define INVERT_E0_DIR true)
  • enabled cold extrusion: set EXTRUDE_MINTEMP in Marlin Firmware from 190 to 0.
  • change E steps to 3611 (in DEFAULT_AXIS_STEPS_PER_UNIT)

3. Step:

When you start working with the printer you should adjust the flow and babysteps. It is also important to choose the right injection size because the larger the injection, the more pressure the printer has to build up, which makes the printing more difficult. We therefore worked with 1 ml syringes. We have also set the flow to the maximum 999 and the babysteps on -0,500. Things which must be absent in the gcode file to print something:

  • anything with temperatures
  • anything trying to control the fan

We also used the PrusaSlicer to get the g-codes for the Bioprinter, but we had to make some changes. For this you must go to printer settings and go to user-defined g-code.

We used for Start G-code this Code:

M862.3 P "[printer_model]" ; printer model check
M862.1 P[nozzle_diameter] ; nozzle diameter check
M115 U3.2.3 ; tell printer latest fw version
G90 ; use absolute coordinates
M83 ; extruder relative mode
M204 S[machine_max_acceleration_extruding] T[machine_max_acceleration_retracting] ; MK2 firmware only supports the old M204 format
M104 S[first_layer_temperature] ; set extruder temp
M140 S[first_layer_bed_temperature] ; set bed temp
M190 S[first_layer_bed_temperature] ; wait for bed temp
M109 S[first_layer_temperature] ; wait for extruder temp
G28 W ; home all without mesh bed level
G80 ; mesh bed leveling
G1 Z0.2 F720
G1 Y-2 F1000 ; go outside print area
G92 E0
G1 X60 E9 F1000 ; intro line
G1 X100 E12.5 F1000 ; intro line
G92 E0

Ending G-Code:

G4 ; wait<br/>
M104 S0 ; turn off temperature
M140 S0 ; turn off heatbed
M107 ; turn off fan
{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+30, max_print_height)}{endif} ; Move print head up
G1 X0 Y200 F3000 ; home X axis
M900 K0 ; reset LA
M84 ; disable motors

G-Code before the shift change:

;BEFORE_LAYER_CHANGE
G92 E0.0
;[layer_z]