Friday, 10 January 2014

4 Extruder Printing - Duet + Kraken

According to Wikipedia the Kraken is "a legendary sea monster of giant proportions". It is also a new hotend from E3D which has 4 nozzles and is water cooled - packing all that into a form size of modest proportions.

I have been experimenting with the Kraken printing on the Lasercut Mendel90 using the Duet and Duex4 which supports up to 5 extruders. I was lucky enough to get my hands on one of the Krakens while still in beta (thanks Sanjay!) so there may be one or two modifications between the one I have and the final version they are bringing out soon.

Predicted to be Legendary Hotend

Colossal octopus by Pierre Denys de Montfort.jpg
Legendary sea monster

Setup in overview

Modified Lasercut Mendel90: changes include:
  • Re-designed X Carriage to accommodate the Kraken.
  • Additional extruder wiring loom.
  • 4 RepRapPro filament drives
  • Duet and Duex4 electronics which can drive up to 5 extruders
  • Updated RepRapFirmware for multiextruders
  • The Kraken! (with water cooling system)


so far I have done a couple of 4 colour prints

X carriage modifications

The carriage itself has been modified to fit the kraken underneath, secured with 4 M3 fasteners. There is a cutout for the Bowden and water pipes and two more cutouts for the wiring.

I wanted to keep using the extruder wiring loom that the Mendel90 is designed with. This normally plugs into a bracket on the extruder motor on a non-Bowden system, so I had to design a carriage mounted bracket.

This allows for two of Nophead's 15 Way D Type extruder breakout boards to be mounted. The bracket is a bit of a pain to print as it needs support but I like the way it all fits together. This picture shows it part way through assembly.

The OpenSCAD and STL files are shared on our github:


The second ribbon cable follows the same route as the original Mendel90 extruder wiring loom.

Ribbon Cable A is the original Mendel90 wiring loom, Ribbon Cable B is a 14 core ribbon cable wired to mirror Ribbon Cable A as shown in the table below. Ribbon A has not changed from my Dual extruder setup and uses the original motor wires to carry the second extruder with the probe circuit carrying the second thermistor.

DescriptionWirePCB 1 (right side)Notes
E0 Thermistor GNDRibbon A #4P2 Pin 2 (T)Common with E1 Therm GND
E0 Thermistor SignalRibbon A #3P2 Pin 1 (T)
E1 Thermistor GNDRibbon A #4P4 Pin 1 (P)Common with E0 Therm ground. no separate cable at Duex4 end
E1 Thermistor SignalRibbon A #5P4 Pin 2 (P)
E0 switched GNDRibbon A #9, 10, 11P2 Pin 4 (H)
E0 +12VRibbon A # 6, 7, 8P2 Pin 3 (H)
E1 +12VRibbon A #13P3 Pin 1 (MR)
E1 +12VRibbon A #14P3 Pin 2 (MB)
E1 switched GNDRibbon A #15P3 Pin 3 (MG)
E1 switched GNDRibbon A #16P3 Pin 4 (MK)

PCB 2 (left side)
E2 Thermistor GNDRibbon B #2P2 Pin 2 (T)Common with E3 Therm GND
E2 Thermistor SignalRibbon B #1P2 Pin 1 (T)
E3 Thermistor GNDRibbon B #2P4 Pin 1 (P)Common with E2 Therm ground. no separate cable at Duex4 end
E3 Thermistor SignalRibbon B #3P4 Pin 2 (P)
E2 switched GNDRibbon B #7,8,9P2 Pin 4 (H)
E2 +12VRibbon B #4,5,6P2 Pin 3 (H)
E3 +12VRibbon B #11P3 Pin 1 (MR)
E3 +12VRibbon B #12P3 Pin 2 (MB)
E3 switched GNDRibbon B #13P3 Pin 3 (MG)
E3 switched GNDRibbon B #14P3 Pin 4 (MK)

It is much less pretty at the Duet + Duex4 end:

Both these boards are designed to allow for IDC connectors but the wiring looms to use them are still a work in progress, hence the screw terminals. The Lasercut Mendel90 was always designed to accommodate 5 filament drives, with the "extruder sandwich" as part of the frame. Although I only need 4 for now I have all 5 mounted for future developments:

The filament drives fitted are the RepRapPro design for their Mono and Tricolour Mendel.


I have extended the RepRap Firmware to accommodate 5 extruders and added one or two legacy commands that other firmwares support. This is definitely still a work in progress to get all the functionality we have become accustomed to with firmware like Marlin.

My fork of the firmware is available here:

The Kraken!

The main thing that sets the Kraken apart from other hotends is the "cold end", this is designed to take up to 4 hot ends that can move up and down in the block, secured by two grub screws each. It incorporates a water cooling passage and two "barbs" to take the hoses for the water. The first thing I tested was the water system to ensure it did not leak:

I used fish tank airline silicone tubing because it was easy to get hold of, cheap and flexible. I think any tubing which is flexible enough and fits on the coupling well will do - what will be interesting is the long term effects of the flexing on the tubing. The other end of the tubing has a small pump supplied by E3D and it is just dumped in a water container.

Next I installed the cold block into the x carriage and wired up 4 thermistors and fitted the heater cartridges. I prefer to use axial leaded thermistors (like these) as they are more robust and easy to wire but the heater blocks also have holes for radial leaded thermistors like the EPCOS and tiny ones used in other hotends.

The view from underneath

At this point its more like a Medusa with all the wires and hoses! The D bracket holders and PCBs fit and the 4 M3 fixings for the Kraken hold it all in place (so the 2 M4 holes in the carriage are not required)

I did not fit the Bowden cables yet as it would have been even more unwieldy and the Kraken has a ingenious push fit Bowden connector integrated into the cool block so they can be added later.

I then mounted the X carriage and installed two of the bowden tubes. Leveling the bed is extremely important as the "end effector" is now the size of the square made up of the 4 hot end tips. I started with one hotend tip lower than the other three to make the bed levelling easier.

First print:

You may be able to see that the unused hotend tips are slightly higher. This turned out quite well at 0.2mm layer height:

its "Bucket O' Octopodes (thicker legs)" model by moleofproduction.

Once I had single extruder printing confirmed I centred the carriage on the bed and lowered it until the lowest tip was just touching (making sure everything is at the same temperature). I then dropped the other tips to the same level (relative to the bed) by loosening the grub screws, securing them in place by re-tightening the grub screws. This was a rather fiddly operation but actually much easier than trying to level four individual extruders. (Well, easier than two so it must be easier than four!).

With the 4 nozzles level it was on to a 4 colour print

I have uploaded this test piece to thingiverse. As can be seen Slic3r is building a full- height skirt around it which catches the ooze. That combined with a 20C drop in temperature between the active and standby hotends is reducing the ooze effect. I also cheated in this design as the similar corners of the triangles are 20mm apart, the same spacing as the nozzles.

My next idea was to make up a 4 colour "kraken" scene to try something a bit more difficult. Using OpenSCAD I imported the "Bucket O' Octopodes (thicker legs)" and Daid's "Small OpenSCAD Ship" slightly modified to be easier to print. I cut out the eyes and added some spheres to use another colour and then built up a scene with some "water".

This is the OpenSCAD render

Ignore the weird tentacle shaped gap in the head - it's a rendering artifact.

And then printed it (excuse the camera shake in this picture):

The print with the anti-ooze wall still on:

Not perfect by any stretch! I think it will a big improvement when I design a fan duct for this setup which should help the thin sails to print better.

The ooze wall did not fully catch all the ooze - I think a 30 or 40C change in temperature might be needed but that will take ages for every colour change.

I have also found an issue with extrusion in Slic3r when using multiple extruders - it sometime extrudes a huge amount too much which may account for some of the blobby-ness.  Update: not an issue with slic3r - I entered 90 rather than 0.9 in the top infil box!

Plenty more to improve on but it has been really fun setting this up and working with the Kraken - its a great multi nozzle hotend!


  1. You have a setup very close to what I'm doing. Does the ribbon cable handle the current well. Most of the beds and cartridges have 16 gauge wire rated at 22 amps. I was curious if you saw any adverse effects.

    1. it works fine on our M90s but we use 26AWG not standard 28 AWG for our wiring looms. 26 AWG over 3 or 4 strands is fine in my experience and there is no noticeable heating effect.



  2. Replies
    1. Hi

      Yes it would work as a paste extruder. Something like RichRap's paste extruder would be easiest to interface:



  3. Hi Tony,

    I was wondering if it was possible to move all of the extruders to the expansion board by changing the indexes. eg.

    #define E0_DRIVE 4 //the index of the first Extruder drive
    #define E1_DRIVE 5 //the index of the second Extruder drive
    #define E2_DRIVE 6 //the index of the third Extruder drive
    #define E3_DRIVE 7 //the index of the fourth Extruder drive
    #define E4_DRIVE 3 //the index of the fifth Extruder drive

    #define HOT_BED 0 // The index of the heated bed; set to -1 if there is no heated bed
    #define E0_HEATER 2 //the index of the first extruder heater
    #define E1_HEATER 3 //the index of the first extruder heater
    #define E2_HEATER 4 //the index of the first extruder heater
    #define E3_HEATER 5 //the index of the first extruder heate
    r#define E4_HEATER 1 //the index of the first extruder heater

    I'm going to put the expansion board next to the extruders and didn't want to run extruder 0 back to the main board. Would this work?

    Thank you.


    1. Hi Joe

      That should work, the index is the position in the array for the step/enable/dir pin and the thermistor and mosfet pins.

      As the Duet uses more pins than Arduino uses in the Due you will see some are defined in the SamNonDuePins library. You need to look through the Move class and check the correct function is being called for the pins after you have changed them, eg:

      if(drive == Z_AXIS || drive==E0_DRIVE || drive==E2_DRIVE) //ENABLE_PINS {29, 27, X1, X0, 37, X8, 50, 47}
      digitalWriteNonDue(enablePins[drive], ENABLE);
      digitalWrite(enablePins[drive], ENABLE);
      driveEnabled[drive] = true;

      Since E0_DRIVE and E2_DRIVE en pins are currently in the SamNonDuePin library, after your change it will be E4 and E1

      this is not in alot of places though so should be easy enough to change.

      I do wonder if this is really necessary, why not use E1 to E4 in you Gcode, rather than E0 to E3?



  4. Looks good, but as you say, more like a Medusa with all those wires! How about moving the temperature measurement and control functions to a board mounted on the hot end? I produce a board that does height sensing and fan control for the Ormerod, and you could use a similar board with a few more connectors to offload the temperature control. Then you would need only 12V power wires for the heaters, and some mcu power and signal (e.g. serial) connections. Total about 6 wires. I am told that the cartridge heaters only need about 50% PWM maximum even when printing ABS, so by running them in out-of-phase pairs you could keep the peak current in the 12V power wires to 8A.

    1. Hi David

      As you say it has a lot of wires and I do like your height sensing board. That said the wires are easy to manage using ribbon cables for the wiring loom and significantly cheaper than another PCB. The other advantage is all the hard work to manage the heater and temperature measurement is already done on the Duet, remoting this to a serial interface, while not difficult would be a lot of work in hardware and firmware for (in my opinion) not much gain. Also by doing it this way you can use other electronics and firmware with no changes other than replacing the electronics boards.

  5. Like to see more Pictures :-)

    This is that wath i plan to build .. cool that you share it ... thanks ..

    have you print some new multi-color things?

    greetings from germany

    1. Hi

      I have not been printing much with this printer recently as I have been focusing on the Kossel mini we have just released. All those are printed on the single extruder version of the Mendel90 though. I recommend starting with a single extruder version and then adding the Kraken.