Multifilament extruder switching

Hi all,

I started to modify my SparkCube to multifilament extrusion. Since I want to have it all through the existing nozzle and don't have a spare stepper driver on my board, I want to go the way of the multimaterial expansion for the prusa i3.
But in my opinion this system has a weakness - long bowden setup. When I first modified my printer to the bowden feed, I was a bit shocked how difficult it is to produce nice and clean parts.
So I figured, I'll make a push-pull feed. Keeping an direct drive extruder straight on the toolhead and having multiple filament feeders to supply the stuff. The bowden splitter sits straight before the direct drive extruder, so that for filament change the feeder unit needs minimum retract only to make way for the next material. This should eliminate all issues coming with bowden, and even allow for flexible filaments.

Now I have the multiplexing board set up with relais, pretty much as shown here.
Hardware is working so far.

Problem for me now is firmware:
Since all extruder (or feeder) stepeprs are connected to the same driver, my idea was to have all extruders in the firmware with EXT0_MIRROR_STEPPER 1.
The Pin definitions for all extruders goes to EXT0_ORIG, where the driver sits.
The step2, dir2 pins go for all steppers to the same dummy pins (in my case the unused pin 66,67 on RADDS), so that they don't interfere with anything.
That leaves me with the EXT0_ENABLE2_PIN, which in my case now I set to 31. This is connected to the input of the relais board.

So for each extruder it should be EXT0_PINS, and EXT<extruderNo>_ENABLE2_PIN <pinnumber>.

The problem now seems to be that I tested this setup and and have a problem with the setting"Disable estruder stepper when unused" (DISABLE_E):
If I use it (set to 1), it switches the relais board correctly, but disables the stepper stepper immediately after each move. Since the relais switches slow, on enabling it looses steps. This happens although I have set the STEPPER_INACTIVE_TIME to 360 seconds.

I tried with DISABLE_E set to 0 as well, but then of course it does not switch the relais board, since all are enabled.

Is there some way to fix this with the existing firmware? Preferably selectively disabling and enabling extruder steppers, or including in the tool change (select commands / deselect commands) some way to do it.



  • I'm not familiar with this relais board so I do not understand how it is supposed to work. Sounds like you need to disable enable so it selects a different motor? How do you then know which one becomes active?

    One thing you should consider is using SELECT/DESELECT scripts in firmware. It can contain any gcode so you could use M42 to switch any enable pin you like ignoring firmware defaults. Only thing is these pins are protected, so you have to go to pins.h at the end and remove extruders from sensitive pins list. Use G4 to add any pauses required.
  • Thank you for the swift reply.
    Basically the Relais board has 8 input pins, the necessary electronic (transistor, protecting diode etc) and Relais. A Relais is switched with input pin high.
    I'll test M42 in select script tomorrow and let you know the results.
    One question regarding M42: The description in repetier.ino says S0..255 as Argument for the pin. Since enable is not analogue, will it switch to high on S1 or do I need S255?

    Cheers, Simme
  • Use S0 and S255 = full power = digital switch.
  • Thanks for the help, works like a charm :)
    Now I just need to build the mechanical side and do some proper wiring and I can use up to 8 filaments in the same print  
Sign In or Register to comment.