Electronic – arduino – Using a MOSFET driver

arduinodc motormosfet

I am trying to control the speed of a 15W DC-motor with operating voltage of 12V using an IRF640 n-channel MOSFET as shown in the picture below but without the pull-down resistor RMS = 10kOhm. Instead of it, I always set the Arduino PWM digital pin to value 0, thus when the motor should turn off the MOSFET gets 0V at its gate.

: DC motor driven by MOSFET
:

The problem I face is that even with the maximum value of PWM (255) I don't get the motor to rotate as fast as it does when it's plugged directly into 12V. I get that there is a voltage drop in the MOSFET, but the speed should not drop as much as half of its normally is.

Can the absence of the pull-down resistor Rms 10kOhm case this effect?

Do I need to use a MOSFET gate driver in order to achieve better performance of the DC-motor? (The maximum power the motor uses during operation is not higher than 18 W)
If yes, what MOSFET gate driver should I use in this case?

Arduino pins work with voltages 0V – 5V and maximum current that can pass trough them is 20 mA.

EDIT: Arduino Uno's PWM signal frequency is 490 Hz on each pin except for two pins where the frequency of PWM signal is 980 Hz. Source

Best Answer

The R1 should be some high value about 1k5.

schematic

simulate this circuit – Schematic created using CircuitLab

Use a transistor as driver from gate to ground, and a resistor from gate to 12V. You have to configure the PWM to active low. Alternatively you can use another transistor to invert the pwm polarity.