I want to add heated fan control G-Codes and controller functions to the firmware to allow me to create Heated Part Cooling Fans. It may seem strange to have heated part cooling but there is a method to this madness.
When printing ABS lack of part cooling creates poor print quality because a new layer is extruded on top of still hot and melted layers. Setting part cooling fans to a low setting such as 20% helps but for best results on some parts with overhangs 40% or 50% is needed.
However, at this setting layer adhesion is affected due to cooling to a too low temperature and warping for the same reason. I think temperature controlled blowers will allow rapid cooling to a temperature low enough to solidify the layers but above the glass temperature of ABS (~105C). The goal is to cool the extruded layer to 110-120C as fast as possible but not to risk cooling it below this temperature. Having temperature controlled blowers set for 100-110C at high speed should do the trick.
I think that heated blowers will also help keep the whole part above the glass temperature reducing or preventing warping and serve double duty as compartment heaters.
I tried using a temperature controlled plastic welding gun as a proof of concept parts blower and got spectacular results in ABS, as good or better than I was getting with PLA. Excellent layer adhesion, no deformation due to extrusion on top of melted layers on corners and overhangs.
I now want to add heaters to my part cooling fans but need to make these heaters work in conjunction with the fan setting to prevent over temperature and meltdown when the fan speed is changed.
Here is what I have in mind:
1. G-code to define that a heater is fan driven, effectively linking the heater and fan controls for new type of temperature controller.
More than one heater can be linked to a single fan. Two fans controlled by a single PWM will require two separate heaters. Each heater will have to be controlled separately to compensate for unbalanced heating elements and detect fan, heater or temp sensor failure.
2. A G-code setting to pause until the heated blower reaches the new temperature (or a new fan setting). This will allow delaying operation until proper operating point is reached.
3. Changing the heater temperature or fan setting will be handled by the controller in a single operation :
-
Minimum fan setting before heater is allowed to turn on (probably 20%)
-
Fan is turned off only after the heater is turned off, probably after a short delay to allow heater to cool down a bit.
-
When the heater temp is set, fan setting changes cause heater PWM can to be adjusted for new fan settings right away and then let the PID (corresponding to the new fan setting) tune it the rest of the way.
4. Calibration procedure to determine heater parameters for fan settings from 10% or 20% to 100% in 10% increments.
I have setup the development environment but could use any pointers on what would be the best way to proceed with the implementation from someone comfortable with the RepRap firmware architecture.
Any suggestions on which G-codes should be used would also be appreciated.