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.

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.
| Piedino | Sigla | Funzione | Dove va in un interruttore NPN? |
|---|---|---|---|
| Base | B | Terminale di controllo; qui entra la corrente piccola | Al pin di Arduino tramite una resistenza |
| Collettore | C | Qui entra la corrente del carico | Al negativo del carico |
| Emettitore | E | Da 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).
| Caratteristica | NPN | PNP |
|---|---|---|
| Freccia nel simbolo | Esce dall'emettitore | Entra nell'emettitore |
| L'emettitore va a | GND (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 principale | Dal collettore all'emettitore | Dall'emettitore al collettore |
| Posizione del carico | Tra positivo e collettore (lato basso) | Tra collettore e GND (lato alto) |
| Modelli comuni | BC547, S8050, 2N2222A, BC337, TIP120 | BC557, S8550, 2N2907A, BC327, TIP125 |
Zone di funzionamento: interdizione, zona attiva e saturazione
| Zona | Condizione | Corrente di collettore | VCE | Uso |
|---|---|---|---|---|
| Interdizione | VBE < ≈0,6 V, nessuna corrente di base | Quasi zero | Vicina alla tensione di alimentazione | Interruttore APERTO |
| Zona attiva (lineare) | VBE ≈ 0,65–0,7 V, corrente di base media | IC = hFE × IB | Un valore intermedio | Amplificatore |
| Saturazione | IB molto maggiore di IC / hFE | Limitata dal carico e dall'alimentazione | 0,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.
| Collegamento | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| Pin di controllo (ingresso della resistenza di base) | D9 (PWM) o D7 | GPIO 18 | GP15 |
| Resistenza di pull-down base–GND | 10 kΩ | 10 kΩ | 10 kΩ |
| Emettitore | GND | GND | GND |
| Collettore | Negativo (−) del carico | Negativo (−) del carico | Negativo (−) del carico |
| Positivo (+) del carico | Alimentazione esterna + (es. 12 V) | Alimentazione esterna + (es. 12 V) | VBUS (5 V) o alimentazione esterna + |
| Negativo (−) dell'alimentazione esterna | GND di Arduino (massa comune) | GND dell'ESP32 (massa comune) | GND del Pico (massa comune) |
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.
- 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.
- Scegli il transistor: 71 mA sono molto vicini al limite di 100 mA del BC547; il 2N2222A, che regge 600 mA, è più sicuro.
- Calcola la corrente di base: con un beta forzato di 10, IB = 71 / 10 ≈ 7 mA.
- 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.
- 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.
- 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 consigliato | Arduino Uno (5 V) | ESP32 / Pico (3,3 V) |
|---|---|---|---|
| Gruppo di LED, buzzer (20–50 mA) | BC547, S8050 | 2,2 kΩ (≈2 mA) | 1,2 kΩ (≈2,2 mA) |
| Bobina di relè da 5 V (70–90 mA) | 2N2222A, BC337, S8050 | 680 Ω (≈6,3 mA) | 470 Ω (≈5,5 mA) |
| Piccolo motore DC, striscia LED corta (0,3–1 A) | TIP120 | 1 kΩ (≈3,6 mA) | 470 Ω (≈4 mA) |
| Oltre 1,5 A (motore grande, striscia LED lunga) | MOSFET logic level | IRLZ44N; 220 Ω al gate, 10 kΩ gate–GND | IRLB8721; 220 Ω al gate, 10 kΩ gate–GND |
BC547, 2N2222A e TIP120: confronto tra i transistor più diffusi
| Modello | Tipo / contenitore | VCEO | IC continua | hFE | Piedinatura | Uso tipico |
|---|---|---|---|---|---|---|
| BC547 | NPN / TO-92 | 45 V | 100 mA | 110–800 (gruppi A, B, C) | C-B-E | LED, buzzer, commutazione di segnali |
| BC557 | PNP / TO-92 | 45 V | 100 mA | 125–800 | C-B-E | Complementare PNP del BC547, commutazione lato alto |
| S8050 | NPN / TO-92 | 25 V | 500 mA | 85–300 (secondo il gruppo) | E-B-C | Kit per principianti, moduli relè |
| 2N2222A | NPN / TO-92 | 40 V | 600 mA | 100–300 (a 150 mA) | E-B-C | Relè, piccoli motori, ventole |
| BC337 | NPN / TO-92 | 45 V | 800 mA | 100–630 | C-B-E | Relè, gruppi di LED, motorini a vibrazione |
| TIP120 | NPN Darlington / TO-220 | 60 V | 5 A | Almeno 1000 | B-C-E | Motori 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.
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}
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è?.
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.
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.
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
- Togli il transistor dal circuito e imposta il multimetro sulla prova diodi (simbolo del diodo).
- 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.
- 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.
- 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.
- Tra collettore ed emettitore devi leggere OL (circuito aperto) in entrambi i versi; anche il verso inverso delle misure sulla base deve dare OL.
- 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
| Sintomo | Causa probabile | Soluzione |
|---|---|---|
| Il carico non funziona per niente | Manca la massa comune o i piedini sono invertiti | Collega tra loro i negativi delle alimentazioni e controlla la piedinatura |
| Il transistor scalda molto | Non va in saturazione (poca corrente di base) o la corrente massima è superata | Riduci la resistenza di base, scegli un transistor più potente o un MOSFET |
| Arduino si riavvia o il transistor si rompe quando il motore si ferma | Manca il diodo di ricircolo | Metti un 1N4007 o un 1N5819 in senso inverso ai capi del carico, fascetta verso il positivo |
| Il carico funziona anche con il pin a LOW | Transistor bruciato (cortocircuito C-E) o base flottante | Misura il transistor con il multimetro e aggiungi 10 kΩ tra base e GND |
| Il transistor PNP non si spegne mai | L'emettitore è a 12 V ma il pin arriva al massimo a 5 V | Pilota la base del PNP con un NPN oppure commuta il carico lato basso con un NPN |
| Il pin di Arduino si è danneggiato | Il pin è stato collegato direttamente alla base senza resistenza | Usa sempre una resistenza di base e tieni la corrente del pin sotto i 20 mA |
| Con ESP32 o Pico il carico funziona debolmente | Resistenza calcolata per 5 V o MOSFET che a 3,3 V non si apre del tutto | Calcola la resistenza di base per 3,3 V e scegli un MOSFET compatibile con 3,3 V |
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.
Progetti da realizzare dopo questo articolo
Vedi tutti i progetti
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.

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().

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.

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.

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.

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è.

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

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

