Testing forced air cooling with a 5060 Motor

tldr: Using a 60mm server fan to force air through the windings of your motor will allow you to considerably increase the usable holding torque of your motor without it overheating.

Hey everyone

I plan on using some 5060 BLDC motors with a big CNC router that I am building. However I know from testing some bigger motors that you can not use anywhere near the ‘rated’ current of these motors without them quickly overheating. Therefore I wanted to see how effective forced air cooling is at keeping the motor temperatures within safe limits while at high currents.

The Setup

A N5060 270 Kv ‘80A’ motor with embeded thermistors was used. The thermistor has been epoxied between the windings of the motor which ensures good thermal contact. The motor was heated by setting it to search for an index pulse with the encoder disconnected (thanks @madcowswe for that suggestion!) and then setting the .calibration_current to 40A. The benefit of this method over just locking the shaft and commanding it to a far away position is that with the motor turning all three phases are used equally which is more representative of real world use. The fan is a 60mm, 38 mm long 12V 1.68A server fan, costed $3.12 USD and was purchased from here. The duct and mount was designed in fusion 360 and is setup so that the fan blows cool air through the motor from the face plate side and hot air exist at the back. You can find a copy of the CAD files for the mount and shroud here.

Note that I am also using a fan to cool the odrive board itself as you will risk overheating if held at 40A for minutes at a time.

The motor was tested naked (no fan or duct), with the fan pointing so that air flows over it from the side and with a duct attached to the motor to direct the air through its windings.

Stand alone motor

Fan from the side.

With duct.

The Results

  • No fan: The temperature shoots off for the moon.
  • Fan from the side: The temperature rises more slowly but still reached 85C in short order and looks like it would have continued to much higher temperatures than that.
  • Ducted fan: Temperature stabilises around 60C.

I consider this result a success and plan on using such a setup with my CNC router with appropriate mesh filters fitted. I plan on milling aluminium mostly so fine particulates are less of an issue and the motors will be well shielded from the work area. From the results it also looks like there is still some head room to increase the current further if needed with the ducted setup.

The downside is of-course that the fan adds a lot of noise to the setup.

This is not such an issue for a CNC router since it will be just as noisy but its way too load to consider using in a quiet room. Of course you can also tie the fan speed to the temperature of the motor which is what I plan on doing for my CNC router using a microcontroller to monitor the thermistor and the PWM input of the fan to control its speed. That way it will only come on (and ramp according) when needed.


@Richard_Parsons you’re doing great work there! Thanks for posting the link to your previous work where I could see you’re using a thermocouple. Did you need any thermal paste to get good thermal conduction?
Do you think a thermistor (like used in a 3D printer hotend) voltage divider with an arduino and MOSFET would be a neat closed loop controller for each motor’s fan to be pwm controlled around a temperature set point (presumably set to stay below temperatures that would reduce magnet field strength and perhaps weaken 3D printed attachments)?
I’m following o-drive with interest for general machine building but I have particular interest in robot arms and pick and place applications.
You would probably be able to reduce the noise of the cooling with some ducting design and enclosure. For inrunners, a computer water cooling system could be a better option, given that a water cooled spindle is often installed for quieter operation than air cooled spindles.

In the previous test with a thermocouple it was just pressed in amongst the windings while in this test a thermistor that has been eopoxied in was used. Both will have some offset between the true winding temperature buts tough to say by how much. This is why I didn’t want to go up above 85C sine the true winding temperature could be more like 100C+.

Using a microcontroller such as an arduino to monitor the tempreature via a thermistor and set the fan speed by PWM is what I intend on trying next. To log the temperature here I use an arduino with a voltage divider as you had suggested.

@madcowswe pointed out that you can already buy water cooled outrunner motors so if you need something quite and powerful that could be good option. However at around 10x the price for that solution over the server fan option it does come at a premioum.

For most applications a water cooled inrunner is not a good fit since their high KV makes their usable speed range in to the tens of thousands of RPM. It could be difficult to even use a belt reduction if your motor is spinning up to 50kRPM.

Good point, I am very new to bldcs so I hadn’t realised the kV difference with available inrunners.
I’m also not familiar with o-drive so perhaps the closed loop cooling uC could also provide a motor temperature feedback to the main o-drive controller and it could perform thermal shutdowns of motors if required.

I am aiming to add thermistor inputs to ODrive. I think it should be doable to plug into two GPIO pins on the ODrive by adding a small add-on board for the thermistor load circuit.

Hi Richard, I find the graph from your testing very interesting. Would you be willing to share the csv file for it?