Arduino è uno strumento insostituibile nel campo del making, tuttavia a seconda della tipologia di progetto possono presentarsi problemi di difficile risoluzione. Uno di questi è il problema derivante dal funzionamento dei dispositivi a 3,3V con Arduino che eroga 5V in Output. Se anche voi siete alle prese con questo scoglio, seguiteci e ne verremo a capo.
Perché si presenta il problema?
Benché molti dispositivi abbiano una tolleranza che permetta loro di essere alimentati anche a 5V (vi ricordate quando vi dicevamo di leggere sempre i datasheet dei componenti?), molti di questi non permettono di arrivare a voltaggi così elevati. Leggete attentamente le specifiche del costruttore e non andate alla cieca, perché pilotare a 5V un sensore che ne tollera 3,3 soltanto, significa solo una cosa: bruciarlo. Non dimenticate mai che l’elettronica prima vi fa l’esame, poi vi spiega la lezione!
Se vi state chiedendo perché esistano sensori a 3,3V e sensori a 5V, sappiate che la scelta è puramente tecnica: meno tensione di alimentazione significa capacità di integrazione maggiore (circuiteria più piccola), ma allo stesso tempo quantità inferiore di calore da dissipare (chip più piccoli). Allo stesso tempo, un dispositivo a 3,3V è più veloce di uno a 5V. Non ci credete? Facciamo una prova: contiamo da 0 a 3 e da 0 a 5. Quale dei due conteggi è più rapido da eseguire? Da 0 a 3, ovviamente. In elettronica è lo stesso discorso: la velocità di commutazione 0 –> 1 e 1 –>0 è regolata dalla differenza di tensione presente tra lo stato logico basso (0) e lo stato logico alto (1). Più la differenza tra le due tensioni è ridotta, più il dispositivo è veloce, a tutto vantaggio delle prestazioni.
Quel gran genio del mio Arduino…
Ma allora perchè Arduino fornisce i 5V e non i 3,3V di default? Semplice, si è voluta mantenere la massima compatibilità anche con sensori o dispositivi più datati. Il making è spesso basato su componentistica di recupero, pertanto tagliare fuori tutto ciò che non è 3,3V sarebbe stato davvero un peccato. Per comprendere il motivo per cui un sensore rischia di bruciarsi, occorre avere ben chiaro come funziona Arduino a livello di Input e Output:
- Livello logico basso (0): tensione inferiore a 2,5V.
- Livello logico alto (1): tensione maggiore di 2,5V.
Fin qui, tutto normale, direte voi. E invece no, perché occorre sempre prestare attenzione al sistema I/O di Arduino.
- INPUT (Dispositivo –> Arduino): Ciò che è collegato ad Arduino, invia un segnale logico alto (3,3V) o basso (inferiore a 2,5V) e il funzionamento è perfetto. In altre parole, Arduino “Legge” ciò che il dispositivo gli invia, comportandosi di conseguenza.
- OUTPUT (Arduino –> Dispositivo): in questa situazione è Arduino a inviare in uscita un livello di tensione. E indovinate un po’? Se è alto (1), manda in uscita i 5V! Se ciò che c’è dopo è un componente datato, non c’è problema. Se però è della nuova generazione, potete buttarlo nella spazzatura.
Per risolvere il problema, dobbiamo “impedire” ai 5V di arrivare direttamente al dispositivo collegato, mettendo tra Arduino e ciò che c’è a valle, qualcosa che si occupi di “placarne la furia”. A questo proposito, la soluzione si chiama…
Convertitore Bi-direzionale di Livello Logico
Tranquilli, non è un’arma di distruzione di massa e non dovrete recarvi nell’Area 51 per sperare di portarne a casa uno. Lo potete trovare qui!
Per lo schema dei collegamenti, seguire il disegno:
- GND: collegamento di massa sui pin di Arduino e del dispositivo.
- 5V (HV): tensione di alimentazione del pin di Arduino.
- 3.3V (LV): tensione di alimentazione del pin del dispositivo.
- RX (HV2): linea di ricezione sul pin di Arduino.
- TX (LV2): linea di trasmissione sul pin del dispositivo.
- RX (LV1): linea di ricezione sul pin del dispositivo.
- TX (LV1): linea di trasmissione sul pin di Arduino.
In questo modo, interfacciare dispositivi alimentati a 3,3V con Arduino è un gioco da ragazzi. Il kit viene fornito con gli header da saldare, in modo tale da favorirne l’utilizzo su breadboard.