Il circuito di base: un MOSFET a canale N lato massa
Per carichi in corrente continua fino a qualche ampere l’interruttore va tra il carico e la massa: il carico sta tra il + dell’alimentatore e il drain del MOSFET, il source va a massa e il pin comanda il gate. È la commutazione lato massa (low-side), e permette a un pin a 3,3 V di comandare un carico a 12 o 24 V, perché la tensione di gate si misura rispetto al source, che sta a massa.
| Componente | Valore | Perché |
|---|---|---|
| MOSFET | Canale N logic level, con RDS(on) garantita alla tensione del tuo pin | Vedi la sezione successiva: è qui che si sbaglia più spesso |
| Resistenza di gate | 100 Ω, dal pin al gate | Limita il picco di corrente che carica la capacità del gate (3,3 V ÷ 100 Ω = 33 mA al massimo) e smorza le oscillazioni sui fili lunghi |
| Pull-down | 10 kΩ, tra gate e massa | Tiene spento il MOSFET mentre il pin è flottante durante reset e avvio |
| Diodo di ricircolo | In parallelo al carico, catodo (il lato con la fascia) verso il + | Motori, pompe, valvole, relè: dà un percorso alla corrente della bobina quando il MOSFET si spegne |
| Massa comune | Il − dell’alimentatore collegato al GND della scheda | Senza di essa la tensione di gate non ha riferimento e il MOSFET non commuta in modo affidabile |
Resistenza di gate e pull-down come nel nostro calcolatore del transistor come interruttore. Usa un pin che non sia di strapping (vedi gli errori comuni più sotto).
Scegliere un MOSFET logic level
Una riga del datasheet decide se un MOSFET funziona comandato dal tuo pin: RDS(on) massima a una VGS dichiarata. La tensione di soglia VGS(th) non è la tensione a cui il MOSFET è acceso: è quella a cui comincia appena a condurre, a 250 µA o 1 mA. Tra la soglia e la VGS più bassa con una RDS(on) garantita, il datasheet non promette nulla.
- Da un ESP32 (3,3 V): scegli un MOSFET con RDS(on) garantita a 2,5 V. Espressif indica il livello alto in uscita come almeno 0,8 × VDD con il pin che eroga corrente; un gate, una volta carico, non assorbe quasi nulla e quindi riceve quasi 3,3 V, ma una RDS(on) garantita a 2,5 V lascia margine.
- Da un Arduino Uno o Nano (5 V): basta una RDS(on) garantita a 4,5 V (o 4 V).
- «Logic level» nel nome o in un annuncio non è una garanzia. L’IRLZ44N, venduto da decenni come logic level, è garantito da 4 V: va bene a 5 V, non a 3,3 V.
| Canale N (esempi) | Contenitore, VDS | RDS(on) garantita | Da 3,3 V | Da 5 V |
|---|---|---|---|---|
| AO3400A (Alpha & Omega) | SOT-23, 30 V | 48 mΩ a 2,5 V, 32 mΩ a 4,5 V | Sì, circa 2 A | Sì |
| IRLML6344 (Infineon) | SOT-23, 30 V | 37 mΩ a 2,5 V, 29 mΩ a 4,5 V | Sì, circa 2,2 A | Sì |
| Si2302CDS (Vishay) | SOT-23, 20 V | 75 mΩ a 2,5 V, 57 mΩ a 4,5 V | Sì, circa 1,5 A | Sì; indicato come sconsigliato per nuovi progetti (NRND) |
| AOD4184A (Alpha & Omega) | TO-252 (DPAK), 40 V | 9,5 mΩ a 4,5 V, 7 mΩ a 10 V | Non garantito | Sì, ben oltre 5 A con abbastanza rame |
| IRLZ44N (Infineon) | TO-220, 55 V | 35 mΩ a 4 V, 25 mΩ a 5 V | Non garantito | Sì, fino a circa 7 A; progetto datato, ancora prodotto |
| IRLB8721PbF (Infineon) | TO-220, 30 V | 16 mΩ a 4,5 V | Non garantito | Sì, ma fuori produzione dal 2025; ancora diffuso nei kit |
| FQP30N06L (onsemi) | TO-220, 60 V | 45 mΩ a 5 V | Non garantito | Sì, ma fuori produzione dal 2023; onsemi indica come sostituto l’FQP50N06L |
| IRF520 (Vishay) | TO-220, 100 V | 270 mΩ solo a 10 V | No | No: non è logic level |
Valori massimi a 25 °C dai datasheet dei costruttori. Le correnti a 3,3 V tengono un SOT-23 intorno a un quarto di watt, su una scheda piccola (vedi la sezione sul calore); quelle a 5 V sono le più alte che il nostro calcolatore ammette in aria libera a 25 °C, con 25 °C di margine sotto la temperatura massima di giunzione, come nelle sue pagine dei singoli componenti. Secondo AOS, AO3400A e AOD4184A sono in piena produzione; Infineon indica l’IRLZ44N come ancora in produzione. Sono esempi, non consigli d’acquisto. Su qualsiasi alternativa controlla la RDS(on) garantita alla tua tensione di gate o a una più bassa, la VDS con margine sull’alimentazione (30 V per 12 V è la scelta comune), la VGS massima e la resistenza termica del contenitore. I componenti con lo stesso nome venduti da produttori alternativi hanno datasheet propri: leggi quello del pezzo che hai.
Il calore: perdite in conduzione e contenitore
Un MOSFET acceso del tutto si comporta come una piccola resistenza. Dissipa P = I² × RDS(on), e la giunzione si scalda di P × θJA rispetto all’aria intorno. La RDS(on) poi cresce con la temperatura, circa 1,5 volte a 125 °C, quindi un MOSFET caldo si scalda ancora di più; il nostro calcolatore la aumenta con la temperatura finché i due valori non coincidono.
P = I² × RDS(on)(Tj) + P(commutazione)
Tj = Ta + P × θJA
Un AO3400A che commuta 2 A, comandato da un pin a 3,3 V: 2² × 0,048 = 0,19 W a 25 °C, un po’ di più da caldo. Con il PWM a 5 kHz dissipa in tutto 0,26 W e la giunzione arriva a circa 58 °C: nessun problema. Il Si2302CDS nello stesso posto arriva a circa 104 °C: dentro i limiti, ma troppo caldo per lasciarlo chiuso in una scatola. I valori dei SOT-23 presuppongono le schede di prova dei costruttori, con un’area di rame sul drain; su una piazzola nuda scaldano di più.
- SOT-23: su un modulo piccolo, con meno rame di così, tienilo intorno a un quarto di watt: circa 2 A per un AO3400A, 2,2 A per un IRLML6344, 1,5 A per un Si2302CDS. Le pagine dei componenti del nostro calcolatore usano i valori dei costruttori e ammettono di più (3,4 A per l’AO3400A).
- TO-220 in aria libera: circa 62 °C/W, quindi 1 W alza la giunzione di circa 60 °C. Oltre 1,5–2 W aggiungi un dissipatore; il calcolatore ti dice quanti °C/W deve avere.
- TO-252 (DPAK): il dissipatore è il rame della scheda: AOS indica 55 °C/W per l’AOD4184A su un pollice quadrato di rame.
Scegli la scheda, il MOSFET e il carico: il calcolatore ti dà il verdetto, il calore, la temperatura di giunzione, il diodo e alternative migliori quando un componente non va.Apri il calcolatore del transistor
PWM: frequenza, carica di gate e perdite di commutazione
Regolare la luminosità dei LED: qualsiasi frequenza sopra 1,25 kHz circa evita lo sfarfallio visibile. Sull’ESP32 originale ledcAttach(pin, 5000, 13) dà 5 kHz con 13 bit di risoluzione (Arduino-ESP32 3.x); analogWrite() usa 1 kHz e 8 bit. L’analogWrite() di un Arduino Uno lavora a 490 Hz sui pin 3, 9, 10 e 11 e a 980 Hz sui pin 5 e 6, con 8 bit.
Motori e pompe: l’avvolgimento livella la corrente, ma a frequenze udibili il motore fischia. A circa 20 kHz si è oltre la soglia dell’udito: su un ESP32 restano 11 bit; su un Uno il Timer1 sui pin 9 e 10 arriva a 20 kHz con TOP = 799, circa 9,6 bit.
Perdite di commutazione. A ogni fronte il MOSFET attraversa uno stato di conduzione parziale, e il pin sposta la carica di gate Qg con appena 20 mA circa. Un IRLZ44N (48 nC) comandato da un pin dell’Uno impiega fino a circa 2,4 µs per fronte. A 490 Hz costa al massimo 42 mW; a 20 kHz, con un motore da 3 A, arriva fino a 1,73 W, abbastanza perché il calcolatore chieda un dissipatore. Sono entrambi limiti superiori: il calcolatore conta tutta la Qg, mentre la conduzione parziale corrisponde solo a una parte di essa. La perdita reale è più bassa, ma a 20 kHz resta superiore a quella in conduzione. Un PWM veloce vuole un MOSFET con poca carica di gate, oppure un gate driver.
Scegli il chip e la frequenza: il calcolatore ti dà la risoluzione del duty, la frequenza esatta e il codice per Arduino, ESPHome e gli SDK.Apri il calcolatore PWM
Quando serve un gate driver
Ne serve uno in due casi: un MOSFET adatto al carico ma non garantito alla tensione del pin (un motore da 3 A da un ESP32 a 3,3 V), oppure un PWM così veloce che il pin non riesce a spostare in fretta la carica di gate. Un gate driver riceve il segnale logico e comanda il gate con un ampere o più, da un’alimentazione di 10–12 V. Per il motore da 3 A a 20 kHz da un ESP32, il nostro calcolatore propone un IRLZ44N comandato a 12 V da un driver: dissipa 0,52 W e resta intorno a 57 °C.
| Gate driver (esempi) | Caratteristiche | Perché va bene |
|---|---|---|
| Microchip TC4427 | Due canali non invertenti, 1,5 A di picco, alimentazione 4,5–18 V, livello alto in ingresso da 2,4 V | Accetta un segnale a 3,3 V; c’è anche in DIP a 8 pin, comodo su breadboard |
| Texas Instruments UCC27517A | Un canale, 4 A in erogazione e in assorbimento, 4,5–18 V, ingressi TTL/CMOS indipendenti dall’alimentazione | Accetta un segnale a 3,3 V; SOT-23-5, il sostituto che TI indica per l’UCC27517 |
Dalle pagine prodotto di Microchip e TI. Su qualsiasi alternativa controlla che la soglia d’ingresso stia sotto il tuo livello alto, che l’alimentazione copra la tensione di gate che vuoi, e tieni il gate sotto l’80 % della VGS massima del MOSFET: 12 V vanno bene per un gate da ±20 V, non per uno da ±12 V.
Per una commutazione lenta basta un transistor bipolare: un piccolo NPN che porta il gate a massa, con una resistenza che lo tira a 12 V, dà al gate un’escursione di 12 V da un pin a 3,3 V. Accende il MOSFET solo alla velocità con cui la resistenza di pull-up carica il gate, quindi va bene per acceso/spento e PWM lenti, non per 20 kHz. Inoltre inverte la logica. Finché il pin è basso o flottante (durante reset, avvio e caricamento del firmware, o con la scheda spenta), il pull-up manda in conduzione il MOSFET e il carico si accende: il contrario di quello che fa il pull-down da 10 kΩ nel circuito standard. Se il carico deve restare spento finché non lo comandi, aggiungi un secondo stadio NPN che inverta di nuovo la logica, oppure usa un gate driver non invertente come il TC4427, con 10 kΩ tra il suo ingresso e massa.
Lato positivo con un MOSFET a canale P
Alcuni carichi devono restare collegati a massa: un modulo che condivide la massa con il microcontrollore attraverso una linea dati, o un dispositivo da staccare dal positivo. Allora l’interruttore va sul +. Un MOSFET a canale P ha il source sull’alimentazione; una resistenza tra gate e source lo tiene spento, e portare giù il gate lo accende. Su 12 V un pin a 3,3 V non può farlo direttamente (il suo livello alto resta comunque 8,7 V sotto il source, quindi il MOSFET non si spegne mai): ci pensa un piccolo NPN.
Con un AO3401A a 12 V e 1 A, grazie a quel partitore il calcolatore porta il gate a circa 9 V sotto il source, e il MOSFET dissipa 62 mW (apri l’esempio). La logica non è invertita: pin alto, carico acceso. Come traslatore di livello va bene qualsiasi piccolo NPN: 2N3904, BC547 o l’MMBT3904 in SMD.
| Canale P (esempi) | Caratteristiche | Va bene quando |
|---|---|---|
| AO3401A (Alpha & Omega) | SOT-23, −30 V, 85 mΩ a −2,5 V, 60 mΩ a −4,5 V, VGS ±12 V | Fino a circa 2 A; con alimentazioni sopra 9,6 V circa aggiungi il partitore R2 |
| AOD4185 (Alpha & Omega) | TO-252, −40 V, 20 mΩ a −4,5 V, 15 mΩ a −10 V, VGS ±20 V | Diversi ampere; a 12 V non serve il partitore |
| IRF9540N (Infineon) | TO-220, −100 V, 117 mΩ solo a −10 V, VGS ±20 V | Va bene a 12 V, dove il gate ha un’escursione di 12 V: 0,55 W e circa 59 °C a 2 A in aria libera |
Dai datasheet dei costruttori (secondo AOS l’AOD4185 è in piena produzione). Con un canale P, qui, il «logic level» non c’entra: l’escursione del gate arriva dall’alimentazione del carico, quindi confronta la VGS massima con quella.
Carichi tipici e quale diodo usare
| Carico | Corrente | MOSFET (esempi) | Diodo di ricircolo |
|---|---|---|---|
| Striscia LED a 12 V (monocolore) | Dai watt al metro della striscia: 24 W fanno 2 A | AO3400A da 3,3 V fino a circa 2 A; IRLZ44N o AOD4184A da 5 V per correnti maggiori | Nessuno: è resistiva |
| Motore in corrente continua o pompa a 12 V | La corrente a regime, e diverse volte tanto all’avvio o a rotore bloccato | IRLZ44N o AOD4184A da 5 V; un gate driver da 3,3 V | Schottky: 1N5819 fino a 1 A, SS34 fino a 3 A |
| Elettrovalvola a 12 V | Dalla bobina: 12 V ÷ 24 Ω = 0,5 A | AO3400A | 1N4007 per acceso/spento |
| Bobina di relè a 12 V | Da 30 a 80 mA circa | AO3400A, oppure un modulo relè già pronto | 1N4148 |
I diodi che sceglie il nostro calcolatore: 1N4148 (75 V, 150 mA medi), 1N4007 (1000 V, 1 A), 1N5819 Schottky (40 V, 1 A), SS34 Schottky (40 V, 3 A). Con il PWM il diodo conduce a ogni ciclo: usa uno Schottky adatto alla corrente del carico.
Dimensiona MOSFET e diodo di un motore sulla corrente a rotore bloccato, non su quella a regime: guarda il datasheet del motore, oppure misura la resistenza dell’avvolgimento e dividi per essa la tensione di alimentazione. Un semplice diodo in parallelo a un’elettrovalvola o a un relè ne rallenta un po’ il rilascio; se il tempo di rilascio conta, le note applicative del costruttore della valvola o del relè indicano le alternative.
La trappola del modulo IRF520, e moduli migliori
Il diffusissimo modulo rosso «IRF520 MOSFET driver» collega il pin del segnale quasi direttamente al gate di un IRF520. La soglia dell’IRF520 può arrivare a 4 V e la sua RDS(on) è garantita solo a 10 V. Da un ESP32 può non accendersi affatto (per il nostro calcolatore resta spento); da un Arduino conduce solo in parte (non garantito a 5 V) e scalda con pochi ampere.
I moduli costruiti attorno all’AOD4184A (spesso venduti come moduli «D4184») sono un vero passo avanti da 5 V: 9,5 mΩ garantiti a 4,5 V. Da 3,3 V però non sono garantiti nemmeno loro, perché la soglia dell’AOD4184A arriva a 2,6 V e sotto 4,5 V non viene indicata alcuna RDS(on). Qualunque cosa dica l’annuncio, leggi la sigla sul MOSFET e cerca il suo datasheet.
Esempi completi
A. Una striscia LED a 12 V da 2 A, regolata in PWM da un ESP32
AO3400A sul GPIO25 con 100 Ω e 10 kΩ, niente diodo, PWM a 5 kHz con 13 bit. Il calcolatore: 0,26 W di calore (42 mW dovuti alla commutazione), giunzione a circa 58 °C con 25 °C di temperatura ambiente, 109 mV persi sul MOSFET. Un IRLML6344 nello stesso posto: 0,2 W, 45 °C. Nel codice, 4096 su 8192 è il 50 %.
const int STRIP = 25;
void setup() {
ledcAttach(STRIP, 5000, 13);
}
void loop() {
ledcWrite(STRIP, 4096);
}
Apri questo esempio nel calcolatore del transistor, poi cambia la corrente della striscia o la frequenza del PWM.Esempio A nel calcolatore
B. Una pompa a 12 V da 3 A, comandata da un Arduino Uno
IRLZ44N sul pin 9 con 100 Ω e 10 kΩ, uno Schottky SS34 in parallelo alla pompa, analogWrite() a 490 Hz. Il calcolatore: 0,29 W, di cui al massimo 42 mW di commutazione, circa 43 °C, senza bisogno di dissipatore. Un AOD4184A in DPAK, inserito come componente personalizzato, dà 88 mW di perdita in conduzione: i componenti personalizzati non hanno una carica di gate, e i suoi 17 nC (massimo a 4,5 V) aggiungono al massimo 15 mW a 490 Hz. Lo stesso IRLZ44N da un ESP32 non è garantito: lì usa un gate driver, oppure un AO3400A se la pompa assorbe meno di 2 A.
Apri l’esempio B: Arduino Uno, IRLZ44N, pompa da 3 A a 490 Hz.Esempio B nel calcolatore
C. Un’elettrovalvola a 12 V da un ESP32
La bobina della valvola misura 24 Ω, quindi assorbe 0,5 A e 6 W a 12 V. Un AO3400A con un 1N4007 in parallelo alla bobina, acceso e spento senza PWM: 12 mW nel MOSFET, praticamente freddo. Una bobina di relè a 12 V da circa 70 mA è ancora più facile: il calcolatore sceglie un 1N4148.
Apri l’esempio C: ESP32, AO3400A, valvola da 0,5 A con il suo diodo.Esempio C nel calcolatore
Errori comuni
- Nessuna massa comune. Il − dell’alimentatore deve essere collegato al GND della scheda, altrimenti la tensione di gate non significa nulla.
- Gate flottante all’avvio. Senza il pull-down da 10 kΩ il carico può accendersi un istante all’accensione o durante il caricamento del firmware, mentre il pin è ancora un ingresso.
- Un pin di strapping. Su un ESP32 un pull-down da 10 kΩ su GPIO0 lo tiene basso al reset e la scheda parte in modalità download; anche GPIO2, 5, 12 e 15 sono pin di strapping, e su alcune schede GPIO5, 14 e 15 mostrano attività all’avvio. GPIO4, 13, da 16 a 19, da 21 a 23, da 25 a 27, 32 e 33 sono scelte più sicure (non 16 e 17 sui moduli WROVER, che li usano per la PSRAM), come mostra il nostro pinout dell’ESP32.
- Niente diodo su motore, pompa, valvola o relè. Il picco di tensione allo spegnimento può superare la VDS del MOSFET e distruggerlo, spesso dopo che ha funzionato per un po’.
- Fidarsi della VGS(th). Una soglia di 1–2 V non garantisce che un MOSFET funzioni a 3,3 V: conta la RDS(on) alla tua tensione di gate.
- Un MOSFET sul lato positivo comandato direttamente dal pin. Un canale N sul + vuole un gate sopra l’alimentazione; un canale P su 12 V non si spegne mai da 3,3 V.
- Alimentare il carico attraverso la scheda. Il pin 5 V di una scheda di sviluppo e le sue piste non sono fatti per gli ampere: porta l’alimentazione del carico direttamente al carico e al MOSFET.
Sicurezza
- Mai commutare la tensione di rete con questi circuiti. I MOSFET di questa guida sono per la corrente continua a bassa tensione. Per carichi a 230 V usa un modulo relè certificato, un relè a stato solido certificato o una presa smart già pronta, e lascia i collegamenti alla rete a una persona qualificata dove le norme lo richiedono.
- Un fusibile sull’alimentazione a bassa tensione. In caso di cortocircuito un alimentatore da 12 V capace di 10 A li eroga tutti; un fusibile dimensionato sulla sezione del cavo protegge i collegamenti.
- Calore. Un TO-220 che dissipa 2 W in aria libera ha la giunzione ben sopra i 100 °C e la linguetta scotta: montalo su un dissipatore e tienilo lontano dalla plastica.
- Spunto e rotore bloccato. Motori, pompe e carichi capacitivi assorbono all’avvio diverse volte la corrente a regime: dimensiona di conseguenza alimentatore, cavi e MOSFET.
Domande frequenti
Un ESP32 può comandare direttamente un MOSFET?
Sì, se la RDS(on) del MOSFET è garantita a 2,5 V: AO3400A o IRLML6344. Aggiungi 100 Ω in serie al gate e 10 kΩ tra gate e massa. Per MOSFET più grandi garantiti solo a 4,5 V, aggiungi un gate driver.
L’IRLZ44N è un MOSFET logic level?
Da 5 V sì: la sua RDS(on) è garantita a 4 V e a 5 V. Da un pin a 3,3 V di un ESP32 non è garantito; usa un AO3400A, oppure un gate driver con l’IRLZ44N.
Perché la VGS(th) non è la tensione che accende il MOSFET?
Perché si misura a una corrente minuscola, 250 µA o 1 mA. Un MOSFET è acceso del tutto solo alle tensioni di gate indicate insieme a una RDS(on); tra la soglia e quelle tensioni il datasheet non promette nulla.
Servono la resistenza di gate e il pull-down?
Il pull-down da 10 kΩ sì: tiene spento il carico mentre il pin è flottante all’avvio. La resistenza da 100 Ω in serie limita il picco di corrente nel gate e smorza le oscillazioni; con fili corti è più una buona abitudine che una necessità.
Una striscia LED ha bisogno del diodo di ricircolo?
No, una semplice striscia LED è un carico resistivo. Motori, pompe, elettrovalvole, relè e ventole sì, in parallelo al carico con il catodo verso il +.
Che frequenza PWM devo usare?
Per i LED qualsiasi valore sopra 1,25 kHz circa; su un ESP32 5 kHz con 13 bit sono un buon punto di partenza. Per i motori circa 20 kHz per evitare il fischio, con un MOSFET a bassa carica di gate o un gate driver, e un diodo Schottky.
Quando il MOSFET ha bisogno di un dissipatore?
Quando I² × RDS(on), più le perdite di commutazione, porta la giunzione troppo vicino al limite: circa 1,5–2 W per un TO-220 in aria libera. Un MOSFET logic level che commuta qualche ampere di solito dissipa molto meno di 1 W.
Posso commutare i 230 V con un MOSFET?
Non con questi circuiti, e non in sicurezza su una scheda hobbistica. Per i carichi di rete usa un modulo relè certificato, un relè a stato solido o una presa smart.
Fonti
- Alpha & Omega: pagina prodotto dell’AO3400A
- Alpha & Omega: datasheet dell’AO3400A
- Infineon: datasheet dell’IRLML6344
- Vishay: datasheet del Si2302CDS
- Octopart: ciclo di vita del Si2302CDS-T1-GE3
- Infineon: datasheet dell’IRLB8721PbF
- Octopart: ciclo di vita dell’IRLB8721PbF
- Infineon (International Rectifier): datasheet dell’IRLZ44NPbF
- Infineon: pagina prodotto dell’IRLZ44N
- Alpha & Omega: pagina prodotto dell’AOD4184A
- Alpha & Omega: datasheet dell’AOD4184A
- onsemi: avviso di fine produzione PD24792XB dell’FQP30N06L
- Vishay: datasheet dell’IRF520
- Alpha & Omega: datasheet dell’AO3401A
- Alpha & Omega: pagina prodotto dell’AOD4185
- Infineon: datasheet dell’IRF9540N
- Diodes Incorporated: datasheet 1N4001–1N4007
- onsemi: datasheet 1N5817–1N5819
- onsemi: datasheet SS32–S310 (SS34)
- Microchip: TC4427
- Texas Instruments: UCC27517 e UCC27517A
- Espressif: API LEDC di Arduino-ESP32
- Arduino: riferimento di analogWrite()
- Espressif: datasheet della serie ESP32