Tag Archives: Triple Extruder

Parametric Part Cooler

Status: fully tested, but not yet released


  • 2020/12/27: individual renderings for each application
  • 2020/12/21: improve documentation, with application variables
  • 2019/06/16: design solidified, multiple variants tested (Triple Micro Swiss, Dual Micro Swiss, Chimera, Cyclops NF, Dual V6, Single V6)


Back in May 2019 I started to customize dedicated printheads, e.g. combining CR10 hotends / Micro Swiss Hotends in dual and triple mode – and thereby required a dedicated Part Cooler. This lead me to develop my own Parametric Part Cooler in OpenSCAD, adapting the design of Radial Fan Fang by Lion4H as I used that one successful for E3D V6 – now a general approach coded entirely in OpenSCAD:

I started with the central heatsink fan in the geometric center, and route the pipes (symmetrically) around it, back to the nozzle; on top using 5015mm fan blower – after a couple of hours the basic form was defined.

As long I am in edit or tune mode, the part cooler is rendered with a few corners – yet, when exporting STL format, the pipe is calculated with refined spline and smooth surface:

Screenshot from 2019-06-17 07-21-14
Parametric Part Cooler for Triple Micro Swiss Hotends
Screenshot from 2019-06-17 07-22-05
Parametric Part Cooler for Triple Micro Swiss Hotends


part_cooler() takes following variables with their defaults:

  • m=40: size of heatsink fan
  • t=2: thickness of fan mount
  • zoff=17: z-offset of air outputs
  • yoff=8: y-offset of air outputs
  • ws=12: extra width space
  • wx=35: cutout width X at the bottom
  • sq2=0.6: relative squeeze Y-wise at air outputs
  • sq3=0.6: relative squeeze Z-wise at air outputs
  • zb=0.5: relative Z bend
  • smooth=false: switch of smooth pipe rendering (false: fast rendering / editing mode, true: export to STL)
  • name="noname": label on both sides
  • tscale=1: text/label x/y scale

Needless to say, to set or alter those variables you require the fan and the hotend as a model so you can model the part_cooler() around it.


After a couple of weeks the part_cooler() was designed for various hotends:

Parametric Part Cooler: Triple Micro Swiss, Chimera, Cyclops NF, Volcano, V6 Lite
  • Triple Micro Swiss (3x CR10 Hotends): largest part cooler, and first application
  • Chimera 2-in-2: two filament/material and two nozzles, yet, a small common heatsink with E3D V6 nozzles
  • Cyclops NF or Lerdge 2-in-1 V2: simple non-mixing 2-in-1 printhead – in use currently on the Ashtar C #1 (Core XY)
  • E3D Volcano: although designs exist, I just wanted to see how my cooler performs in comparison – in use currently on Ashtar K #1 (Prusa i3-like) with 0.6mm nozzle
  • E3D V6 Lite: just an excercise to make it work for this popular setup as well – in use currently on CTC DIY I3 Pro B Y3228

Application Variables

Triple Micro Swiss

name=”triple swiss”

* requires a dedicated fan mount: Triple Nozzle Printhead

Dual Micro Swiss

name=”dual swiss”

* requires a dedicated fan mount: Dual Nozzle Printhead

Chimera 2-in-2


Cyclops NF

name=”cyclops nf”

see Cyclops NF

E3D Volcano


E3D V6 Lite

name=”e3d v6″

Pros / Cons


  • parametric, reusable design
  • source code available (OpenSCAD) [not yet]
  • modular/stack use:


  • other parts must be available as models in order to determine parameters of the part cooler
  • heatblock(s) should wear silicon cover, as air outputs partially affect heatblock which should be avoided


https://www.thingiverse.com/thing:3680198 (not yet released)

Currently all my parts reside in a single large parts.scad for all Ashtar 3D printers, it helps me to improve designs quickly, but hinders me to release part designs in OpenSCAD source individually – it’s all interconnected and therefore avoid split it into separate files for now. As soon it’s resolved I will release the OpenSCAD sources.

For now three part coolers I released in STL downloadable on the dedicated pages:


I’m quite happy with the result and use this Parametric Part Cooler for all my planned use cases.



3D Printing: Triple Nozzle Printhead


  • 2020/12/29: published finally, also released files on Thingiverse
  • 2019/09/24: initial draft (not yet published)

After working on dual CR10 nozzle / Micro Swiss nozzle setup, I considered to add a third nozzle:

Triple CR10  Hotends / Micro Swiss Hotends

In order to pack the 3rd nozzle, I put it in front of the dual setup, and use one heatsink fan cooling all three heatsinks:


The Parametric Part Cooler has the settings part_cooler(m=50,wx=50,yoff=17,sq3=1,wx=54).

Final smooth part cooler and fully assembled:

Screenshot from 2019-06-17 07-22-05
Parametric Cooler for Triple Micro Swiss Hotends
Screenshot from 2019-06-17 07-21-14
Parametric Cooler for Triple Micro Swiss Hotends
Parametric Cooler for Triple Micro Swiss Hotends




Assemble 3 nozzles in one go, and adding heatsink fan mount:

adding 50mm fan on top:

and with the dedicated Part Cooler using 5015 fan blower:

I recommend cover all nozzles with silicon socks when using the part cooler. Optionally LED strip mount in case you want some light on all three nozzles.

Leveling Three Nozzles

It’s essential that all three nozzles have the same distance to the bed, otherwise inactive nozzles might touch and tip-over a piece while printing. See Dual Nozzle Setup for the procedure.

Third Hotend Wiring

One requires a board with 3x MOSFETs to heat all three heatblocks and 3x thermistors inputs, like RUMBA or TANGO (Open Source variant of RUMBA) controller board or extend it with dedicated parts:

  • per heater: STP55NF06L (MOSFET) with 10R, 100K on a Dx (digital output); LED with 1.8K is optional
  • per thermistor: 4.7K with 10uF on a Ax (analog input)

for wiring see RAMPS 1.4 schematic as reference:

See Also

That’s it.