Print fans and hotend heaterson March 24, 2015 at 2:53 pm
A recurring issue that I see often for many reprap 3D printers that have carriage-mounted fans is seeing the hotend temperature plummet when the fans turn on. The common scenario is printing PLA, which benefits from having strong fans cool the plastic as it prints to prevent curling and improve perimeter print quality. Typically the fan is off for the first layer which prints at a slower speed, then turns on when the second layer starts, and the hotend loses temperature quickly due to the increased extruder feedrate and fan airflow, and can take tens of seconds or longer for the PID function to recover and return hotend temperature properly. What’s happening is the PID function is getting caught off guard since plastic is suddenly feeding faster and removing heat from the hotend more quickly, as well as fan airflow kicking in to increase the rate the hotend is dissipating heat and once the temperature falls it struggles to return temp to normal. In the worst case scenario, the hotend loses enough temperature that the hotend stops extruding and/or the MINTEMP cold extrusion protection kicks in on Marlin firmware.
There are a few methods for dealing with this situation. One is to insulate the hotend’s heater block, so it’s not affected significantly by the fan airflow. Fiberglass tape or sleeve coated with silicone is a popular method for insulation.
Another method I have used is to use a heater with enough wattage to more quickly overcome the sudden fan airflow, it won’t stop the temperature from dipping, but the drop can be minimized if the heater has enough power to recover quickly so that print quality is unaffected. The MendelMax printers that I use have 24V hotends, and the Marlin firmware defaults for MakersToolWorks printers have the hotend current limited to about 25% using the PID_MAX setting in Configuration.h. By setting PID_MAX to a higher value, the hotend heater duty cycle will be higher, resulting in a higher effective voltage and current, essentially giving the heater more watts. My printers use 40W heater cartridges, and a PID_MAX value of 128 reduces voltage to about 12V which means the heater gets a maximum power of about 10W. By changing PID_MAX to 224, the voltage is closer to 21V with maximum power of about 30W. The heater is designed to work fine at 40W, so there’s no problem running it at any power 40W or under. The reason for limiting the power is that these heaters are made to go up to well over 600C which is much hotter than we need, and they heat up very fast, which usually causes the PID function to overshoot the target temperature by quite a lot, perhaps by 30C easily. To reduce the overshooting many manufacturer defaults tame it by lowering PID_MAX. Once the PID has settled on the target temp, it can maintain temperature well as long as it’s been tuned properly and doesn’t have sudden factors like fans that change the situation.
There is however another method in Marlin to help prevent overshooting the target temp on initial heating before the print. Also in Configuration.h is the value PID_FUNCTIONAL_RANGE which determines when PID kicks in and takes over from what is called “bang” mode. Bang mode means just turning the heater full on or full off, whereas PID varies the heater power in increments to anticipate and “sneak up” on the target temp to prevent overshoots and temperature swings. By increasing PID_FUNCTIONAL_RANGE to something like 48 or 56, the PID function will take over sooner as the heater is heating up, and have more time to anticipate and avoid overshooting the target temperature. For me it usually still overshoots by as much as 10C but comes back down quickly and causes no problems. The smaller overshoot combined with giving the heater more power is preferred to having the heater underpowered and unable to cope with the fans turning on, in my opinion, and is what I have done for years.
There is another method that I am now using in combination with increasing heater power… I call it Fan Ramping. I added a feature to Marlin that makes the fan slowly spin up over a predetermined period, rather than turn on full 100% immediately. This helps the hotend from being overwhelmed by the fan, since the airflow increase is gradual. I find that having the fans spin up slowly over about 40 seconds to reach full speed lets the PID function keep up easily and the hotend temperature barely drops at all, making for a very smooth temperature transition from zero fan to 100% fan. This has been working extremely well for me printing PLA with extremely aggressive print fans. The Fan Ramping feature is not in the original Marlin, but it is in my own branch for my personal printers that I maintain at https://github.com/OhmEye/OhMarlin. Be aware if you do use my flavor of Marlin, you will likely want to go through both the configuration files and make changes for your own printer, I use some features that are uncommon.
Here’s a video demonstration of fan ramping