Use this forum to chat about hardware specific topics for the ESP8266 (peripherals, memory, clocks, JTAG, programming)

User avatar
By plggy
#16418 I am a noob when it comes to circuits, so please excuse the ignorance.

I am trying to use an IRF510 MOSFET (http://www.vishay.com/docs/91015/sihf510.pdf) to switch a 3v DC motor . The motor draws about 0.5 amps.
With the circuit I have set up, I can control the motor with an arduino uno, but no luck using the ESP8266. With the ESP8266 I can use the same circuit to control an LED (including PWM) but as soon as I hook up the DC motor, it wont work.
I am unsure if I am using an incorrect MOSFET or if I am missing something else in the circuit.

Could someone point me in the right direction?
User avatar
By lethe
#16488 Your mosfet is indeed unsuitable for the job. Its threshold voltage (V_GS(th)) is 2-4V, so at 3.3V it's not guaranteed to be in a conducting state (and if it is, it will have a high resistance). You need a logic level mosfet, with a V_GS(th) of less than 3V (IRL series or similar) or a suitable NPN transistor.
Also don't forget to add a flyback diode, or you might kill your transistor when switching the motor off (the body-diode will act as flyback diode, but it may exceed its max. ratings).
User avatar
By plggy
#16496 Thanks for the information. I assumed it was something about the MOSFET (radio shack doesn't have huge selection!)
I thought because it had a threshold voltage of 2-4v that I would be good at 3.3v. How was my logic flawed? --not trying to be argumentative, just trying to learn. Also, why does it work with the LED but not with the larger load? Does the current required to switch increase with the load?

What about this one - http://www.irf.com/product-info/datashe ... 060pbf.pdf ?
It lists the Vgs(th) (Max) at 2.5V @ 25µA. Won't I burn it out at 3.3v?

Thanks again for the advice, and sorry for all the questions!
And yes I have a diode in there, but thanks for pointing that out.
User avatar
By lethe
#16503
plggy wrote:I thought because it had a threshold voltage of 2-4v that I would be good at 3.3v.

No, it's not. It will start to turn on anywhere between 2V and 4V. At which exact voltage it will turn on depends on temperature, deviations of the manufacturing process and other factors. So you should not assume that the transistor will turn on below 4V.

plggy wrote:Also, why does it work with the LED but not with the larger load? Does the current required to switch increase with the load?

The mosfets resistance (R_DS(on)) depends on the gate-source voltage (V_GS). In your case V_GS is very low, so R_DS will be high, probably to high for your motor to turn on. The LED requires a much lower current (common LEDs will turn on at 1-2mA), so the voltage drop across the transistor is much lower.

plggy wrote:What about this one - http://www.irf.com/product-info/datashe ... 060pbf.pdf ?
It lists the Vgs(th) (Max) at 2.5V @ 25µA. Won't I burn it out at 3.3v?

As explained above, you always want to exceed V_GS(th) max, since the transistor is not guaranteed to be conducting below this voltage. V_GS max is +/-16V for this transistor, so it won't burn out. But the IRLML2060 has a rather high R_DS(on), so it's not your best choice. It probably will get hot (see Fig. 2).
A better choice would be this one: http://www.irf.com/product-info/datashe ... rlz24n.pdf