DC motor with MOSFET circuit overheating

Hi everyone,

I’m quite new with Arduino and a bit rusty on my electronics as well.

I was asked to drive a DC motor with Arduino, and since the motor draws up to 4.7amps I’ve decided to create a circuit which uses a MOSFET, so to have the possibility to affect the speed.

The problem that I’m having is that the circuit overheats as soon as the motor has some load, so much that the resistor R2 burns. (this however avoids the MOSFET from overheating).

The circuit is attached and the following are the specs for the components:

Any suggestions on what I’m getting wrong?
Any help would be very appreciated.

Thanks

Inlining OPs image. See this image guide.
c92551857145929e21c3f615780af547922d831e.png

Hi,
Welcome to the forum.

What is the watt / power rating of the R1?

P= IIR= 4.7 * 4.7 * 2.04 = 45.06Watts

Why do you need it, use a fuse instead.

Can you post a picture of your project so we can see your component layout.

Thanks… Tom… :slight_smile:

As Tom mentioned, remove R1, it is not needed or desired.

You can limit the effective maximum voltage being applied to the motor by limiting the maximum PWM duty cycle. If you have a 12 volt supply and a 6 volt motor, limiting the PWM value to a maximum of 50% limits the effective applied voltage to 50% of the supply. Here is an example sketch that sets motor speed from a potentiometer connected to analog input A0. Note the call to the "map()" function:

motorSpeed = map(potVal, 0, 1023, 0, [color=red]127[/color]);

Normally, the value in red would be 255 which limits the motor PWM value to its maximum of 100%. In your case, we change it to be 50% of maximum which would limit your maximum motor voltage to 6 volts.

const int motor = 3;
const int potPin = A0;

int potVal;
int motorSpeed;

void setup() {
  pinMode(potPin, INPUT);
  pinMode(motor, OUTPUT);
}

void loop() {
  potVal = analogRead(potPin);
  motorSpeed = map(potVal, 0, 1023, 0, 127);
  analogWrite(motor, motorSpeed);
}

And be aware that the motor specification does not give the MAXIMUM motor current, just an ideal value to aim for. The actual current depends on the load and may well be a lot more than 4.7A if the motor is heavily loaded. People regularly run those 7.2V 540 motors at 15-20A.

Of course if you have actually measured the current at 4.7A in realistic load conditions then forget I said all that.

Steve

You might need a much better MOSFET for high current - < 5 milliohm rather than 21 milliohm.
Dissipation in a MOSFET is proportional to the square of the current so it can be all too easy to
get overheating.

A MOSFET rated at 50A is never ever used at anything like 50A continuous, BTW, that would
involve huge liquid-cooled heatsink to be feasible - expect it to handle 15A realistically with
sensibly sized heatsink.

Or put another way the current rating is just the max dissipation rating in disguise.

TomGeorge:
Hi,
Welcome to the forum.

What is the watt / power rating of the R1?

P= IIR= 4.7 * 4.7 * 2.04 = 45.06Watts

Why do you need it, use a fuse instead.

Can you post a picture of your project so we can see your component layout.

Thanks.. Tom.. :slight_smile:

Hi Tom,

thanks for the response. Yeah actually I think you are right and I haven't used a Resistor with the right power rating. I guess mine was less than 10Watts. That was quite stupid from me. I'll look to get one which can manage loads of 50W at least (probably even more as SlipStick wrote - the current might be more than 4.7A. )

I though of using the resistor as I wanted to discharge some heat from the MOSFET. Though a fuse would still be useful to include.

I don't have the project near me ATM, but will post a picture ASAP.

Thx

You never use resistors in a high current motor circuit like that, its a crazy waste of power.

As Tom and avr_fred mentioned, remove R1, it is not needed and is just bad news in all respects.

Power electronics is all about PWM and duty cycle.

I though of using the resistor as I wanted to discharge some heat from the MOSFET.

It does no such thing - for a given motor current the MOSFET is going to dissipate the same amount
of heat whether or not there's a resistor - the resistor will limit the performance of the entire setup
and generate bags of waste heat for no reason. The power should go from the supply to the motor,
and nowhere else.

MarkT:
You never use resistors in a high current motor circuit like that, its a crazy waste of power.

As Tom and avr_fred mentioned, remove R1, it is not needed and is just bad news in all respects.

Power electronics is all about PWM and duty cycle.
It does no such thing - for a given motor current the MOSFET is going to dissipate the same amount
of heat whether or not there's a resistor - the resistor will limit the performance of the entire setup
and generate bags of waste heat for no reason. The power should go from the supply to the motor,
and nowhere else.

got it. Thanks MarkT.

At this point I might just get a couple of MOSFETs with lower ohms and do some tests.

Also thanks for the hint about current rating/max dissipation - that's a good info to know :slight_smile:

BTW I've found this motor shield that might do, and I might just use this for the project.

Even though I'll continue on my circuit as well, for fun at least.
Will keep posting on my progresses.

Why a couple of MOSFETs? Double the price? Spend that money on a heatsink.

Calculate the heat dissipation from I-squared-R, so first get a feel for the max current. What is the
motor's winding resistance?