Switching several extruders on a single driver

Hi,
I’m in the process of building a tool switching printer.
Is it possible to define the same stepper driver to different extruders?
I want to use only a single set of cables that connects to every tool with pogo pins. The heaters and fans need to be different since I want to keep them heated while docking. But the extruder motors are not connected while docking. Since the motors and drivers are all identical it would save me a lot of effort if I could just define the same stepper driver to different extruders.

For example:
Extruder 1: heater1, thermistor1, fan1, stepper1
Extruder 2: heater2, thermistor2, fan2, stepper1
Extruder 3: heater3, thermistor3, fan3, stepper1
And so on.

I’m aware that this might be quite a unique problem.
I would appreciate any help.

1 Like

Not sure if this will help, work, or what you need.

On the March 4th commit, it looks like you can create an extruder without a stepper:

Also, check out this PR. The config noted here was a single extruder stepper being switched between two extruders via a servo:

It’s possible if you create 3 extruders without steppers, then create an [extruder_stepper] object like:

[extruder_stepper belted_extruder]
extruder: extruder  # I believe assigning a extruder object is optional now.
step_pin = PA4
dir_pin = PA6
enable_pin = !PA2
microsteps: 16
rotation_distance: 22.5
full_steps_per_rotation: 200
gear_ratio: 4:1

finally follow up with three gcode macro’s, maybe something like:

[gcode_macro T0]
gcode:
    ACTIVATE_EXTRUDER EXTRUDER = extruder
    # Deactivate stepper in extruder(s)
    SYNC_EXTRUDER_MOTION EXTRUDER= MOTION_QUEUE=extruder1
    SYNC_EXTRUDER_MOTION EXTRUDER= MOTION_QUEUE=extruder2

    # Activate stepper in my_extruder_stepper
    SYNC_EXTRUDER_MOTION EXTRUDER=belted_extruder MOTION_QUEUE=extruder

[gcode_macro T1]
gcode:
    ACTIVATE_EXTRUDER EXTRUDER = extruder1
    # Deactivate stepper in extruder(s)
    SYNC_EXTRUDER_MOTION EXTRUDER= MOTION_QUEUE=extruder
    SYNC_EXTRUDER_MOTION EXTRUDER= MOTION_QUEUE=extruder2

    # Activate stepper in my_extruder_stepper
    SYNC_EXTRUDER_MOTION EXTRUDER=belted_extruder MOTION_QUEUE=extruder1

[gcode_macro T2]
gcode:
    ACTIVATE_EXTRUDER EXTRUDER = extruder2
    # Deactivate stepper in extruder(s)
    SYNC_EXTRUDER_MOTION EXTRUDER= MOTION_QUEUE=extruder
    SYNC_EXTRUDER_MOTION EXTRUDER= MOTION_QUEUE=extruder1

    # Activate stepper in my_extruder_stepper
    SYNC_EXTRUDER_MOTION EXTRUDER=belted_extruder MOTION_QUEUE=extruder2

You may not need the Deactivate SYNC_EXTRUDER_MOTION gcode options, so it may actually be like this:

[gcode_macro T0]
gcode:
    ACTIVATE_EXTRUDER EXTRUDER = extruder
    # Activate stepper in my_extruder_stepper
    SYNC_EXTRUDER_MOTION EXTRUDER=belted_extruder MOTION_QUEUE=extruder

[gcode_macro T1]
gcode:
    ACTIVATE_EXTRUDER EXTRUDER = extruder1
    # Activate stepper in my_extruder_stepper
    SYNC_EXTRUDER_MOTION EXTRUDER=belted_extruder MOTION_QUEUE=extruder1

[gcode_macro T2]
gcode:
    ACTIVATE_EXTRUDER EXTRUDER = extruder2
    # Activate stepper in my_extruder_stepper
    SYNC_EXTRUDER_MOTION EXTRUDER=belted_extruder MOTION_QUEUE=extruder2

Hopefully this helps.
-James