CHANGER - a toolchanger new interpreted

CHANGER describes a motion system which can used for advanced 3D-Print 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.

  • 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 »

  • Testing an industrial heater fan for the heated chamber

    Simon Wirz10/20/2020 at 19:19 0 comments

    I'd like to print high temperature materials like PEKK, PEEK. Therefore I've implemented a watercooling system to keep the hotend cold which also allows the printer enclosure to be heated. I've searched a long time for a professional solution. I've found some compact heater fans which are used to heat control cabinets. STEGO Elektrotechnik GmbH offers some high quality heater fans in different options.

    The CS028 Series:

    STEGO CS028
    STEGO CS028

    I've decided to test the STEGO CS028, 400W, 230V Version and MURRPLASTIK AG Schweiz kindly sent me one to support this project. This heater uses a PTC-Element and therefore it is quite a safe way to heat your chamber. When the temperature rises the resistance increases as well and therefore the current decreases. With this configuration you'll have a safe thermal runout protection. On the other hand you have the disadvantage of a high switching current at lower temps (remember the ptc-element).  An active control of the heating temperature could be difficult because of the fast on/off-switches. This heater fan also includes a integrated heater fan (230V) which (right now) is directly wired to the heating element and therefore can't be controlled in speed.  So the only simple way to control the temperature in the heating chamber is to controll the exhaust airflow.


    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

    To simulate various exhaust airflows I've cut a rectangle with 20mmx100mm, 40x100mm, 60x100mm, 80x100mm, 100x100mm in the top plate of the cardboard. I've started with 20x100 and increased step by step. I even used a HEPA-Filter (the one used in the roomba cleaners) but without a fan attached to suck the air out (I feared a backlog but tried it anyway)

    For sensing the temperature I've used a Rampsboard with an Arduino Mega and configured Marlin 1.19 with an additional temperature input (heated_chamber). For logging I've used Pronterface. If you click on ''debug communications'' you'll get approx. all 3 seconds a status report which looks like:

    RECV: ok T:20.16 /0.00 B:19.96 /0.00 C:20.27 /0.00 @:0 B@:0
    SENT: M105
    RECV: ok T:20.00 /0.00 B:19.96 /0.00 C:20.16 /0.00 @:0 B@:0

    For filtering this message I than used excel to get the T:XX , B:XX, C:XX in seperate rows to finally plot the results and make some calculations (time to reach 60°C, max. deviation between Sensor T and B etc.).

    The results/experience:

    Comparison of Sensor B (middle of the box)

    Comparison of Sensor C (housing temperature of heater fan)

    The results show what you would expect i've youre going to increase the exhaust airflow. The max. temperature decreases and it takes longer to heat up your ''chamber''. What's intresting you see that the HEPA-Filter and an opening of just 20mmx100mm almost results in the same behaviour. If you looking at the housing temperatures you'll see a correlation between exhaust airflow and housing temperature of the heater fan. As feared the HEPA-filter without a fan causes a heavy backlog which results in a higher temperature rise of the heater unit. Same goes for a high exhaust airflow. If youre letting a lot of the air out without any backlog the heater unit hardly gets warm. This comes at a cost of the max. chamber temperature (which is logical).

    I did some measurements.

    Time to reach 60°C with sensor B (middle of the box):

    • 20x100mm:     96 seconds
    • 40x100mm:    162 seconds
    • 60x100mm:    168 seconds
    • 80x100mm:   240 seconds
    • 100x100mm:  327 seconds
    • Hepa-Filter:     87 seconds

    Max. reached temperature with sensor B

    • 20x100mm:    70°C
    • 40x100mm:    65°C
    • 60x100mm:    63.5°C
    • 80x100mm:   ...
    Read more »

View all 6 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