PLGA String Printing: Custom G-code Tutorial

Wikis > PLGA String Printing: Custom G-code Tutorial

Overview

Poly(lactic-co-glycolic acid), or PLGA, is a common thermoplastic used in osteochondral tissue engineering. The degradation and mechanical properties of this material can be altered by adjusting the ratios of the copolymers polylactide and polyglycolide.

PLGA can create what is referred to as a stringing effect in 3D printing. While often considered undesirable, this effect can be manipulated to achieve a finer resolution with this material. To utilize this feature, custom gcode must be written to create specific designs. While most prints can and should be easily prepared without developing custom gcode through the use of Slic3r, manually editing print files allows users the versatility to adjust and create unique print processes.  If not using the stringing effect, Slic3r is suggested to prepare print files.

Writing a Custom G-Code for String Printing

Custom code for string printing can be a bit challenging and requires some thought on the desired tool path to create a certain geometry. To create a thin line by extorting the stringing effect from PLGA, some material must be extruded at the beginning of the desired line then again at the end of the desired line. The movement between the two lines must be very fast to achieve a finer line. The video below depicts a simplified version of this process.

When depositing material at the beginning and end of a line, the z-height is set lower than the layer height. Then the z-height is brought higher than the layer height to minimize effects of crossover with previously deposited lines.

The video above demonstrates the basic concept of string printing. First, some material is deposited on the print bed. Next, the extruder moves quickly from this first point to the next, leaving a thin “string” of material before depositing some more material at the end point. The extruder is raised in between the starting and end points of these lines to minimize crossover effects with previously extruded material.

Common Commands

Below are some common gcode commands used with the BioBot 1. More information on gcodes can be found in this RepRapWiki article.

  • G1
    • G1 [X{X position}] [Y{Y position}] [Z{Z position}] [E{Extruder position}] [F{Feedrate}]  will move the extruder in a line to the given position
    • Feedrate is in units of mm/min and positions of X,Y and Z are in mm
    • For the BioBot 1, a line of G1 with an extruder position included will cause the printer to extrude material
      • example: 
        G1 X1 Y1 Z1 E0.1 F200 ; will move extruder to the position X1 Y1 Z1 at a rate of 200 mm/min
    • A line of G1 code without an extruder position will move the extruder without depositing material
      • example: 
        G1 X1 Y1 Z1 F200; will move extruder to the position X1 Y1 Z1 at a rate of 200 mm/min without extruding material
  • G4
    • G4 pauses the printer in its current state for a given amount of time
    • G4 PXX will pause the printer for XX millseconds
    • G4 SXX will pause the printer for XX seconds
  • G92
    • G92 sets the position of the extruder
    • the line G92 E0is used for BioBots printers to start the extrusion process
  • T0/T1
    • T0 selects extruder 1
    • T1 selects extruder 2
  • Formatting
    • the semicolon ; can be used to create comments in your gcode
    • As you create continuous lines of code to extrude, your number after E must continuously increase. You can reset this sequence with G92 E0.

Example Code Sequence

Let’s say we are trying to create a 2 layer 10 mm line, starting at X,Y and Z positions of (0,0,0.2), with a layer height of 0.2  mm and speed of 2 mm/s. For a traditional printing method, a code like something below would be used.

; Sample Code – I can label my code and create comments by writing text after a semicolon
T0 ; select left extruder for this print
G92 E0 ; set position of extruder
G1 X0 Y0 Z0.2 F120 ; Move extruder to  (0,0,0.2) at a rate of 120 mm/min without extruding material
G1 X5 Y0 Z0.2 E0.1 F120 ; Move extruder to  (5,0,0.2) at rate of 120 mm/min and extrude material
G1 X10 Y0 Z0.2 E0.2 F120 ; Move extruder to (10,0,0.2) at rate of 120 mm/min and continue to extrude
G92 E0 ; I am finished my first layer, so I use this command as a reset
G1 X10 Y0 Z0.4 F120 ; move extruder to (10,0,0.4) at rate of 120 mm/min without extruding material
G1 X5 Y0 Z0.4 E0.1 F120 ; move extruder to (5,0,0.4) at rate of 120 mm/min and extrude material
G1 X0 Y0 Z0.4 E0.2 F120 ; move extruder to (0,0,0.4) at rate of 120 mm/min and extrude material
G92 E0 ;

For a stringing method, the code would look more like this:

; Sample Code
T0 ; select left extruder for this print
G92 E0 ; set position of extruder
G1 X0 Y0 Z0.1 F120 ; Move extruder to  (0,0,0.2) at a rate of 120 mm/min without extruding material
G1 X0 Y0 Z0.1 E0.1 F120 ; Begin extruding material
G4 S2 E0.2 ; Continue extruding material for 2 seconds
G1 Z0.2 ; move extruder up to height of Z0.2
G92 E0 ;
G1 X10 Y0 Z0.2 F600 ; Move to position (10,0,0.2) at speed of 600 mm/min  to create thin line
G1 Z0.1 ; Move z-height back down to 0.1 mm
G1 X10 Y0 Z0.1 E0.1 F120 ; confirm position
G4 S2 ; Extrude for 2 seconds
G92 E0 ;
G1 X10 Y0 Z0.4 F120 ; move z-height up to 0.4 mm
G1 X0 Y0 Z0.4 F600 ; move extruder quickly to (0,0,0.4) to create thin line
G1 X0 Y0 Z0.2 E0.1 F120 ; move z-height to position of 0.2 mm and turn on extrusion
G4 S2 E0.2 ; continue extrusion for 2 seconds
G92 E0 ;

Try it Out

Try the PLGA stringing example star code following the PLGA printing protocol. Can you create this same star at twice the current size? How about half the size? Try it out!