oliof / rome

Multi extruder to direct extruder setup

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ROME

RatOS Multi Extruder

A multi extruder to direct extruder solution for RatOS

High speed multi material printing, currently limited to 2 Extruders.

Table of Content

Printed Parts

Intro

I own a MMU and i like it, but i realized that 99% of my multimaterial prints are just two colors, or even less :-)

I had two spare extruders in my drawer and thought this could be an interesting project.

In case you have a octopus board, the additional extruders can be plugged into the free slots, no additional mcu needed.

ROME is MUCH faster then any regular MMU or ERCF setup. The whole filament unloading and loading process is multiple times faster, not only because ROME just has to park the filament behind the y-junction. In its native mode, ROME handles the loading and unloading process and skips the slicer controlled part of it. This process is highly optimized for a specific Hotend / Filament combination. No more configuration of cooling moves, skinnydip, ramming, ....

You can even set the acceleration for the wipe tower, in combination with the slicer max speed for the wipe tower feature, you can speed up the process even more.

With its Ooze Ex feature, it lets you use the most oozing hotends on the markets, it still produces a clean wipe tower

Every MM loading and unloading setting in the slicer will be deactivated and replaced with a simple unload macro.

This is a wipe tower, printed with 300mm/s @ 25000 mm²/s acceleration, Rapido UHF and PETG.

Installation

Raspberry

cd ~/
git clone https://github.com/HelgeKeck/rome.git
bash ~/rome/install.sh

Moonraker

[update_manager rome]
type: git_repo
primary_branch: main
path: ~/rome
origin: https://github.com/HelgeKeck/rome.git

RatOS

Add this to the users overrides section in your printer.cfg

# ROME
[include rome/config.cfg]

Slicer

G-code

Printer Start G-code

ROME_START_PRINT EXTRUDER_TEMP=[first_layer_temperature] BED_TEMP=[first_layer_bed_temperature] TOOL=[initial_tool] WIPE_TOWER={wipe_tower} WIPE_TOWER_X={wipe_tower_x} WIPE_TOWER_Y={wipe_tower_y} WIPE_TOWER_WIDTH={wipe_tower_width} WIPE_TOWER_ROTATION_ANGLE={wipe_tower_rotation_angle} COOLING_TUBE_RETRACTION={cooling_tube_retraction} COOLING_TUBE_LENGTH={cooling_tube_length} PARKING_POS_RETRACTION={parking_pos_retraction} EXTRA_LOADING_MOVE={extra_loading_move}

Printer End G-code

ROME_END_PRINT

Printer Tool change G-code

CHANGE_TOOL TOOL=[next_extruder]

Filament Start G-code

This is just an example, it shows how to configure pressure advance for the used extruders

SET_PRESSURE_ADVANCE ADVANCE=0.065 SMOOTH_TIME=0.04
SET_PRESSURE_ADVANCE ADVANCE=0.065 SMOOTH_TIME=0.04 EXTRUDER=rome_extruder_1
SET_PRESSURE_ADVANCE ADVANCE=0.065 SMOOTH_TIME=0.04 EXTRUDER=rome_extruder_2

ROME Modes

ROME can operate in two different modes, Native and Classic.

The Classic Mode works exactly like the MMU or ERCF. You are responsible to configure the Slicer like you would for the MMU or ERCF.

The Native Mode handles the filament loading and unloading on the Wipe tower. Faster filament changes, less Slicer configuration needed and more control over the process.

Native

Use relative E distances

Printer Settings->General->Advanced

Activate additional extruders

Printer Settings->General->Capabilities

Dectivate all multi material parameters

Printer Settings->Single extruder MM setup->Single extruder multi material parameters

Dectivate advanced wiping volume

Printer Settings->Single extruder MM setup->Advanced wipe tower purge volume calculs

Dectivate advanced wiping volume

Printer Settings->General->Advanced wipe tower pure volume calculs

Dectivate toolchange temperature

Filament Settings->Multimaterial->Multimaterial toolchange temperature

Dectivate skinnydip string reduction

Filament Settings->Multimaterial->Multimaterial toolchange string reduction

Dectivate cooling moves and ramming

Filament Settings->Multimaterial->Multimaterial parameters with single extruder MM printers

Enable wipe tower

Print Settings->multiple extruders->Wipe tower

Hardware

Primary Extruder

ROME is by default configured to be used with Orbiter Extruders on an Octopus mainboard. In case you want to use other extruders or mainboard you can override these sections in your printer.cfg

# -------------------------------------										
# Toolhead Extruder 
# Orbiter 2.0 
# -------------------------------------	
[extruder]
max_extrude_only_velocity: 100
max_extrude_only_accel: 1000
max_extrude_only_distance: 400
max_extrude_cross_section: 999999

Secondary Extruders

# -------------------------------------										
# Rome Extruder 1
# Orbiter 1.5 on Octopus Board Driver 3
# -------------------------------------										
[extruder_stepper rome_extruder_1]
extruder:
step_pin: PG4
dir_pin: !PC1
enable_pin: !PA0
microsteps: 64
rotation_distance: 4.63
full_steps_per_rotation: 200

[tmc2209 extruder_stepper rome_extruder_1]
uart_pin: PC7
stealthchop_threshold: 0
interpolate: False
driver_TBL: 1
driver_TOFF: 3
driver_HEND: 9
driver_HSTRT: 7

# -------------------------------------										
# Rome Extruder 2
# Orbiter 1.5 on Octopus Board Driver 4
# -------------------------------------										
[extruder_stepper rome_extruder_2]
extruder:
step_pin: PF9
dir_pin: !PF10
enable_pin: !PG2
microsteps: 64
rotation_distance: 4.63
full_steps_per_rotation: 200

[tmc2209 extruder_stepper rome_extruder_2]
uart_pin: PF2
stealthchop_threshold: 0
interpolate: False
driver_TBL: 1
driver_TOFF: 3
driver_HEND: 9
driver_HSTRT: 7

Filament Sensor

[filament_switch_sensor extruder_filament_sensor]
pause_on_runout: False
event_delay: 0.1
pause_delay: 0.1
switch_pin: ^!PG15
insert_gcode:
  ROME_INSERT_GCODE
runout_gcode:
  ROME_RUNOUT_GCODE

Configuration

# -------------------------------------										
#  ROME CONFIGURATION
# -------------------------------------										
[rome]
heater_timeout: 600                             # Heater Timeout in case of ROME paused the print

unload_filament_after_print: 1                  # 1 = unloads filament after a printing
                                                # 0 = filament stays in hotend

wipe_tower_acceleration: 25000                  # printer acceleration when printing the wipe tower

use_ooze_ex: 1                                  # 1 = ROME distributes oozed material over the length of the wipe tower
                                                # 0 = try your luck 

nozzle_loading_speed_mms: 10                    # extruder speed when moving the filament between the parking position and the nozzle 
filament_homing_speed_mms: 75                   # extruder speed when moving the filament inside bowden tube
filament_parking_speed_mms: 50                  # extruder speed when moving the filament between the filament sensor and the parking position

toolhead_sensor_to_reverse_bowden_mm: 210       # distance between the filament sensor and the parking position behind the y-junction
toolhead_sensor_to_extruder_gear_mm: 45         # distance between the filament sensor and the extruder gears
extruder_gear_to_parking_position_mm: 40        # distance between the extruder gears and the parking position
parking_position_to_nozzle_mm: 35               # distance between the parking position and the nozzle

Unload

By default ROME is configured for a Rapido UHF and PETG. If you have another combination, just override this macro so that it fits your needs.

# -------------------------------------										
# Unload from nozzle to parking position
# Rapido UHF
# Prusament PETG @ 250°
# -------------------------------------										
[gcode_macro _UNLOAD_FROM_NOZZLE_TO_PARKING_POSITION]
gcode:
  # initial retract
  G92 E0
  G0 E-25 F3600
  G4 P500
  # remove string
  G92 E0
  G0 E20 F3600
  G4 P100
  # move to parking position, the center of the ptfe tube that goes to your hotend
  G92 E0
  G0 E-35 F3600
  G4 P500
  # wait for movements
  M400

About

Multi extruder to direct extruder setup

License:GNU General Public License v3.0


Languages

Language:Python 91.3%Language:Shell 8.7%