Work in Progress

a.k.a. Development Blog

HAPPY BIRTHDAY SMuFF!

I bet you didn't know: February 16 is SMuFFs birthday. YAY!

Let this sink in: Five years ago I've presented the very first SMuFF to the public on Thingiverse. No wonder I sometimes call it my baby. Baby turned 5 today!

As one can tell from a look at the picture, since this day a lot of things have changed. Going from 3 stepper motors, using a spindle for the Selector and a Revolver design to V6, a sleek design with a belted Selector and a servo as the Revolver replacement, just to name a few. If you're interested how it became to be, you can read it all up on the Background page.
Most of the changes were focused on making it simpler and reducing the overall costs but also increasing reliability.

Now, 5 years down the (sometimes bumpy) road, I consider this project mature and stable. The only DIY MMU/Extruder solution that's not focused on only one 3D Printer ecosystem.

Often copied but never equaled!

After all this time with a lot of fun but also lot of frustration, I'm going to retire from its development and focus on other projects in the future.

Now, before you start screaming in panic and fire up a riot, hear me out:
No, this doesn't mean this project is dead! It is still Open-Source, all the information you need to build one is still available on this website / Github and I'm proud to say that we've grown a small but strong community over on Discord, with makers enthusiastic and skilled who are willing to help others solving problems, as one can tell when scrolling further down.

Look at this beauty!

feverishzoja.mp4

Maker Feverishzoja has posted her SMuFF setup and I love it!
Not only she managed to build a SMuFF that's smoothly swapping filaments but also, she integrated a completely servo-less solution for the Filament-Cutter and a Bambulab like Wiper / Purge contraption.

If you want to know more about this setup, head over to Discord and contact her. She's more than willing to help others.

New Controller Option for Spool-Rewinder

As maker EatMyNoodle over on Discord pointed out, there's an alternative option for driving the Spool-Rewinder motors. It's the Adafruit Stepper + DC-Motor FeatherWing (see picture).

The FeatherWing type of boards come with the option of stacking them together, which comes in handy for the wiring, if you have more than one on those (e.g. 3 DC-Motor controller + 1 Servo controller).

I've added this option to the latest firmware and also to the "How to..." instructions for the Spool-Rewinder.

However, this time I didn't design a dedicated housing for it, but you always have the option to use my initial housing for the FeatherWing Servo and customize it to your liking.  

The latest firmware version 3.25 also makes it easier to route debug messages to another serial port (e.g. the USB). Have a look at the README.md on my Github repository.

Important: Potential bug in SW-I2C

Today I figured there's a bug in the SW-I2C library, which interestingly happend only on my SKR E3 V3.0 board:
As the SMuFF firmware boots, the I2C bus scanner reports false positives on unused addresses (see first image on the left).

I thought I've seen this issue quite some time ago and I was pretty confident, I've fixed that already. While tracking this issue down, I figured, this came from the SoftWireSTM32 library, which reported I2C_OK regardless what the processing underneath returned (which in this case should have been I2C_NACK_ADDR). 

As I looked directly into the repository on Github, I wasn't too surprised to see that I've fixed it two years ago. Though, I was wondering what was going on.
Turned out: The old library source was cached on my hard disc and never got updated for this particular build. I'm pretty sure I've cleared the cache a couple of times since I made this change, so I'm not quite sure where this old source came from.

So, next time you start your build (regardless for which board) please make sure that PlatformIO spits out the correct version number for that library, which is 1.0.1 but not 1.0.0 (see 2nd. image). To be on the safe side, I'd recommend deleting the .pio\libraries folder from time to time. 

Although caching is a great method to save time and bytes, but sometimes it can be a real PITA.

A new SMuFF build with some extras

Maker Pirpolo over on Discord just posted his take on the SMuFF, which deserves some credit. 

Not only he shows his (very appealing) integration of the SMuFF into an Ikea Lack table, but also some innovative modifications. The Filament-Wiper for example has got a silicone pad to go easy on the nozzle and the Cutter was modded to reduce the overall Z-Height.

Head over to this Discord channel, to read his full story and his motivation behind. If you like his approach, make sure you give him some credit.

I'm pretty confident, this is not his last contribution to the SMuFF project.

Pirpolo has published this solution on Thangs and has also set up his own page, where he will comment his build and his future progress. Go check them both out!

Pirpolo-Cutter.mp4
Pirpolo-Wiper.mp4

New Firmware Build Configurator

I've played with this thought for a long time, because the configuration for building the SMuFF firmware is a bit complex and might intimidate newbies quite a bit. Even if you're not a newbie, switching from one configuration to another can be annoying (I can tell, I'm doing it all the time). Because the latest firmware additions made it more worse than better (just think about all the different build environments in the Project Tasks treeview), I decided to give it a try, although, seemingly, no one before tried this approach.
Luckily, PlattformIO allows using any Python package in the pre/post build scripts if needed.

So, I completely overhauled the script that was printing out the build configuration and replaced it with a dialog window, based on the Custom-Tkinter package.

This dialog enables you to pick which option you want to include in your SMuFF firmware simply by clicking on it. Thus, the Project Tasks treeview now contains only the build environments for the base configuration of the different boards and hence, it got small and tidy.

When you start building the firmware by clicking the button, you'll find a new readme-build.txt file in the output folder, which lists all options used in this particular build.

New Housing for the SKR E3 V3.0 and BTT-TFT 3.0 E3 combo

I've realized that BigTreetech tends to bundle the SKR E3 V3.0 controller board with the BTT-TFT 3.5 E3 edition, which makes sense in that way, that the SKR board is meant as an replacement of the original Creality controller board.

Until now, the (new) electronics housing I've designed for the SKR E3 V3.0 was not able to contain the Ender-3 display due to size constraints. Hence I've designed a new housing, so those of you who got the bundle have something to work with.

I've published the STEP file on Thangs. STL files can be found on Printables

The easiest way to connect this display with the SKR E3 V3.0 is to attach it via the 10 pin flat ribbon cable on EXP3 and compile the firmware with the -D USE_CREALITY_DISPLAY and -D USE_FAST_SW_SPI options.

Please notice: This kind of display comes with the option to control your 3D printer via the serial interface (a.k.a. "Touch mode"), if you run on Marlin.
This enables you to use one display to control both, SMuFF and 3D printer using this "hack". Therefore, I've added a slightly modified JST holder on the back (see picture 3, lower right corner), which internally connects to the serial port header of the display. The display cable coming from your printer connects externally to the 5 pin JST-XH header on the back, which is slightly different in size compared to the 6 pin JST-PH header used for the feeder stepper motor and thus, prevents you from accidentally attaching the wrong cable to the wrong connector!

This new display lid is also able to accommodate the original Ender-3 12864 display, in case you still have one of those and don't know what else to do with it...

Motorized Spool-Rewinder published

I've published my new design for an automatic Spool-Rewinder for the SMuFF over on Thangs.

It'll replace the Filament-Buffer, in case you don't have enough space behind the printer/SMuFF for spools and SFB, which was my motivation build this gadget (as you may be able to spot in the video).

Go check it out.  

More about this device you'll also find on my Discord server and on this page, explaining the "How to...".

Troubleshooting added

I've added a new page for those of you who finished the SMuFF build and are just about to do the initial start-up. It contains a detailed description on what steps should be taken, what the default behavior is and what can be done if the SMuFF doesn't act as expected.

Check it out here.  

One Ring Display To Rule Them All...

I've been already speculating whether one BTT 2.4/3.5 V3.0 display would be sufficient for both, the 3D printer and the SMuFF and now I've tested this theory successfully!

If you happen to own one of these displays and you've set up the communication to your 3D printer via serial connection (a.k.a. "Touch mode"), then you're able to connect the SMuFF controller board to the very same display, using the EXP1/EXP2 or EXP3 connectors on that display. Switching between both devices can be achieved by touching and holding the display for about 3 seconds. The display will pop up the selection menu, where you either pick "Touch mode" or "Marlin mode".

You'll notice a small lag when switching back to "Touch mode", since the display needs to reestablish the serial connection.

Both modes seem to operate well independent from each other. The only thing you have to take care of is to extend the serial cable coming from the 3D printer, since the display is supposed to sit in the SMuFF housing. Because of this, make sure that the +5V wire coming from the 3D printer is disconnected/cut. You need to power the display from only one source. Also, take into account, if you connect the Reset signal, it'll reset both devices, the SMuFF and the 3D printer! Hence, I suggest cutting this connection as well and connecting only RX, TX and GND on the serial interface side.

I even managed to squeeze in the big, mighty BTT-TFT 3.5 into the Lid for the SKR E3 V3.0 housing. It barely fits but it fits!

The easiest way to connect such a display to the SMuFF is to compile the firmware with the options -D USE_CREALITY_DISPLAY and -D USE_FAST_SW_SPI enabled and attach the BTT-TFT via the default 10 pin flat ribbon cable, that's usually shipped with the display, via the EXP3 header.

Now, whenever you need to control the SMuFF, switch to "Marlin mode" and do whatever you need to, then switch  back to "Touch mode" to control the 3D printer again. It's that easy!

Firmware Binaries added to my Github Repository

In the past, I've refused to add pre-compiled firmware binaries to my Github repository, simply because all the possible permutations were too extensive*. But since most of the supported controller boards are outdated now and the firmware isn't changing as frequently, I've decided to add the latest binaries (V3.21), supporting the following hardware:

This makes it easier for new makers to flash the firmware on the controller  board without the need of installing the development environment and compiling the firmware. 

Even though it's only for one type of controller board and one type of display, there are still 8 binaries you have to pick from, each one supporting a different configuration, such as Bowden/DDE or with/without NeoPixel support etc. - see details in the release description.

If you're about to start a new SMuFF build, I highly recommend using these components. They are easy to source and the pricing is appropriate.

Future releases of the firmware source code will come with a different set of Build Environments, which will put the focus on the "new" hardware options (see picture).  

Older Build Environments are still contained in platformio.ini but they are commented out. If you need to use them, you need to un-comment them first.


* If you calculate: 5 boards * 5 displays * 8 variants you'll get 200 permutations, which would result in 200 firmware binaries. That's one of the reasons why I still refuse compiling and publishing all those binaries with each release of the firmware.

SMuFF - The "Nice Noble Sexy Edition"

Sometimes you simply have to award yourself, for whatever reason seems appropriate!

Maker Bill Dung over on Discord did just that and he ordered himself SLS printed SMuFF parts. 

There's not much more to say here... let the pictures speak for themselves.

Just in case you're intrigued... here's the shop where he ordered them: 3D Printing Service | 3DBAVARIA GmbH & Co. KG 

SMuFF Firmware updated to version 3.21

144 LEDs per meter NeoPixel strip (this particular one is for the M5 Stack)

This update mostly concerns those who'd like to integrate the NeoPixel tool LEDs on their SMuFF without the hassle of fiddling them together.

By accident, I recently found out that the 144 LEDs per meter NeoPixel strip has the ideal spacing of 7 mm in between two LEDs. Thus, 3 of them will fit perfectly on one of the 21 mm wide Filament-Guides. 

So, no more cutting and laborious soldering of single NeoPixels. Simply cut the strip at 3 times the number of tools you have to length and use them. 

The new firmware lets you configure the amount of LEDs per tool easily in the Display menu or in SMuFF-WI.

And if that ain't fancy enough for you, let me tell you that there are also 332 LEDs per meter strips with a LED spacing of 3 mm - means 7 of them will fit one Filament-Guide/tool...
But, keep in mind: On a 5 tool SMuFF this 332 LEDs/m setup can easily draw up to 2.1 Amps from your 5V rail! On a maxed out SMuFF (a.k.a. 12 tools) the power consumption may exceed 5 Amps, which - in most cases - will overwhelm the buck converter on the controller board you're using! So, make sure you're powering the NeoPixels from a separate 5V buck converter which is able to deliver enough juice.

2nd endstop for the LGX-Lite

I'm currently working on a solution for a 2nd endstop on the LGX-Lite Direct Drive Extruder and I've come up with this.

It's consists of a new 3D printed frontplate that replaces the original one and which allows you to mount an endstop switch and take the 5 mm steel ball, which will trigger/untrigger the switch as the filament passes this spot.

Though, to accomplish this, you'll need to drill a 5.5 mm hole into your LGX-Lite in order to free the filament path and allow the steel ball to be pushed by the filament once it reaches this position. Keep in mind that this procedure will void your warranty for sure and, if not done correctly, can destroy the function of your extruder!

I'm using the FYSETC endstop switch (with the switch lever removed) because it's easy to source, easy to mount and - most important - gives me a visual feedback when/if the switch is triggered. Though, a standard microswitch, with only GND and Signal connected, will do the job as well.

I haven't tested it fully yet (i.e. attached to the SMuFF) , so stay tuned for further findings from my side.

I somehow have the gut feeling, that the SMuFF firmware needs a bit of tweaking for this solution to work reliably.

Filament-Cutter-Base-Module V4 published

I've refined my V3 of the Filament-Cutter-Base-Module (see further down) and integrated a lever for cutting the filament.

You can download the STEP file from Thangs.

As it says in the picture, the lever is dimensioned to output a force of around 2N using an input force of about 0.5N (roughly 4.5 times the input force), which should be feasible for most of the stepper motors out there. 

If that force amplification isn't enough for your setup, you can use the STEP file and make the upper part of the lever even longer.

This handy web page provides you with a Lever Calculator which makes it easy to figure out the correct length. You'll need to set up at least the Lever arm 2 length of 12.5 mm, the input force in Newton of Lever arm 1 and the desired output  force for Lever arm 2 and you'll get the length of Lever arm 1 calculated (which in my design is around 58 mm). For example:

Keep in mind, that for successfully cutting the filament you'll need at least about 2N of force. The input force relates to what your X-Axis motor is specified to. The stepper motor data sheet will provide you this information. If you don't have that data sheet, it's safe to assume that a NEMA17 motor with a body length of 40 mm can provide a force of about 0.4 N.

Please take into account, that you'll need a "Push-Pin" mounted somewhere on your 3D-Printers frame as well, that operates the lever when needed. I've included one that fits the CR-10 Smart in the model, which you'd need to adopt to your printer.

Added "Purge Calibration" 

I've added a "Purge-Calibration" procedure to this website, in order to make this step a bit easier for you. Check it out here

Updated OctoPrint configuration

I've updated the "How to configure the OctoPrint plugin" chapter and made the setup of the ttySMuFF somewhat easier. Have a look.

SLA printed SMuFF anyone?

20230422_080951.mp4

Inspired by maker EatMyNoodle in the Discord community, maker Defenc has SLA printed all the SMuFF parts out of translucent resin. After printing them, he specially treated the parts by sanding and coating them, in order to get them very translucent and very shiny.
The result is a SMuFF where you literally can see all the moving parts, which  are usually covered up by plastic, and hence watch it in operation (i.e. feeding the filament).

Just for the sake of inspiration and a bit of "bling-bling", this is what his SMuFF looks like when you have the tools NeoPixels attached to it.
If you'd like to see more of it, head over to this channel on my Discord server.

Hattrick completed

This is now the 3rd (and last) PCB I've designed for the SMuFF. It's the SMuFF NeoPixel board, which is used to mark the current tool and various states on the SMuFF (as mentioned here).

All three PCBs (SMuFF Backbone, Connector and NeoPixel) are meant to support new SMuFF builders and help them to overcome the hurdles of DIY electronics.

If you want one (or more  for more than 5 tools), you can get them from Aisler.
If you do so, please make sure you order them preassembled, since soldering those components by hand can be challenging.
Also: If your SMuFF handles more than 5 materials, make sure to order the right amount, solder them together by bridging the 3 exposed solder pads (GND, +5V, DIN) and cut off the remaining LEDs if needed (i.e. 7 tools = 5 + 5 - 3). 

Please notice: This PCB option is obsolete if you're going to use the 144 LEDs per meter NeoPixel strips, as announced above.

SMuFF Connector Board PCB

Just added this little board to my collection of SMuFF PCBs. 

This PCB is not a 'must have' but a 'nice to have' gadget, which makes wiring up the SMuFF even easier. It is meant as a replacement  for the 3D printed JST holder, that fits into the left Base. All you need to do is to cut it apart and solder the two pieces together, using an angled 20 pin wrap connector  (1.27mm) and standard JST connectors for easier access. 

For the servos (Lid and Cutter), you can pick between two options:

In either case, you have to ensure you've got the right signals routed to the "Signals" header (either SCL/SDA or the Lid-/Cutter Servo pins). 

A big advantage of this board is that you have less wires to route from the controller to the SMuFF, and hence you'll get a pretty nice and compact wiring loom. 

The JST headers for Power and Signals use different pin counts, so you can't confuse them accidentally (though it's possible to swap Selector and Feeder - but you'll realize that pretty soon - and it won't do any damage).
All headers on this board are standard JST XH (PH for the steppers), which are also commonly used for wiring up a 3D Printer. They are nicely labeled, so you won't get confused when connecting them for the first time or when you need to maintain your SMuFF some day.

I've put this PCB online at Aisler.

SMuFF Firmware updated to 3.16

I've updated the SMuFF firmware to 3.16. Please make sure you get the newest version from Github and read the README.md, since this version has got a couple of configuration updates you have to know about.

I've also updated the SMuFF-WebInterface and my OctoPrint plugin for the new version.

I also added a new chapter for tuning stepper motors on the SMuFF, which the video shown on the left relates to.

A major SMuFF-PP update is pending and is supposed to be released soon (so, don't use the version mentioned below :o).

 Stay tuned!

Overhauled SMuFF-PP

I just published a newer version of my SMuFF-PP app. What it's good for, I've published here.

New branch for SMuFF OctoPrint plugin published

I've created a new (experimental) branch for my OctoPrint plugin on Github.

This version is meant to handle two SMuFFs for an IDEX machine. 

The code uploaded has been tested and is working with two (independent) SMuFFs connected to the Raspberry Pi, which have to be configured as such in the SMuFF settings of OctoPrint.
The new plugin will translate tool numbers on its own, which means, switching to T5 on two 5 materials SMuFFs will automagically become T0 on the 2nd SMuFF. If configured for "Dual SMuFF", the navbar will show status information for both of them. Also, the SMuFF tab will let you switch between instances in order to control each SMuFF individually by using the buttons.

Anyways, I'm not quite sure if it'll work on an 'real' IDEX machine without some major changes in Marlin itself. Marlin supports either multiple extruders or multiple materials on a "Single Nozzle" but not both. Hence, I guess, getting Marlin to work with some kind of mixed mode will require heavy re-coding. 

I don't have an IDEX machine, so my testing capabilities are pretty much limited on this topic. 

If you'd like to give this modified plugin a try, please let me know over on Discord. Please keep in mind that this plugin is still considered as "Work In Progress".

SMuFF doing Pin-Support-Challenge

I've stated many times that the SMuFF can improve a 3D printer extruder, even without using a DDE and here's the proof.

I've printed this Pin-Support-Challenge model on my ZEvolution II printer, a typical cartesian bed-slinger with Bowden style extruder.

If you want to test you printer, here's the link to the model generator.

I got inspired by Igors video on his channel (My Tech Fun) on YouTube.

Filament-Cutter Mod by Exsurge MechPrints

Here's a very short video of a modified Filament-Cutter design published by maker Exsurge MechPrints (a.k.a eye_floaters over on Discord).

He added a small stepper which ejects the cut-off filament tip, which - I think - is a clever addition.

He promised to make a longer video as soon as he added that to his printer.

Hop over to his channel and leave him a like if you want to see more of this in the near future.

Filament-Cutter-Base-Module V3

Been tossing around some ideas for the Filament-Cutter-Base-Module and I came up with this one: Filament-Cutter without the need for a servo.

Maybe yet another nutty idea but maybe useful, who knows...

I haven't tried it myself but if you do, drop me a note.

Please keep in mind: This model has to be seen as a "template", since you'd need to modify it to fit your printers geometry as well as your hotend.
Also: This is a generic solution, not a SMuFF specific one. You need to position the print head and cut the filament via GCode from within your "pre tool change" script.

STEP file has been published on Thangs and Printables

Go and check it out if you like.

I released the Build Instructions

Build-Instructions.pdf

I've released my 170+ pages Build Instructions a.k.a. Assembly Manual to the public. 

At this point, a big shout out to the few people who donated in the past and kept this project going. 

If you feel like, you still can donate. The details on how to do that you'll find on the  "Assembly Manual" page.

Updated the "How to build the SFB..." page

I've updated the Build Instructions for the Smart Filament Buffer PCB and added the configuration "How to" for it as well.

Also, if you haven't read it on the Discord channel for the SFB already, I recently added the feature to Daisy-Chain multiple SFBs into one "big buffer" to the SFB firmware. More details about this option here.

Updated OctoPrint Plugin and Firmware released

I've published a new version of my OctoPrint Plugin, along with an updated version of the SMuFF firmware (V3.13) today.  If you have the previous version installed, the OctoPrint Plugin-Manager will pop up a notification for an update automatically.

The new plugin - version 1.2.0 - needed an update, because the old one couldn't handle some of the new firmware options. While I was at it, I also added a  SMuFF dedicated tab, which you see in the picture to the left. It has got an output window, similar to OctoPrints Terminal output, which receives useful messages while the SMuFF is operating. So, there's much less need to parse the SMuFF log file if something doesn't work as expected.
I also added some buttons, which are capable of sending the most common commands to the plugin, such as Status, Wipe, Cut or Reset Jam. Hence, you don't need an additional plugin and must not memorize the SMuFF pseudo GCodes (@SMuFF ...).
The SMuFF status panel in the top bar also got updated and it now shows both endstop states,  which may be important for DDE users. Besides, it will turn read if the SMuFF has run into a jam while trying to feed the filament.

Internally, I've split the core functions, responsible for the communication  with the SMuFF, into a separate file, which code will be shared with the Klipper module in the future and thus, will make it easier for me to maintain both systems.

Please keep in mind that you have to update your SMuFF to firmware version 3.13, in order to run this version of the plugin!

SMuFF-Backbone progress

As already mentioned in the first Multiservo announcement, I wanted to design a new PCB, which will combine the most needed components to build and run your own SMuFF V6.  My design goal was to gather the following components all in one place:

The size of the new PCB is designed to be the same as the Velleman 4-Channel Relay board, so that it'll fit in the existing housings and thus will be easy to replace (in case you intend to do so).

Here are now a couple of KiCad screenshots of what the new PCB will look like. First and foremost, adding the Wemos D1 mini module is just an option which might become an integrated SMuFF-WI at a later stage and will allow you to run the SMuFF without a display. 

As you can see in the pictures, I've picked a MP1584EN Buck Converter, which is small, widely available (even in local stores)  and can deliver up to 3A of current but there's also enough space for using a SY8205 (a.k.a MP2482) module instead, which promises to deliver up to 5A of current and comes preset to +5V (I posted about the SY8205 down below). This PCB also uses the PCA9685 I2C LED/Servo controller and can handle up to 8 servos (or LEDs), whereas 3 of them are already taken by the SMuFF (for LID, WIPER and CUTTER servos).
For the Shared-Stepper relay part I've re-used the design of my mini relay board although this time it utilizes an ULN2003 chip to drive the relay coils. This makes hand soldering this PCB by far easier, in case you decide to do so.

The board is being controlled solely using the I2C/TWI interface, which makes is much easier to integrate with existing (or upcoming) controller boards. On the SKR E3 V2.0 or V3.0 for example, the existing SERVO header is being used in combination with a software I2C library.

The only thing for me left to do is to order this PCB and test it. If the chip supplier gods are with us, this could be rather sooner than later but these days you never know...

If you're eager to order and solder this board yourself, drop me a note on Discord.

The schematic for this board has been published here, on the Schematics page.

Multiservo option follow up

I've published the designs for the housings of the Multiservo option over on Printables  (STL) and Thangs (STEP). There are two versions available, one for the standard Multiservo board, one for the FeatherWing Multiservo board, which I highly recommend, because it has the smaller form factor and the SMuFF firmware will support up to 8 devices (Servos) only.

Although the goal is to have a dedicated custom PCB for the Multiservo option, you might want to upgrade your (existing) SMuFF using one of the Adafruit Multiservo boards right now. The FeatherWing version of the Adafruit board will fit nicely into the SMuFF Base-Right part, although it needs some modifications of the part to add some screw holes for mounting it (see picture 3 on the left). A detailed "how to" for the wiring of the stock boards can be found here.

Keep in mind: You'll need to have at least SMuFF firmware version 3.12, which already has been released as well.

Working on a revised Multiservo option 

The Multiservo option was first introduced in SMuFF firmware version 2.12, so it was basically just sitting there for ages and waiting for action. Originally, I have planned this option for a different SMuFF variant, which - as some of my other ideas - never have seen the daylight, simply because they didn't satisfy me.

But recently I played around with the latest firmware version and I figured, that some of the issues I had in the past were all related to the integrated servo control, which is a timer driven interrupt handler that serves all servos at once. If  I could only get rid of that piece of code, servos could run much smoother and the "old" Multiservo option came back to my mind.

The Multiservo option is based on the Adafruit PCA9685 extension board, which is able to control up to 16 PWM devices (servos, LEDs), only by connecting it via an I2C/TWI interface.
That's 5 wires needed in total (SDA, SCL, VCC, GND and +5V for the servos) and the big benefit of this board which uses the PCA9685 controller  chip is, that it delivers a super stable PWM signal for the servos. In theory, that would be the same case on the SMuFF, if there weren't the other interrupts, such as for the stepper motors or the LEDs, which cause "hickups" in the servos every now and then.
So, no more jittery servos, no matter which servo is connected to it. Another benefit is: The servos can be controlled more precisely and moving a servo in 1 degree steps is a breeze.
Also to note: Since the MCU is less busy with keeping the servos happy, handling of the stepper motors is improving and they are able to run faster without stalling, which comes in handy for the Feeder.

The only downside of this controller board is that it's pretty big and can't be integrated easily into the existing housings without a redesign. This even applies to the "newer" FeatherWing version of this board (the smaller one that you see in the pictures above). So I decided to go with a new PCB design, which will incorporate the PCA9685, a decent buck converter for the +5V and also the mini relay board. That's basically all the components you need concentrated on one single board, only connected and controlled by a 4 wire connection.

The PCB is planned to be the same size as the Velleman VMA400 Relay board. Hence, swapping out the old components for the new board is a matter of minutes. For new "SMuFFers" this option will be much cleaner and hence much easier to get everything connected and running.

I've already modified the firmware (V3.12) and checked that it's running without any problems, which caused me to rewrite / update some of the libraries in use.
For now please bare with me and let me know what you think about this new solution over on Discord.

SMuFF-WI has now a Settings Wizard

I've published version 1.19 of the SMuFF-WebInterface, which has got a major addition: The Settings Wizard.
This Wizard will pop up after the very first connection and guide you through the major settings needed to get your SMuFF configured correctly.

Some of the options in the Wizard are preset and they're coming from the connected device itself. Settings not gathered by the Wizard are supposed to be default (such as endstop trigger states), if you've built the SMuFF according to my instructions . Some other settings such as the Step Direction of Selector and Feeder are supposed to be configured later on, since those depend on your wiring.

In case you've set up your SMuFF already, simply skip this step (tick the "Don't show this Wizard..." checkbox in the corner) and it won't bother you again unless you ask it to by clicking the button in the footer of the page.

The latest version also got a bit faster while it's connecting to the device and it also shows you a progress bar while it's fetching settings from the SMuFF.

Check the new SMuFF-WI out at this link.

Filament-Cutter for LGX-Lite published

Today I've published a new Filament-Cutter variant for the Bondtech LGX-Lite over on Printables.com and Thangs.com.

This version is more like a template than a complete integration of a hotend for a specific printer.

I had to make this version a bit smaller, so that it fits on the LGX-Lite and it also doesn't integrate a 2nd endstop switch, which is needed for the SMuFF in DDE mode. This task seems a bit complicated, since the tension lever doesn't function as with all the other extruders. I've got some ideas in mind but for the realization I'd need a real LGX-Lite to test with.

Meanwhile, you have the option to download the STEP file and check if you can find a nifty solution to this problem. 

Software update!

I released version 3.1 of the SMuFF firmware today. Version 3.0 had some serious issues with the timers and the servos (mainly the Lid servo) turned out to be a bit jittery. I fixed this and I also made some changes to the firmware to run smoother with the new Klipper module.

I also decided to drop the support for SKR E3 V1.2, simply because this board isn't the best choice as a SMuFF controller. If you already have one, don't update the firmware to 3.1 but keep 2.4x instead.

As usual, you'll find the latest version in my Github repository. Have a look into the README, where I track all of the latest changes. 

Along with the new firmware, I also released an updated version of the Klipper module. It turned out that tool changes did well as long as you were not printing. While printing, a tool change on the SMuFF did mess up the internal timers of Klipper, which resulted in some weird error messages, such as "SD Busy". Took me quite a while and some coding to figure what this message really means and what's causing it. 

However, this is now fixed and as far as I can tell, Klipper now runs (and prints) smoothly without any flaws.

SMuFF now supports Klipper

I've finally found some time to work on the Klipper implementation for the SMuFF. In hindsight, the implementation was straight forward, but it took me a little while to browse through all the Klipper documentation and source codes to figure what's really needed.

The implementation consists of a config file (smuff.cfg), which contains the basic setup, a couple of tool change macros and some convenience macros, which can be used for the integration into the Mainsail Dashboard. Then there's also a corresponding Python module (smuff.py), which has to be copied into the specific Klipper folder extras.

The communication with the SMuFF happens via the serial interface, just as it did with my OctoPrint plugin. In fact, the code base is mostly the same as for OctoPrint.

SMuFF Firmware V3.0 follow up

I'm currently working on getting some quirks and bugs out of firmware V3.0. Hence, version 3.1 is on the brink!
If you've decided to go with the latest firmware version for your SMuFF, please hold yourself back for a couple more days and get V3.1 instead. 

Stay tuned...

SMuFF Firmware V3.0 follow up

After a couple of weeks of programming and testing the hell out of the new SMuFF firmware version 3.0, I'm pleased to announce that everything seems to work as expected. With everything I mean:

What's left is testing on the E3 V1.2, because I don't have a working one to test with. Though, I'm not much concerned about that.

While doing all this, I had to change/rewrite a lot of files and even modifying some of the libraries used in this project.

So far, I'm happy to report that the new SKR E3 V3.0 is fully qualified as a SMuFF controller board. It even comes with a spare I/O port, which I've determined to be used with the X/Y/Z-DIAG pins of the TMC2209 drivers. Hence, if you some day decide to use the stall detection feature of the SMUFF for Selector/Feeder (which has been sitting there and waiting for free input pins) you'll be able to. Read more about it down below in "Meanwhile in the test lab...".

What I haven't been able to test yet is the SKR E3 RRF board (which comes with a STM32F407 MCU).

I've also already updated some of the documentation pages in here, to reflect the changes. More to come after the release of V3, which will happen very soon. 

Updated Base-Left

I've updated the Base-Left STL file within the Github repository. This one has got additional blind holes to take M5 heat-set inserts (9.5 mm in length) as an alternative to the M5 captive nuts, holding the threaded rods (see picture). 

You're now able to decide which one you want to use. The length of the threaded rods stays the same. If you're  going for the inserts, screw the rods all the way in and secure them in place by using a drop of Loctite.

SMuFF Firmware V3.0 on the brink

I'm currently working on the next iteration of the SMuFF firmware, which is going to become version 3.0.

The change in the major version number might tell you that there's a bit more to it than just bug fixes or new features. In fact, I'm swapping out the LeafLabs Maple framework for the STM32Duino framework. This "new" framework is mainly managed by  a team from STM and it's focusing on bringing all the various STM32 MCUs to the Arduino platform.
This is a huge deal, because development of the Maple framework has been abandoned and only supports the STM32F103 MCU (and partially the STM32F4), whereas new controller boards in the 3D printing area come with newer, much more sophisticated MCUs from STM. The legitimate successor of the SKR E3 V2.0 for example is the SKR E3 V3.0, which is equipped with a STM32G0B1 MCU and is the one that I've picked to be supported next as the SMuFF controller. 

So far, I've managed to port over the existing source code of 2.44 and make all functions and features available on V3.0 (some of which needed more work than I had expected).
My first tests of the V3.0 firmware on the "old" controller boards, i.e. the E3-DIP and E3-V2.0, were successful. There are still a couple of tests pending, since my goal is to enable you using the new firmware without the need of swapping out your existing controller board.

I won't release the new firmware until I can get a hold of the new E3 V3.0 board for testing. Unfortunately, chip shortage is driving up the prices and delivery times not only for the "old" boards.

So, stay tuned for the release of the new firmware version.

Filament-Cutter-Base module published

I've recently published the base module for the Filament-Cutter.
This STEP file comes in handy if you're about to integrate the Filament-Cutter in your 3D printer using a specific hotend.

You'll only need to transform the Filament-Cutter-Base part (the transparent piece in the picture on the left) by adding some mounting points and joining it with the design of your hotend.
Everything else, such as the Punch or Servo-Mount/Servo-Horn parts are supposed to stay as they are, though you'll need those to check the placement/fit of the Cutter as a whole.

Get it here on Thangs.


If you integrate the Filament-Cutter into the hotend of your printer, please share your creation on Thangs / Thingiverse and let me know if you did.  

Filament-Cutter for E3D-V6 (Creality) published

I've recently published another (rather old) design for a Filament-Cutter integration on a E3D-V6 (or clone) for Creality 3D printers (i.e. Ender-3, Cr-10) on Thangs as a STEP file (mainly for modders) but also with the STL files contained in the ZIP file, if you'd like just to print one yourself.

Although the first published model did meet the needs for the Filament-Cutter, shortly after I published a revised version with an improved cable management (which you see in the picture to the left). 

So, please make sure you have downloaded the 2nd revision, because routing wires and cables on the 1st revision might by a bit of a pain (especially the ones for heater cartridge and thermistor).

The 2nd revision also got a stiffer mount for the inductive probe / BL-Touch and two additional heat set inserts in the front piece of the E3D-V6 mount, in case you're heading for a different part cooling fan solution. I've also added a Cutter-Base STL file which takes only the M6 fitting and doesn't need the Splitter adapter, which is easier to print in case you're only going for the standard E3D-V6 bowden style solution.

Just in case you were wondering: Since the Filament-Cutter is designed to be detachable (mainly for maintenance purposes), it can be left out completely and the whole mount can be used on a non-SMuFF Creality 3D printer as well.

The LED-Strip mount included in that model is not needed at all, so feel free to omit that. I added this because I wanted some lighting down at the nozzle, which makes adjustments on the 1st layer much more visible.
Mine is connected to the part cooling fan, so it doesn't require an additional wire but that also means, that I have to print the first layer with at least 5-10% part cooling. If you don't want to turn on part cooling for the first layer at all, you have the option of attaching the LED-Strip to the heat sink fan. In either case, keep in mind to use a LED-Strip rated with the same voltage as the fan you attach it to.

New Step-Down (Buck) Converter on the market

Actually, it's not that new but I'd like to share this information anyway.

It's the SY8205, a 5V Buck converter which claims to be able of delivering up to 5A of current, and is therefore suitable for all the servos, NeoPixels and stuff you may use on your SMuFF. Hence, it can easily replace the LM2596S. 

In comparison, this module has two advantages:

Those pin headers can be used to connect up to 6 servos directly. The pinout  (G, 5V, S) comes in the correct order for a servo connector. The signal (S) wire has two separate connection points: One goes to the servo whereas the second one is supposed to be the input, which comes from the SMuFF. Hence, only one signal wire per servo/device needs to be routed from the SMuFF to this little fellow. This makes makes your wiring more professional and tidy. 

For other electronics, such as the NeoPixels, you'd have to reorder the wiring on the other end (at the NeoPixel strip for instance). If you need static +5V and GND only, a 2 pin header / Dupont connector is sufficient. 

If you're looking for this board, AliExpress or Amazon are supposed to have plenty of them.

Filament-Cutter for the MicroSwiss DDE

Here's my version of the Filament-Cutter for the MicroSwiss Direct Drive Extruder for Ender-3
Similar to the Orbiter Extruder, the Cutter sits between Extruder and hotend and thus helps to reduce the waste on the cut off filament.

Be aware that this is a STEP file only. If you want to print it, you'll need to export at least the Cutter-Base and the 2nd endstop mount.

Download it here on Thangs.

SMuFF-Ifc2 PCB for ESP32 variant

Since I was already at it, I decided to create a PCB for the ESP32 variant of the SMuFF-Ifc2, because this one might be a bit more confusing on how to wire it up correctly by hand (in contrast to the WEMOS D1).

So, here you go!

Needless to say that it fits perfectly in the housing I've designed for it.

All the related files such as Schematics, BOM, Gerber and stuff are included in the SMuFF-Ifc2 Github repository.

If I intrigued you and you'd like to get one for yourself, you can order one right here at PCBWay.

If you decide to build one for yourself, please make sure to purchase the correct version of the ESP32 DevKit, which is the 30 pin variant (i.e. AliExpress or Amazon).

SMuFF-Ifc2

Since some users have reported having problems connecting to the Duet/RRF via the serial interface, I've decided to revive the SMuFF-Ifc project in a simpler and also cheaper version.

This is based on the WEMOS D1 mini and acts more or less as a signal amplifier between the Duet/RRF and the SMuFF controller boards.

If you're connecting the SMuFF to a Duet/RRF controller, I highly recommend using this device. It's easy to set up and will save you some headaches.

All information you need to know about this new little gadget can be found on my Github repository.

Update

Meanwhile I've added the ESP32 option to the firmware published and now you can compile the firmware for both devices.
The ESP32 has the advantage of interconnecting more devices, such as SmuFF, Duet/RRF, PanelDue and SMuFF-WI (using Bluetooth). This feature makes it really a powerful tool.

STEP files for the housings are included in the Github repository or  on Thangs.

Small Servo Carrier

Although I've stated a couple of times that the small servo, which was introduced in V5, isn't feasible for a couple of reasons, people seem to think I'm wrong.
Hence, I designed a servo carrier replacement to be used with a small (but powerful) servo on V6. In the picture to the left, you'll spot the size difference of the carrier (which is about 19mm smaller). This does reduce the overall height of V6 by 19mm, if you get it working successfully.

If you wanna give it a try yourself, just print out the replacement parts (Carrier, Servo-Horn and Lever).

As for the servo, be aware that you'll need a high torque micro servo, i.e. one like the Hacker DITEX EL0510M or similar.

The Hacker DITEX promisses a torque of 68 Ncm. I think that you'll need a torque of at least 40 Ncm to be successful (haven't tested that yet).

Also, to run this servo at the highest torque possible, you'll need a different voltage source, since high torque servos are usually powered between 7.4V and 8.4V. In order to achieve this, you'll need an additional buck converter (i.e. LM2596), which can be set up with the output voltage needed.
Be careful though not to attach this higher voltage to anything else (i.e. endstops, NeoPixels or other -  low power - servos).

One thing why I've said micro servos are not feasible is, because they tend to run very hot if they can't reach the final position because of low torque. If you're going to use this new servo carrier, make sure you track the temperature of the servo when it's closed (Lid is down). In case it's getting too hot to touch, you better go back to the standard size servo. Otherwise the servo will melt/deform your carrier and/or eventually burn the drivers inside the servo.

Parts have been uploaded to Thangs and my Github repository. 

SMuFF dedicated Controller Board

As some of you might have realized already, controller boards such as the SKR E3 edition from Bigtreetech do have a short lifespan. Not only that it's frustrating for the interested makers who wants to build their own SMuFF and can't find the right board, it's also quite challenging keeping up with the hardware development from a firmware point of view. Firmware first needs to be "ported", then it needs to be tested and in the long run, it needs to be documented and supported. That's why I always wanted a dedicated custom controller board.

Luckily, I found a maker (SNAKEYE), who jumped on board and offered to develop such a controller board. So, I handed him over my specification of such a controller board, based on the experience I've made so far and he did the rest. If you're eager to see what's in the document, here's a link.

The major goal for the controller board was, that it comes with all the bells and whistles. In other words, all the additional features (such as buck converter, relay, ...) one needs to control the SMuFF, are integrated. So, no more fiddling with custom made add-on boards, which makes everything easier: The build, the documentation and the firmware.

As you can see in the rendering of the board, we decided the new board to be of  the same dimensions as the popular Ender-3 controller boards (Creality, BTT, MKS...), so it will be easily replaceable with the one you already have (in case you intend to do so) and - first and foremost - it'll fit into existing housings/cases. 

SNAKEYE worked hard on this project the last couple of months and eventually he came up with a "Chefs Kiss" solution.  If you'd like to support him, head over to the Discord channel (#smuff-board-dev-by-snakeye - in the SMuFF-V6 category) and drop your thoughts or send him a donation to compensate for the spending he had so far. 

Newly designed housing

I designed a new housing for the SKR E3 series controller.

This housing takes the SKR E3 controller (-DIP/V2.0/V1.2), the Velleman VMA 400 or Elegoo 4 relay board, the LM2596 or SY8205 buck converter and a display (DIY OLED, LeoNerd's OLED Module or FYSETC 12864 Minipanel). 

The new shape makes it visually less bulky than the old one and allows you a much more convenient handling while wiring the board up. You can use it either standing on the desk (near the printer/SMuFF) or mounted to the printers frame (attached to some gooseneck mount).

The STEP file, containing the housing, two top lids, three display lids and a couple of template lids can be found here on Thangs*.

Please notice: The display lid has to be printed flat and then bent over to meet the upper angle.
Right after printing, let the bed cool down first then remove the lid from the bed. Put it back on the bed in printing orientation and heat up the bed to 5-10 °C above the glass temperature of the material (60-70 °C for PLA, for example). Let it sit for about 10 minutes then carefully bend the lower (bigger) part into position. 


* No, they didn't sponsor me. It's just because I personally think it's time to move from Thingiverse somewhere else. 

SMuFF with DDE on the Ender-3 - Part 2

I'm currently working on a new variation of the DDE for the Ender-3, which utilizes the Orbiter Direct Extruder.

The main idea behind this is to have the Filament-Cutter sitting beneath the extruder in order to get rid of the need of purging out the filament just to release the 2nd endstop switch.

If you wanna give it a try, the model has been published on Thangs.

SMuFF with DDE on the Ender-3

Finally, after two weeks of tweaking, programming, testing and blowing up some electronics (yes, another controller lost its life in this cruel battle - R.I.P.), I'm getting somewhere.

First of all, I had to design some parts for the Ender-3 to take a Direct Drive Extruder. I picked the BIQU H2, which is small and powerful enough to accomplish this task.
Thanks to maker 3DE2016 who made a pretty nice and accurate model of the H2 extruder, this was more or less a no-brainer.

Though, it took me a while to add the necessary parts, such as the 2nd endstop sensor (micro switch), Filament cutter and part cooling, as you can see in the picture to the left.

While I was at it, I also modded my TinyTouch to fit the H2 for ABL on the Ender-3. 

I will publish this model soon on the known places and also release the latest firmware, as soon as I'm confident with them, so stay tuned.


On YouTube you'll see it in action printing a dual color 3D Benchy.


I now have published the files for this setup on Thangs.

New Direct Drive Extruder (DDE) option anyone?

Here's just a short testing video...

This video shows the handover from the SMuFF to a (Bondtech) Direct Drive Extruder.

As you can see, the Bondtech DDE has got a nice (top-) cover, which not only suits it well but also integrates the 2nd endstop, which allows the SMuFF to determine when the DDE has gotten the filament.

Both Extruders are being controlled by the SMuFF simultaneously. The DDE in this scenario is connected to the Shared Stepper relay. This allows the SMuFF to control the DDE while loading/unloading and return the control to the printer, once the tool change has finished by switching the relay back.

Looks promising so far but it'll need a bit of fine tuning on the firmware side since at a certain point,  both extruder motors have to run at the same time and the same speed.

Here's now a detailed "How to"  on setting up a Direct Drive Extruder in conjunction with the SMuFF.

The according firmware (V2.30) will be released soon.

New Splitter Option

I'm currently working on the firmware integration for the 5-Way Splitter Option of V6 and I wasn't happy not having any endstops on which the SMuFF can trigger while loading/unloading filaments. So I came up with a solution for this, which you can see in the picture on the left.

This solution uses 5 standard micro switches and a Arduino Pro Micro as Endstop Multiplexer. This way you only need two additional wires, SDA and SCL for the TWI/I2C bus which is being used for communication between the multiplexer and the SMuFF. Everything else (beside the firmware) stays the same.

The SMuFF sends the current tool via TWI/I2C to the multiplexer on tool changes and the multiplexer attaches the corresponding endstop switch to the Z-STOP input of the SMuFF. The code on the Arduino Pro Micro is fairly simple and you'll find that one on my Github page later on.

So, stay tuned for the upcoming firmware release.

Linear Stepper for Lid follow-up

Sad news! Unfortunately, the idea of using a small linear stepper for the lid didn't cut!

The stepper in question 15LN20L01-311 does its job but it simply hasn't enough force to push the lid down far enough as filament ist loaded. The rated thrust is 9N, which sounds good but isn't good enough. Stepperonline does provide a set of different linear stepper motors with more thrust (up to 100N) but those come in bigger dimensions and thus are harder to integrate into the current design without modifying more than just the (Servo-) Carrier.

The other linear stepper that might be suitable for this kind of lid closing mechanism is the 25LN48L01-334. It provides a thrust of 30N, tripple the thrust of the 15LN20.

However, if you'd like to give it a try with some other linear stepper you have at hand, the firmware V2.28 is well suited for this experiment. All you need to do is to enable the SMUFF_V6S flag in platformio.ini and compile with the new option. The linear stepper is being controlled by the Y-Axis stepper driver, which also means, the Wiper and Cutter servo signals have been relocated. See the README.md of the firmware for details.

SMuFF WebInterface

I'm currently working on a new, browser based, interface for the SMuFF.
It's based on the Web Serial API, which most of the modern browsers are able to handle.

The benefit of such interface is that you're not forced to step through the menus on the SMuFF itself, nor you have to memorize those cryptic GCode commands in order to change the operational settings on the SMuFF from afar.

Another benefit is, since it's working within your browser, no installation for this UI is needed. Simply click the link and connect with your device.

The video shows you a preview of the UI, which is going to be released soon.

Please notice: For this app you'll need to have at least version 2.26 of the firmware installed, since I needed to enhance the interface on the SMuFF itself for some of the functions.

New lid mechanics?

I recently discovered a new linear stepper motor on Stepperonline.com, which at first glance looks somewhat promising.

So, for a proof of concept, I made up a  new design for the Lid mechanics. From the drawings, it's supposed to fit perfectly. Now I only have to order one and check whether it's a feasible replacement for the standard size servo.

Stepper motors claim to be more reliable than servos and this one, if it keeps it's promise, would help to reduce the size as well.

We'll see. Stay tuned.






Update

Here's a short preview of the new linear stepper at work. I'd say, not too shabby and better than I expected.

I mounted it next to the small servo version of V5 just for size comparison. 

Working on the V6 Build Instructions Manual

I'm currently working on the V6 Build Instructions Manual. Here's a sneak-peek preview of what the document will look like and some of the topics it'll cover.

As you can see in the video, I'm trying my best to make the document as simple and as detailed as possible. Parts are divided into components, which have their own chapter and explain all necessary steps in detail using a lot of pictures. 

If you have any suggestions on what the document needs to cover, drop me a message on Discord.

V6 Online Preview Available

I've published the SMuFF V6  as a 3D model on Fusion360 for viewing purposes. So you'll gain a better insight into the structure and complexity of this project. Please be aware since this was an import from 123D Design, parts are named sequentially (Body1, Body2, ...) and are not grouped in components.

Yet a new feature: Display Mirroring

Display mirroring on Terminal

I've added a new feature, which is available in version 2.24 of the SMuFF firmware. What it does is: Mirroring the display output to the connected terminal on the debug serial port.

Hence, you can easily navigate through the menus using the cursor keys and adjust the runtime parameters. In addition to this, you'll see the contents of the SMuFFs main screen in the top row of your terminal emulator.

This feature is not meant to replace the display but rather for convenience purposes if your 3D printer / SMuFF are out of sight.

Before you get too excited, let me make clear that this feature works only on E3-DIP boards (mainly because it has double the memory) and has to be enabled manually in the configuration file SMuFF.json.

Just in case you didn't know: The SMuFF can be fully controlled via a serial interface (and a terminal emulator) even without this new feature by sending GCodes to it.

New firmware feature added

Animation in idle state

Based on the saying "It's worth nothing if it doesn't blink" I've added a new feature to the latest firmware - NeoPixel support for tools.
It is not essential and it's very much eye-candy only, nevertheless it's mesmerizing to watch. 

NeoPixels are being used for highlighting the tool selected, running an animation if the SMuFF is in idle state and informing you about errors or pending inputs.   

This feature is already included in version 2.21 but will be a bit more refined in version 2.22. So, stay tuned!

DIY OLED Module released

GMagician, a maker from Italy who's building his own SMuFF, has contributed a DIY LeoNerd's OLED module clone. This module is fully compatible to the original one (as in functions and dimensions) and even adds some new features to the firmware. This project is fully open source and you'll find it on GMagicians Github page.

2nd Endstop Mount Solution

It turned out, that it's a huge advantage using a 2nd endstop sensor for tool changes, which sits at the very bottom of the bowden tube. This will ensure that the filament is truly loaded. The upcoming firmware version 2.19 is able to handle this new feature and initiate different actions in case the sensor doesn't trigger as configured.

Unfortunately, all of my previously introduced endstop mount designs (a.k.a. Filament Runout Sensor) were not able to fulfill this task. Basically, that's because of a very known problem for tool changers: The more transitions the whole system has, the more  issues will occur eventually. 

Under transition, I understand:  Filament moves out of the bowden tube, into something (i.e. the sensor), through the something (i.e. sensor) and again out of the something (i.e. sensor) back into the bowden tube and from there into the hotend.
On each of theses transitions points you'll find one or more bump edges (i.e. pneumatic fitting, PTFE tube, etc.)  that have great potential for the filament to get stuck. 

Therefore I've created a new IR sensor mount which is supposed to overcome this potential issue.

As you may spot in the picture to the left, the filament never leaves the bowden tube. Instead, the whole bowden tube is being guided through the IR sensor and hence it reduces the potential of failure.

Since the outer diameter of the bowden tube (4 mm) is 1 mm more than the  recess of the IR sensor, we have to cut out a piece of the bowden tube in order to make it fit. That is a pretty delicate task, since you don't want take away too much material off of your bowden tube or even cut it in half.

That's why I also designed a cutting template (3rd picture) which will ensure that the  incision sits at the right position and doesn't go deeper than it has to. 

The mount itself will keep the IR sensor, as well as the bowden tube in a determined position, so that the sensor will trigger reliably (which is only the case if the filament is guided correctly at the height of the IR LED/Receiver).

I know:  Usually it's not the best idea guiding filament directly through the sensor because some filaments are know to be "IR-Translucent" (means: the sensor won't be able to trigger anything). Hence, I'm currently testing this setup with different materials for any shortcomings.

Once I'm convinced that this solution is usable, I will publish this design on Thingiverse. 

Modification for the Servo PCB

In order to utilize the Filament-Cutter, you have to extend the servo adapter PCB with a 3rd connector for the SKR E3-DIP controller. To achieve this, simply add a new 3-pin connector to the existing board and wire the EN signal along with +5V and GND to it. The EN pin is the one declared in the firmware to be used to drive the Filament-Cutter servo.

Here's how the finished PCB is supposed to look like. As you may have already spotted in the picture, this one doesn't use the pull-up resistors for the servo PWM signals. Hence, it's important to set the SERVO_OPEN_DRAIN definition in Pins.h to 0 (otherwise to 1 if you still use the resistors).

Filament-Cutter Ender-3

I've added a new member to the Filament-Cutter family - the Ender-3 (or Creality in general) version. What's special with this version is, that it mounts directly onto the stock Ender-3 hotend. I did this mainly, because the previously installed V6 hotend is a bit taller than the stock Creality (or, in my case, the MicroSwiss All-Metal replacement). Thus, the filament that remains in the cutter/hotend after cutting is quite large (about 120 mm). For that, I needed to purge out about 190mm of filament to get a clean transition. Since the Creality stock/MicroSwiss replacement is way shorter, I'm now on about 95-100mm filament that needs to be purged on tool change. 

In order to be able to mount the cutter as close as possible to the nozzle, I designed a "spacer part" that mounts on the X-Gantry, which then will hold the hotend, the cutter the fan shroud and additionally other  stuff as well. Unfortunately, this spacer makes the nozzle move by 17 mm in Y direction, so you may have to adjust your print bed. However, it also integrates a strain relieve for the hotend cables. 

In order to connect hotend and cutter, you will need a 23 mm long PTFE tube (MicroSwiss hotend). The cutter simply slides over the PTFE tube and is being held in place by a dovetail and a latch securing the dovetail. 

Since the MicroSwiss All-Metal hotend comes with a collet in contrast to the stock hotend, you may have to replace the fitting on the stock hotend with something "collet-like" in order to use it.

However, I'd rather recommend using an All-Metal hotend for multi material printing.

So far, I highly recommend the Filament-Cutter since it makes tool changes (and your life) so much easier. I've printed the 5 color 3D Benchy for testing and it didn't fail once (take into account, that this Benchy does at least 3 tool changes per layer, once the lower part of the hull is printed).

You can download the STLs aswell as the STEP files  from Thingiverse.

I will add a modded version for the 5-way splitter sometime in the future.

Filament-Cutter-MMU

Currently working on a new version of the Filament-Cutter. This one differs in only two details:

You may recognize the 5-way splitter from the "Background page". It indeed is mostly the same, except, the outlet has got a thread, so you can easily attach it to the cutter.

This tool is part of the idea I had a long time ago in order to reduce the tool changing times. It's as simple as that: The shorter the path, the faster tool changes can be handled.

Due to the fact that the filament cutter already "steals" quite some precious print height, I didn't want to stress that "steal" more than necessary. So I came up with combining the two items into one. Combined, this will reduce your available print height for about 90 mm - 110 mm, which - I guess - is negligible for most of the MMU prints. Without the combination of both, it would have been about 40-50 mm more.

I also got rid of the recess which was meant for an additional filament sensor, so it's somewhat easier to print. 

Beside this, the cutter works the same way as in the first published version.

You can download the STLs from Thingiverse.

Honey, I Shrunk the Kids Relay-Board...

I've been working on a SMuFF specific version of the Relay-Board. As nice and as easily source-able the Velleman / Adafruit Relay board is, it has one major disadvantage in my opinion: It's huge!
So, I designed a new one.

In the picture on the left you see a size comparison. In the upper left corner the genuine Velleman / Adafruit, in the lower right corner the new relay board. The buck converter in the upper right corner is being used as a size reference. As you can see, it's barely bigger than the buck converter (same width but a bit longer 57 x 21 mm).

Hence this relay board will perfectly fit in the existing cases where the 2nd spare buck converter was meant to sit (see 2nd picture).

The schematic for this relay board can be found here.

Since this board indeed is a bit fiddly to wire up manually (I can tell for sure...) I've also created a PCB for it, as shown in the 3rd picture. If you'd like to get such a PCB, head over to PCBWay where I've put my PCB designs online, ready for order.

The PCB uses standard (SMT) components and is nicely labeled just to make sure you won't mix up the connectors when assembling.

Be aware that this relay board uses smaller Omron relays and therefore they're not suited for switching voltages where the current exceeds 2A (2.5A max.). Though, its ought to be sufficient for most of the NEMA17 stepper motors around, which usually don't go over 2A.

For good measure, just as the Velleman / Adafruit board does, this board also uses a galvanic isolation (optocoupler) on the input side to protect the MCU. 

In order to connect it to the SMuFF you'll need to provide +3.3V, +5V, GND and the switching signal on J1 (the leftmost JST XH connector).

Please notice: In case you'd like to utilize this relay board with something else than the SMuFF, please keep in mind that this board switches all 4 inputs simultaneously.

New Filament-Cutter published...

This tool has to be seen as an addition for the SMuFF but not only. Wherever  you need your filament cut, you can use this cutter by simply attaching it into your filament path and controlling it by either your printer (firmware mod is required) or a simple Arduino program. A sample program is included in the Thingy ZIP file.

The main thought behind this tool is the fact, that there's still one major culprit in the multimaterial printing game: The bulged filament. 

Depending on the type and brand of material used, it tends to bulging - sometimes more, sometimes less. This may cause the filament to get stuck in the bowden tube while a tool change is ongoing.
In the worst case, even the mighty Bondtech gears may not be able push/pull the filament through.

Using a cutter somewhere near the hotend could solve this problem easily. Instead of retracting the bulged filament, simply cut it of and get a nice and clean shaped tip.

My goal was to create something reliable though small and lightweight, in order not to add more heavy load to the (moving) hotend.
Although a lighter version would have been using a small servo (a.k.a micro servo), servos this size unfortunately don't have enough power to cut filaments reliably.

The picture on the left shows the basic principle of the cutter (first version). In the video below you'll see my very first attempt building one.

The published version has got some improvements of the printed parts  in terms of strength and stability and also the blade angle has changed in order to get cleaner cuts and avoid jamming.

So far I've tested it with these materials: PLA, PETG, HIPS, ABS, FLEX, PC, PA and PA-CF. Even the Carbon Fiber reinforced PA cuts with ease (though, this material will presumably wear out the blade pretty quick).

Please notice: This cutter has been integrated in the SMuFF firmware 2.17 (see README.md).

Meanwhile in the test lab...

I'm currently testing the latest modifications. Among them: The stall detection of the TMC2209 stepper drivers on the Feeder and the new lever for the Filament-Guide-Lid.
Although the stall detection doesn't allow high speeds on the Feeder (it's a bout a third of the "normal" speed), the reliability has increased a lot, as the screenshot below proves.

This shows the test has been running so far for 72 hours. That's 3 days (and nights) non-stop loading and unloading filaments using the SMuFFs test script capability.
As you might have noticed, within this time span the SMuFF has detected 15 feed errors and 53 stalls on the Feeder (the Selector wasn't configured for stall detection, hence the 0) .
Due to the fact that the test did run 72 hours this means: All those errors were resolved by the SMuFF itself. One can tell by looking at the "Feeds ok" numbers. The sum of "Feeds ok" on all tools equals the tool changes reported in "Tool Changes".

The "Feeds ok" condition is being verified by the 2nd endstop connected at the end of the bowden tube (usually where the hotend sits). If that endstop triggers, the feed was successful. Otherwise it counts up "Feeds missed". 

All in all, I'm pretty impressed and satisfied how things are turning out...

Oh, and btw., 9682 tool changes: If each tool change would define one layer, this would equal to a model of round about 1936 mm in height (assuming a 0.2 mm layer height, of course). That's almost 2 m... (ok ok, 1 m if you insist on printing very fine details ;o).


Update 1

After one more day (96 hours) still running perfectly. In hour 75 the filament  in T0 broke, which caused an unsuccessful  feed on T0 and even messed up T1 somehow. So that would be at least one missing layer in your 2.5 m tall print.

Update 2

I finally closed my stress test after... wait for it... mind blowing 120 hours! That's a whooping 5 days in a row of tool changing.
No critical failures since the last update, though, the filament I've used is slowly starting to pulverize. My gut feeling tells me I could let it run for 2 more days... but what's the point here?

Let me point this out once again: One tool change per layer would make a 3.2 m tall print, or, if you decide to have all 5 materials on each layer, this still would equate to a 646 mm print height. If someone's going to try this, please drop me a note!

Conclusion: It works pretty darn nice!

New lid closing mechanics

To gain a bit more force and even pressure on the Filament-Guide lid, I've decided to redesign the Servo-Carrier for either V4.75 and V5.

This one utilizes a lever, which gets pushed down by the small servo to close the lid. When the servo opens up, the lever is being pushed upwards using two small repelling neodymium magnets (5 x 5 x 5 mm) in the carrier and the lever, or a 5.5mm compression spring.

The lever needs to be printed with 5 perimeters and 40% infill to prevent it from breaking.




Here's a short video showing the new carrier/lever in action.

New display/encoder solution is coming

I've been looking hard for an "out-of-the-box" solution as a replacement for the DIY display and encoder board, not only because some of you struggle with the  DIY part but also because it's a much cleaner solution for the whole project.

I recently found one and  I 'd like you to check it out before you decide building the DIY solution.

This one is called OLED Front Panel Module from designer Paul Evans. It features a 1.3" OLED display, a rotary encoder, a buzzer and three additional buttons, of which one is equipped with two LEDs.  It also comes with 4 spare GPIO pins, which can be utilized for additional buttons, LEDs or to control relays for example.
It's designed to be controlled via the TWI/I2C interface, so you'll need only 4 wires (VCC, GND, SDA, SCL) to connect and run it. 

Because of all the features it's not only a perfect fit for the SMuFF but also for any other project you might work on and where you need a small and ready to use Input/Output device.

If this little device caught your attention now, head over to Pauls Store on Tindie and check  it out. Paul has also got some other interesting products, which may intrigue you if you're in the MakerSpace.

I'm currently in contact with the designer Paul, who's adding some features to make it fully SMuFF compatible and I'm working on the integration which will be eventually released in V2.12 of the firmware.
So, in case you order one of these, please let Paul know that you're after the SMuFF compatible version (2.0).

There will also be a new design for the  front part of the SKR mini / E3 cases to make the new display board fit perfectly.

New controller boards on the brink

Currently I'm working on two new controller boards as a replacement for the SKR mini V1.1.

Main reason behind is, that the SKR mini V1.1 is somewhat outdated and appears hard to get these days. So, Ive decided to give the successors of this board, the SKR mini E3-DIP V1.1 and the SKR mini E3 V1.2 a go.

Because of the onboard TMC2209 stepper drivers on the E3 V1.2 (and/or E3 V2.0) I have to update the firmware to be able setting up the stepper drivers through software. I'm also looking into adding such option to the E3-DIP V1.1,  so some ideas I've had in mind for a long time, such as stall detection on the Selector (and maybe the Feeder) may finally get real. Stall detection might be a great feature to improve the reliability of the tool changes. We'll see. 

So far things are looking pretty good.  The custom display board works as expected but has to be rewired because of the different signal assignments on the EXP1 connector. A new schematic for the LCD board can be found here.
Also, the E3 boards don't come with a power pin (5V / 3.3V) for the endstops. So, splicing up and re-routing the endstop wires is a must for endstops which require a power input (which applies to most of them, at least the optical ones).

A basic wiring scheme for these new controller boards you'll find here.

I even managed to connect the Ender 3 (Creality) LC display, as you see in the picture below. Although, it supports only software SPI, which is far slower than real hardware SPI. Unfortunately, this is going to be the case with any other (RepRap style) display, since the EXP1 isn't wired up to utilize SPI signals.

So the custom TWI / I2C display still seems the better choice. I should consider making a PCB for it.

Unfortunately, the *E3 controller boards are slightly larger than the SKR mini V1.1, so a new case design is needed as well.

New case for a new feature

New case for the SKR mini V1.1 controller board

This new case has got more space for additional components, such as the Step Down converter which is used to generate the +5V supply for the servo(s). Just in case, I've also added a mount for a 2nd Step Down converter (not needed yet but you never know).

The case also comes with a dedicated space for a 4 channel relay board

The main idea behind this 4 channel relay is to allow the firmware to switch between the 3D printers and the SMuFFs Feeder stepper driver on demand and thus realize a "Shared Stepper" when used in conjunction with the OctoPrint plugin for example.  

Shared Stepper principle

This comes with the advantage, that the SMuFF gains far more control over the loading / unloading process and enables it to handle issues on its own if necessary. 

A relay module is needed because many 3D printer controllers come with integrated stepper drivers or don't use the STEP/DIR function anymore.  So instead of handling those STEP/DIR signals, the phase signal outputs of the stepper driver (A1/A2, B1/B2) are being switched.

On a tool pending change, the printer (better the OctoPrint plugin) does the initial ramming sequence (BeforeToolChange script), then it turns off the Feeder motor and hands over control to the SMuFF. The SMuFF handles the unloading / loading sequence, then it turns off the Feeder stepper motor and returns control to the OctoPrint plugin, which  runs the AfterToolChange sequence and resumes printing eventually.

If you're interested in adding this option to your SMuFF, head over to Thingiverse and download the new case

I'm using this Velleman VMA400 Relay-Module, which is widely available i.e. from Makerfactory.

Another benefit of this new case is the detachable display / encoder mount. 

In order to use this new feature, please make sure you have SMuFF firmware version 2.10 or newer and the latest OctoPrint plugin (version 1.1.6 or newer) installed.

New location for the servo connectors

In the latest firmware version I had to move the servo pins from the endstops to the X-Axsis stepper driver pins. This was necessary because some servos don't cope well with the internal +5V rail and moreover they needed a pull-up resistor on the PWM signal input. To avoid damaging the GPIO pins on the STM32, I had to configure them as "Open Drain" outputs, so a pull-up resistor (2.2 K) won't hurt the MCU.

In order to use these pins, you have to build an adapter yourself, which is pretty simple. The picture below shows you which pins need to be connected and where. The part list is:

Please keep in mind, that you still need an external Step-Down converter, which generates the +5V for driving the servos. I'm using a converter based on the LM2596S IC, which is able to deliver up to 2 Amps constantly.

SKR mini E3-DIP

More or less the same thing applies to the SKR mini E3-DIP (V1.1). This also belongs to the fact, that the +5V rail on this controller board (even though it has a dedicated servo header) isn't beefy enough to drive the servos.

This adapter also uses the Y-Axis stepper motor driver socket and the DIR / STEP pins instead. Since the stepper driver sockets on the E3-DIP  are positioned differently,  you need to turn the servo header by 90°. Therefore you have to leave out the pins 1A, 2B and 2A to have enough space for the servo header.

HINT:
If you use pin 1B of the YM stepper motor connector to apply the +5V coming from the LM2596S, you'll get a much cleaner solution.