Skip to content

SyringeExtruder

Description

A SyringeExtruder tool for extrusion-based 3D printing with a motorized syringe on the Jubilee system.

Supports volumetric extrusion commands linked to spatial movement, nozzle wiping, and regular liquid handling operations (aspirate/dispense).

Constructor

python
SyringeExtruder(index: int, name: str, config: str)
ParameterTypeDescription
indexintTool index on the machine.
namestrHuman-readable name for the extruder.
configstrName of the configuration JSON file containing extrusion parameters.

Key Attributes

AttributeTypeDescription
min_rangefloatMinimum allowed extrusion position (mm).
max_rangefloatMaximum allowed extrusion position (mm).
mm_to_mlfloatConversion factor from motor mm to milliliters.
e_drivestrExtruder axis letter (e.g., E1).
nozzle_diameterfloatDiameter of the nozzle tip (mm); default 0.898mm.
syringe_diameterfloatDiameter of the syringe barrel (mm); default 14mm.

Important Methods

MethodReturnsDescription
load_config(config: str)NoneLoad syringe parameters from JSON configuration file.
post_load()NoneAutomatically discover extruder drive assignment from firmware.
make_e(x, y, z)floatCalculate required extrusion (E) based on XY movement distance.
dist(start: list, end: list)floatCalculate 3D distance between two points.
wipe_nozzle(x, y, z)NoneExecute a simple nozzle wiping move.
wipe_tower(x, y, z)NoneBuild a wipe tower by extruding a small perimeter square.
move_extrude(x, y, z, s, multiplier, e)NoneMove and extrude simultaneously with computed or manual E values.
aspirate(vol: float, location, s=2000)NoneAspirate a volume of liquid from a location (for basic liquid handling use).
dispense(vol: float, location, s=2000)NoneDispense a volume of liquid into a location (for basic liquid handling use).

Method Details

Load Configuration

python
load_config(config)
  • Loads min_range, max_range, and mm_to_ml for syringe control.
  • Configuration files are expected inside /tools/configs.

Move Extrude

python
move_extrude(x=None, y=None, z=None, s=180, multiplier=1, e=None)
  • Moves in 3D space while extruding material.
  • If e is not provided, computes extrusion volume based on XY travel distance and nozzle/syringe diameter ratio.
  • Key for 3D printing paths.

Wipe Nozzle

python
wipe_nozzle(x=285, y=250, z=0.2)
  • Quick forward move at low Z to clean the nozzle tip.

Wipe Tower

python
wipe_tower(x=285, y=250, z=0.2)
  • Print a small square to clear clogged nozzle material.

Aspirate & Dispense

python
aspirate(vol, location, s=2000)
dispense(vol, location, s=2000)
  • Basic volumetric liquid handling, mostly for priming and maintenance.
  • Not typically used during 3D printing tasks.

Usage Example

python
extruder = SyringeExtruder(index=1, name="ExtruderTool", config="extruder_config")
extruder.post_load()

# Wipe the nozzle
extruder.wipe_nozzle()

# Move while extruding
extruder.move_extrude(x=100, y=150, s=200)

# Dispense 2mL into a well (optional maintenance)
extruder.dispense(vol=2.0, location=well_A1)

Important Notes

  • Extruder paths assume E-axis extrusion based on calculated distance and diameter ratios.
  • Always verify nozzle_diameter and syringe_diameter are set appropriately to match physical setup.
  • Liquid handling methods (aspirate, dispense) are less typical in extrusion applications but supported for flexibility.

Pre-release documentation · Internal research use only · Not authorized for redistribution.