Power MOSFETs are a great companion to Arduino and similar microcontrollers when it comes to controlling pumps, motors, heaters or other high-power devices. These transistors allow you to use a weak digital signal from the microcontroller to switch high voltages and currents that many power-hungry devices need to operate, but that the controller itself cannot provide.
In this article, we will discuss selecting MOSFETs for use with Arduinos. Finding a MOSFET that works well with your Arduino is tricky, as most high-performance MOSFETs are not properly switched with the low 3.3V or 5V logic levels of Arduino digital output. Low-voltage compliant “logic level MOSFETs” exist, but the ones that actually perform well at low voltages are few and far between.
I faced this problem myself recently as I tried out many different MOSFETs with Arduinos in power switching applications. Unhappy with the high resistance and heat generation of the parts I had at hand, I decided to do a bit of research to find the most efficient logic level power MOSFETs.
In the process, I ended up spending hours searching for parts, and dug through some one hundred MOSFET datasheets. But the work paid off: the best performers I found were actually many times more efficient than the standard parts I was used to, and were happy to comply to a low 3.3V gate drive.
I will share my selection criteria and top MOSFET picks for Arduino with you in this article. In a nutshell: for most low-speed high-amperage power switching with Arduino, select a logic-level MOSFET with enough voltage and current capacity and an ON-resistance below 5 milliohms at 3V gate drive. These MOSFETs allow you to switch heavy loads efficiently directly from the Arduino digital pins without excessive heat generation and voltage loss.
Below, we will take a deeper look into choosing MOSFETs for Arduino. We will start by understanding the challenge better and recapitulating the main MOSFET characteristics in power switching. We will then move to the particular topic of logic level MOSFETs and see which ones are actually the best for use with microcontrollers. We will finish with a glance at the different types of power switching you may want to use the MOSFETs for.
If you just want to see the recommended parts, you can jump ahead to the best MOSFETs section. If you do not mind an introduction, read ahead! I hope this article will help you in picking the right power MOSFET for your Arduino project!
MOSFETs & Arduino: The Problem
One of the main benefits of MOSFETs over bipolar junction transistors (BJTs) or relays is that the control terminal of a MOSFET – the gate – does not require steady current to keep the FET switched ON (or OFF). This is quite useful with Arduinos too, since their digital output current capacity is limited to some tens or 100 milliamps at most, and you do not really want to waste any of it just for keeping a transistor switched.
For efficient switching, however, MOSFETs often call for a relatively high gate drive voltage, typically between 5 and 10 Volts. A high gate voltage ensures that the FET is “properly switched”, i.e. that its ON-resistance is as low as possible for the model. A low ON-resistance is highly desirable in that it avoids both waste of energy and overheating of the FET.
The challenge is that Arduinos can only deliver a lower voltage of 3.3V (Due, Micro, Zero, …) or 5V (Uno, Mega, Nano, …) from their digital pins. This means that although the current draw of the FET gate is negligible, an Arduino may still not be able to switch many FETs properly into conduction, leaving it to a resistive state between full ON and OFF. In this state the MOSFET will not only eat some of your useful voltage but also heats up considerably, possibly to the point of failure.
Solution 1: Add intermediate circuitry
One way to solve this problem is to bring in additional circuitry: a higher supply voltage switched to the gate via a smaller transistor or a special-purpose gate driver IC. This solution will give you the best performance, but is inconvenient in that the extra components mean more money, space and time wasted.
Solution 2: Select a “logic level” MOSFET
A cleaner and more efficient solution to the problem of MOSFET switching from Arduino digital pins is to select a MOSFET model with an exceptionally low switching voltage. Such models, sometimes called “logic-level MOSFETs”, have become available in the past two decades, and allow you to interface the FET directly to low-voltage logic.
The second solution – an Arduino-compatible logic level MOSFET – is the preferred option for most use cases, and is the focus of this article.
Before jumping into the topic of logic level MOSFETs, some basics on MOSFET selection are in order.
When selecting a MOSFET for power switching with Arduino, there are three key specifications that you should look for:
- Voltage rating VDSS
- Current rating ID
- ON-resistance RDS(on)
Amid the tens of parameters listed in the datasheet, these three are the central ones you must consider. Let’s shortly go through them:
1 Voltage rating VDSS
The MOSFET drain-source breakdown voltage VDSS indicates the highest voltage it can tolerate over it; in practice, this is the highest voltage level which you can switch with the part. It is usually the first number mentioned in the component description, and is variously listed as drain-source breakdown voltage, drain-source voltage, or just voltage.
Common voltage ratings for power MOSFETs are 20V, 30V, 40V, 60V, 100V and 600V. To be safe, you should select a MOSFET with a voltage rating at least 20–30% higher than the power supply voltage in your application. Recommended minimum voltage ratings corresponding to typical operating supply voltages are given in the table below.
2 Current rating ID
The next MOSFET property to look for is the maximum continuous drain current ID . This is the maximum steady current you can run through the FET, and usually indicated in amps in the short part description. The ratings range from under 1 amp up to 600 A or more.
Also this spec is determined by your application: you should pick a MOSFET rated for at least the current your pump, heater or the like is going to take to run. There are a few catches here, though:
- Heat sinking: First, the max current rating assumes proper heat sinking. With currents in 10s or 100s of amps, the heatsinks may have to be massive.
- Saturation: With low gate drives from an Arduino, particularly the 3.3V, you are not going to get the full rated current through most MOSFETs. Instead, the FET will saturate at some lower current level, and you should plan to operate the part well below the saturation current.
3 ON-Resistance RDS(on)
The MOSFET ON-resistance RDS(on) indicates the resistance the drain current will face when running through the FET. It is the key switching efficiency characteristic, as heat generation in the FET is directly proportional to RDS(on). To avoid FET overheating, excessive heat sinking and voltage loss, you should look for a MOSFET with as low RDS(on) as possible. As a rough guideline, good RDS(on) values for power MOSFETs are in the single-digit milliohms.
It is important to note that the MOSFET ON-resistance is not a single number, but instead a variable. It depends on gate voltage, drain current and temperature in a complicated way, which makes searching for specifications and comparing parts difficult. Further, it may vary substantially from part to part, particularly at low gate voltages.
There are even more catches here with the RDS(on) than with the current rating, and we will discuss this central quantity in the next section.
How to find logic level MOSFETs
MOSFETs that are switched into conduction at a particularly low gate drive voltage are often called logic level MOSFETs. These parts are so called as they can be driven directly from modern low-voltage logic running at 5V, 3.3V, 2.5V or at even lower voltages.
Logic level MOSFETs are exactly what you would want to use with an Arduino and other microcontrollers. The main challenge is that logic level power MOSFETs are difficult to find.
Fortunately, I have already done much of the work for you, and if you just want to see my picks, jump to the next section. If you want to search for the parts yourself, I will next outline the principles you can use.
Problem 1: Term not established
The first hurdle on your way in finding good logic level MOSFETs is that the term “logic level MOSFET” itself is not very well established. A search in the web or at electronics stockists will therefore return only those parts whose manufacturers have chosen to include the phrase in the brief part description.
Nexperia appears to use the term consistently, but Vishay, Infineon, ST Microelectronics and ON Semiconductor, for example, do not call many of their MOSFETs “logic-level” despite good 2.5V or 3.3V specs.
Admittedly, the term “logic level” is ambiguous, and the manufacturers probably have good reasons to omit it. To begin with, is a logic level MOSFET for switching, or being switched by, logic level, i.e. low voltage and current signals? And which logic level – 5V, 3.3V, 2.5V or 1.8V? The expression “low threshold [gate] drive” preferred by ST Microelectronics at least makes the first one clear.
Problem 2: Irrelevant main specs
MOSFET performance at low voltages is also not apparent from the commonly catalogued component specifications:
- The nominal RDS(on) spec which you see in the parametric search is almost always given at test voltages of 4.5V, 10V or higher – also for logic level MOSFETs! The milliohms can be flatteringly low, but tell nothing of performance in your low voltage application.
- The gate threshold voltage VGS(th), i.e. the voltage at which the gate starts conducting, may appear promisingly low for many parts, e.g. 1.5V. However, it is defined at a minuscule drain current of 250 uA or 1 mA, and has no direct relevance in power switching.
For low voltage applications, the reported MOSFET main specs, however admirable, can serve only as indications of possible performance.
Step 1: Use parametric search for candidates
To find out the real performance of MOSFETs at low gate drive voltages, you must eventually refer to the dozen or so tables and figures in the component datasheets.
Here, you are going to need to be smart: Digikey, Mouser and Newark all carry tens of thousands of MOSFET models, and you cannot possible browse through all of them.
One trick is to narrow down the search to components with promising main specs. Although these main specs do not tell you exactly the performance you are looking for, they give you clues on where to dig deeper.
The best clues for good logic level performance are a low nominal RDS(on) and a low gate threshold voltage VGS(th):
- MOSFETs with a low RDS(on) at 10V may have a low ON-resistance also at low gate drives; parts with a poor RDS(on) at high gate drives are certainly bad at 3.3V too
- MOSFETs with low RDS(on) at 3V will have a low gate threshold voltage VGS(th), almost always below 2V
In practice, you can implement these screening criteria using filtering and ordering in the parametric component search of electronics stockists such as Digikey, Mouser or Newark:
- First, filter parts by your minimum voltage and current ratings
- Filter out parts with VGS(th) above 2V
- Order the remaining parts by RDS(on)
- Work through the datasheets starting from the top
Alternatively, you may try filtering out by RDS(on) and ordering by VGS(th). Personally, I had less success with this strategy, probably due to the ambiguity of the gate threshold voltage as a property.
Step 2: Check the datasheet
Once you have found some candidates, it’s time to look at the datasheets. To find out the MOSFET ON-resistance at low gate drives, look for plots of:
- ID vs. VDS at gate drive VGS=3V or similar
- RDS(on) vs. VGS at some substantial drain current (e.g. ID=25A)
- RDS(on) vs. drain current ID at 3V gate drive or similar
The first thing to check is the saturation current at 3V gate drive, which you can see as a corner and leveling off of the corresponding ID vs. VDS curve in the first plot. This saturation current may be substantially below the current rating ID the MOSFET, and is the most what you can get through the component at 3V gate drive. For efficient switching, the load current you plan to switch with the FET should stay well below the saturation current.
Next, check the RDS(on) itself at 3V gate drive from either of the last two plots. Try to get a number for the RDS(on) at a drain current close to the one you are going to be switching. It is recommended to interpret the graphs conservatively, as the performance plots mostly indicate “typical” behaviour which is not guaranteed by the manufacturer.
Step 3: Derate and test
Once you have found a MOSFET with good RDS(on) at logic level gate drive and checked the specs, the next thing to do is to derate RDS(on) specification.
Why? Because the RDS(on) is temperature-dependent, and the specs are usually specified at a completely unrealistic service temperature of 25 C-degrees – inside the MOSFET!
For a more realistic and safe baseline, you should assume a junction temperature of 90 or 100 degrees. The datasheet should include a graph of RDS(on) vs. junction temperature Tj, which tells you how much the ON-resistance will rise from 25C to 100C. Typically, you see an increase of at least 50%.
Finally, it often makes sense also to test the component before relying on it. Caution is advised because the MOSFET behaviour at low gate drives is often not guaranteed, and may in fact vary a lot from part to part. As an example, the admirable PSMN1R1-30PL by Nexperia specifies a typical gate threshold voltage VGS(th) of 1.7V, but minimum and maximum specs are 1.3V and 2.2V – a range of almost one volt!
Best logic level power MOSFETs
Finding logic level power MOSFETs with good performance is not easy. Luckily, the requirements set on the MOSFET are quite similar in many low-speed switching tasks, such as turning on lamps, pumps, motors and heaters: sufficient voltage and current ratings and as low ON-resistance as possible. This means that much of the power switching from logic levels is best done by the same MOSFETs.
To save you from the trouble of searching, screening and digging through hundreds of data sheets to find the best logic level power MOSFETs, I searched and ranked the contenders, and present the results in the table below. My search criteria were:
- ample current capacity ID > 5A – the more the better
- through-hole preferred to surface mount
- cost a few $ at a maximum
- switching at 3V gate drive for compatibility with all Arduinos
I ordered the parts that I found into voltage rating categories. Then ranked them by the claimed ON-resistance RDS(on) at 3V gate drive and substantial current (10…25 A).
The MOSFETs that claim the lowest ON-resistance RDS(on) at 3V gate drive are listed in the table below:
|Part name||VDSS||ID||RDS(on) @ 3V, 25C|
Some comments are in order:
- The most efficient parts all come from Nexperia
- The ranking was at 3V gate drive instead of 3.3V to allow for voltage drops and part variation
- 5V specs are the same or better – the listed parts work both with 3.3V and 5V microcontrollers
- High-voltage (VDDS) parts are always poorer than low-voltage ones
- The higher VDDS BUK-parts are surface mount, but their SOT404/D2PAK package is easily converted to through-hole
- These parts have high gate capacitance (>10 nF), and are not the best for high-speed switching
- The parts are all N-channel; P-channel MOSFETs have poorer specs
The PSMN and BUK series by Nexperia dominate the table, but many components from other manufacturers perform well too. The extensive IRL series by International Rectifier and the SUP-parts by Vishay have excellent specs down to 3.3V gate drive, but suffer a rapid rise of RDS(on) right after that, and cannot match the Nexperia offering at a more conservative 3V gate drive. Similarly, the CDS series MOSFETs by Texas perform very well at gate drives of 5V and 4.5V, but do not seem to offer any specs at 3.3V or 3V.
Finally, I should mention that my search returned some surface-mount MOSFETs that seem to beat all of the through-hole competition by a substantial margin. The datasheet of the 30V, 300A MOSFET IPT004N03L by Infineon, for example, indicates an extremely low RDS(on) at just half a milliohm, even for gate drives of 3.2V and 3.5V. However, I chose not to include these parts due to the more advanced surface mount packages, which do not lend themselves well to hobbyist work.
Power MOSFET applications with Arduino
ON/OFF power switching
Simple ON/OFF-type slow power switching is probably the most common application of MOSFETs with Arduino and other microcontrollers. This type of switching is common when you power devices based on a timer, sensor interrupts, manual input, or other threshold-type signal. An important category of ON/OFF power switching is in bang-bang or hysteretic control of temperature with a thermostat.
Typical ON/OFF switching use cases for MOSFETs include powering
- Lamps and other lights
- Motors in pumps, fans, blowers etc.
- Solenoid valves
Switching efficiency is key in ON/OFF power switching and switching speed rarely a concern. The low ON-resistance logic level MOSFETs listed in previous section perfectly suited for this type of switching.
PWM (Pulse Width Modulation) is a type of variable power control, and is available in most microcontrollers. PWM is very flexible in allowing you to run devices at partial power levels between ON and OFF, such as 50%, 27% or only 1%, and is commonly used in variable-brightness lighting, motor control and audio amplifiers.
PWM control involves much more frequent switching than ON/OFF control, and sets some demands on the MOSFET switching speed in addition to efficiency. Fast switching with power MOSFETs is a challenge, because highly efficient high-current MOSFETs such as those listed in the previous section also have high gate capacitance (> 10 nF). If you want to switch these MOSFETs very fast, you will have to supply currents of many amperes to the gate. Such high currents are well beyond the capacity of the microcontroller digital outputs.
Fortunately, the PWM implemented in Arduinos is relatively slow, with default PWM frequencies between 500 and 1000 Hz. The switching time requirements are not particularly stringent, and you can use the listed high-capacitance MOSFETs without major issues.
That said, you may have to reserve a sizeable portion of the Arduino I/O current capacity to driving the gate. For example, switching a power MOSFET with a 10 nF gate capacitance in under 1% of the Arduino Due 1000 us PWM period takes around a 20 to 30 mA current, which is around 1/5 of the total I/O current capacity of the Due, and probably close to the single-pin limit.
In some applications, power MOSFETs must be switched much faster than in regular Arduino PWM control. Examples are motor control and audio applications, where switching frequencies are in tens or hundreds of kHz, and proper switching times are counted in nanoseconds.
Arduinos are not capable of providing the gate currents required to flip the hefty and efficient power MOSFETs at these speeds. If you want to implement MOSFET power switching at higher PWM frequencies than the default ones, you will either have to
- Settle to low-capacitance MOSFET models with inferior RDS(on) specs
- Use external gate driving circuitry between the microcontroller and the power MOSFET
In this article, we have explored the land of logic level, low gate drive power MOSFETs, and seen why they are the right choice for power switching with Arduinos and other popular microcontrollers. On this quick tour, I shared my selection of extremely efficient logic level MOSFETs, and explained how you can also search for these parts yourself.
The main takeaway of this article is that the best available logic level MOSFETs allow extremely efficient switching with ON-resistances of only a few milliohms. They reach their performance at low gate drives and can thus be driven directly from an Arduino 3.3V digital output in low speed switching.
I hope the information presented here has helped you understand how to choose MOSFETs for efficient power control with an Arduino. Happy switching!