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)| Parameter | Type | Description |
|---|---|---|
index | int | Tool index on the machine. |
name | str | Human-readable name for the extruder. |
config | str | Name of the configuration JSON file containing extrusion parameters. |
Key Attributes
| Attribute | Type | Description |
|---|---|---|
min_range | float | Minimum allowed extrusion position (mm). |
max_range | float | Maximum allowed extrusion position (mm). |
mm_to_ml | float | Conversion factor from motor mm to milliliters. |
e_drive | str | Extruder axis letter (e.g., E1). |
nozzle_diameter | float | Diameter of the nozzle tip (mm); default 0.898mm. |
syringe_diameter | float | Diameter of the syringe barrel (mm); default 14mm. |
Important Methods
| Method | Returns | Description |
|---|---|---|
load_config(config: str) | None | Load syringe parameters from JSON configuration file. |
post_load() | None | Automatically discover extruder drive assignment from firmware. |
make_e(x, y, z) | float | Calculate required extrusion (E) based on XY movement distance. |
dist(start: list, end: list) | float | Calculate 3D distance between two points. |
wipe_nozzle(x, y, z) | None | Execute a simple nozzle wiping move. |
wipe_tower(x, y, z) | None | Build a wipe tower by extruding a small perimeter square. |
move_extrude(x, y, z, s, multiplier, e) | None | Move and extrude simultaneously with computed or manual E values. |
aspirate(vol: float, location, s=2000) | None | Aspirate a volume of liquid from a location (for basic liquid handling use). |
dispense(vol: float, location, s=2000) | None | Dispense 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, andmm_to_mlfor 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
eis 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_diameterandsyringe_diameterare set appropriately to match physical setup. - Liquid handling methods (
aspirate,dispense) are less typical in extrusion applications but supported for flexibility.