Saturday 6 February 2016

Cool maps

The aim of making the instrument described in the last post was to be able to quantify the cooling effectiveness of various fan and duct combinations by sampling the airflow at a grid of positions around the nozzle.

I attached the denuded bulb to the terminals such that it was pointing vertically upwards. I then placed the Coolometer on the bed with the bulb filament aligned with the nozzle at the centre of the bed (0,0).

I originally planned to clamp it somehow but instead I just placed it on some anti-slip matting and set the Y acceleration to a very low value.

My printers are controlled by Raspberry Pis so it was straightforward to attached the Coolometer to the second USB port. I control both it and the printer with the following Python script that runs on the RPi.

I made the Coolometer command acknowledgement ok, the same as Marlin, so I could use the same do_command() function to talk to both of them by passing the serial port.

The script scans in X and Y taking a cooling reading at each grid point. It generates a file called fanmap.dat that consists of a list of XY coordinates with a cooling reading in milliwatts. The file format can be read by gnuplot to draw graphs. This is the first time I have used gnuplot. I normally draw graphs with spreadsheet programs but this is a lot more powerful and very easy to use.

This simple gnuplot script: -

produces 3D plots like this: -

The 3D view looks cool and is good for interactive examination because you can rotate it with the mouse. A better view for a static picture is from above, which can be obtained by set view map. These are referred to as heat maps in gnuplot parlance but by reversing the palette they become cool maps!

Here is the script I used: -
It labels the colour key with the minimum, maximum and average cooling values in mW. Gnuplot is fantastically powerful and flexible but it took me a while to achieve the exact view I wanted.

Each reading is averaged over 100 samples in about two seconds, so it takes about an hour to do a scan of 80 by 90mm in two mm increments.

This is the first plot I made and was done on my Huxley90 because that machine is next to my desk. It is fortunate I did this first as I was expecting some difference in airflow from front to back but was surprised to see a big difference side to side. Had I scanned the Mendel90 duct first I would have attributed that to its asymmetry, but the Huxley90 duct is left right symmetrical. Here it is in the same orientation as the 3D graph: -

The only explanation that I could think of to cause this imbalance is the anti-clockwise rotation of the fan.

To test this hypothesis I mounted the fan upside down so it was spinning clockwise, but then it was sucking rather than blowing of course. The cooling effect was much less, as expected, but was now stronger on the right than the left.

Another experiment I did was to watch smoke from a joss stick going through a naked fan. I had to run the fan very slowly to be able to see smoke coming out the other side. The smoke going in was a tightly twisting vortex looking like a micro tornado. Coming out it was rotating more slowly with a  bigger diameter.

So I think that because the air-stream is rotating anti-clockwise it likes to exit the duct on the left hand side where it is travelling downwards and less so on the right hand side where it is travelling upwards. The effect seems more marked with the small 40mm fan I used for the Huxley90. This is possibly because the depth to width ratio of that duct is bigger, so the flow is more free to rotate.

Moving on to the fan duct and fan supplied with the Mendel90 Dibond kits this is the plot I got: -

As you can see the overall cooling effect is better, as to be expected with the bigger 60mm fan. There is a less pronounced left right difference but there is an odd cold lump front right. I thought this might be something to do with the jet from the cold end cooling hole at the back or perhaps the hot end affecting airflow. I removed the hot end and blocked the hole and neither made any significant difference.

My hypothesis is that the air rushes around each side of the circular part of the duct in opposite directions and collides at the front and then spills out. I.e. the air has significant momentum, so it prefers going around the outside of the duct loop to exiting the slot in the bottom. When it hits the air coming from the opposite side it has no choice but to exit. The lump is displaced to the right because the left stream is more powerful.

Odd that the ring of maximum cooling is smaller diameter when the output part of the duct is identical to the Huxley one.

The next thing I tried was the same duct with a GELID Solutions Silent 6 fan suggested by +Neil Darlow.

This claims to have "Optimized Fan Blades" and "High Airflow and High Static Pressure" as well as "Silent Operation" and "Long Lifetime". Here is a comparison of the things I could measure compared to the original fan: -

Current Power Speed Noise
Silent 6 @ 12V 0.103 A 1.2 W 3060 RPM 47.5 dB
Original @ 12V 0.209 A 2.5 W 3600 RPM 53.5 dB
Original @ 9V 0.136 A 1.2 W 3060 RPM 48.3 dB

I measured the noise at 15cm rather than the normal 1m because my sound meter only goes down to 40dB. The fan was running in the duct and placed on a block of foam so the table did not act a sound board.

I used the tacho signal on the yellow wire to get the speed. It produces a square wave with two cycles per revolution. I found that the supplied fan had no output on the yellow wire and after I disassembled it I found the components for it: a PNP transistor and a resistor were not fitted. In fact the only electronic part is a hall effect chip with complementary outputs. That feeds a two phase motor with two pairs of coils in series. I added the missing components to make the measurement. Interestingly the transistor is driven from one of the coils so it works even when the fan is not powered as long as it is spinning fast enough to generate enough voltage to turn the transistor on.

The data shows what I expected: that most of the noise reduction comes from the reduced speed. If the original fan is driven from 9V it rotates at the same speed as the Gelid one and takes about the same power. It is slightly noisier, which I put down to the fact the Gelid has a smoother leading edge on its blades. They also have more curve to them giving it a steeper pitch, so it can potentially move more air at the same speed.

This is the cool map from it: -

Compared with the original fan it does produce a slightly higher peak and average cooling effect with 6dB less noise, so it does do what it says on the tin. However it has the unexpected effect of changing the air distribution significantly.

I tried running the original fan with 50% PWM. All that did was reduce the airflow, it didn't change the distribution significantly.

So it seems that subtle changes to the shape of the fan blades greatly affect the airflow pattern at the exit of the duct. Who would have guessed that?

Next up is the version of the fan duct to suit the E3D V6 hot end that proved so challenging for slicers. This has to slope downwards to fit underneath the E3D's fan assembly. It is also a bigger diameter to clear the bigger heater block assembly.

Not too surprising to me by now this has a massive and unpredictable effect: -

I have no real explanation for why this seems to have a quarter of the circle missing. Looking at the plot one would think there is a blockage or a hole in the duct but that isn't the case. I think it is a consequence of two streams of air hitting each other head on. If you think about it that would create a chaotic result.

There are a lot of alternative Mendel90 fan duct designs on Thingiverse so I decided to test a few of those.

This is a 40mm duct by sivar2311: -

Less cooling than my 40mm Huxley90 version and very uneven.

This is an alternative 60mm duct for the E3D hot end by +Daniel Bull that has the fan mounted vertically :-

Compared to my original design this gives a higher average cooling but a lower peak. It too has a quarter of the loop missing and the air that should come out there seems to shoot off forward instead. Mounting the fan vertically seems to give a bit more flow, presumably because the air doesn't have to turn a corner, but it seems to be less even, possibly due to the rotation having a bigger effect.

After I designed Mendl90 I learned that radial blowers are more suited to pushing air down a small duct. Axial fans are fine for pushing large volumes of air down a large duct but radial fans generate a higher pressure so are better suited to making smaller jets.

This a duct for a 50mm radial blower by kiefer :-

I got the blower from RobotDigg but it seems to be slightly different to the one pictured and has three wires, not two.

 It rotates at 7200 RPM, takes 250mA and produces 56 dB at 15cm. So it is a lot more powerful than the original fan but more compact with the air coming out of a much smaller aperture.

It gives significantly more cooling and there aren't any gaps in the ring. It does seem to suffer from the air coming from both sides and colliding problem at the front. That seems to result in a high pressure jet spilling inwards and a lower pressure stream spilling outwards at the front.



When I designed the Mendel90 duct my aim was to achieve even cooling of the part without cooling the nozzle. The default duct with the original fan seems to give the most even cooling but I now think that is a complete fluke. Small changes such as the height of the duct, or the shape of the fan blades has a dramatic effect. This leads me to think that the airflow with an axial fan is chaotic due to the presence of vortices arising from its rotation.

A radial blower seems to be the way to go as it produces more cooling and the air coming out of it isn't rotating. I would mount the blower with its aperture pointing forwards to avoid the air needing to turn a right angle. Rather than have the air flowing around the circle in both directions I will try a p shape where the air goes around in one direction and then meets itself travelling in the same direction. I think this will create a vortex airflow that emerges more evenly around the circle.  I expect the shape of the junction might be critical. As far as possible I will try to keep the cross section constant to avoid Bernoulli effects.

So in all I managed to use three new tools (fritzing, CodeBender and gnuplot) and discovered a few facts about fans and airflow, so I learned a lot doing this project.

Fluid dynamics is obviously a massive subject and I learned this morning that it isn't a solved problem mathematically, there is a $1M prize outstanding. As ever, the closer you look at things the more complicated they get.


  1. As always, thanks for the great work and all info. I'm hoping that in the future we can start to incorporate this kind of cooling data into our product listings at MatterHackers.

    BTW: It was great reading about the fan duct printing. I've printed that part many, many times here in the States for customers, and it was a walk down memory lane.

    I also tried MatterControl on it. MatterControl has similar errors to the other slicers. However, the fan duct has some very interesting qualities to it that can help our understanding of what to do to with these types of bridges.

    To describe what is going on; Bridging consideration happens (at least for CuraEngine and MatterSlice) by figuring out the intersection between the area needing filling (the potential bridge) and the previous layer of the part, then using those calculated islands to create the best bridge.

    For the fan duct there are either two islands when the perimeters are very low (1 perimeter) or three when the perimeters are larger (3 with .4 nozzle). We got the 2 island situation working better by excluding any islands that are internal to other islands, and then treating the problem as a single island needing convex consideration, and that works well. The 3 island case is much more complicated and brings us to what really needs to happen. We need to be much more explicit creating tool paths to accommodate all the bridging that is possible, rather than simply choose an angle for the infill. This will be a much longer project but it is exciting to have these test cases.

    Thanks again,

    Lars Brubaker

  2. Thanks for bringing some science to a topic that often involves a lot of guess work! I wouldn't necessarily try to stick to a constant cross section duct. If the duct is a constant section and the nozzles are equal size and spacing, then the flow speed will vary in the duct (as air is lost out of the nozzle) so there won't be an even incentive for the air to go through the nozzles. A tapering duct might lead to more even flow front to back. Obviously the other trick to consider is flow straightening vanes, to reduce the effect of swirl coming from the fans rotation. If you really want even flow out of many nozzles, you need all the flow to travel the same distance, through the same restrictions. If one bit of air has to travel further or turn more corners, the flow will be different.

    1. Yes that is why I originally expected there to be more flow at the back and less at the front. However I don't see much front back variation except with the 40mm one that has a relatively small diameter pipe for its ring. I don't have lots of separate nozzles, just a continuous ring. The cross section of the loop is much bigger than the exit so it seems the air has no problem getting to the front and with the powerful fans tends to have more exiting there than the back despite having travelled further.

      I am hoping that by running it round in a circle it will go round and round spiralling downwards to eventually exit. My theory is that will give an even output flow.

      Yes I agree that some vanes might help with the axial fans but my new design will be with the radial one.

  3. Hi Nophead, This is a fantastic piece of research! I wonder if there are any open source fluid dynamics applications that could be used to optimise the duct even further? I also wondered if you could test some of the simpler designs which probably have no consideration for the airflow at all, such as the Prusa i3 Plus design:

    1. Hi Giles, thanks.

      Yes it turns out there are several OS CFD programs, although it doesn't sound easy to use them:

      It looks like Josef's design blows a small jet from one side. I think that will give both anisotropic printing results and significant cooling of the nozzle, which is exactly what I was trying to avoid with the ring design.

      This is an object I printed a long time ago with a fan at one side: The overhang is much neater on the side facing the fan and is what made me realise the importance of all-round cooling.

    2. Interesting, I hadn't realised that cooling effects the quality of overhanging places. I just happened across this, which reminded me of your post.

    3. An interesting read on the effects of cooling.

      I am not sure I believe the reports of backwash. I.e. air coming out backwards from a fan in a duct. You can't feel airflow as pressure from such a small fan, you feel it as the cooling of your skin and so can't tell if it is sucking or blowing. Whenever I have tested it with smoke or a small piece of paper the input side of the fan is always sucking air in and it must be for the duct to be blowing. It just gets very inefficient with an axial fan into a small duct.

      The CFM rating for the blowers is actually much less than an axial fan. They move a much smaller volume of air but at a higher pressure and velocity.

    4. Hi Nophead.

      I am trying to design a P-shaped fan shroud that will fit my Prusa i3-Plus (1.75mm)

      This is what I came up with so far.

      The flow of the air is far from desireable at the moment, but I am trying to get from an akward fan position (behind the extruder). I hope to fix that up later, at this stage its more of a sketch idea.

      The main problem I have is printing it, because I have created an area which requires bridging a circular edge. Doh!

      I was wondering if you could offer any design improvements? Do you print the mendel90 shroud the other way up?

    5. Hi Giles,
      I think it is probably better for the straight part of the duct to meet tangentially rather than radially.

      No I don't print the current duct upside down but I probably would for a P shaped one.

    6. Thanks for looking at my design.

      I started with a more tangential approach, it looked something like this:

      I think I still have a problem with the curved bridge, and the pipe is now exiting in the wrong place to meet up with the fan (in its current mounting place) see:

      Here are cross sections of the P-Shape which I think illustrates it better:

      The other problem I am having is that when printing the tapered bit its cutting corners when printing the perimeters :(


  4. could you elaborate a bit on the usefulness of cooling?
    afaict, apart from bridging, keeping the part warm to reduce strain is a typical problem.
    i'll even wonder if the heated bed's beneficial effects are mainly concerned with it heating the ambient which reduces the part's cooling.
    if cooling is for bridging, then why not a highly directed flow as from a nozzle?

    1. The primary reason for part cooling is for printing small to medium sized PLA parts. PLA has a very low glass transition at ~55C. Above that temperature it is like rubber / jelly until you get to the melting point where it becomes a liquid. To maintain an accurate shape you want the previous layer to have set rigid before you lay the next layer on top of it. I.e. it needs to have cooled from ~200C to ~55C.

      On the down side the strength of the bond to the layer below is proportional to how long the interface is above the melting point, so cooling makes the interlayer bonds weaker.

      With plastics like ABS, that sets at ~100C, it is more important to keep them warm to prevent warping and get good layer adhesion, so I don't use a fan.

      Bridging and overhangs benefit from cooling because they make the plastic set faster but I haven't tried just having the fan on just for bridges myself yet. I mainly print ABS and so don't have a fan fitted.

      The idea of this duct is to have as directed a flow as possible without blowing on the actual nozzle itself.

      Ideally, when used with a heated bed it should blow air at the same temperature as the bed, i.e. just below the glass transition of the plastic. That would set the plastic quickly without increasing warping. Something I plan to try at some point. That goes hand in hand with having a heated chamber at that temperature but that is a problem with a machine made from plastic.

  5. i always get a little smarter when i read your stuff, thanks for being a scientist, sharing your discoveries and experiments and for being accessible & providing thoughtful replies.
    i wish i had neighbors like you.

  6. Excelent work, Regarding to Gnuplot, I used to use it.
    Nevertheless I would recommend you tikz. It library has given to me
    cleaner and customized plots.

  7. Brilliant reserch and analasis and temprature maps of the cooling process
    As the radial blowers were easier to mount/direct onto the print I've been using them.
    Never thought of air spinning just didnt like the idea of polo effect/hub motor position.

  8. Heyhey,
    thanks for this article! While I could never replicate your research, but there's a lot to take away from this even for fan duct design, even on a less scientifically optimized level. I'd definitely love to hear from your P-shaped duct
    Regarding the air ideally having glass-transition temperature, maybe instead of a heated chamber one could simply install an additional thermistor at the outlet of the duct close to the part being printed? With the air that is sucked in generally being cooler than the GT-temp, wouldn't it be enough to always bring in just enough "fresh" air that the area surrounding the nozzle has about those 55 °C? Or rather, a temperature at the measuring point offset by a tweakable amount, so that the resulting temperature of the plastic is just right.
    Unfortunately I can't code this, but maybe this low-tech approach is good enough and still better than guessing the required fan-speed in Slic3r when no heated chamber is available?
    Just an idea, might be stupid, I'm no engineer.
    Thanks again either way!

    1. You want to keep the whole object just below the glass transition not just the air close to the nozzle. It makes most sense energy-wise to have a heater chamber at that temperature and simply blow the same air around to cool the new layer quickly.

      Second best is probably a heated bed and a hot air gun to cool the part. That way you could blow on a part without it increasing the warping.

  9. Just a random thought - the wind-tunnel people seem to use a matrix of drinking straws between fan and tunnel to straighten out their airflow - any mileage in that? Or maybe print a few fins in the duct, reducing the bridging problem at the same time?

    Wish I had time to play with this stuff again!

  10. Hello,
    It would be interesting to test heatmap for this It would open new possibilities if simulation is comparable to real world ...