# Using a MOSFET driver

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.

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 • What is the frequency of your PWM? Nov 3, 2016 at 4:32
• @nickalexeev I've got pins with PWM signal frequency of 490Hz and 980Hz. But in this case, I've used the pin with 490 Hz PWM. Nov 3, 2016 at 12:37
• Dante said there is a special hell for those who don't draw GND towards down
– user76844
Nov 3, 2016 at 13:01

The R1 should be some high value about 1k5. 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.

• I studied the circuit, and I see that MOSFET IRF640 can also do the job if I drive its gate this way. Nevertheless, having analyzed the diagrams in other answers, if to choose between IRF640, IR540 and IRF530 seems like IRF540 is the best choice since it has the least voltage drop and lets the motor operate on voltage closest to 12V. Nov 2, 2016 at 11:40

Your problem comes from insufficient gate drive. Try a logic gate MOSFET like IRL640. Its minimum gate-to-source voltage is about 2 Volts which is quite suitable to drive from a MCU.

Another solution would be a P-Ch MOSFET with an NPN inverter: simulate this circuit – Schematic created using CircuitLab

You ought to consider using a different MOSFET to the IRF640 because it isn't really going to turn on that well with your limited gate drive circuit: - Your gate drive is about 4.5 volts and, as you should be able to see if you tried to extract about 0.5 amps through it the volt drop could be anywhere between 1 volts and 10 volts (or more).

Look at the lowest graph - the one marked "4.5 V" then regard the curve. If you got rid of the 1 kohm resistor your gate drive would be more like 5V but you are on the edge of something working correctly and not. A 15 watt, 12 volt motor requires a normal running current of 1.25 amps but at start up this may be 5 times bigger and the lack of drive voltage to the gate of the MOSFET may still cause you problems.

• I see, I've made a poor choice - IRF640, in this case, might work only if I got extra elements that would drive its gate wth voltage higher than 6V. Nov 2, 2016 at 12:01
• You should be able to find a more suitable device. Do a little research and then leave me another comment and a link and I'll take a look. Nov 2, 2016 at 12:24

Try IRF540! with pull down resistor ! if you hesitate to give pull down resistor of 10k then there will be some issue you have to face !. This might be help you. The below plot showing for IRF540 Refer the image for characteristics

• If the motor uses power of 20W, the current that normally passes trough it would be 1.7A, but when starting it would pull current up to 9A. So, using the Arduino Pin directly with a voltage less than 5V, I might face a problem when the motor is starting, won't I? Also, the voltage drop would be around 1V at the MOSFET and more power will dissipate there - if my logic is right. Looks by far better choice than the one I made, but do you think it would work without any extra element to drive its gate with higher voltage? Nov 2, 2016 at 11:57
• @BojanPetreski yes i have understood your problem now ! so instead of driving the MOSFET directly you can use any optocoupler to drive the gate. It wont harm your arduino bord.Hope it will help you Nov 3, 2016 at 2:56