# Using a FQP30N06L MOSFET on a 3.3v microcontroller

I'm trying to drive a 2.5A/12V load controlled by a 3.3v micro-controller.

In the past I've used a TIP120. In this case I'm trying to drive a solenoid and the voltage drop I'm getting across the TIP120 is too high.

I was looking at other options and people recommend using a MOSFET. The problem I'm having is I need to drive it from 3.3v. Many people and tutorials suggest devices that -may- work at 3.3v but in reality may require up to 4.5v to fully switch. And this minimum voltage can vary from transistor to transistor.

I'm not an expert and this is confusing. I'm not very good at reading data sheets but keep finding recommendations for devices that upon looking, seem as if they need at minimum 4.5v to guarantee saturation.

So to clear it up I thought I would ask here: can I use a FQP30N06L (which is cheap for me to obtain and in the package (TO-220) that I require) to power my load if I drive it's base from a 2N2222 transistor?

The datasheet for the FQP30N06L states: 32A, 60V, RDS(on) = 0.035Ω @VGS = 10V.

So I guess I need 10V to fully saturate it?

If so that is fine. I was wondering if I could use a 2N2222 like this:

Very rough drawing I made up at the time in mspaint. Would this work and be acceptable?

Thanks!

• Please give an actual schematic rather than an mspaint mess. Also note that like all MOSFETs the FQP30N06L doesn't have a base (it has a gate). – pericynthion Jul 14 at 4:29

Yes, this circuit will work fine as you have it. 12V on the gate of the FQP30N06L is more than the 10V you need to get guaranteed Rds(on) and it's well under the 20V absolute maximum voltage. The switch-on is a bit slow (meaning more power dissipation in the MOSFET) but that's not too much of a concern unless you're trying to do PWM, in which case I suggest using a proper gate driver circuit.

Keep in mind that the default is "on" (with connection from the Arduino open-circuit or high impedance), which may not be desirable. You can avoid that by adding another inverting stage, or using a simple common-base level shifter with no current gain (I won't recommend that because it exposes the Arduino to accidental damage a bit more).

The 220 ohm is also on the low side, drawing unnecessarily large current from the MCU. 10K would be fine with a 10K pullup, with either 3.3V or 5V drive.

By the way, you show an Arduino UNO, which I believe runs the MCU off of 5V.

Similar question: Transistor Push Pull Stage to drive Mosfet

The simplest driver would be a common emmitter NPN configuration which would invert your logic but give you the voltage gain needed to drive your FET gate. Keep in mind the high side 470 ohm resistor will almost always be conducting since your application is mostly keeping the solenoid in the "off" state, so if you go with this configuration there will always be a 24mA drain on your 12V power supply (choose the size to balance constant power drain and required turn on speed). If constant drain is unacceptable (battery powered for example), you can add another common emitter PNP stage or try to build a push-pull stage with complementary NPN/PNP trasnsistors/FETs to actively drive the FET base both directions (hard, be careful with shoot-through).

simulate this circuit – Schematic created using CircuitLab

The orange plot shows the voltage across the solenoid (modeled by series resistor and inductor) which you'll notice is inverted from the 3.3V drive signal.

Alternatively, if you want to try driving the FET gate straight from your microcontroller, start with a light bulb or power resistor capable of drawing the same 2.5A current (4.8 ohm capable of handling 30W) and use at least a 165 ohm gate resistor to prevent you from exceeding the maximum source/sink GPIO pin current (assuming it's 20mA, check the datasheet).

$$$$165\Omega = \frac{3.3 V}{20 mA}$$$$

The MOSFET datasheet shows the max threshold voltage for 250uA is 2.5V but looking at Figure 6: Gate Charge Characteristics, the Miller plateau is at about 4V which suggests 3.3V won't be able to fully drive the FET open for the current you require (thanks to @Chris Stratton for pointing that out)... but you could still give it a shot if the power dissipation during "on" time is manageable (it'll have a higher Ron when partially switched on).

Note on powering the relay (big inductor): if your microcontroller starts doing weird things like freezing or resetting, it may be from the electrical noise of manipulating large currents. In that case you'll need to take measures to buffer the microcontroller drive signal to protect the microcontroller pins (something like an optocoupler would work great).

• It's driving a solenoid for a lock. So it'll be activated for say 2 seconds every now and then. Maybe ~5 times a day. – Aaron Jul 14 at 4:00
• You can also do a test turning on lightbulb in place of the solenoid for starters. Since it's purely resistive there's no risk of a voltage spike, that way you can quickly prototype to see if the microcontroller will reliably open the FET. You can also leave the light on for a bit to make sure the FET stays cool aka it's fully switched on. – Kent Altobelli Jul 14 at 4:13
• I'm not entirely sure why you got downvoted, but if you look again, you'll note that the threshold voltage is the voltage at which microamps can pass, you need a bit more than that to pass the question's 2.5 amps – Chris Stratton Jul 14 at 4:42
• The source current from the ESP32 is too high IMO. You need to increase R2 to 1k ohm, eliminate R3 and drop R4 to about 12k ohm. There is the likelihood that you will not turn on Q1 during the MCU startup or if the 3.3V supply is off. – Jack Creasey Jul 17 at 1:11
• With the 11.3 volts across the 470 ohm resistor, I wanted at least 240uA into the transistor base to hold it open passively in case the 3.3V supply shut down or the microcontroller pin went to high impedance (application is a lock so it needs to fail safe I'm assuming). You're definitely about R2, but with the removal of R3 I'd argue R4 could go even bigger since there's no longer a 100uA drain through R3. I'll edit the schematic. – Kent Altobelli Jul 17 at 1:38