Stepper motor and electronics cooling

I recently encountered a problem with my printed XY stepper mounts so thought I’d share my solution and also some other things I do to cool certain parts of my printer.

We all know that stepper motors run hot but they are mostly rated to run at around 80 degrees C so normally, cooling isn’t necessary. However, if you use a printed mount such as I do, then you may experience this.


I had read that this could happen but didn’t really give it any thought. What has happened is that repeated periods of 20 plus hours printing, the plastic has been softened by the heat of the motor, then the lateral force of the belt tension acting on the motor shaft has distorted the mount.

Of course, a metal mount would cure the problem but I use a sliding motor mount as a belt tensioner and not having access to metal working machinery, it has to be a printed part. It’s possible that a different type of plastic to PLA might have been more thermally stable but I decided to use a “belt and braces” approach.

The first thing I did was to buy a plumbers’ soldering mat which is made from Gold Silica and cut a couple of gaskets to go between the motor and the mount. I don’t know how effective this will be but it didn’t cost much so why not?


The next thing was to fit a heat sink and fan to the top of the motor. I used these heat sinks and used some thermal paste between the motor and the heat sink.

These were the quietest 40mm 24v fans I could find

To fit it all together, I had to remove two of the stepper motor screws and replace them with lengths of studding (it needs very long screws which I couldn’t find). Nyloc nuts and washers keep it all together. I would have preferred it if the heat sinks had been drilled in apposite corners, rather than two holes on one side.

Lastly, the Duet electronics mean that the printer is very quiet in normal use. So much so that fan noise start to become intrusive to me. I had already changed the power supply to a fan less design (my heated bed is mains powered so I don’t need a high current power supply). The hot end fan is set to run in thermostatic mode so that it only runs when the hot end is above 45 degrees C. Likewise the fans I use to cool the electronics. So when the printer is idle, no fans run at all and it is virtually silent apart from a faint buzz from the stepper motors once they have been energised. I have the Duex5 expansion board as well which gives me extra fan and heater connections so, I decided to do the same with these stepper cooling fans.

To monitor the temperature I stuck a bead thermistor to each stepper, close to the mount, with a small amount of epoxy adhesive. Here is how the installation looks.


Here is how it looks at the Duex5 end. The thermistors are the orange and green wires at the bottom and the fans are the red and blue coming out of each loom.


Just out of shot is the thermistor that I stuck to the topmost stepper driver chip but you can see the two white wires leading into a spare heater channel. I did the same on the main board  with one of the XY driver chips. These thermistors control fans which blow air on to the back of the boards.

Next I had to configure the new fans and heaters. A note of explanation is required here. With Duet electronics, temperature channels are called “heaters” regardless of whether they are actually used to switch physical heaters or, in this case cooling fans.

So here are the relevant lines from my config.g file for the “heaters” (actually thermistors).

M305 P2 T100000 B3950 R4700; Set thermistor + ADC parameters for heater 2 – this is used to measure stepper chip temperature on Duet
M305 P3 T100000 B3950 R4700; Set thermistor + ADC parameters for heater 3 – this is used to measure stepper chip temperature on Duex5
M305 P4 T100000 B3950 R4700; Set thermistor + ADC parameters for heater 4 – this is used to measure left XY stepper temperature
M305 P5 T100000 B3950 R4700; Set thermistor + ADC parameters for heater 5 – this is used to measure right XY stepper temperature

This is the fan section of my config.g

; Fans
M106 P0 S0.0 I0 F10 H-1 ; Set print cooling fan (3) value, PWM signal inversion (off)and frequency (10 hz). Thermostatic control is turned off
M106 P1 S255 I0 F500 H1 T45; Set hot end fan (1) value, PWM signal inversion(off) and frequency. Thermostatic control is turned on
M106 P2 S255 I0 F500 H2 T45; Set fan 2 value (Duet board fan), PWM signal inversion and frequency. Thermostatic control is turned on
M106 P3 S255 I0 F500 H3 T45; Set fan 3 (Duex5 board fan) to work thermostatically on H3 temp
M106 P4 S255 I0 F500 H4 T45; Set fan 4 (Left XY stepper fan) to work thermostatically on H4 temp
M106 P5 S255 I0 F500 H5 T45; Set fan 5 (Right XY stpper fan) to work thermostatically on H5 temp

Finally, I wanted to be able to actually display these temperatures on the web interface. The way I found to do this was to create “dummy” tools without any extruders associated with them. I started with defining tool numbers 99 then worked backwards.

Here is the ending part of my tool definition section.

M563 P99 H2; define this dummy tool just so dwc shows the temperature value for the thermistor that’s stuck to the stepper driver
M563 P98 H3; define this dummy tool as above for duex thermistor
M563 P97 H4; define this dummy tool as above for left xy stepper thermistor
M563 P96 H5; define this dummy tool as above for right xy stepper thermistor

This is how it looks on the Duet Web Interface.

Screenshot-2017-4-18 TallCoreXY

I just have to remember that Heater1 is the hot end thermistor (as normal), Heater 2 is actually the XY driver chip on the Duet main board, Heater 3 is the same for the Duex5 board, Heater 4 is the left XY motor body and Heater 5 is the right XY motor. I have posted a request on the Duet forums for a better way to display these temperature channels.

I understand that future versions of firmware will have the ability to control fans based on a temperature warning signal from the driver chip itself. This would negate the need for the thermistors that I have used but as I understand it, the temperature threshold at which the fan comes on will be quite a lot higher and not user configurable.

Finally, it was time to test my new cooling arrangement and I can report that it works like a charm. I started printing a simple 200mm square object. It takes quite a while (about 45 minutes or so) for the steppers to reach 45 deg C. This may be due to the heat sinks on their own – I have no data to compare with though. When the temperature reaches 45 deg C, the fan switches on, the temperature drops, the fan switches off and there is a bit more of a drop before the temperature come back up. The cycle time for the fans is about 1 minute on, 3 minutes off and after about 4 hours, the temperature was still being controlled at 45 deg C with the same hysteresis. What is interesting is that when doing diagonal infill on a coreXY one motor is stationary and I can observe one fan switching on and off while the other hardly runs until the next layer where the situation is reversed. So I’m glad that I decided to add control to each individual motor. Maybe I need to do the same with the driver chips…………




Author: deckingman

Just an old guy who likes to make things.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s