CHANGER - a toolchanger new interpreted

CHANGER - a motion system which can be used for advanced 3D-Printing with up to four materials, PnP, PCB-Milling, Layer inspection, etc...

Similar projects worth following
I've had the idea of a toolchanging 3D-printer/motion system for quite a while and started with some concepts to have the same utility as modern cnc milling machines (easy toolswap, fully automated calibration etc.). Approximately one year later I saw the first prototypes of the E3D-Toolchanger and quite liked the toolchanging head and followed the project to see if the toolchanging head improves over time. For my purpose a tested toolchanging head with a proper QM would allow me to focus on the boundary conditions of such a system (interfaces, watercooling, ultralight directdrive printheads, autocalibration of the tools, smart tools with NFC-capabilities). Other than that this System is fully customized with watercooling, HEPA-Filtering, kinematic coupled Z-Axis for non-planar-3D-printing, Air/Vacuumpump for cooling or PnP (vacuum), status LED under the Touchscreen shows progress, optionally: automated loading of the filament, etc. ...

Important Note: This Project is still work in progress and will be officially released with a proper YT-trailer.

Current To Do's:

  • Finalize all the drawings
  • Double check all interfaces, boreholes
  • Definition of the custom connectors
  • Decision if the heater fan (230V 400W) will get a seperate Plug at the back
  • Update BOM
  • Finalize Blender Logo Animation
  • Order all the sheetmetal parts
  • Implement proper heat insulation
  • Concept and engineering of the modular DIN-Rail cable management system


As already mentioned I've used the CAD-files from the released E3D-Toolchanger ( for a start. I quickly noticed that the E3D-guys didn't use standard parts such as the standoffs etc.

I therefore I started to fully customize the toolchanger with standard parts and heaviliy modified the frame and all of the motion parts.

The standard E3D uses a monorail printbed which works just fine but I will be able to perform non-planar-3d-printing ( with a always perpendicular printing nozzle.

I therfore implemented the kinematic coupled printbed from the jubilee-printer ( for a first concept. I like the idea of swappable builtplates. 

The consequences of a toolchanger:

Personally I think the motion system such as the E3D-Toolchanger is just the start of beeing called a ''toolchanger''.  A toolchanger in a more general sense gives you the freedom to easily interchange tools and even procedures (pcb-milling, PnP...). To achieve this versatility the most important features are:

  • Defined interfaces/connectors which allow easy toolswap
  • Room for periphal devices such as vacuum pumps, additional electronics etc.
  • Swappable or modular builindplatform

The modular mindset:

There is no doubt that the hurdles are high to create such a system but I think the key is to think and search for overlaps between the functions. An example is the vacuum pump. A common vacuum pumps uses a inlet and outlet connector. One way the pump sucks air in and creates an vacuum (if you block the inlet). On the other hand you have the outlet which blows air out (until you block the inlet). Therefore you can use the pump in the printing configuration to cool your printed part and in the pnp-configuration to create to vacuum and grip the components. To change the configuration you just have to switch between inlet and outlet (manually or with a valve) .

I'm trying to implement this mindset as good as currently possible to reach a high modular toolchanging system.

  • Finished Wiring

    Simon Wirz14 hours ago 0 comments

    Wiring the Tooldocks:

    I've finished the wiring harness for the tooldocks. I've tried to keep it tidy but with the chance to quickly remove the individual tooldock-harness for easy maintenance. 


    I've configured all the fans (Heatsink, Partcooling etc.) like already mentioned in the last project-log. I added a 10K Temp.Sensor for the watercooling cycle so I'm currently using all of the thermistor inputs on my Duex5. You can add all of the Temp. Sensor to the temperature log in the Duet Webcontrol/-server which looks like this:

    Because I've installed just one working tool there is only one correct temp. value for the tools 0 to 4. The temperature of the watercooling loop is monitored as well. 

  • Cooling-Fans

    Simon Wirz05/25/2021 at 17:59 0 comments

    In my first Benchy-attempt I noticed the heavy cooling issues with my mosquito-Bowden tool. Despite that the printer performed as expected. Before I build more tools I want to adress the cooling issues with the first tool so I can implement the cooling Design (Fan powered) in my next tools. I haven't tested the integrated airpump because I don't want to use it for my PLA-Bowdentools. 

    Comparison (Datasheet):

    Fan-Type [-]                         Source [-]Airflow [m³/min]   Weight [gr]     
    Delta, BFB0412HHA
    Delta, BFB04512HHA
    Micronel, D243L-006KH-5 + 15

    If you compare the Airflow to Weight ratio the best options are:

    1. Delta BFB04512 (45x45x12mm) with 0.0075 [m³/min] /gr
    2. Delta, BFB0412 (40x40x10mm fan) with 0.007 [m³/min] /gr
    3. NMB, 4515 (45x45x15mm Turbofan) with 0.005 [m³/min] /gr
    4. Micronel, D243 (impeller-Design) with 0.002 [m³/min] /gr

    Decision for first Bowden-Setup:

    I've redesigned the Bowden-tool and used a Trianglelabs Dragon-Hotend and sticked to the 40x40x10mm fan because of the good airflow to weight ratio and re-oriented the benchy on the buld plate so the fan blows to the overhang section at the front.

    With the new setup I was able to print a proper benchy. For now I'm quite happy with the result and I will start testing with some genuine GT2 belts and start machining the currently 3d-printed belt tensioner so it can withstand higher tension forces. 

  • Configuration and connection Duet2Wifi + Duex5

    Simon Wirz05/18/2021 at 17:46 0 comments

    Next to the motion system all the auxillary components such as fans, airpumps and watercooling-system have to be connected and configured in the config.g of the Duet2Wifi. 

    The wiring illustrated:

    Because of the limited FAN and Heater-Outputs I had to control the radioator-fan of the watercooling loop with a SSR so the radiator switches on when the waterpump is switched on as well.  

    The fan configuration in config.g (RFF3...)

    According to the ''wiring diagramm'' from above the configuration is the following:

    M950 F0 C"e0heat" ; Air-Pump on E0-Heater-terminal
    M950 F1 C"e1heat" ; LED-Light on E1-Heater-terminal
    M950 F2 C"fan2" ; Exhaust-Fans (2 parallel) on Fan2
    M950 F3 C"duex.fan3" ; Partcooling Fan Tooldock D0
    M950 F4 C"duex.fan4" ; Partcooling Fan Tooldock D1
    M950 F5 C"duex.fan5" ; Partcooling Fan Tooldock D2
    M950 F6 C"duex.fan6" ; Partcooling Fan Tooldock D3
    M950 F7 C"!exp.heater7" ; Watercooling-Pump on E6-Heater (Duex5)
    M950 F8 C"fan0" ; Heatsink Fan Tooldock D0 on Fan0 (Duet2)
    M950 F9 C"fan1" ; Heatsink Fan Tooldock D1 on Fan1 (Duet2)
    M950 F10 C"duex.fan7" ; Heatsink Fan Tooldock D2 on Fan7 (Duex5)
    M950 F11 C"duex.fan8" ; Heatsink Fan Tooldock D3 on Fan8 (Duex5)

    M106 P0 S0 C"Airpump" ; Air-Pump
    M106 P1 S0 C"LED" ; LED LIGHT
    M106 P2 S0 C"Exhaust" ; Exhaust-Fans
    M106 P3 S0 C"PCF-T0" ; Partcooling Fan Tooldock D0
    M106 P4 S0 C"PCF-T1" ; Partcooling Fan Tooldock D1
    M106 P5 S0 C"PCF-T2" ; Partcooling Fan Tooldock D2
    M106 P6 S0 C"PCF-T3" ; Partcooling Fan Tooldock D3
    M106 P7 S0 C"Waterpump" ; Watercooling-Pump
    M106 P8 S0 C"Heatsink D0"
    M106 P9 S0 C"Heatsink D1"
    M106 P10 S0 C"Heatsink D2"
    M106 P11 S0 C"Heatsink D3"


    The shown configuration section was just for initial testing and won't be like this in the end. We're working currently on a software concept to use the RFID-Chips to write and adapt the config.g file so the printer basically configures itself according to the tools on the CHANGER. In the near future if you insert a direct drive tool the E steps, driver current etc. are set automatically in the config.g file. 

    With this said the pins doesn't need to adress a heatsink fan or a partcooling fan in the end. It could be anything controllable with 12V.

  • ToolHead - Cabling and Design

    Simon Wirz03/27/2021 at 11:04 0 comments

    Like already mentioned I'm using the Toolhead from the E3D-Toolchanger and I'm quite happy with this decision. The overall mechanism works like a charm and the stall detection of the coupler works flawlessly until now. 

    Altough the E3D-Guys are quite skilled mechanically I think the design of the cover and the cable management could've been done a little bit more thoughtful and with a proper design statement. So here we are with a neat cable solution and a custom Toolhead-Cover with underlines the industrial look of such a coupling-system (always my opinion).

    The toolhead-cabling

    For the Toolhead I've designed a small 8pin-Connector and cable housing so you can just plug/unplug the coupler and the Z-endstop-switch. 2pins are not defined yet but already implemente. Maybe a toolhead light or additinal 2pin sensor...

    The toolhead cables are directly soldered to a XH2.54 Terminal and then glued in place. 

    The Toolhead-Design (Cover):

    For the Toolhead I've designed a new cover. Above the comparison between the E3D-Cover vs. the new one

    Personally I've found it quite pleasing to see the gears of the coupling mechanism. Additionally you're able to see if the coupler is locked or unlocked. The toolhead-cover mounted looks quite nice and gives a proper statement. 

  • Building the first prototype

    Simon Wirz03/27/2021 at 10:21 0 comments

    The last three months I was able to build the first prototype to a proper state. I'm trying to give you a short overview over the build process over the last couple of months so you'll get a feeling of the hole build process involved. 

    The current state in words:

    - Frame complete

    - Motion system working with all endstops required

    - All Fans working (exhaust fans, radiator fans)

    - Watercooling pump working

    - LED Light integrated and working

    - Homing procedures successfull, Toolhead-coupler as well

    - True bed leverling (G32) is working as well (best Milestone until now)

    The build:

    All the profiles and sheet metal plates could be mounted quite easily. First I had to thread all screw holes which took probably 2-3 hours. 

    For the proper alignment I've used a large precision angle. Without such a large angle you're having probably quite the struggle to proper align the frame because of it's size. First I've used the middle extrusion for reference and tightend the backpanel. Of course you'll have to align in both directions (90°). With the backpanel (3 extrusions) fixed you can mount the top plate (CoreXY-Plate) and start to align the two extrusions at the front. Because of the independend Z-Axis setup you'll have to align the hole range of motion of the z-axis otherwise the kinematic coupling will jump out if not properly aligned. This process took me around a hole day. 

    The electronics:

    Next up the electronics. I've designed the printer so you can use proper DIN-Rails for tidy cable management. After the installation I'll love the idea of the simplicity and expandability. In the picture you can see three black parts with a metal insert in the middle. These are for a second DIN-Rail in a second level. The first level ist for main-electronics and therefore essential and the second layer is for the cabling of the Toolheads etc.

    The watercooling:

    For the watercooling loop I've tried to use proper hardtubes (PC-Casemodding) to have a proper cooling loop. I'm quite happy with the result of my first hardtubing. I've used PETG-tubes with a silicon core to bend the pipes over a heatsource. the silicon core helps to get an even bending without kinks.


    A proper lighting concept can work in your favor regarding the overall printer appearance. I've implemented long LED-Bars inside of the both extrusions in front. Therefore I've printed proper LED-Holders for the extrusions. 

    The led-lighting can be switched on and off and you can reduce the brightness. The light is so bright you can't look from the back at the printer but you see every detail. Personally I think the lighting is perfect for such a printer.

  • Quickconnector for toolswap

    Simon Wirz11/25/2020 at 20:58 0 comments

    A few logs ago I talked about the defined interfaces for a quick connector. The bowden setup needs 8 pins for connection. The direct drive configuration will need 12 pins. I've decided to use industrial screw connectors with a 5 amp rating per phase. You could go larger (10amps) but the connector will be huge and 5 amps are just enough for a 60W cartridge (12V).

    The implementation:

    I've implemented the Weipu WS20-Series. There are several sellers and the documentation is quite well. The quality seems legitimate. Source:,searchweb201602_,searchweb201603_

    The costs for 4 Connectors with flange are about 30 USD. The connector itself should be around 5-6 USD for each toolhead. It isn't the cheapest solution but I think it's a proper solution.

  • Controlling the industrial heater (Pt. 2)

    Simon Wirz11/18/2020 at 18:59 0 comments

    Because I wasn't able to control the ptc element with the AC dimmer I've decided to continue the testing. This time I will test various fan speeds and measure the chamber temperature. The ptc element will run at 100% load. 


    The test setup from the previous test (testlog from 20.10.2020) as a reminder. The only difference in this test will be the ac dimmer between the fan and the 230 mains voltage. 

    Test setup
    Test setup, illustrated

    The test setup consist of a cardboard box (volume of 0.088m^3) with three 100K temp. sensors.

    • Sensor T: Located at the top/back of the box, should be a hotspot (temperature rise)
    • Sensor B: Centered in the middle of the box
    • Sensor C: Attached to the housing of the heater fan

    The exhaust opening is constant throughout the test. The log process remains the same (rampsboard and excel post processing).


    I was able to show that it isn't necessary to control the heating element to then control the chamber temperature. For the sensor in the middle (sensor B) are the results:

    Like you would expect the temperature rises depending on the fan speed. But keep in mind that I've only tested for 6 minutes and the temperature (30%, 35%) does not seem to be stabilized. But it seems that the amount of air at the intake exeeds the amount of air at the outtake between 35% and 40% because of the delta T of 16°C (high temperature rise) and the suddenly flat gradient of the curve at 40%. The systems seems ''saturated'' at 40% because a further increase of the fan speed doesn't result in a higher chamber temperature. 

    For completeness the results of the housing temp (sensor C):

    This graph shows the same behaviour. The intersection of the 30% and 35% is due to the different starting temperature. The gradient of the two curves are nearly the same. 

    Meaning for the Toolchanger:


  • Controlling the industrial heater (Pt. 1)

    Simon Wirz11/16/2020 at 21:22 0 comments

    Like I've mentioned in the previous testing of the industrial heater unit STEGO CS028 400Watt (230V) I'd like to test the ability to control the heater unit with a TRIAC Dimmer. The heater unit consists of a normal 230V Fan and a PTC heater. The fan is easy to control however I'm not sure about the ptc element heater. Maybe I'll face some frequency problems 


    For controlling the AC fan and the AC ptc element I've ordered the TRIAC-Dimmer from RobotDyn.

    AC Light Dimmer Module, 2 Channel, 3.3V/5V logic, AC 50/60hz, 220V/110V Angle-Front

    RobotDyn, 2 Channel, AC Dimmer


    First you'll have to separate the ptc element and the fan. Originally the two elements are wired together (Weco connector) so both run of the same power source. 

    The fan and the ptc heater are then connected to the RobotDyn 2Channel AC-Dimmer. We're talking about mains voltage (230V!) so keep that in mind and in case of doubt please check back with an electrician or abort. 

    Controlling the TRIAC-Dimmer:

    For controlling the TRIAC-Dimmer I'm using an arduino Nano and connected the pins as following:

    • VCC to +5V (Nano)
    • GND to GND (Nano)
    • Zero to D2 (Nano) -> Zerocrossing pin
    • DMR1 to D11 (Nano)
    • DMR2 to D12 (Nano)

    RobotDyn published a library for this TRIAC-Dimmer and can be found on ( therefore the implementation is quite simpel. 


    The controlling of the 230V fan works just fine. I'm able to control the speed and even turn off the fan. I've measured the voltage and noticed that the fan starts spinning at 30% (which equals 111V) and reaches the max speed at approx. 65% (which equals 229V). If you increase the speed even more the fan will begin to stall. Because of this ''strange'' range of 30 to 65% you can use the map function to adjust these values. Something like map(fan, 0, 100, 30, 65).

    The problem:

    When I try to control the ptc element as well suddenly I can no longer control the fan speed. The fan just stalls independent of the value (30 to 65%). I even switched the connectors on the mains side to check if the TRIAC-Dimmer is fully functional. The fan standalone works in both ways and quickly starts to stall I've a try to use the ptc element parallel. I noticed that the element gets warm so maybe there isn't enough capacity available for heating AND the fan. Or maybe that's because of the characeristics of this ptc elements? If you have an idea I'd love to hear from you in the comments. 

    I will investigate this behaviour in the near future and keep you updated. 

  • Defined Interfaces for the individual tools

    Simon Wirz10/30/2020 at 13:47 0 comments

    I'd like to have a defined interface connector for connecting the tools so I haven't to rewire if I'd like to change to a new process/tool. In addition I'll be able to store the tools not needed with the complete wiring harness and can quickly change tools on the fly. Therefore this interface uses the max. amount of connection pins required for all intended manufacturing processes.

    The placement:

    I'd like to switch the position of the connectors to the modular part of the printer (the screwed modular plate at the back, slightly brighter gray plate in the picture below). This would allow to test different kinds of connectors without remanufacturing the actual motion system (that's actually the purpose of this modular plate).

    The connectors required:


    Directdrive-Tool (still WIP):

    PCB-Milling-Tool (still WIP):

    Tool identification:

    I'd like to use some NFC-tags to identifiy the current tools in the individual parking slots. On one hand I see which tools are currently in the printer and I'll be able to perform some checks like:

    • Process-type (milling, picking, printing, inspection)
    • Nozzle diameter (specific to printing)
    • fan-types (specific to printing)
    • etc

    The NFC readers are therefore placed at the back of the parking slots and are communicating directly with the Duet Board (or maybe to an arduino and than to the Duet, we will see). The NFC tag is on the tools and can be easily programmed by a smartphone. You can also read the information if you don't know the exact specification (as example if you're using a titan heatbreak) or even the usage of the tool (theoretical).

  • Testing lightbar/statusbar of the front panel

    Simon Wirz10/26/2020 at 09:36 0 comments

    I've always liked the light indications of modern cnc machines (red: error , green: working , orange/yellow: paused, manual operation etc.) and wanted to implement this feature in my toolchanger design. I'm using adressable LED's so it possible not just to show the overall status with red, green and yellow. The 16bit LED-bar allows to show the printing procress in 6.25% time increments. Therefore the LED's switch incrementally from white to green (based on the estimated print time).

    The Frontpanel assembly:

    As you can see the actual status bar at the front is significantly longer than the actual 16bit-LED (2x 8Bit WS2812). Therefore I had to test the homogeneity with the brightness.

    The subcomponent test:
    Paper as diffusor, all LED's at full brightness

    For proof of concept I've used paper and tape to see if the light ''channels'' even work.

    PLA-Diffusor, all LED's at full brightness
    This picture shows the mentioned problem with the homogeinity. The LED's in the middle have the shortest way and therefore shine the brightest. The outer LED's have a quite long and curved channel to pass before hitting the diffusor.

    PLA-Diffusor, individually adressed brightness

    To improve the homogeinity I've adressed the LED's individually and set the brighness for better appearance.

    Testing other colors with the front panel:

    Frontpanel, Yellow/Orange
    Frontpanel, Green
    Frontpanel, White and Green-progress

    The Quick&Dirty Code for the progress bar:

    for (int i = 0; i < NUMPIXELS; i++)
        if (i <= 2 || i > 12)
          pixels.setPixelColor(i, pixels.Color(255, 255, 255)); 
;                                        // This sends the updated pixel color to the hardware.
          delay(delayval);                                      // Delay for a period of time (in milliseconds).
          if (i == 3 || i == 12)
            pixels.setPixelColor(i, pixels.Color(130, 130, 130)); 
  ;                                        // This sends the updated pixel color to the hardware.
            delay(delayval);                                      // Delay for a period of time (in milliseconds).
            if (i == 4 || i == 11)
              pixels.setPixelColor(i, pixels.Color(100, 100, 100)); ...

    Read more »

View all 11 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates