This project has been abandoned!
In one of my recent projects, I've built myself a variation of my Spool-Rewinder which comes with a fully enclosed cabinet that eventually doubles as a Filament-Dryer, as you can see in the picture-gallery to the left.
This cabinet is build from 3030 extrusions and custom made acrylic sheets. It has:
an integrated 300x300 mm heated bed (24V)
a 300W 24V PSU for powering it all
a 120 mm fan as the exhaust
a 60 mm fan for the air distribution inside
two desiccant container capable of having 400g of desiccant each
a DHT11 Temperature/Humidity sensor
a 100K Thermistor utilized as a 2nd temperature sensor
a light bar on top (24V)
4 cabinet castors at its bottom for having it movable
This cabinet can hold up to 6 spools of filament, which - of course - are attached to the Spool-Rewinder control box that features 3 FeatherWing DC-Motor driver boards.
On top it has another extrusion, capable of holding 6 more motorized spools (for filaments that are less susceptible to moisture). That's a total of 12 motorized spools, which maxes out the capacity of the Spool-Rewinder (and the SMuFF).
The control box you may have spotted in one of the pictures, is an old 3D printer controller board (Wanhao i3 mini) equipped with a customized Marlin 2.x, which I've used as the Filament-Dryer controller in a previous project.
As soon as I had finished building, it dawned on me: “Why do I need a second controller? The SMuFF has it all, doesn't it?”
Although the answer is a clear "Yes!", I was a little hesitant to go this route, because it meant integrating the code for controlling the heater, fans, sensors, etc. all into the SMuFF firmware and all the interfaces, such as SMuFF-WI.
However, the more I thought about it, the more obvious it became that I simply had to do it!
A couple of weeks (and side projects, such as the SMuFF-Backbone and SMuFF-WI-ESP) later I've made it real and updated the SMuFF firmware to version 3.30, which now enables anyone to use the SMuFF controller as a Filament-Dryer controller too.
If I've piqued your curiosity, here's now what you need to make a Filament-Dryer yourself.
First and foremost, you don't need to build the Spool-Rewinder for this. It's nice to have but no need to have!
For the simplest version of a Filament-Dryer you'll need the following items:
a SMuFF that runs a SKR E3-V3.0 controller board (older boards don't have all the resources needed)
an enclosed container which is mostly air-tight and able to withstand higher temperatures (up to 150°C)
a heating element, such as a heated bed (for 3D printers) with a decent size / heating capability (12V or 24V - don't use one powered by mains voltage for safety reasons)
a 100K Thermistor for the heated bed - same as you have on your 3D printer (which usually comes with the heated bed)
a PSU / Power brick which has enough juice to power it all (i.e. 280W-300W)
at least one ATH-10 Temperature/Humidity sensor (the firmware supports up to 2 of them)
at least one fan (firmware supports up to 2 of them)
Desiccant, preferably one that can be re-activated using an oven or a microwave
SMuFF firmware >= 3.30 / SMuFF-WebInterface >=1.26
Please keep in mind that all components need to run at the same voltage. You can't have a 24V heated bed but 12V fans since the voltage levels on the SKR E3 V3.0 are not configurable. Also bare in mind, a 24V heated bed will heat up faster then a 12V version.
Instead of a heated bed, you may go with one of those PTC heaters:
They are pretty cheap and also somewhat safe, because the PTC will prevent the heater from going haywire.
Though, be careful what you buy: Those heaters are available in different configurations, some run on 12V, some on 24V and some run on mains voltage only (110V/240V AC), which I don't recommend using for safety reasons.
Also worth noticing is: Some come with and some without a fan, which you'll definitely need for distributing the heat.
Another thing to keep in mind is that they usually don't have a Thermistor attached (so you'd need to apply one yourself to make it work).
Lastly, have a look at the datasheet of such a heater module before you buy, because not all of them are rated for "higher" temperatures. Some to cut off at 60°C, which could render it pretty much useless, depending on what types of filament you want to dry.
Wiring it all up is pretty straight forward. In addition to the wiring you already have for the filament changer, you need to wire up the dryer components as follows:
Nothing too special here and except the software I2C for the AHT-10 sensor(s), all connectors are supposed to be still available. The AHT-10 sensor is I2C based and hence needs to share the SDA/SCL signals, going from the Z-Probe connector to either the Multiservo board, the Spool-Rewinder or both.
Before you get into the wiring, please make sure you understand that an active heater will draw a lot of power! My 300 x 200 mm heated bed for example will draw up to 8A of current while heating.
Whilst the SKR controller board is pretty comfortable with that (the board is rated for up to 10A on the HB terminal), your wiring must match the power consumption in order to prevent any damage due to extensive heat building up in the wires.
Hence, the wiring for the heater shouldn't be less than 18 AWG / 1.0 mm² (for up to 10A), or even better 16 AWG / 1.5 mm² (for up to 12A). However, since the heater isn't the only power consumer here - the board itself may draw up to 5A itself, you will need an even higher rated wiring on the 12V/24V power input. In worst case, that could be around 15A, for which you need at least 14 AWG /2.5 mm² wires!
If you've built your SMuFF already, you most likely don't have 14 AWG wires going to the 12V/24V power input terminal of your board, simply because it's not needed to keep the filament changer operational. In such case, please consider swapping the wires before you move on!
In contrast, wiring of the fans isn't critical. Most fans will stay around or below 0.5A, although it accumulates to the overall amperage of the 12V/24V input!
To give you an impression on how such a Filament-Dryer may look like, here's my prototype I've used for testing.
As it is pretty obvious, this dryer is nowhere near to air-tightness but that's not the point - it's a prototype. It has all the components needed (although with a box this size, one does not need a second AHT-10 sensor) and sealing off it is not really a challenge.
This "Dryer" also has no desiccant containers attached to it, which does reduce its performance. However, even with this prototype it became very clear how fast the humidity levels drop, once the drying process has started. The sensors are located where the filament usually sits - on top of the heated bed, separated by a tiny sheet of cork.
In order to be able to access the settings of the Filament-Dryer, you'll need the latest SMuFF firmware (>= 3.30) and SMuFF-WI. The firmware needs to be compiled with the USE_DRYER option, otherwise the functions needed will be left out of the binaries. SMuFF-WI will hide the Filament-Dryer specific items unless the firmware tells it it's ok to show them.
One can spot whether the requirements are met by taking a look at the navigation bar. If the Filament Dryer section is listed there, you're good to go.
Otherwise check and recompile the binaries if necessary, then flash it to the controller board.
The first thing you want to look at are the Filament-Dryer settings, which are located at the bottom of the "Settings section":
The values shown here are presets and supposed to match those of standard hardware, such as the ADC R1 - which is the resistor value (4.7 KOhm) of the voltage divider sitting at the Thermistor input pin on the SKR E3 V3.0.
Hence you should not change them unless you've been told otherwise.
If you'd like to know more about those settings, hover over the labels and you'll get a tooltip explaining what this particular setting is being used for.
Just make sure the Thermistor Beta Value is set to 3950 (again, this a default value used in the 3D printing environment) and the Use Beta Value instead of A/B/C is set to the ON state.
You can change the Max. Heater Temperature and lower it, if you feel uncomfortable with the preset value. The Min. Heater Delta and Max. Heater Delta values may need to be adopted to your heated bed. These parameters are being used to calculate the average rise in temperature while the bed is heating up. If the value measured during heating exceeds the maximum value, the heater will be turned off instantly to prevent a thermal runaway.
Although the Thermistor Beta Value is feasible enough to translate the measured values into real temperature values, there's a more precise calculation that's using the Steinhart-Hart coefficient values (A/B/C). See the next two sections down below.
The section in the middle defines the parameters for the Spool Interval Spinning option, if your SMuFF features a Spool-Rewinder. In such case, you can let certain spools spin while the drying process is ongoing. This helps drying the materials more evenly.
In the configuration shown above for example, the spools checked for interval spinning will spin every 25 seconds for 1 second (1000 ms) with the speed of 80. Speed and duration have to be tuned in once, depending on your hardware. Just make sure the spool doesn't make a full rotation (i.e. 360 deg.) , which would render this feature kind of pointless.
The table at the bottom of the settings defines at what measured humidity level (in %) what fan speed (in %) should be set when using the Fan 1 Dynamic feature while drying.
Simply because resistance values of Thermistors aren't linear. As you can see in the chart to the right, it's a curve and hence, one can't translate measured voltages into resulting temperatures by using some fixed factor. To get an accurate temperature reading, one needs to take either their Beta Values or their A/B/C coefficient values into account. Calculations based on a Beta Value are faster, using the Steinhart-Hart A/B/C coefficient value gets you a bit more precise results.
When using the Steinhart-Hart coefficients, it's important to use the correct resistance values for that particular Thermistor. Wrong values will lead to wrong calculations and result in wrong temperature readings, which eventually will affect the drying process.
The Beta Value is something that the manufacturer usually puts in the name of the Thermistor (e.g. NTC3950), whereas the Steinhart-Hart temperature coefficient values (A/B/C) are an approximation based on 3 different resistance values at defined temperatures. The manufacturer also provides you the resistance values of that Thermistor in a table contained in the data sheet.
Here's such a table that lists the resistance values for a NTC3950 Thermistor. Since the Steinhart-Hart calculator uses only 3 input parameters, it's best to use the lowest, the highest and a temperature somewhere in the middle. Since a NTCs resistance is very accurate at 25°C (100KOhm), it's best practice to use this value as the "middle one".
Depending on the manufacturer, this table can be much more granular and thus much longer.
In order to get the Steinhart-Hart coefficient values, you firstly need the data sheet from the Thermistor manufacturer, where you'll find a table as described above.
Pick 3 values from that table, then enter them in the R1, R2 and R3 fields. The according temperatures go into the T1, T2 and T3 fields of the calculator. Once all data is keyed in, it'll calculate the A/B/C coefficients for you.
Once you've got the coefficient values, enter those in the fields A-Value, B-Value and C-Value of the Filament-Dryer settings and turn the Use Beta Value instead of A/B/C switch OFF.
Please note that the A/B/C values in the calculator are specified with an exponent, which you must also enter in the settings.
However, since most online shops do not provide much information about where the Thermistor is from or where to find a valid data sheet, I'd rather recommend using the Beta Value which usually is in the type name and cross-check the measured temperatures with another temperature measurement device for the first few runs.
After you have checked and/or changed the settings, head over to the Filament-Dryer section in the navigation bar. It'll open a new panel, showing you the current state of the Filament-Dryer and the measured sensor values at a glance.
If the according options Log Sensor 1 and Log Sensor 2 in the settings were switched ON, you'll also see a chart containing various measured values over time for each sensors.
The section below the charts becomes relevant only if the SMuFF firmware is also compiled for supporting the Spool-Rewinder. It allows you to spin certain spools in an interval, which can be defined in the Filament-Dryer settings. In case you use this option, make sure the filament is not being fed into the SMuFF and the spool is able to spin freely.
The current dryer state can be either Idle, Heating or Drying. In Idle state you can click the Start Dryer button to start the filament drying process, whereas in mode Heating/Drying this button will be labeled as Stop Dryer, which will shut down the drying process.
As you click on Start Dryer you'll get this dialog, in which you're able to set up the operational parameters or pick a predefined profile. There are 4 different default profiles already set up, but you're allowed to either delete or redefine them for your specific needs. These profiles will be stored locally in your browser (not on the SMuFF).
To start a drying process simply define the duration, target temperature and fan speeds and hit the OK button. The Filament-Dryer will start instantly and the state will change to Heating until the target temperature is reached. Then the state will switch to Drying.
Keep in mind that at any point the top status bar will keep you up to date on what the Filament-Dryer is currently doing. When in Idle state, the status bar will only show the measured sensor values, while in Drying state you'll get this picture:
The background of the Heater/Target temperatures gets animated bars running from top to bottom, the temperature values will change and the DRYER label will get a red background every time the heater MOSFET on the SKR E3 V3.0 is being turned on. Also, the timer for the remaining time (hh:mm:ss) will show up.
You have the option to modify the Target temperature by clicking on the label, as well as changing the speed of Fan 1/2 while drying is going on. Just be aware that the Dynamic Fan mode will be turned off, once you change the speed of Fan 1 manually.
In addition to that, if you're running the SMuFF-WebInterface locally on the (new) SMuFF-WI-ESP and there's a NeoPixel strip with 4 LEDs attached to it, the Filament-Dryer will signal the current state by pulsing the NeoPixel strip in different speeds/colors. After the heated bed temperature has dropped below 45 °C, the NeoPixel strip will automatically go blank.
This is supposed to provide you a better visual feedback, even if you're currently not connected to / looking at the WebInterface.
Although the dryer options on the SMuFF itself are far less compared to the WebInterface, you still can start / stop the Dryer here as well.
Go into the new Filament Dryer sub-menu and set Duration, Temperature and Dynamic Fan 1 options as desired and click >> START DYRING <<.
Once the drying process has started, the sub-menu will be renamed to Stop Dryer, which does exactly as it says.
Once the Dryer has started, regardless were it was from the SMuFF or from WI, it'll show a Flame symbol left to F1 to indicate when the heater MOSFET is on. The current temperature read out is shown below that symbol.
Even if the drying process had been shut down, the temperature read out will stay there until 45 °C have been reached.
The status line at the bottom right will flip through the current state of the Dryer (e.g. HEAT-UP, DRYING, COOL-DN) and the firmware version number.
Please notice: In contrast to many other features, there's no such menu for configuring the Filament-Dryer options on the SMuFF display directly! You have to use SMuFF-WI for this task.
While the Filament Dryer is in operation, there are several measures to prevent a thermal runaway. For one, the Max. Heater Temperature from the settings is being compared constantly to the measured value and in case the measured value overshoots, the heater MOSFET is being turned off immediately. It won't recover until turned back on manually.
For the other, the temperature delta is also being observed constantly and in case it under- or overflows the configured values for more then Max. Delta Errors times, the MOSFET gets shut off as well.
Depending on the hardware you use, these values may need a bit of tuning. To do so, turn on the the DEV.4 debug message category in Settings -> Options and you'll see the measured delta values in the Console.
However, regardless of the implemented safety measures, I don't recommend leaving the Filament-Dryer alone for the first 5-10 drying sessions, just to be on the safe side. If something unexpected happens, simply cut off the supply power and wait until everything has cooled down.
Drying filament is not just turning on a heater and hoping for the best. The applied heat will pull moisture out of the material, though, in an enclosed environment this moisture needs to go somewhere. Otherwise it'll only circulate and eventually find it's way back into the material, once the heater is being turned off. That's why a totally sealed environment doesn't make much sense.
As you build your own filament dryer, make sure you have a concept of letting fresh air in and exhausting the moist air. Of course, it's wise to add some desiccant containers to either the air inlet as well as the outlet. This will prevent getting too much moisture into the box while the dryer is not in operation.
For the air inlet I'd recommend putting a cut-out somewhere near the bottom of your box, and for the outlet a cut-out somewhere near the top. That's because moist air will rise whereas "dry" air will sink.
That's where the fans come into play. In my dryer, I've add two of them. One for the outlet (blowing moist air outside) and one inside to get a better airflow/heat distribution.
Here's an example for the advantage of an exhaust fan:
The green line represents the target (drying) temperature, the orange the heater temperature. The red line is the measured temperature from the AHT-10 sensor 1 and the blue line the measured humidity on sensor 1.
As one can clearly see, after I started the dryer (green goes up) the heater (orange) is heating up slowly until it reaches the set target.
At the same time red goes up too (much slower though) and - funny enough - blue, which denotes the humidity, goes up as well.
The red arrow points at the moment where I manually set fan 1 to 50% in order to exhaust the humid air.
It's pretty obvious that the humidity starts to drop significantly after that because the moist air is being pushed out.
That's the reason why the Dynamic Fan 1 feature exist. The Filament-Dryer will turn the fan on/off at different speeds, depending on the humidity read out of sensor 1. Those values (humidity / speed) are configurable in the settings, as you've seen.
In order to get the best results from the Dynamic Fan 1 feature, I'd recommend putting the AHT-10 sensor 1 somewhere near the filament spool. This way it'll be easy to spot whether you need to turn up the heater - because not enough heat is going into the material - or down, because the heat exceeds the materials glass temperature.
Here's how big the temperature difference can be:
For PLA I'd turn the target temperature up, so it reaches 50 - 55°C at the spool. For PETG or ABS/ASA this value is way to low. Here I'd go up to 60-75°C, which means you have to turn the target temperature to about 100-120°C.
However, this all depends on various factors and you'll have to play around with the settings, once your dryer is up and running.
Keep in mind: There's no such thing as an "ideal humidity level". Each material will act differently on various levels of humidity when printing. You have to experiment with your materials until you find the optimal settings for each material and - most likely - each brand.
Also: There's no 0% humidity. If the sensor claims that, it's simply lying!
Whenever we talk about "air", we also talk about water in the air, because that's the definition of air: A composition of different molecules such as Oxygen, Nitrogen and Argon (mainly) but also Carbon Dioxide, Helium, Hydrogen, Neon... etc. Look it up in Wikipedia if you want to go deeper.
So, what a humidity sensor can tell you is, whether or not there is a significant drop in Hydrogen over time but it doesn't give you a guarantee that your prints will turn out better. Just keep playing around until you find the appropriate settings and levels.