Low side vs. High side transistor switch

Why do these both exist, how do they work, and when do you use them?

Low switch vs High switch Banner

A common task for a transistor is switching a device on and off. There are two configurations for a transistor switch: low side and high side. The location of the transistor determines the type of circuit and its name. Either transistor configuration can use a BJT or MOSFET.

In this post, I draw the configuration for both transistor types, talk about which requires a driver, and explain why you would use either. If you are new to transistors, check out the resource links at the bottom. I have a couple of videos I made and some from element14’s The Learning Circuit which do a great job introducing transistors.

Low-side transistor configuration

When the transistor is connected to ground, that means the load is between +V and the transistor. Since the transistor is switching the path to ground or is sitting on the low side of the load, it is called a low side switch.

Typically these use an NPN BJT or an N-Channel MOSFET.

Low-Side with FET Pull-down

Low-Side Transistor Examples (Note the FET has a pull-down resistor.)

For an NPN BJT, the emitter connects to ground, and the collector attaches to the negative side of the load. As a switch, the BJT operates in saturation mode. Saturation means there is enough base current to turn on the transistor fully.

For an N-Channel MOSFET, the source connects to ground, and the drain connects to the negative side of the load. While you can use a JFET for this circuit, an enhancement mode MOSFET works better.

High-side transistor switch

The opposite of the low side switch is the high side switch. This transistor connects between +V and the load. Because of how transistors work, these can be a little more difficult to use in an Arduino or Raspberry Pi circuit.

Typically these use a PNP BJT or P-Channel MOSFET.

High-Side with FET Pull-Up

High-Side Transistors (Note the FET has a Pull-Up resistor.)

For a PNP BJT, the emitter connects to the voltage source, while the collector connects to the load’s positive side. Looking at the schematic drawing for an NPN and PNP, the PNP might look like it is upside down. Just like the NPN, the PNP BJT needs to be operating in the saturation region to turn on the transistor fully.

For a P-Channel MOSFET, the source connects to the voltage source, and the drain connects to the load’s positive side. Like with the low-side, you probably want to use an enhancement mode MOSFET. Keep in mind that you may never find a depletion mode P-Channel. They only exist in textbooks and as data entry errors.

P-Channel MOSFET with same load voltage

P-Channel MOSFET with same load voltage

When using a P-type transistor on a load voltage that is the same voltage level as the signal driving the transistor, the circuit above works fine. Well, the logic is inverted, but other than that, is fine. For a detailed explanation, check out this post I wrote on P-Channel MOSFET Tutorial with only Positive Voltages.

When the load voltage is HIGHER than the signal voltage, you need a driver. Next, let’s see how a driver gets used with low-side and high-side transistor switches.

Transistor driving another transistor

A driver transistor circuit is one that controls another transistor. This circuit is not the same as a BJT Darlington pair, which is a high gain BJT. Instead, a transistor driver is used when the driving signal’s voltage (or current) is not compatible with the load transistor. Below are two cases where you might need to use a transistor driver. These are, by no means, the only ones. So if you know of a case, or suspect you need one, leave a comment with it.

Transistor Driver Examples

Transistor Driver Examples

High current MOSFETs have a substantial Vgs threshold. While 5 volts from an Arduino GPIO pin might be enough to turn on the transistor, it isn’t enough to drive it into saturation. Until the FET is saturated, its Rds-ON can be relatively high, limiting the maximum current it can handle.

It is very common to use an NPN driver with a PNP BJT or P-Channel MOSFET, when the load voltage is higher than the signal voltage. Without a driver, the transistor may never turn-off. The driver, effectively, boosts the driving voltage high enough to unbias the Vbe or Vgs junction of the transistor. My tutorial on PWM a PC fan is an example of an Arduino driving a 12 volt fan with a PNP.

Why even bother with high-side transistors?

For both BJT and MOSFET transistors, their P-Type generally have more resistance (or lower current capability) than their N-type counterparts. For that reason, some might conclude you should always use an N-type in a low-side configuration.

However, step back and think for a second what the two different circuit types are doing. The low-side switch is switching ground while the high-side switch is connecting the voltage supply. Generally in a circuit, you want to keep the ground connected and switch the power. One reason is that even when the transistor is fully turned on, there is still a small voltage drop across it. That voltage drop means the ground is not 0 volts for that device. For something simple like an LED, it does not matter which you switch. However, an active device like a Microcontroller needs its ground to be ground! So when you have a load that requires ground, you NEED to use a high-side switch.

As a quick rule of thumb, if you are turning a device on and off, a low-side switch is a simple solution. However, if you are delivering power to an entire circuit or a voltage sensitive device, then you want to use a high-side switch.

By the way, there are off-the-shelf components called a “load switch.” These are ICs that have a P-Channel MOSFET as the switching transistor with a built-in driver for that P-Channel. There is no external driver needed for this type of components.

Transistor Basics Links (for Reference)

  • The Learning Circuit, How Transistors Work.  Karen explains from the ground-up how bipolar junction transistors (BJTs) operate. There are many transistor physics explanations on the web, but Karen’s is the clearest one I have come across.
  • The Learning Circuit, BJT Feedback. In this TLC episode, I joined Karen and addressed some misconceptions from the community (and I suspect others) on the video linked above.
  • AddOhms, BJTs. The video I made about BJTs. I don’t get into how the electrons work, but instead, show how to use one in a circuit.
  • AddOhms, MOSFETs. Part two of my transistor videos. In this episode, I explain how to use MOSFETs. (This video is the most popular on my YouTube channel with, literally, millions of views.)

Question: What are other popular transistor configurations you have used in your circuits? You can leave a comment by clicking here.

Long comments, URLs, and code tend to get flagged for spam moderation. No need to resubmit.

ALL comments submitted with fake or throw-away services are deleted, regardless of content.

Don't be a dweeb.

Leave a comment

61 thoughts on “Low side vs. High side transistor switch

  1. Hi, I was doing a project, where I need to heat up a nichrome wire (which acts as a heating element) upto certain power for example 100mW. I have already done some computation and I need current of approximately 0.05A. I was planning on using a BJT current driver to limit the current at a constant rate. Since my current requirement is lower than 1 A, I thought of using BJT as it will be a better option than using MOSFET. But I am getting a little confused if MOSFET could be a better choice. Can you suggest what will be better?

    • How do you plan to keep a constant current and presumably a constant temperature?
      Most applications like this will use Pulse Width Modulation (PWM) to maintain a steady current with some sort of temperature sensor.
      You could use either a BJT or a MOSFET as the driven device.
      I use a P-channel MOSFET driven by a BJT to control the speed of a circulating fan.
      MOSFETs make excellent switches. You just need to pay attention to the Gate voltage. For low voltage applications, say 5-volts, you need to select a MOSFET with a logic-level Gate voltage

        • With PWM, the voltage remains the same.
          What does change is the time the voltage is high against the time the voltage is low.
          This is the mark-space ratio which varies from 100% – always on – to 0% – always off.
          When driving a resistive load like yours, the current will follow the voltage as dictated by Ohms Law.
          PWM changes the power applied to the load.
          Imagine it as applying 12-volts to a DC motor. Switching the voltage rapidly takes the motor to full power then turns it off.
          The apparent speed will be dictated by momentum and inertia.
          At very high frequencies, you don’t notice the slowing down and speeding up.
          With my fan, it speeds up and slows down exactly as if you were varying the voltage.
          With your wire, if the mark-space radio is low, the wire is cool; if high, the wire will be cool.
          When I said steady current, I should have said average apparent current.
          If you have a temperature sensor, it will control the PWM ratio or duty cycle.
          You can only really do PWM with an MCU like Arduino.
          A lot will depend on how accurately you need to control the temperature.
          Someone might come up with a simpler solution

  2. Thanks for this tutorial! I’m trying to use a PNP transistor, driven by an NPN transistor. As I mentioned in my response to STiVo, I discovered that directly connecting the NPN collector to the PNP base blows the NPN transistor. I put in a 3K resistor, but I always have current flowing, and the load is always powered. I tried adding a pullup resistor between the PNP base and +12V, then I tried a pullup resistor between the NPN collector and +12V. Neither of those did anything. Any suggestions on how to track down the problem?

    • It would be helpful if you said what transistors you are using.
      My old faithfuls are NPN 2N3904 and PNP 2N3906.
      Double check all the transistor leads against the datasheets (the 2N39xx are always from the left, Emitter, Base, Collector looking at the flat face of the TO92 package with legs down).
      For the transistors mentioned, I always use at least 10k on the base.
      Persevere with the configuration in this article because it does work.
      Let us know how you get on so others can benefit from your experience, good or bad.

      • Sorry, I did mean to mention the transistor types. They are 2N3904 and 2N3906. I’ll try increasing the resistors. Thanks for the tip!

        • No harm if you protect both bases with 10k, but I’ve never blown a transistor if you follow the datasheet pinout.
          Make sure you have some sort of load on the PNP or you will blow the driven transistor. An LED with 2k would work safely up to 12-V. The 2N39xx’s are medium power. A 10k on the load side would give you a voltage to look at with a meter.
          Out of interest, which one did blow?

          • It turns out both of them blew. The PNP blew a hole in the casing, but the NPN just silently failed. I think that was what caused my later problems.

            My test load is an LED with a 1K resistor (12V supply voltage, Vce 0.25V, 2V drop measured across the LED, I calculated that would draw 9.75 mA)

            After letting the Magic Blue Smoke out of 3 or 4 more transistors, I finally got a configuration that worked. I used a 30K pullup for the PNP, and a 10K on the NPN base. And the NPN collector was directly connected to the PNP base, with no issues.

            Next step – see if it works with my intended load, not just an LED! But that’s for another night.

            (Note to self – pick up a Magic Blue Smoke Refill kit 🙂 )

  3. Thank you for your post.

    You well explained how to drive a P-Channel mosfet with a BJT. But what if the load supply voltage is above maximum allowed VGS of the mosfet? For example if we want to switch 50 volts, when the IO signal is zero, the BJT is off and so the gate is at 50 volts while the source is at ground 0 volt. so the 20 volts max VGS is exceeded.

    How can we prevent that?

    (sorry I asked the same question in another post, just saw this post and thought my question is more relevant to this post)

  4. Hi, James!
    Thank you so much, very helpful. But suppose I want to use a p-MOSFET high switch to turn on/off +3.3 volts from a PSU, but the only voltage available for driving signal is +5v. Will that scenario even work? BTW, both +5v (driving) and +3.3 come from the same PSU.

  5. In your transistor driving another transistor example, when the NPN is switched on, won’t there be unlimited current between the base of the PNP and the collector of the NPN?

    • In fact, I observed, that the current seems to be very high (didn’t measure though). I’m using a BC547C (NPN) and a BC557C (PNP). When turning the NPN ‘on’, everything works as expected, only the NPN was rapidly getting hot.
      I’ve added an additional resistor (2.2k) between the PNPs base and the NPNs collector and everything is fine now!

      @James Lewis: Great tutorial! It helped/helps me a lot, to read the articles on your site!!

  6. Remember NIXIE tubes are suppose to be driven by <60% duty AC. You can use DC if you keep the duty down to an integral of <60% duty. But due to the abruptness of the PWM duty control you will need to periodically exercise the tube. And more often longer the displayed number is kept static.

  7. Can you explain why I have occasionally seen an n-channel MOSFET being “controlled” by its source pin? In this configuration its gate is fixed at 3.3V and its drain is connected to the gate of another NMOS. That NMOS is pulled up to 10V at the gate. This driving MOSFET is trying to turn that NMOS off. Its the same setup you have shown above except instead of using a BJT its using an NMOS and the NMOS seems rotated to me!?

  8. Thank you for this article, James.

    With regards to the left-hand ‘Transistor Driver Example’ (NPN transistor driving N-Channel MOSFET), how do you compute the values for the two resistors?