N-Channel vs P-Channel. Choosing a MOSFET for Arduino.

20 kg load cell
Written by Indrek Luuk

Arduino pins can directly turn ON very low power components like small LEDs. MOSFETs are great if you need to switch ON and OFF more powerful devices that also may use higher input voltage than Arduino's 5V.

So, which type of MOSFET should you use? You probably want to pick a Logic Level Enhancement-Type N-Channel MOSFET. It's easy to wire it up to be "normally OFF" (turns ON only when Arduino pin goes HIGH and is OFF if the signal is floating or is LOW).

I have used 30N06L MOSFET to switch ON 12V motors and lamps.

Now you can turn ON a device that consumes more power than an Arduino pin can provide. And while Arduino is not actively controlling the MOSFET, the device will stay OFF.

A photo of a 30N06L MOSFET

In this article, I will talk about different types of MOSFETs, and give the reasons why I think you most likely want to use an N-Channel MOSFET:

Logic leve N-Channel and P-Channel MOSFETs

Disclosure: Bear in mind that some of the links in this post are affiliate links and if you go through them to make a purchase I will earn a commission. Keep in mind that I link these companies and their products because of their quality and not because of the commission I receive from your purchases. The decision is yours, and whether or not you decide to buy something is completely up to you.

What Kinds of MOSFETs There Are?

MOSFET can be either Enhancement-Type or Depletion-Type and N-Channel or P-Channel. Roughly speaking, we have four different kinds:

  • Enhancement-Type N-Channel

    "Normally OFF" and on the negative side of the load (common GND)

  • Enhancement-Type P-Channel

    "Normally OFF" and on the positive side of the load (common VCC)

  • Depletion-Type N-Channel

    "Normally ON" and on the negative side of the load (common GND)

  • Depletion-Type P-Channel

    "Normally ON" and on the positive side of the load (common VCC)

Symbols for MOSFETs:

N-Channel MOSFET Gate-Source voltage
P-Channel MOSFET Gate-Source voltage

All MOSFETs have Gate (G), Source (S), and Drain (D) pins. The voltage between Gate and Source (Vgs) determines if the current is flowing through Source and Drain or not. Each kind has its own logic of when the MOSFET is turned ON or OFF. I will explain it in detail in the next two chapters.

A MOSFET is classified as Logic Level MOSFET if it gets fully turned on with Vgs in the range of 3 to 5 volts. If you use a 5V Arduino board, then all Logic Level MOSFETs should be OK. If you are using a 3.3V board, then you have to check that the MOSFET you are using is compatible with 3.3V switching.

MOSFETs typically need Vgs to be 10V or more to be fully ON.

Enhancement-Type MOSFET vs Depletion-Type MOSFET?

Every MOSFET is either Enhancement-Type or Depletion-Type.

The more common Enhancement-Type is not conducting electricity when Vgs (voltage between Gate and Source) is zero - "Normally OFF." Depletion-Type is logical inversions of that and is conducting when Vgs is zero - "Normally ON."

For example, an Enhancement-Type N-Channel MOSFET with a pull-down resistor will be OFF while your Arduino pin is not initialized as output (the first few seconds on startup). But a Depletion-Type will be ON in the same conditions.

When deciding between those two types, you have to think of what you want to happen while your controller board is not actively driving the MOSFET Gate (Enhancement-Type → OFF, Depletion-Type → ON). If you don't know, then pick the Enhancement-Type. It's easy to put a 10k resistor between the Gate and the Source, which makes it OFF by default.

In the rest of the article, all the examples are about Enhancement-Type MOSFETs. Everything also applies to the Depletion-Type, just the ON/OFF status would be inverted.

N-Channel MOSFET vs P-Channel MOSFET

The main difference between an N-Channel and a P-Channel MOSFET is that N-Channel usually goes to the Ground (-) side of the load (the device you are powering), and P-Channel to the VCC (+) side.

N-Channel MOSFET with load
P-Channel MOSFET with load

But why do you have to connect one to the negative and the other to the positive side?

Enhancement-Type ("Normally OFF") N-Channel MOSFET turns ON if there is a sufficiently high positive voltage on the Gate relative to the Source (for Logic Level MOSFETs, it's typically 3 to 5 volts). By connecting the Source to the Ground (-), you can use VCC (+) to activate it.

N-Channel MOSFET with load on the GND side

If you decided to connect your N-Channel MOSFET to the VCC side of the load, then the value of the Source would also be very close to VCC. It means that you need to apply a higher voltage than VCC to the Gate to active the MOSFET. Typically you don't have this higher voltage readily available, so it makes more sense to connect the Source to the Ground.

N-Channel MOSFET with load on the VCC side

Enhancement-Type ("Normally OFF") P-Channel MOSFET is like an upside-down N-Channel MOSFET. It turns ON if there is a sufficiently high negative voltage on the Gate relative to the Source. By connecting the Source to the VCC (+), you can use the Ground (-) to activate it.

P-Channel MOSFET with load on the VCC side

Connecting a P-Channel MOSFET to the negative side of the load has a similar problem that the N-Channel MOSFET had. Only this time, the Source would be too close to the Ground. You would need to apply a negative voltage (relative to the Ground) to the Gate to activate it.

P-Channel MOSFET with load on the GND side

It is easy to remember: you should connect the Source pin of an N-Channel MOSFET to the negative output of your power supply, and the Source pin of a P-Channel MOSFET to the positive output of your power supply.

The same rules apply to Depletion-Type N-Channel and P-Channel MOSFETs. Only ON and OFF state is inverted.

Why Prefer an N-Channel MOSFET to a P-Channel MOSFET?

Functionally you could design your circuit in a way that you could use either of them. If you have an Arduino that runs on 5V and the device you are turning ON also runs on 5V, then it doesn't even matter. You could use an N-Channel or P-Channel MOSFET as long as you wire it accordingly.

Then why prefer N-Channel over P-Channel?

  • You can have a Common Ground between the 12V power source and your Arduino with an N-Channel MOSFET.

    With a P-Channel MOSFET, you have to create a Common VCC instead of a Common Ground. But it's standard practice to have a Common Ground between connected devices and modules.

  • With an N-Channel MOSFET, you can power your Arduino from the same 12V power source that you are switching with the MOSFET.

    The negative input of the barrel connector leads directly to Arduino Ground. When you are using an N-Channel MOSFET as a power switch, then that is not a problem. The Grounds are connected anyways. With a P-Channel MOSFET, you can't connect the negative output of the power supply to the Arduino Ground since the 5V power input has to be pulled up to the positive output of the power supply. By also connecting the Grounds, you will send 12 volts through the Arduino.

  • N-Channel MOSFETs are more efficient than P-Channel MOSFETs.

    It comes down to physics. N-Channel MOSFETs use electron flow as the charge carrier. P-Channel MOSFETs use hole flow as the charge carrier, which has less mobility than electron flow. And therefore, they have higher resistance and are less efficient. In other words, a P-Channel MOSFET will get hotter than an N-Channel MOSFET with higher loads.

There are use-cases where P-Channel MOSFET is preferred or even required. For example the Arduino self-power-off circuit needs both: https://circuitjournal.com/arduino-auto-power-off