PWM - losing a lot of torque at full speed

Hi guys,
I really need some help with an issue I'm having.

I'm trying to control a 12V DC motor using the Arduino PWM and a MOSFET (IRLZ44N).

I was able to speed the motor up and slow it down successfully. The problem is that I'm losing a lot of torque.
I visually compared the torque I have when I connect the motor directly to the power source and when I control it using the PWM + Mosfet. Even when the PWM is set to 255, the torque is rather low (speed seems fine, though).

I know that I lose torque when I use the PWM to control the speed of the motor, but in this case, I'm losing power even at full speed.
I've checked the tension on the wires I'm using to connect the motor and I got 12,08V, exactly the same value I measured on my power source output.

The circuit I have is just like the first circuit on the page below, except that I'm using a 100R resistor between gate and Arduino pin 9.

https://www.gammon.com.au/motors

I've also tried to remove that resistor, but nothing changed.

I've also changed the PWM frequency to different values, but I still got the same result.

I have no idea what else to try. Does anyone have an idea of what might be happening?

Is there a way to be able to reduce the motor speed using PWM and not lose torque?

Thank you in advance,

Diogo

Hi.

PWM at 255 means duty cycle of 100%, also known as on.
You have checked a few things already (removing the resistor isn't a smart thing to do).
But you seem to forget another part of the equation: the IRLZ44N MOSFET.
Check to see whether it's getting hot or not.

Hi,
Can you measure V1 and V2 with respect to gnd please, when you have full speed.

Thanks Tom... :slight_smile:

Two 12volt/10A (85watt?) motors for a tennis ball throwing machine are mentioned in OP's other (Portuguese) post. And three 30Amp H-bridges, and two smaller steering motors, and a 20Amp dispenser motor.
Type of Arduino is still unknown.
It would be nice to have all the details (code, picture), before advice is given.
Wire size and star grounding could be very important at these currents.
Leo..

Hi,

diogobem:
Hi guys,
I really need some help with an issue I'm having.

I'm trying to control a 12V DC motor using the Arduino PWM and a MOSFET (IRLZ44N).

Hmmmm a MOSFET, doesn't say H-Bridge, and that was 2 months ago.
Can you please post a copy of your circuit, in CAD or a picture of a hand drawn circuit in jpg, png?

Tom.... :slight_smile:

Thanks you for the answers.
It's for the some project (tennis ball machine) but for now, I'm just trying to control the dispenser motor.

The motor I'm trying to control is this one:
http://www.dx.com/pt/p/12v-10rpm-4632gw-370-high-torque-dc-turbo-worm-reducer-gear-motor-441578#.WNf6OPnyuUk
It draws only 0,03A, so almost nothing.
I'm using the circuit attached to control it.

Since the mosfet is designed for 40A, this 0,03 are not heating it up at all.
To connect everything together I used a protoboard with regular jumper wires.

When I tested the motor directly connect to the power source I used the same wires.

The Arduino is the Mega 2560

The code I'm designing is much bigger, but I'm used the following to test the motor with the Mosfer:

void setup()
{

  
 pinMode(9, OUTPUT);

  delay (1000);
  for(int i=0; i<250;i++)
  {
    analogWrite(9,i);
    delay(20);
}

}
void loop()
{
}

I measured the voltage between the point 1 and 2 and between 3 and 4 (from the attached circuit).
In both cases I got 12,08V.

TomGeorge:
Hi,
Can you measure V1 and V2 with respect to gnd please, when you have full speed.

Thanks Tom... :slight_smile:

Tom, I couldn't understand exactly the point you want me to measure the voltages from. Are the points I have already measured?

Thank you again,

Diogo

Circuit.jpg

Tom wants you to measure between 1 and 4, and between 2 and 4.

MAS3:
Tom wants you to measure between 1 and 4, and between 2 and 4.

MAS3/TOM,
I took the measurements:
PWM set at 255 (always on):

  • 1 x 2 - 12,08V
  • 1 x 4 - 12,08V
  • 2 x 4- 0V

PWM set at 50: (at standard frequency

  • 1 x 2 - 8,57V
  • 1 x 4 - 12,08V
  • 2 x 4 - (-0,21V)

Thank you again,
Diogo

Hi,
The 2 x 4 voltage at PWM 50 has me worried, it should be higher than that.

Like 12.08 - 8.75 = 3.33 Volts.

Can you post a picture of your project please, especially around the MOSFET?

Thanks.. Tom... :slight_smile:

Tom,

Why do you think I should get a higher value between 2 and 4?
2 is ground and 4 is also ground.
The only difference is that one is before the mosfet and the other one after it.

I found it weird that I got 8v when I connected 1 and 4 and 12v when I connected 1 and 2. Is that supposed to happen?

I'm sending the pictures in the link bellow:

Imgur

Thanks,
Diogo

Just to make it easier to see what's been discussed:
f6989313253dd466bc5f20c2ed8f4fbe7a00443a.jpg

And

A multimeter shows an average, so it gets rid of the PWM and displays the average of the voltage present.

Hi,
2 and 4 are not both gnd, 4 is gnd, 2 is pulsed between gnd and the terminal of the motor.

Tom... :slight_smile:

Using a red wire for ground is going to confuse everyone - black for ground, red for V+ if you want
to avoid getting into hopeless mess.

MarkT:
Using a red wire for ground is going to confuse everyone - black for ground, red for V+ if you want
to avoid getting into hopeless mess.

Sorry MarkT. For me they were just colors. I'll be more careful next time.

Do you guys have any idea what be happening?

TomGeorge:
Hi,
2 and 4 are not both gnd, 4 is gnd, 2 is pulsed between gnd and the terminal of the motor.

Tom... :slight_smile:

Tom,
sorry for the dumb question, but aren't they both connected to gnd?
I know that one is "not pulse" and the other one is pulsed, but aren't they both supposed to have 0V?

Thaks again,

Diogo

That depends on how you are measuring.
If you use a multimeter, then you'll see an average.
PWM signals usually are too fast to be shown by such a multimeter.
If you are using something like an oscilloscope, you'll see the actual waveform and digital scopes can offer you a lot of extra details like maximum, minimum and average voltage, and the duty cycle of the PWM signal.

So 4 (source) is connected to GND, and 2 (drain) is only connected with GND if the gate (controlled by the PWM duty cycle) allows it to.

Hi,
The code you posted in #5, you did change it to go to 255?
If you remove the MOSFET from the protoboard, and place a link from where drain and source were, what happens then?

Voltages too please, and apparent torque.

Tom.... :slight_smile:

TomGeorge:
Hi,
The code you posted in #5, you did change it to go to 255?
If you remove the MOSFET from the protoboard, and place a link from where drain and source were, what happens then?

Voltages too please, and apparent torque.

Tom.... :slight_smile:

Tom,
sorry for not answering before, I was traveling on business and I just got home.

Yes, I did change the code to 255. The voltages I posted before were already measured at 255. (sorry for the mistake)

If I remove the MOSFET and place a jumper cable between the gate and source I get exactly the same values as if I was using the PWM set at 255.

  • 1 x 2 - 12,05V
  • 1 x 4 - 12,05V
  • 2 x 4- 0V

The apparent torque seems to be the same as if the motor was connected directly to the power source.

Last week I bought same new IRLZ44N MOSFET's to test if the old ones weren't problematic. I guess they were.
I tested right now one of the new ones and I got these voltages with the PWM set at 127:

  • 1 x 2 - 12,05V
  • 1 x 4 - 12,05V
  • 2 x 4- 0V
    so, the same voltages as if the PWM was set at 255.

I also decided to test a IRF540N that I had here. Since it's not a logical mosfet, I've got some differences.

  • 1 x 2 - 10,70V
  • 1 x 4 - 12,05V
  • 2 x 4- 0,15V

But I still have a torque problem related to the PWM control.
When I set the PWM to 127, for example, the torque is incredibly reduced, even knowing that I have the same voltage (12,05V).
Some time ago I bought a PWM controller from ebay, like this one:
http://www.ebay.com/itm/12V-40V-10A-Pulse-Width-Modulator-PWM-DC-Motor-Speed-Control-Switch-Controller-/400586595552

If I use this controller, I get an apparently higher torque. Is there a reason for that?
Is there a way not to lose a lot of torque while using PWM?

Thanks again,

Diogo

Hi,
f6989313253dd466bc5f20c2ed8f4fbe7a00443a.jpg
What brand/type is your meter?
Can you do measurements again, sorry.
But with your DMM set to AC Volts
PWM at 255, 127 and 0.

Can you post your test code please?

Thanks.. Tom.. :slight_smile:

Hi Tom,
My multimeter is from a Brazilian brand called Brasfort
https://digiplug.com.br/produto/multimetro-digital-brasfort-8522-c-alarme-sonoro/
It's really cheap.

I repeated those measurements just like you asked, with the DMM set as AC Volts.

I got the same result for 0, 127 and 255.
1-2 = 25,6V
1-4 = 25,6V
2-4 = 0V

I don't know if it makes any sense....

The code I'm using is this one:(ramping the motor speed)

void setup()
{

 
pinMode(7, OUTPUT);

 delay (1000);
 for(int i=0; i<255;i++)
 {
   analogWrite(7,i);
   delay(20);
}

}
void loop()
{
 
}

to test the "0" I just used

void setup()
{

 
pinMode(7, OUTPUT);

 delay (1000);
    analogWrite(7,0);
   delay(20);

}
void loop()
{
 
}

What do you think?

Thanks,

Diogo

Hi,
What is your 12V power supply.
Can you post a picture of it please?

Tom... :slight_smile: