summaryrefslogtreecommitdiffstats
path: root/_log/mosfet-switches.md
diff options
context:
space:
mode:
Diffstat (limited to '_log/mosfet-switches.md')
-rw-r--r--_log/mosfet-switches.md124
1 files changed, 48 insertions, 76 deletions
diff --git a/_log/mosfet-switches.md b/_log/mosfet-switches.md
index 5e17849..4fc1d31 100644
--- a/_log/mosfet-switches.md
+++ b/_log/mosfet-switches.md
@@ -1,108 +1,80 @@
---
-title: On the use of MOSFETs as electronic switches
+title: High-side MOSFET switching
date: 2025-06-22
layout: post
---
-Recently, I needed a low-power circuit for one of my battery-operated projects.
-Much of the system's power savings depended on its ability to electronically
-switch off components, such as servos, that draw high levels of quiescent
-currents. My search for a solution led me to MOSFETs, transistors capable of
-controlling circuits operating at voltages far above their own.
+Needed low-power switching for the [fingerprint door
+lock](../fpm-door-lock-lp/). Servo and FPM draw high quiescent current--had to
+cut power electronically during sleep. MOSFETs can do this.
-## Acknowledgments
-
-This article is a summary of what I learnt about using MOSFETs as switches.
-I'm not an electronics engineer, and this is not an authoritative guide. The
-circuits in this post must be considered within the narrow context in which
-I've used them. All credits for the schematics belong to <a
+Schematics belong to <a
href="https://electronics.stackexchange.com/users/292884/simon-fitch"
class="external" target="_blank" rel="noopener noreferrer">Simon Fitch</a>.
-## Preamble
+## Problem with simple low-side switching
-For a typical MOSFET-based switch, we can connect a GPIO pin of a
-microcontroller to the gate of a logic-level N-channel MOSFET placed on the low
-side of the load and tie the gate and the drain pins of the MOSFET with a
-pull-down resistor. This would work as long as the power supplies of the
-microcontroller and the load don't share a common ground. Things become more
-complicated when they do (e.g., controlling power to a component driven by the
-same microcontroller).
+Typical approach: GPIO → gate of N-channel MOSFET on low side, pull-down
+resistor between gate and drain. Works if MCU and load don't share common
+ground. Doesn't work when they do (like controlling a component powered by the
+same MCU).
-In that scenario, the source potential visible to the load is the difference
-between the gate and the threshold potentials of the MOSFET. For example, when
-the gate and the threshold potentials are 3.3 V and 1.5 V, the potential the
-load sees is 1.8 V. So, to use a low-side N-channel MOSFET, we need the gate
-potential to be higher than the source potential, which may not always be
-practical. The alternative would be a hide-side switch.
+Issue: source potential = gate potential - threshold voltage. Example: 3.3V
+gate - 1.5V threshold → 1.8V at load--not nearly enough for a servo. Raising
+the gate potential above source is not always practical. Solution: high-side
+switch.
## P-channel high-side switch
-The following schematic shows how a high-side P-channel MOSFET (M1) could
-switch power to a 6 V servo driven by a 3.3 V MCU.
-
![P-channel high-side switching circuit](p_high_side.png)
-When the microcontroller outputs low, the M2 N-channel MOSFET stops conducting.
-The R1 resistor pulls the gate of the M1 P-channel MOSFET up to +6 V, switching
-the servo off. When the microcontroller outputs high on the GPIO pin, M2's
-source-drain connection starts conducting, causing M1's gate potential to drop
-to 0 V, which switches on power to the servo.
+M1 is P-channel (high-side), M2 is N-channel (level converter). MCU output low
+→ M2 off → R1 pulls M1 gate to +6V → servo off. MCU output high → M2 conducts →
+M1 gate drops to 0V → servo on.
-## N-channel high-side switch
+Note: IRF9540 in the schematic doesn't work. V<sub>GS</sub> (-10V) for
+RDS<sub>on</sub> too much for 3.3V ATmega328P to drive. NDP6020P is the only
+suitable through-hole MOSFET I could find.
-The P-channel high-side switch would be the typical architecture for our use
-case. However, if we have access to a potential high enough to safely raise the
-gate potential above the threshold such that their difference outputs the source
-potential required to drive the load, we can switch on the high side using an
-N-channel MOSFET:
+## N-channel high-side switch
![N-channel high-side switching circuit](n_high_side.png)
-In the schematic, both M1 and M2 are N-channel MOSFETs. When the
-microcontroller output is low, M2 stops conducting. This causes the M1's gate
-potential to rise above the threshold, turning the servo on. Conversely, a high
-output on the GPIO line switches M2 on, which lowers M1's gate potential. This
-switches the servo off. The R2 pull-up resistor prevents the high impedance of
-the output pins at power-up from switching the servo on.
+Less common but works if you have voltage high enough to drive the gate. Both
+M1 and M2 are N-channel. MCU low → M2 off → M1 gate rises above threshold →
+servo on. MCU high → M2 on → M1 gate drops → servo off. R2 prevents
+high-impedance power-up from switching servo on.
-Both topologies require M2 to act as a level converter between circuits
-containing the microcontroller and the servo, converting between 0 V and +6 V
-or +9 V. M2 is a low-power signal converter carrying less than a milliamp of
-current. The gate-source threshold voltage of M2 must be lower than the MCU's
-supply voltage. 2N7000, 2N7002, and BSS138 are popular choices for M2.
+M2 needed in both topologies for level conversion (0V ↔ +6V or +9V). Carries
+<1mA. Gate-source threshold must be lower than MCU supply. Common choices:
+2N7000, 2N7002, BSS138.
-The D1 flyback diodes used in the two topologies safeguard the MOSFET from
-voltage spikes caused by inductive loads such as servos.
+Note: D1 flyback diodes protect MOSFETs from voltage spikes caused by inductive
+loads (servos, relays).
## A BJT alternative
-A Bipolar Junction Transistor (BJT) is a simpler, cheaper, and more widely
-available type of transistor that can be used as a switch.
-
![BJT architecture](bjt.png)
-In the schematic, when the MCU outputs high, Q2 starts conducting. Q2 amplifies
-Q1's base current. Unlike MOSFETs, which are voltage-driven, BJTs are driven by
-base current. Resistors R3 and R4 must be chosen carefully to output the
-desired base currents. <a
+Simpler, cheaper, more available. Q2 conducts when MCU outputs high. Q2
+amplifies Q1's base current. Unlike MOSFETs (voltage-driven), BJTs are
+current-driven. R3 and R4 must be calculated for desired base currents. <a
href="https://teachmetomake.wordpress.com/how-to-use-a-transistor-as-a-switch/"
-class="external" target="_blank" rel="noopener noreferrer">"How to choose a
-transistor as a switch"</a> is an excellent guide on using BJTs as electronic
-switches.
+class="external" target="_blank" rel="noopener noreferrer">Guide on BJT
+switches</a>.
+
+## Which topology?
-## Which topology to choose?
+MOSFETs preferred in professional work—more efficient when on. Harder to drive
+at 3.3V due to V<sub>GS</sub> requirements for full saturation (low
+R<sub>DS(on)</sub>).
-The professional community appears to prefer MOSFETs over BJTs. MOSFETs are
-more efficient when the switch is on. However, they are more challenging to
-drive, especially with a 3.3 V MCU, due to the V<sub>GS</sub> potentials
-required to achieve specified R<sub>DS(on)</sub> values (i.e., to turn them on
-fully).
+N-channel: Lower on-resistance, cheaper, more efficient than P-channel. Harder
+to drive high-side (gate must be above source—requires extra circuitry like
+MOSFET drivers).
-N-channel MOSFETs have lower on-resistance values, making them more efficient
-than P-channel ones. They are also cheaper. However, they are harder to drive
-on the high side as their gate potential must be higher than the source
-potential. This often requires extra circuitry such as MOSFET drivers.
+Used P-channel high-side for the door lock redesign. Simpler to drive from 3.3V
+MCU, no driver needed.
## Further reading
@@ -112,12 +84,12 @@ potential. This often requires extra circuitry such as MOSFET drivers.
- <a href="https://www.embeddedrelated.com/showarticle/809.php"
class="external" target="_blank" rel="noopener noreferrer">How to read
MOSFET datasheets</a>
- - <a src="https://teachmetomake.wordpress.com/how-to-use-a-transistor-as-a-switch/"
+ - <a href="https://teachmetomake.wordpress.com/how-to-use-a-transistor-as-a-switch/"
class="external" target="_blank" rel="noopener noreferrer">How to use a
transistor as a switch</a>
- - <a src="https://forum.digikey.com/t/guide-to-selecting-and-controlling-a-mosfet-for-3-3-vdc-logic-applications/42606"
+ - <a href="https://forum.digikey.com/t/guide-to-selecting-and-controlling-a-mosfet-for-3-3-vdc-logic-applications/42606"
class="external" target="_blank" rel="noopener noreferrer">Guide to
selecting and controlling a MOSFET for 3.3 VDC logic applications</a>
- - <a src="https://forum.digikey.com/t/driving-a-large-relay-from-a-3-3-vdc-microcontroller-using-an-npn-darlington-transistor/41751"
+ - <a href="https://forum.digikey.com/t/driving-a-large-relay-from-a-3-3-vdc-microcontroller-using-an-npn-darlington-transistor/41751"
class="external" target="_blank" rel="noopener noreferrer">Driving a large
relay from a 3.3 VDC microcontroller using an NPN Darlington transistor</a>