Logo sheen.bot

Approfondimenti

Perché i sensori a 3,3 V si bruciano con Arduino a 5 V e come collegarli in sicurezza

18 set 2026·Sheen Robotics
Perché i sensori a 3,3 V si bruciano con Arduino a 5 V e come collegarli in sicurezza

Alimentare un sensore a 3,3 V non basta se i pin di Arduino continuano a inviare 5 V sulle linee di segnale. Ecco perché i chip si bruciano e come proteggerli.

Un sensore a 3,3 V non si brucia su un Arduino Uno a causa del pin di alimentazione, ma a causa dei pin di comunicazione. Anche quando si alimenta il sensore tramite la linea a 3,3 V di Arduino, i pin digitali standard (e i pin hardware I2C/SPI) continuano a inviare segnali di livello logico ALTO (HIGH) a 5 V. Questa sovratensione colpisce direttamente il silicio, progettato per una soglia massima di circa 3,6 V, distruggendo i diodi di protezione interni in pochi secondi o degradando gradualmente il chip nel corso di diverse lezioni in classe.

Comprendere il motivo di questo fenomeno — e come risolverlo con un paio di resistori da pochi centesimi o un traslatore di livello (level shifter) dedicato — permette di salvare i sensori, evitare snervanti sessioni di debug durante le lezioni e non sprecare il budget scolastico dedicato alla robotica.

La trappola: linee di alimentazione e livelli logici a confronto

I classici Arduino Uno e Nano (basati su ATmega328P) sono microcontrollori a 5 V. La loro tensione di alimentazione è di 5 V e i rispettivi pin di uscita digitale oscillano tra 0 V (LOW) e 5 V (HIGH). In fase di lettura degli ingressi, Arduino considera valido come livello ALTO qualsiasi valore superiore a circa 3,0 V.

I sensori moderni — come i barometri digitali (BMP280/BME280), gli accelerometri (varianti MPU6050), i sensori di distanza a tempo di volo (VL53L0X) e i moduli per schede SD — sono realizzati con processi di fabbricazione del silicio più compatti, progettati rigorosamente per funzionare a 3,3 V o 1,8 V. La loro tensione massima assoluta in ingresso è generalmente pari a VCC + 0.3V (circa 3,6 V).

Gli errori di cablaggio si verificano solitamente in due modalità:

  • Alimentazione diretta a 5 V: lo studente collega il pin VCC del sensore alla linea a 5 V di Arduino. Senza un regolatore low-dropout (LDO) a bordo, il core principale del sensore si surriscalda all'istante.
  • La svista sui livelli logici: lo studente collega correttamente il pin VCC ai 3,3 V di Arduino, ma collega le linee SDA, SCL, SCK o MOSI direttamente ai pin di Arduino. Il microcontrollore invia impulsi logici a 5 V direttamente verso ingressi che non possono tollerare più di 3,6 V.

Cosa accade fisicamente all'interno del chip

La maggior parte dei circuiti integrati include diodi di protezione contro le scariche elettrostatiche (ESD) collegati tra i pin di ingresso e la linea di alimentazione interna (VCC). Quando un Arduino forza una tensione di 5 V su un pin di ingresso mentre il sensore è alimentato a 3,3 V, la tensione su quel pin supera la VCC di 1,7 V.

Questa condizione polarizza direttamente il diodo di clamping ESD superiore. Il diodo inizia a deviare corrente dal pin a 5 V di Arduino direttamente verso la linea di alimentazione a 3,3 V del sensore. Poiché il pin del microcontrollore può erogare tra i 20 e i 40 mA, questo eccesso di corrente provoca rapidamente un guasto termico nel microscopico diodo ESD. Una volta che il diodo va in cortocircuito o si brucia aprendosi, il potenziale di 5 V perfora il sottile ossido di gate dei transistor MOSFET interni, distruggendo in modo permanente il bus periferico.

Soluzione 1: Il partitore di tensione a resistori (unidirezionale)

Per le linee di comunicazione unidirezionali — dall'Arduino a 5 V (trasmettitore) al sensore a 3,3 V (ricevitore) — una coppia di resistori standard rappresenta la soluzione più semplice ed economica.

Questo metodo funziona in modo affidabile per:

  • Linee del bus SPI: MOSI, SCK e CS (Chip Select).
  • UART: il pin TX di Arduino collegato al pin RX del sensore.

È possibile costruire un partitore di tensione utilizzando un resistore da 1 kΩ e uno da 2 kΩ (oppure valori equivalenti come 2,2 kΩ / 4,7 kΩ):

  1. Collegare il pin di uscita di Arduino a un'estremità del resistore da 1 kΩ ($R_1$).
  2. Collegare l'altra estremità di $R_1$ al pin di ingresso del sensore.
  3. Collegare un resistore da 2 kΩ ($R_2$) da quel nodo di giunzione (il pin del sensore) verso Massa (GND).

La tensione al nodo di giunzione si calcola come segue:

V_out = V_in × [ R2 / (R1 + R2) ] = 5V × [ 2000 / 3000 ] = 3.33V

Per la linea di ritorno (SPI MISO o dal pin TX del sensore al pin RX di Arduino), non occorre alcun partitore. Il livello ALTO a 3,3 V generato dal sensore è ampiamente al di sopra della soglia di 3,0 V richiesta dall'ATmega328P per riconoscere un livello logico ALTO. L'uscita del sensore può quindi essere collegata direttamente all'ingresso di Arduino.

Nota: non utilizzare un partitore di tensione a resistori sulle linee I2C (SDA e SCL). L'I2C è un bus bidirezionale di tipo open-drain; un classico partitore passivo compromette il comportamento di pull-up e impedisce al sensore di portare la linea a livello logico BASSO (LOW).

Soluzione 2: Traslatori di livello logico bidirezionali (I2C e bus veloci)

Per i dispositivi I2C o per qualsiasi comunicazione bidirezionale, è necessario un circuito traslatore di livello attivo, solitamente basato su un piccolo MOSFET a canale N (come il BSS138) e due resistori di pull-up.

Questi moduli sono ampiamente disponibili come piccole breakout board a 4 o 8 canali a un costo compreso tra R15 e R35 circa. Il loro cablaggio richiede quattro connessioni di riferimento:

  • HV (High Voltage): da collegare al pin 5V di Arduino.
  • LV (Low Voltage): da collegare al pin 3.3V di Arduino (o alla linea di alimentazione dedicata a 3,3 V).
  • GND: deve essere collegato alla massa comune del sistema.
  • Linee di segnale: collegare i pin a 5 V (es. A4/A5 o SDA/SCL) a HV1/HV2 e le corrispondenti linee del sensore a 3,3 V a LV1/LV2.

Quando il lato a 5 V è inattivo (idle), il MOSFET rimane spento e i resistori di pull-up mantengono entrambi i lati alle rispettive tensioni di linea (5 V sul lato alto, 3,3 V sul lato basso). Quando uno dei due lati porta la linea a massa (0 V), il MOSFET conduce e porta in sicurezza anche il lato opposto a 0 V, senza mai esporre il lato a 3,3 V alla tensione di 5 V.

Confronto tra i metodi di interfaccia sicuri

MetodoCosto per canaleProtocolli supportatiPro e contro per la didattica
Cablaggio direttoR0Nessuno (da 5 V a 3,3 V)Danneggia inevitabilmente i circuiti integrati a soli 3,3 V nel tempo. Da non usare mai.
Partitore di tensione< R1.00SPI (MOSI, SCK, CS), UART (TX→RX)Estremamente economico; facile da montare su breadboard; non utilizzabile per I2C.
Scheda traslatrice MOSFET~R20.00 (4 canali)I2C, SPI, UART, GPIOSicura per tutti i bus; supporta segnali bidirezionali; aggiunge una piccola scheda al circuito.
Breakout con tolleranza a 5 VVariabileI2C, SPILa breakout board include già regolatore e FET integrati; ideale per principianti, leggermente più costosa.

Tre regole per i laboratori scolastici

Se gestite un laboratorio scolastico di robotica o insegnate physical computing, integrate queste tre buone pratiche nelle schede di lavoro degli studenti:

  1. Controllare prima il retro della breakout board: molte schede sensore per la didattica integrano già un piccolo regolatore a 5 pin (siglato 662K o simile) e due transistor per la traslazione di livello. Se la scheda accetta un'alimentazione di ingresso compresa tra 3,3 V e 5 V e dichiara esplicitamente la tolleranza logica a 5 V, è possibile collegarla direttamente. Se riporta solo indicazioni relative a 3,3 V, va considerata priva di protezione.
  2. Mantenere una massa comune: se si utilizza un alimentatore da banco separato a 3,3 V o un regolatore secondario, collegare il relativo terminale 0V/GND direttamente al pin GND di Arduino. I livelli logici sono tensioni misurate rispetto alla massa; senza un riferimento comune, le comunicazioni falliranno a causa di tensioni flottanti.
  3. Valutare il passaggio a microcontrollori nativi a 3,3 V: la soluzione definitiva al problema del livellamento logico consiste nell'abbandonare, ove possibile, la logica a 5 V. Le schede educative moderne — come la Raspberry Pi Pico (RP2040) e le piattaforme ESP32 disponibili nel nostro hardware store — funzionano nativamente con livelli logici a 3,3 V. L'uso di controller nativi a 3,3 V elimina del tutto il rischio di bruciare i sensori.
#elettronica#arduino#sensori#robotica-educativa#progettazione-circuiti

Altri post in Approfondimenti