This project has been abandoned!
You'll need the following items:
Firmware 2.31 (or newer)
a SKR mini E3-DIP V1.1 controller board (although other boards will work too)
the Shared Stepper option (a.k.a. relay board)
an additional (3rd) stepper driver (i.e. TMC 2209)
a 2nd endstop on the Feeder
some kind of mount for your DDE to mount the 2nd endstop reliably (depends on the DDE you're using)
a couple of wires and cables
a decent power supply*
*Keep in mind that this version uses one more stepper motor and hence needs about 1-1.5 Amps more than the standard configuration. This may overwhelm the 3D printers PSU, which usually is used to power the SMuFF as well. Of course, this depends on the PSU built into your printer but always take into account, that printers like the Ender 3 mostly use the built in PSU for powering an additional Raspberry Pi and other components such as LEDs or NeoPixels.
I ended up using a separate 12V 4.5 A PSU for the SMuFF controller after I was facing some issues.
Powering the SMuFF controller using 12V is totally ok, since the SMuFF doesn't make use of any heaters and hence does not necessarily need a 24V PSU.
The first thing you got to do is to (re-) compile the firmware with the DDE option enabled. You do this by selecting the according build environment from PROJECT TASKS.
Since people seem to struggle wrapping their heads around the differences in wiring between Bowden and DDE setup, I've created these two block diagrams to depict the differences, without getting too technical:
The major difference is: The SMuFF Feeder stepper is connected directly to the stepper driver in a DDE setup, whereas it's routed through the Relay board in a Bowden setup. The DDE stepper is routed through the Relay board in a DDE setup and makes use of the additional 2nd Feeder Endstop, whereas both are not being used in a Bowden setup. Everything else stays the same.
Please notice: The connector labels may vary, depending on the controller board you use. Also, the Relay board shows only one connection, whereas in real life there are four, one for each driver wire (A1,A2/B1,B2).
Next, you have to move things around on the E3-DIP controller board:
Remove the Servo adapter PCB from the Y-Axis socket and put it into the Z-Axis socket. Please notice that now the Relay Control signal (MS3) needs also to be connected to that adapter board.
Configure the jumpers beneath the Y-Axis socket according to your stepper driver and plug in that additional driver into that socket.
Move the cable that goes from the Feeder (E-Motor) to the relay, plug it into to the DDE (Y-Motor) terminal and add a new stepper motor cable for the (SMuFF) Feeder to the E-Motor terminal.
Now add a new cable loom for the 2nd endstop to the E0-STOP terminal (not to Revolver Endstop a.k.a. Y-STOP).
Next, compile the firmware and flash it onto your controller.
Now modify the wiring as follows:
make sure the X and Z stepper are wired to the SMuFF controller board
attach the cable from the relay output terminals to your Direct Drive Extruder (green line Y/E0)
attach the cable for E0 coming from your printer to the relay inputs (pink line E0)
attach the 2nd Feeder endstop to the DDE of your printer. Make sure this endstop is able to signal the SMuFF as the filament reaches the gears of your DDE
As for the 2nd endstop: It doesn't matter whether you're using an optical or mechanical endstop, because that's configurable in the SMuFF firmware. If you already have a DDE with an integrated endstop, you may consider using this one by relocating the endstop from your printers controller to the SMuFF controller. Please keep in mind: The endstop used must be able do deliver a 3.3/5V signal with the states HIGH / LOW. You can't use endstops which deliver some sort of pulsed signal (such as the Duet3D Laser Sensor for example).
If the integrated endstop in your DDE is also used as a filament run out sensor, you'll need to solder a Y-Splitter to it, so you can serve both, your printer and the SMuFF.
For those of you having a BMG Extruder, I've published the 2nd endstop cover (which you'll see in the video below) over on Thingiverse.
Next, configure your SMuFF using the SMuFF Web Interface.
Firstly, take care that you configure the stepper parameters for the Y-Axis (Lid/DDE or a.k.a. Revolver) accordingly, so that it reflects the Steps per mm of your Direct Drive Extruder. Also, make sure the stepper driver is configured correctly in terms of Vref, Microsteps etc.
Secondly, please ensure that the "DDE/Nozzle Dist." setting in the "General" tab matches your printers setup.
In your printers firmware you need somehow to make sure that it turns off the Extruder stepper driver before a tool change command is executed. On a Duet3D controller this can be accomplished easily by utilizing the txfree.g macro by inserting a "M84 E0" GCode command to it.
Please notice: If you don't switch off / disable the stepper driver before the SMuFF takes over for a tool change, switching the relay under load may destroy the driver on your printers controller. If those drivers are soldered directly onto the controller board, this is going to render the whole board useless.
To test if everything is set up correctly, heat up the nozzle of your printer and initiate a tool change using the Web Interface. The SMuFF is supposed do the following steps:
select the according tool slot
switch the relay from "External" to "Internal"
feed the filament down to the DDE using 95% of the "Bowden length" parameter configured on the SMuFF
feed the remaining 5% driving both Extruders (Feeder and DDE) simultaneously until the 2nd endstop triggers
release the Lid servo on the SMuFF so that the DDE has a clear filament path and is able to take over
feed the filament down to the nozzle driving only the DDE (according to the configured "DDE/Nozzle Dist." parameter)
purge the filament (if this option has been enabled on the SMuFF)
switch the relay back from "Internal" to "External"
send a "ok" back to the 3D printer (or set the endstop signals accordingly on the Duet3D controller family)
While unloading filament, the SMuFF will do the steps described above in reverse. This also means you have to have the nozzle heated up before you initiate a tool change. Otherwise the filament will not be able to retract from the hotend, which will cause some heavy grinding on the filament.
Here's my testing video showing the loading / unloading procedure as described above.
There's also shown the BMG 2nd endstop cover, as mentioned before.
Please Notice: This solution uses a mechanical endstop , but you don't necessarily need the PCB for the endstop (the one mounted on top).
I've added this only for a better visual representation of the endstop triggering. Connecting only two wires, the COM and the N.O. , to the micro switch is enough to get a valid trigger signal.
Keep in mind: While this setup may seem a bit complicated and overkill, it's the best method to accomplish such a task without the need of modifying the firmware of your printer. It's also the only method which guarantees to be independent from the 3D printer the SMuFF is attached to.
Also: Since the printers E0 stepper cable is supposed to be connected to the N.C. terminals of the relay, your Direct Drive Extruder will even work if the SMuFF is not being powered. This enables you to feed filament directly to your DDE without the need of loading it into the SMuFF first or removing the SMuFF from your 3D printer entirely. This feature may come in handy for printing flexible filaments for example.