DC Motors getting too hot with PWM controller

Hello everyone, i am using 1 12v cooling fan from a car radiator to cool down some of my sistems. I use a NodeMCU to get the percentage that the fan must work, and until then all is perfect.
My problem is that when using a PWM motor controller (BTS7960) the motor (not the driver) gets extremely hot (85 celsius) when i have it at 50% or less (6v aproximatelly). If I connect a 6v power supply directly without using the pwm driver, the motor always works without heating up.
As far as I investigated, the problem seems to be the pwm signal, because it's not a linear voltage output.
Is there any way to convert the DC voltage from a PWM driver to linear, or some other idea i regulate the voltage using a arduino / nodeMCU? I also have a couple of IRFZ44N laying around, but i needed to have a variable IC resistor that could hold around 8 amps.

All help is apreciated.
Thanks!

try to switch it less often that is make the PWM frequency lower,
you can test this by switching like 1 millsec with a small program

I tried changing pwm frequency from 1khz up to 100, tried different values, the motor always gets very hot..

Hi,
Can you please post a picture of your motor?
Your motor might rely on the air moved by the fan to keep cool, a problem with some motors is that when you slow them, you also lower the cooling effect.

Thanks.. Tom.. :smiley: :+1: :coffee: :australia:

The motor is designed to only run at full speed or be off. This is how is it used in a vehicle, the entire airflow of the fan is needed to keep the motor cool enough I suspect. At higher fan speeds the stagnation pressure will be higher and allow more airflow through the innards of the motor - lower speeds may allow most of the flow to go around the motor, not through it.

However being an automotive part it should handle 85C without much stress anyway.

PWM control shouldn't be much different from linear voltage control as the current flow in the windings is what matters for motor performance and self-heating - windings heat according to I-squared-R.

BTW what PWM frequency are you using?

It was not about the lack of speed that was causing overheating but the pwm frequency. I have tried everything since 1Khz up to 100Khz. As far as my testings, you can't exactly define a fixed pwm frequency when you change the rotation speed / voltage constantly. Either is a constant DC voltage or you will have to know the RPM and make some mathematical calculations in order to find the correct PWM frequency. I have tried using 5volts constant voltage, the motor is running for 6 days at a temperature of around 28ºC. When doing the same on PWM, it gets to 85. Conclusion: get a motor with rpm reading and make the correct calculations on realtime for pwm frequency, or use a IRFZ44N and a digital resistor 10k. Then you can vary the voltage from 1v to 50DC at a constant rate.

The PWM frequency should be high enough that the current ripple is small compared to the current draw. This reduces iron losses in the core of the motor.

The default Arduino PWM rates are too low for many motors BTW, you typically want to start thinking in the 4kHz--16kHz region.

I've tried it. It gets too hot.

Did you try a single mosfet to PWM the fan, instead of an H-bridge (which might be braking between PWM pulses).
Leo..

Hi,
Can you please post a picture of your motor?

Some motors in automotive situations are not designed for any other speed than full DC speed.
Do you know what make/model of vehicle the motor came from?

Thanks.. Tom.. :smiley: :+1: :coffee: :australia:

Hi Tom, the motors are from a Yamaha YXZ 1000R radiator fan. They work pretty well without warming up as long is constant dc voltage and not PWM. it's currently working non stop since 7 days ago, at 28ºC. With a PWM BTS7960 driver it would be at 85ºC

I definitely don't understand why the motor would get hot when driven with PWM, but not when driven with a smooth DC voltage.

Anyway, have you considered making a variable DC supply for it? I made one for a model submarine motor and it worked well. However, you will accuse me of making a massive bodge! :grin:

I found a DC-DC buck converter with sufficient current capability on Banggood. I removed the multi-turn trimmer pot from its PCB (the one that sets the output voltage), and replaced it with an ordinary rotary potentiometer wired back to the PCB and mounted nearby. I then mechanically connected the spindle of the potentiometer to a low cost servo, which I controlled with the Arduino. It was simple enough to calibrate the servo angle to the output voltage by trial-and-error. It all worked perfectly, even though it is, I admit, a horrible kludge.

Is this actually a brushed DC motor? You initially just said a car radiator motor, but this could be something more sophisticated such as a BLDC with built-in controller.

You could provide a photo.

Hi,
Is it something like this;


Way back in my youth these were termed, PCB Brushed DC motors.
They are designed flat to fit behind the radiator and occupy as little space as possible.

The only thing different between DC and PWM running in a motor is that PWM is influenced by the IMPEDANCE of the motor because of the changing current in the motor windings.

It may be that the IMPEDANCE has a influence over the current waveform and the voltage waveform in PWM.
As the current would LAG the voltage, when the pulse of the PWM stops, the current doesn't.
If it is a backEMF, then the motor for some of each PWM cycle will be working into basically a short caused by the backEMF protection diode.

That is my thought on things, these motors are designed for high speed, high torque and probably not for PWM control.

Tom.... :smiley: :+1: :coffee: :australia:
PS, They may have a preferred PWM frequency to work efficiently.