Basi · 14 min di lettura

Cos'è un transistor? Funzionamento, NPN, PNP e uso con Arduino

Cos'è un transistor e come funziona? NPN e PNP, calcolo della resistenza di base, BC547, 2N2222A e TIP120 a confronto e come pilotare motori e relè con Arduino.

Un transistor è un componente a semiconduttore con tre piedini che usa una piccola corrente per controllarne una molto più grande. Ha due funzioni di base: accendere e spegnere un carico come un interruttore elettronico e fare da amplificatore che ingrandisce un segnale debole. Un pin di Arduino può fornire in sicurezza solo circa 20 mA; bastano per un LED, ma non per un motore, un relè o una striscia LED a 12 V. Qui entra in gioco il transistor: con pochi milliampere dal pin controlla centinaia di milliampere o anche diversi ampere.

Il transistor è stato inventato nel 1947 ai Bell Labs da John Bardeen, Walter Brattain e William Shockley; ha sostituito le valvole termoioniche e ha portato i computer nelle nostre tasche. Oggi il processore del tuo smartphone contiene miliardi di minuscoli transistor, e anche l'ATmega328P, il cervello di Arduino, ne contiene moltissimi. In questo articolo imparerai la differenza tra NPN e PNP, il compito di base, collettore ed emettitore, come calcolare la resistenza di base, come si confrontano BC547, 2N2222A e TIP120, come pilotare motori, relè e strisce LED con Arduino, ESP32 e Raspberry Pi Pico e come riconoscere i piedini con il multimetro.

Transistor NPN S8050 e il suo simbolo
Transistor NPN S8050 in contenitore TO-92: con la faccia stampata verso di te, i piedini da sinistra a destra sono emettitore (1), base (2) e collettore (3). Nel simbolo NPN a destra la freccia sull'emettitore punta verso l'esterno.

Cos'è un transistor e come funziona?

Puoi immaginare un transistor come un rubinetto: per girare la manopola basta pochissima forza, ma nel tubo scorre molta acqua. Nel transistor la manopola è la corrente di base e l'acqua nel tubo è la corrente principale che va dal collettore all'emettitore. Il rapporto tra le due è il guadagno di corrente del transistor, indicato nei datasheet come hFE o β (beta): IC = hFE × IB. Per esempio, se dai 0,1 mA alla base di un BC547 con hFE di 200, nel collettore possono passare fino a 20 mA. Perché un transistor al silicio conduca, tra base ed emettitore devono esserci circa 0,6–0,7 V; è la tensione di soglia della sua giunzione, che si comporta come un diodo. La corrente che esce dall'emettitore è la somma delle due: IE = IC + IB.

PiedinoSiglaFunzioneDove va in un interruttore NPN?
BaseBTerminale di controllo; qui entra la corrente piccolaAl pin di Arduino tramite una resistenza
CollettoreCQui entra la corrente del caricoAl negativo del carico
EmettitoreEDa qui esce la corrente totale (IE = IC + IB)A GND

Differenza tra transistor NPN e PNP

I transistor bipolari (BJT) sono formati da tre strati di semiconduttore. Nel transistor NPN il sottile strato P al centro è la base; quando la base è circa 0,7 V più positiva dell'emettitore, la corrente scorre dal collettore all'emettitore. Nel PNP è tutto al contrario: l'emettitore va al positivo dell'alimentazione e, quando la base viene portata circa 0,7 V sotto l'emettitore, la corrente scorre dall'emettitore al collettore. Il modo più semplice per ricordare il simbolo è la freccia sull'emettitore: nell'NPN punta verso l'esterno, nel PNP verso l'interno. Nei progetti con Arduino l'NPN è molto più diffuso, perché l'emettitore va direttamente a GND e il transistor si accende quando il pin è HIGH; il carico si mette tra il positivo e il collettore. Questa si chiama commutazione lato basso (low-side).

CaratteristicaNPNPNP
Freccia nel simboloEsce dall'emettitoreEntra nell'emettitore
L'emettitore va aGND (negativo)Positivo dell'alimentazione (+)
Per accenderlo la base è≈0,7 V sopra l'emettitore (pin HIGH)≈0,7 V sotto l'emettitore (pin LOW)
Verso della corrente principaleDal collettore all'emettitoreDall'emettitore al collettore
Posizione del caricoTra positivo e collettore (lato basso)Tra collettore e GND (lato alto)
Modelli comuniBC547, S8050, 2N2222A, BC337, TIP120BC557, S8550, 2N2907A, BC327, TIP125

Zone di funzionamento: interdizione, zona attiva e saturazione

ZonaCondizioneCorrente di collettoreVCEUso
InterdizioneVBE < ≈0,6 V, nessuna corrente di baseQuasi zeroVicina alla tensione di alimentazioneInterruttore APERTO
Zona attiva (lineare)VBE ≈ 0,65–0,7 V, corrente di base mediaIC = hFE × IBUn valore intermedioAmplificatore
SaturazioneIB molto maggiore di IC / hFELimitata dal carico e dall'alimentazione0,1–0,3 V (0,8–2 V in un Darlington)Interruttore CHIUSO

Quando usi il transistor come interruttore lo tieni solo ai due estremi: completamente spento (interdizione) o completamente acceso (saturazione). La zona attiva intermedia serve agli amplificatori e in un interruttore non è desiderata, perché la potenza dissipata dal transistor è P = VCE × IC. Un 2N2222A in saturazione a 150 mA perde al massimo 0,3 V e produce solo 45 mW di calore; se alla stessa corrente resta mezzo aperto e perde 3 V, dissipa 450 mW. È molto vicino al limite di 625 mW del contenitore TO-92, e il transistor scotta al punto da non poterlo toccare. Per questo nei circuiti di commutazione si dà sempre alla base abbastanza corrente da portare il transistor con sicurezza in saturazione.

Il transistor come amplificatore

Quando lavora in zona attiva, il transistor trasforma piccole variazioni sulla base in variazioni più grandi sul collettore. Per esempio, in un transistor con hFE di 200, se la corrente di base aumenta di 10 µA la corrente di collettore aumenta di 2 mA; su una resistenza di collettore da 2,2 kΩ questo significa una variazione di tensione di 4,4 V. Preamplificatori microfonici, radio e amplificatori audio funzionano con questo principio. Il circuito più diffuso è l'amplificatore a emettitore comune: un partitore di tensione porta la base al centro della zona attiva, una resistenza sull'emettitore (RE) rende il circuito stabile rispetto alla temperatura e il guadagno di tensione è circa RC / RE, cioè circa 10 volte con 4,7 kΩ e 470 Ω. Persino i microfoni electret contengono un minuscolo transistor (un JFET) che rinforza il segnale. Nei progetti con Arduino, per amplificare i segnali dei sensori si usano di solito circuiti integrati; per questo leggi Cos'è un amplificatore operazionale?. Il resto dell'articolo si concentra sul transistor come interruttore, quello che ti servirà più spesso con Arduino.

Collegare un transistor come interruttore ad Arduino

Il circuito che userai più spesso è un interruttore lato basso con transistor NPN. Il positivo del carico (motore, bobina del relè, striscia LED) va al positivo dell'alimentazione esterna, il suo negativo al collettore del transistor. L'emettitore va a GND. Il pin di Arduino si collega alla base sempre tramite una resistenza, che limita sia la corrente prelevata dal pin sia la corrente di base. Una resistenza da 10 kΩ tra base e GND impedisce al transistor di accendersi da solo mentre il pin è flottante all'accensione o durante un reset. In questo schema il transistor apre e chiude solo il percorso del carico verso GND, quindi il carico può funzionare a 12 V mentre Arduino lavora a 5 V.

CollegamentoArduino UnoESP32Raspberry Pi Pico
Pin di controllo (ingresso della resistenza di base)D9 (PWM) o D7GPIO 18GP15
Resistenza di pull-down base–GND10 kΩ10 kΩ10 kΩ
EmettitoreGNDGNDGND
CollettoreNegativo (−) del caricoNegativo (−) del caricoNegativo (−) del carico
Positivo (+) del caricoAlimentazione esterna + (es. 12 V)Alimentazione esterna + (es. 12 V)VBUS (5 V) o alimentazione esterna +
Negativo (−) dell'alimentazione esternaGND di Arduino (massa comune)GND dell'ESP32 (massa comune)GND del Pico (massa comune)
L'errore più comune è dimenticare la massa comune: se il negativo dell'alimentazione esterna non è collegato al GND di Arduino, la corrente di base non riesce a chiudere il circuito e il carico non funziona affatto. Il secondo errore è collegare il pin alla base senza resistenza; poiché la giunzione base-emettitore si comporta come un diodo, il pin finisce quasi in cortocircuito e possono rompersi sia il pin sia il transistor. Non alimentare un motore o una striscia LED dal pin 5V di Arduino; usa un alimentatore esterno.

Calcolo della resistenza di base: hFE e saturazione

Per scegliere la resistenza di base ti servono due dati: la corrente assorbita dal carico (IC) e l'hFE minimo riportato nel datasheet del transistor. Anche nello stesso modello l'hFE varia molto da esemplare a esemplare, con la temperatura e con la corrente; nel BC547 va da 110 a 800. Per questo si calcola con il valore minimo, non con quello tipico, e il risultato si moltiplica per un margine di sicurezza tra 2 e 10. Le formule sono: IB = (IC / hFE) × margine e RB = (Vpin − VBE) / IB. Vpin è 5 V su Arduino Uno e 3,3 V su ESP32 e Pico; VBE è circa 0,7 V per un transistor normale e circa 1,4 V per un Darlington come il TIP120. Una scorciatoia molto usata è considerare un hFE di 10 per la saturazione (beta forzato); i datasheet indicano la tensione di saturazione proprio in questa condizione.

  1. Trova la corrente del carico: un relè da 5 V con bobina da 70 Ω assorbe, secondo la legge di Ohm, 5 / 70 ≈ 71 mA. Per il calcolo puoi usare lo strumento Legge di Ohm.
  2. Scegli il transistor: 71 mA sono molto vicini al limite di 100 mA del BC547; il 2N2222A, che regge 600 mA, è più sicuro.
  3. Calcola la corrente di base: con un beta forzato di 10, IB = 71 / 10 ≈ 7 mA.
  4. Calcola la resistenza: su Uno RB = (5 − 0,7) / 0,007 ≈ 614 Ω; si sceglie il valore standard superiore, 680 Ω, e la corrente di base diventa circa 6,3 mA.
  5. Ripeti per le schede a 3,3 V: su ESP32 o Pico RB = (3,3 − 0,7) / 0,007 ≈ 371 Ω. Va bene il valore standard successivo, 390 Ω, oppure il più comune 470 Ω (circa 5,5 mA); è comunque un beta forzato di circa 13.
  6. Verifica: la corrente del pin deve restare sotto i 20 mA, la corrente massima del transistor deve essere almeno 1,5 volte quella del carico e la potenza dissipata (VCE(sat) × IC ≈ 0,2 V × 71 mA ≈ 14 mW) molto al di sotto del limite del contenitore.
Carico (corrente)Transistor consigliatoArduino Uno (5 V)ESP32 / Pico (3,3 V)
Gruppo di LED, buzzer (20–50 mA)BC547, S80502,2 kΩ (≈2 mA)1,2 kΩ (≈2,2 mA)
Bobina di relè da 5 V (70–90 mA)2N2222A, BC337, S8050680 Ω (≈6,3 mA)470 Ω (≈5,5 mA)
Piccolo motore DC, striscia LED corta (0,3–1 A)TIP1201 kΩ (≈3,6 mA)470 Ω (≈4 mA)
Oltre 1,5 A (motore grande, striscia LED lunga)MOSFET logic levelIRLZ44N; 220 Ω al gate, 10 kΩ gate–GNDIRLB8721; 220 Ω al gate, 10 kΩ gate–GND
Questi valori sono un punto di partenza; controlla la corrente massima e l'ordine dei piedini del tuo transistor nello strumento Piedinatura dei transistor. Una volta montato il circuito, misurare con il multimetro la tensione collettore-emettitore è il controllo migliore: se è sotto 0,3 V in un transistor normale o sotto 1,5 V in un Darlington, il transistor è in saturazione.

BC547, 2N2222A e TIP120: confronto tra i transistor più diffusi

ModelloTipo / contenitoreVCEOIC continuahFEPiedinaturaUso tipico
BC547NPN / TO-9245 V100 mA110–800 (gruppi A, B, C)C-B-ELED, buzzer, commutazione di segnali
BC557PNP / TO-9245 V100 mA125–800C-B-EComplementare PNP del BC547, commutazione lato alto
S8050NPN / TO-9225 V500 mA85–300 (secondo il gruppo)E-B-CKit per principianti, moduli relè
2N2222ANPN / TO-9240 V600 mA100–300 (a 150 mA)E-B-CRelè, piccoli motori, ventole
BC337NPN / TO-9245 V800 mA100–630C-B-ERelè, gruppi di LED, motorini a vibrazione
TIP120NPN Darlington / TO-22060 V5 AAlmeno 1000B-C-EMotori DC, strisce LED, solenoidi

La piedinatura si legge da sinistra a destra con la faccia piatta stampata verso di te e i piedini verso il basso. Attenzione: BC547 e 2N2222A hanno l'ordine invertito (C-B-E ed E-B-C); se sostituisci l'uno con l'altro devi scambiare collettore ed emettitore. I 2N2222 in contenitore metallico (TO-18) e le copie di produttori diversi possono avere un ordine diverso; nel dubbio verifica con il multimetro. Il TIP120 è un transistor Darlington: contiene due transistor in cascata, quindi ha un guadagno di almeno 1000 e si può pilotare direttamente da un pin di Arduino con una resistenza da 1 kΩ. Il prezzo è una caduta di 1–2 V e il calore che ne deriva: a 1 A dissipa circa 1 W, e un contenitore TO-220 senza dissipatore sale di circa 60 °C sopra la temperatura ambiente. Anche le schede driver già pronte sono fatte di transistor: la scheda ULN2003 del motore passo-passo 28BYJ-48 contiene sette Darlington e il modulo L298N due ponti H realizzati con transistor.

Pilotare un motore DC con Arduino: TIP120 e diodo di ricircolo

Ora regoliamo con un potenziometro la velocità di un piccolo motore DC da 6–12 V. Il pin PWM 9 di Arduino va alla base del TIP120 tramite una resistenza da 1 kΩ, e il motore si collega tra il positivo dell'alimentazione esterna e il collettore del TIP120; l'emettitore va a GND. I terminali esterni del potenziometro vanno a 5V e GND, il cursore ad A0. In parallelo al motore, in senso inverso, si mette un diodo di ricircolo (flyback: 1N4007 o il più veloce 1N5819): il catodo, segnato da una fascetta, verso il positivo e l'altro capo verso il collettore. Il segnale PWM accende e spegne il transistor centinaia di volte al secondo, e il motore gira più piano o più veloce in base alla tensione media.

Arduino (C++)
1// TIP120 ile DC motor hız kontrolü / DC motor speed control with a TIP120
2const int MOTOR_PIN = 9;    // PWM pini, 1 kΩ ile TIP120 beyzine / PWM pin, to the TIP120 base via 1 kΩ
3const int POT_PIN = A0;     // potansiyometre orta ucu / potentiometer wiper
4
5void setup() {
6  pinMode(MOTOR_PIN, OUTPUT);
7  Serial.begin(9600);
8}
9
10void loop() {
11  int pot = analogRead(POT_PIN);            // 0–1023
12  int speed = map(pot, 0, 1023, 0, 255);    // PWM değerine çevir / convert to a PWM value
13  if (speed < 40) speed = 0;                // çok düşükte motor yalnızca vızıldar / too low, the motor only hums
14  analogWrite(MOTOR_PIN, speed);
15  Serial.println(speed);
16  delay(50);
17}
Diodo raddrizzatore usato come diodo di ricircolo
Diodo raddrizzatore in contenitore DO-41 (tipo 1N4007): collegato in senso inverso ai capi dei carichi induttivi, protegge il transistor dal picco di tensione allo spegnimento. Il catodo è indicato dalla fascetta sul corpo.
I carichi induttivi come motori, relè, solenoidi e ventole restituiscono l'energia accumulata nella bobina sotto forma di un picco di tensione inverso nel momento in cui la corrente viene interrotta (V = L × di/dt). Questo picco può arrivare a decine o anche centinaia di volt; senza diodo perfora il transistor o fa riavviare Arduino. Se monti il diodo al contrario, l'alimentazione va in cortocircuito appena il transistor si accende. I carichi senza bobina, come strisce LED e resistenze, non hanno bisogno del diodo. Per saperne di più sui tipi di diodo leggi Cos'è un diodo?.

Pilotare un relè: relè da 5 V con un 2N2222A

I moduli relè già pronti contengono questo circuito: un piccolo transistor, una resistenza di base e un diodo di ricircolo. Se usi un relè da 5 V nudo, costruisci tu lo stesso circuito: la bobina del relè tra 5V e il collettore del 2N2222A, un diodo 1N4007 in senso inverso ai capi della bobina e il pin D7 collegato alla base tramite 680 Ω. Il codice qui sotto eccita il relè quando scrivi 1 nel Monitor seriale e lo rilascia quando scrivi 0. Prima di commutare i 230 V con i contatti del relè, leggi assolutamente le regole di sicurezza in Cos'è un modulo relè?.

Arduino (C++)
1// 2N2222A ile 5 V röle sürme / Driving a 5 V relay with a 2N2222A
2const int RELAY_PIN = 7;    // 680 Ω ile transistör beyzine / to the transistor base via 680 Ω
3
4void setup() {
5  pinMode(RELAY_PIN, OUTPUT);
6  digitalWrite(RELAY_PIN, LOW);             // açılışta kapalı / off at startup
7  Serial.begin(9600);
8  Serial.println("1: röle açık / relay on, 0: röle kapalı / relay off");
9}
10
11void loop() {
12  if (Serial.available() > 0) {
13    char c = Serial.read();
14    if (c == '1') {
15      digitalWrite(RELAY_PIN, HIGH);        // transistör doyumda, röle çeker / transistor saturated, relay pulls in
16      Serial.println("Röle açık / relay on");
17    } else if (c == '0') {
18      digitalWrite(RELAY_PIN, LOW);         // transistör kesimde, röle bırakır / transistor cut off, relay releases
19      Serial.println("Röle kapalı / relay off");
20    }
21  }
22}

Usare i transistor con ESP32 e Raspberry Pi Pico

I pin di ESP32 e Pico forniscono 3,3 V, quindi devi calcolare la resistenza di base per 3,3 V; una resistenza da 1 kΩ scelta per 5 V dà a un TIP120 solo 1,9 mA a 3,3 V. L'esempio per ESP32 qui sotto aumenta e diminuisce dolcemente la luminosità di una striscia LED a 12 V con il PWM sul GPIO 18. Una striscia 5050 da 60 LED al metro assorbe circa 1,2 A per metro; per un tratto di 1 m basta un TIP120 con resistenza di base da 470 Ω, ma non dimenticare un piccolo dissipatore. La striscia LED non contiene bobine, quindi il diodo di ricircolo non serve. Il codice usa le funzioni ledcAttach e ledcWrite della versione 3.x del core Arduino per ESP32; la vecchia versione 2.x usava invece ledcSetup e ledcAttachPin.

Arduino (C++)
1// ESP32 ile 12 V LED şerit parlaklığı (TIP120) / 12 V LED strip brightness with ESP32 (TIP120)
2const int STRIP_PIN = 18;   // 470 Ω ile TIP120 beyzine / to the TIP120 base via 470 Ω
3
4void setup() {
5  ledcAttach(STRIP_PIN, 1000, 8);   // 1 kHz, 8 bit (0–255); çekirdek 3.x / core 3.x
6}
7
8void loop() {
9  for (int d = 0; d <= 255; d++) {  // yavaşça aydınlan / fade in
10    ledcWrite(STRIP_PIN, d);
11    delay(10);
12  }
13  delay(1000);
14  for (int d = 255; d >= 0; d--) {  // yavaşça karar / fade out
15    ledcWrite(STRIP_PIN, d);
16    delay(10);
17  }
18  delay(1000);
19}

Pilotare un transistor da un Raspberry Pi Pico in MicroPython funziona allo stesso modo. Il codice qui sotto legge il sensore di temperatura interno al chip del Pico; quando la temperatura arriva a 32 °C avvia una piccola ventola da 5 V tramite un transistor su GP15 e la ferma quando scende a 29 °C. Usare due soglie distinte (isteresi) evita che la ventola si accenda e si spenga di continuo vicino al limite. La ventola è alimentata dal pin VBUS (i 5 V dell'USB); per una ventola da circa 100 mA basta un BC337 o un 2N2222A con 1 kΩ, e anche qui si mette un diodo ai capi della ventola. La temperatura del chip risulta qualche grado sopra quella ambiente; in un progetto reale è più preciso un sensore come il DS18B20.

MicroPython
1# Pico yonga sıcaklığına göre fan / Fan controlled by the Pico's chip temperature
2from machine import Pin, ADC
3import time
4
5fan = Pin(15, Pin.OUT, value=0)   # 1 kΩ ile transistör beyzine / to the transistor base via 1 kΩ
6sensor = ADC(4)                   # yonga içi sıcaklık sensörü / on-chip temperature sensor
7ON_C, OFF_C = 32, 29              # açma ve kapama eşikleri / switch-on and switch-off thresholds
8
9while True:
10    v = sensor.read_u16() * 3.3 / 65535
11    temp = 27 - (v - 0.706) / 0.001721       # RP2040 veri sayfası formülü / RP2040 datasheet formula
12    if temp >= ON_C:
13        fan.value(1)                         # transistör iletimde, fan döner / transistor on, fan spins
14    elif temp <= OFF_C:
15        fan.value(0)                         # transistör kesimde, fan durur / transistor off, fan stops
16    print("{:.1f} C, fan: {}".format(temp, fan.value()))
17    time.sleep(1)

Riconoscere i piedini di un transistor con il multimetro

  1. Togli il transistor dal circuito e imposta il multimetro sulla prova diodi (simbolo del diodo).
  2. Tieni il puntale rosso fermo su un piedino e tocca gli altri due, uno dopo l'altro, con il nero. Se entrambe le letture sono tra 0,5 e 0,8 V, il piedino sotto il puntale rosso è la base e il transistor è NPN.
  3. Se non trovi un piedino così, inverti i puntali: se con il nero fermo su un piedino gli altri due segnano 0,5–0,8 V, quel piedino è la base e il transistor è PNP.
  4. Confronta le letture tra la base e gli altri due piedini: quella leggermente più alta (per esempio 0,65 V contro 0,62 V) è l'emettitore, quella più bassa il collettore. Se la differenza è minima, fidati del datasheet.
  5. Tra collettore ed emettitore devi leggere OL (circuito aperto) in entrambi i versi; anche il verso inverso delle misure sulla base deve dare OL.
  6. Se il tuo multimetro ha lo zoccolo hFE, inserisci il transistor nella sede NPN o PNP con la piedinatura che hai trovato; il display mostra il guadagno di corrente.

Nei transistor Darlington come il TIP120 tra base ed emettitore ci sono due giunzioni e resistenze interne (circa 8 kΩ e 120 Ω), quindi le letture non seguono questa regola; verifica la piedinatura sul datasheet. Se tra collettore ed emettitore leggi un valore quasi nullo in entrambi i versi, il transistor è in cortocircuito; se la base non mostra alcuna lettura verso gli altri piedini in nessun verso, una giunzione interna si è interrotta. Per conoscere bene le portate del multimetro dai un'occhiata a Come usare il multimetro.

Idee di progetti con i transistor

  • Luce notturna automatica: quando una fotoresistenza (LDR) rileva il buio, accendi una striscia LED a 12 V con un TIP120.
  • Ventola intelligente: man mano che sale la temperatura misurata con un DHT11, aumenta la velocità della ventola con PWM e transistor.
  • Irrigazione automatica: quando un sensore di umidità del terreno rileva terra secca, avvia una piccola pompa dell'acqua tramite un transistor.
  • Serratura a codice: quando sul tastierino viene inserito il codice giusto, apri una serratura a solenoide da 12 V con un TIP120 e un diodo.
  • Avviso silenzioso: pilota un motorino a vibrazione con un BC337 per creare un dispositivo di avviso indossabile.
  • Allarme potente: quando un sensore PIR rileva un movimento, fai suonare tramite un transistor una sirena a 12 V che un pin di Arduino da solo non potrebbe pilotare.

Errori comuni e soluzioni

SintomoCausa probabileSoluzione
Il carico non funziona per nienteManca la massa comune o i piedini sono invertitiCollega tra loro i negativi delle alimentazioni e controlla la piedinatura
Il transistor scalda moltoNon va in saturazione (poca corrente di base) o la corrente massima è superataRiduci la resistenza di base, scegli un transistor più potente o un MOSFET
Arduino si riavvia o il transistor si rompe quando il motore si fermaManca il diodo di ricircoloMetti un 1N4007 o un 1N5819 in senso inverso ai capi del carico, fascetta verso il positivo
Il carico funziona anche con il pin a LOWTransistor bruciato (cortocircuito C-E) o base flottanteMisura il transistor con il multimetro e aggiungi 10 kΩ tra base e GND
Il transistor PNP non si spegne maiL'emettitore è a 12 V ma il pin arriva al massimo a 5 VPilota la base del PNP con un NPN oppure commuta il carico lato basso con un NPN
Il pin di Arduino si è danneggiatoIl pin è stato collegato direttamente alla base senza resistenzaUsa sempre una resistenza di base e tieni la corrente del pin sotto i 20 mA
Con ESP32 o Pico il carico funziona debolmenteResistenza calcolata per 5 V o MOSFET che a 3,3 V non si apre del tuttoCalcola la resistenza di base per 3,3 V e scegli un MOSFET compatibile con 3,3 V
Se il carico supera 1,5 A o il transistor scalda anche con il dissipatore, un MOSFET logic level scalda molto meno, perché è pilotato in tensione e non in corrente e su di esso cade pochissima tensione. Per collegamenti e scelta leggi Come usare un MOSFET con Arduino.

Il transistor è la chiave per comandare carichi grandi con un segnale piccolo, cioè per collegare il tuo Arduino al mondo reale. Una volta presa la mano con il calcolo della resistenza di base, la massa comune e il diodo di ricircolo, motori, pompe e strisce LED non ti spaventeranno più. Nell'app BlueGrays puoi esplorare passo dopo passo, con schemi e codice, progetti come una luce notturna con LDR, un buzzer, la dissolvenza dei LED con PWM, un motore passo-passo e il controllo di una lampada a 230 V.

Domande frequenti

A cosa serve un transistor?

Un transistor svolge due compiti di base: funziona da interruttore elettronico che accende e spegne una corrente grande con una piccola, e da amplificatore che rende più forte un segnale debole. Nei progetti con Arduino si usa soprattutto per controllare carichi che un pin da solo non può pilotare, come motori, relè, ventole e strisce LED.

Qual è la differenza tra transistor NPN e PNP?

Nell'NPN l'emettitore va a GND e il transistor conduce quando la base è circa 0,7 V sopra l'emettitore; la corrente scorre dal collettore all'emettitore. Nel PNP l'emettitore va al positivo e il transistor si accende quando la base viene portata 0,7 V sotto l'emettitore. Per commutare un carico sul lato GND con Arduino, l'NPN è più semplice.

Come si riconoscono i piedini di un transistor?

Il modo più affidabile è il datasheet: con la faccia stampata verso di te, da sinistra a destra l'ordine è C-B-E per il BC547, E-B-C per il 2N2222A e B-C-E per il TIP120. Senza datasheet puoi trovare base e tipo con la prova diodi del multimetro e riconoscere l'emettitore perché la lettura base-emettitore è leggermente più alta di quella base-collettore.

Quale transistor usare con Arduino?

Per carichi fino a 50 mA, come LED e buzzer, basta un BC547. Per bobine di relè da 5 V (70–90 mA) e piccoli motori fino a 500 mA, usa un 2N2222A o un BC337, e per motori e strisce LED intorno a 1 A un TIP120. Con correnti più alte un MOSFET logic level scalda meno.

Che valore deve avere la resistenza di base di un transistor?

La resistenza di base si calcola con RB = (Vpin − VBE) / IB; per i transistor normali, un decimo della corrente del carico è un buon punto di partenza per IB. Con Arduino Uno i valori tipici sono 680 Ω per un relè da 5 V, 2,2 kΩ per carichi da 20–50 mA come LED e buzzer e 1 kΩ per un TIP120.

Perché il transistor scalda?

Il calore prodotto da un transistor è P = VCE × IC. Se la corrente di base è insufficiente, il transistor non va in saturazione, ai suoi capi restano alcuni volt e si scalda; lo stesso succede se la corrente del carico supera il suo massimo. Riduci la resistenza di base, scegli un transistor più potente o un MOSFET e usa un dissipatore sopra 1 A.

Vedi tutti i progetti
Luce notturna con LDR
#12Principiante

Luce notturna con LDR

Progetto di luce notturna basata su LDR che accende automaticamente il LED quando l'ambiente si oscura. Insegna la logica di controllo automatico con il confronto dei valori di soglia analogici.

4.8(100)
164
Uso del cicalino
#13Principiante

Uso del cicalino

Progetto di base che utilizza il cicalino per emettere un suono con una certa frequenza e intervalli. Insegna l'uso delle funzioni tone() e noTone().

4.7(88)
151
Dissolvenza LED ESP32 con PWM
#110Principiante
Premium

Dissolvenza LED ESP32 con PWM

Modificare la luminosità del LED in modo fluido da 0 a max, da max a 0. Controlliamo il PWM con analogWrite() come in Arduino - la stessa sintassi con ESP32 Arduino Core 3.0+ funziona senza problemi. La definizione del pin + pinMode + analogWrite è sufficiente.

4.8(36)
54
Raspberry Pi Pico PWM LED Fade (Effetto Respiro, GP14)
#160Principiante
Premium

Raspberry Pi Pico PWM LED Fade (Effetto Respiro, GP14)

Il LED non lampeggia più — respira! 🌬️ Con il **PWM** (modulazione di larghezza d'impulso) del Raspberry Pi Pico, la luminosità sale e scende lentamente. Impara la classe machine.PWM, duty_u16() (luminosità a 16 bit 0–65535), la frequenza PWM, i cicli range() e l'uscita quasi analogica. Base per miscelazione colori RGB, controllo motori, servo e buzzer.

0.0(0)
4
Utilizzo del motore passo-passo
#67Intermedio
Premium

Utilizzo del motore passo-passo

Progetto di base che fa ruotare il motore passo-passo 28BYJ-48 in senso orario e antiorario con la scheda driver ULN2003A. Insegna il controllo del passo e della direzione del motore passo-passo.

4.5(31)
41
Lampadina 220V con pulsante (Push)
#19Avanzato
Premium

Lampadina 220V con pulsante (Push)

Progetto che controlla una lampadina a 220 V con un pulsante utilizzando un modulo relè. Insegna le basi della commutazione ad alta tensione con i relè.

4.4(30)
38
Stazione di irrigazione intelligente
#83Avanzato
Premium

Stazione di irrigazione intelligente

Sistema autonomo di irrigazione delle piante che funziona 24 ore su 24, 7 giorni su 7, senza affaticare Arduino con due batterie 18650 e regolatore LM2596. Gestisce automaticamente il motore dell'acqu

5.0(42)
57
Illuminazione Intelligente ESP32 (PIR + LDR + Relè + OLED)
#141Avanzato
Premium

Illuminazione Intelligente ESP32 (PIR + LDR + Relè + OLED)

Trasforma il tuo corridoio, bagno o dispensa in illuminazione intelligente con ESP32! Utilizzando un sensore di movimento PIR, un sensore di luce LDR e un modulo relè, costruiamo lo scenario classico "la luce si accende quando viene rilevato movimento al buio" — se l'ambiente è già luminoso, il movimento NON attiva la luce, risparmiando energia durante il giorno. La luce rimane accesa per 30 secondi; se il movimento continua, il timer si azzera e la luce rimane accesa più a lungo. Il display OLE

4.3(6)
11