.st0{fill:#FFFFFF;}

Electronics

Using MOSFETs to drive large(ish) loads – Updated 2025 

 August 12, 2025

By  Peter

Join Our Mailing List

We publish fresh content each week. Read how-to's on Arduino, ESP32, KiCad, Node-RED, drones and more. Listen to interviews. Learn about new tech with our comprehensive reviews. Get discount offers for our courses and books. Interact with our community.

One email per week, no spam, unsubscribe at any time.

Many typical Arduino application examples involve driving devices requiring more power than the Arduino itself can provide through its pins. This power translates to higher voltages, higher currents, or both at the same time.

That is when devices like relays and transistors come in. They can be used as interfaces from a low-power controller circuit, like the Arduino, to a higher-power controlled circuit, like a motor, LED strip, siren, strobe, etc.

In this Arduino Tips and Tricks, I wish to discuss the MOSFET device briefly.

What is a MOSFET?

The name stands for Metal–Oxide–Semiconductor Field-Effect Transistor. Yes, it is a type of transistor, but instead of having three terminals like a typical bipolar transistor (Base, Collector, Emitter), it has four: source (S), gate (G), drain (D), and body (B). In most cases, though, the B and the S are connected together (shorted), so we end up with MOSFET packages that expose only three terminals: source (S), gate (G), and drain (D).

Think of a MOSFET as an electronically controlled switch. When you apply voltage to the gate pin, it “opens” the switch, allowing current to flow from drain to source (for an N-channel MOSFET). When you remove the voltage from the gate, the switch “closes” and stops the current flow.

N-channel vs P-channel MOSFETs

MOSFETs come in two main types, and it’s important to understand the difference:

N-channel MOSFETs (the type we’ll focus on):

  • Turn ON when you apply a positive voltage to the gate (relative to the source)
  • Current flows from drain to source when on
  • The source connects to the negative side of your circuit (ground)
  • The load connects between the positive supply and the drain

P-channel MOSFETs:

  • Turn ON when you apply a negative voltage to the gate (relative to the source)
  • Current flows from source to drain when on
  • The source connects to the positive side of your circuit
  • The load connects between the drain and ground

Why N-channel is preferred for Arduino projects

N-channel MOSFETs are much easier to use with microcontrollers like Arduino because Arduino pins output positive voltage (3.3V or 5V) which directly turns on N-channel MOSFETs. They’re also more readily available in logic-level varieties, and the circuit design is simpler since the MOSFET source connects to ground like the Arduino.

All examples in this article use N-channel MOSFETs – this is what you’ll want for most Arduino applications. P-channel MOSFETs require more complex drive circuits when used with microcontrollers.

Why are MOSFETs useful for Arduino projects?

A MOSFET has several advantages over other switching methods:

Low control current: A MOSFET requires virtually no current to operate it (turn it on) – typically less than 1mA at the gate. This makes it perfect for microcontrollers like Arduino, which can only provide limited current from their GPIO pins.

High switching current: Despite requiring so little control current, a MOSFET can handle much larger currents through its drain-source path – often 10A to 60A or more for common devices.

Fast switching: MOSFETs can turn on and off extremely quickly (within nanoseconds), making them excellent for PWM applications like motor speed control or LED dimming.

Low voltage drop: When fully on, a good MOSFET has very low resistance, meaning minimal power loss and heat generation.

Critical requirement: Logic-level MOSFETs for Arduino

This is where many beginners run into trouble! Not all MOSFETs work properly with Arduino’s 5V (or 3.3V) output pins. Most MOSFETs you’ll find are designed for higher gate voltages – typically 10V to 15V. While these MOSFETs might start to turn on with 5V from an Arduino, they won’t turn on fully. This means:

  • They have high resistance when “on”
  • They can only handle a fraction of their rated current
  • They get hot and may be damaged
  • Your motor or LED strip won’t get full power

Logic-level MOSFETs are specifically designed to work with the voltage levels that microcontrollers provide. When shopping for a MOSFET for your Arduino project, look for these specifications:

  • Vgs(th) (gate threshold voltage): Should be 2V or less for 5V Arduinos, 1.5V or less for 3.3V systems
  • Rds(on) specified at 4.5V or 5V: This tells you the MOSFET’s resistance when driven by your Arduino’s voltage levels

Updated component recommendation

The original version of this article recommended the IRLB8721PbF, but this component is now obsolete and hard to find. Here are current alternatives that work excellently with Arduino:

For 5V Arduino systems:

  • IRLZ44N – 55V, 47A, works great with both 5V and 3.3V logic
  • FQP30N06L – 60V, 32A, good with 5V logic (not recommended for 3.3V)

For 3.3V systems (ESP32, ESP8266):

  • BSS138 – 50V, 200mA, excellent for small loads
  • IRLZ44N – Also works well at 3.3V for larger loads

The IRLZ44N is probably your best bet as a general-purpose replacement – it’s widely available, well-documented in Arduino tutorials, and performs well at both voltage levels.

Basic MOSFET circuit for Arduino

Here’s how to connect a MOSFET to control a motor or other high-power load:

Circuit components:

  • Arduino GPIO pin → 220Ω resistor → MOSFET gate
  • MOSFET source → Ground (shared with Arduino ground)
  • MOSFET drain → One terminal of your load (motor, LED strip, etc.)
  • Power supply positive → Other terminal of your load
  • Important: 10kΩ resistor from MOSFET gate to ground (pull-down resistor)
  • If controlling an inductive load (motor, relay, solenoid): Fast diode (like 1N4148 or 1N5819) across the load, cathode to positive supply

The 10kΩ resistor from gate to ground serves several important purposes:

  1. Ensures clean turn-off: When your Arduino pin goes LOW or floats, this resistor ensures the MOSFET gate is pulled to ground, turning it completely off
  2. Prevents false triggering: During power-up or if the Arduino pin is disconnected, this resistor prevents the gate from floating at an undefined voltage
  3. Helps with high-frequency switching: For PWM applications, it provides a discharge path for the gate capacitance, ensuring cleaner switching

Typical values: 10kΩ works well for most applications. You can use anywhere from 1kΩ (for very fast switching) to 100kΩ (for very low power consumption).

When you need more than just a flyback diode

For simple on/off control of motors or LED strips, the basic flyback diode (connected across your load) provides adequate protection. However, if you’re doing high-frequency PWM (like motor speed control), you might need additional protection:

  • Fast recovery diodes: Use Schottky diodes (like 1N5819) instead of regular diodes for better high-frequency performance
  • Snubber circuits: For very fast switching or high currents, a small capacitor (100nF) in series with a resistor (10-100Ω) across the MOSFET can help reduce voltage spikes

Simple example circuit

Here’s a complete example for controlling a 12V DC motor with PWM speed control, done in KiCad (of course). I have not connected other Arduino pins, aside from digital pin 9 and ground.

And here is the Arduino code if you’d like to give it a try:

int motorPin = 9;

void setup() {
  pinMode(motorPin, OUTPUT);
}

void loop() {
  // Ramp motor speed up
  for(int speed = 0; speed <= 255; speed++) {
    analogWrite(motorPin, speed);
    delay(10);
  }
  
  // Ramp motor speed down
  for(int speed = 255; speed >= 0; speed--) {
    analogWrite(motorPin, speed);
    delay(10);
  }
}

Key takeaways

  1. Always use logic-level MOSFETs for Arduino projects – don’t assume any MOSFET will work
  2. Include the gate pull-down resistor – this simple 10kΩ resistor prevents many problems
  3. Use protection diodes for inductive loads like motors and relays
  4. Check your specifications – make sure the MOSFET’s current and voltage ratings exceed your application needs
  5. Start simple – test with LEDs or small loads before moving to high-power applications

MOSFETs are incredibly useful components that open up many possibilities for your Arduino projects. With the right component selection and basic circuit protection, you can safely control high-power devices while keeping your Arduino happy and protected.


Tags

MOSFET, Transistor


You may also like

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

After months of testing the Canaan Avalon Q in my home lab, I’ve discovered this ASIC miner offers some compelling advantages for DIY enthusiasts—especially when you get creative with power management and heat recovery. Here’s

Read More
Canaan Avalon Q Bitcoin Miner Review: My Experience with Hybrid Solar Setup & Heat Recovery

Featured on “Another Bright Spark” Podcast: Mentoring the Maker Movement I recently had the pleasure of being interviewed by Neale Mighall on the “Another Bright Spark” podcast, powered by Ignys Ltd, an award-winning ethical electronics

Read More
Featured on “Another Bright Spark” Podcast: Mentoring the Maker Movement